Beispiel #1
0
		public void ProcessReplacing(IChannelGroup inputs, IChannelGroup outputs, int sampleFrames)
		{
			SMALL_NUMBER = -SMALL_NUMBER;

			for (int sampleIndex = 0; sampleIndex < sampleFrames; sampleIndex++)
			{
				float leftOut = 0f;
				float rightOut = 0f;
				float leftIn = inputs.GetChannel(0)[sampleIndex];
				float rightIn = inputs.GetChannel(1)[sampleIndex];
				
				float summedInput = Undenormalise((leftIn + rightIn) * fixedGain);

				// Accumulate comb filters in parallel
				for (int i = 0; i < combCount; i++)
				{
					leftOut += leftCombs[i].Process(summedInput);
					rightOut += rightCombs[i].Process(summedInput);
				}

				// Feed through allpasses in series
				for (int i = 0; i < allPassCount; i++)
				{
					leftOut = leftAllPasses[i].Process(leftOut);
					rightOut = rightAllPasses[i].Process(rightOut);
				}

				outputs.GetChannel(0)[sampleIndex] = leftOut * wet1 + rightOut * wet2 + leftIn * dry;
				outputs.GetChannel(1)[sampleIndex] = rightOut * wet1 + leftOut * wet2 + rightIn * dry;
			}
		}
Beispiel #2
0
	    public override void ProcessReplacing(IChannelGroup inputs, IChannelGroup outputs, int sampleFrames)
		{
			for(int i = 0; i < sampleFrames; i++)
			{
				outputs.GetChannel(0)[i] = leftDelay.Process(inputs.GetChannel(0)[i]);
				outputs.GetChannel(1)[i] = rightDelay.Process(inputs.GetChannel(1)[i]);
			}
		}
Beispiel #3
0
        public override void ProcessReplacing(IChannelGroup inputs, IChannelGroup outputs, int sampleFrames)
		{
			for(int i = 0; i < sampleFrames; i++)
			{
				float level = GetLevel(i, sampleFrames, inputs.GetChannel(0), inputs.GetChannel(1));

				SideChain(level);

				outputs.GetChannel(0)[i] = inputs.GetChannel(0)[i] * gain;
                outputs.GetChannel(1)[i] = inputs.GetChannel(1)[i] * gain;
			}
		}
Beispiel #4
0
        public override void ProcessReplacing(IChannelGroup inputs, IChannelGroup outputs, int sampleFrames)
        {
            for(int frame = 0; frame < sampleFrames; frame++)
            {
                while (events.HasEvent(frame))
                {
                    MidiEvent midiEvent = events.Next();

                    if (midiEvent.Status == MidiStatus.NoteOn)
                    {
                        noteOn = true;
                    }
                    else if (midiEvent.Status == MidiStatus.NoteOff)
                    {
                        noteOn = false;
                    }
                }

                if (noteOn)
                {
                    outputs.GetChannel(0)[frame] = (float) random.NextDouble()*volume;
                }
            }
        }