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; } }
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]); } }
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; } }
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; } } }