예제 #1
0
파일: MidiSynth.cs 프로젝트: DotLab/Midif
        public void Process(float[] data)
        {
            for (int i = 0, length = data.Length; i < length; i += 2)
            {
                float left  = 0;
                float right = 0;

                for (int j = firstActiveVoice; j != -1; j = voices[j].next)
                {
                    float envelopeGain = voices[j].envelope.gain;
                    voices[j].envelope.AdvanceTime(sampleRateRecip);
                    float value = envelopeGain * (float)Math.Sin(voices[j].time * voices[j].freq * Table.Pi2);
                    left           += value * voices[j].gainLeft;
                    right          += value * voices[j].gainRight;
                    voices[j].time += sampleRateRecip;
                }

                data[i]     = left;
                data[i + 1] = right;

                                #if MIDIF_DEBUG_VISUALIZER
                WaveVisualizer.Push(0, left);
                                #endif
            }

            Panic();
        }
예제 #2
0
파일: Sf2Synth.cs 프로젝트: DotLab/Midif
        public void Process(float[] buffer)
        {
                        #if MIDIF_DEBUG_VISUALIZER
            WaveVisualizer.Clear(0);
            WaveVisualizer.Clear(1);
            WaveVisualizer.Clear(2);
            WaveVisualizer.Clear(3);
            WaveVisualizer.Clear(5);
                        #endif

            try {
                for (int j = firstActiveVoice; j != -1; j = voices[j].next)
                {
                    voices[j].Process(buffer);
                                        #if MIDIF_DEBUG_VISUALIZER
                    WaveVisualizer.SetI(0, 0);
                    WaveVisualizer.SetI(1, 0);
                    WaveVisualizer.SetI(2, 0);
                    WaveVisualizer.SetI(3, 0);
                    WaveVisualizer.SetI(5, 0);
                                        #endif
                }
            } catch (System.Exception e) {
                UnityEngine.Debug.LogError(e);
                Reset();
                return;
            }

                        #if MIDIF_DEBUG_VISUALIZER
            for (int i = 0, length = buffer.Length; i < length; i += 2)
            {
                WaveVisualizer.Push(4, buffer[i]);
            }
                        #endif

//			Panic();
        }