Processing buffers separately


#1

Yes, I read a lot of similar topics, specially about drum machines, but still can’t go on from here. Just want to build a very basic sample player with 8 separated drum samples.
Got almost everything working, the multi-out-synth plugin inspired me, even the separate velocity for each “sample sound” I was able to achieve… but then it comes the panning. Can’t make it work for each synth:

   void processBlock (AudioBuffer<float>& buffer, MidiBuffer& midiBuffer) override
{
    auto busCount = getBusCount (false);
    buffer.clear();
    MidiBuffer processedMidi;
    int time;
    MidiMessage m;
    
    for (MidiBuffer::Iterator i (midiBuffer); i.getNextEvent (m, time);)
    {
        if (m.isNoteOn())
        {
            int x = m.getNoteNumber();
            if (x == 36){
                uint8 newVel = m.getVelocity() * noteOnVel ;
                m = MidiMessage::noteOn(m.getChannel(), m.getNoteNumber(), newVel);
            }
            else if (x == 38){
                uint8 newVel = m.getVelocity() * noteOnVel2 ;
                m = MidiMessage::noteOn(m.getChannel(), m.getNoteNumber(), newVel);
            }
           // else if...
        }
        else if (m.isNoteOff()) { }
        else if (m.isAftertouch()) { }
        else if (m.isPitchWheel()) { }
        processedMidi.addEvent (m, time);
    }
    midiBuffer.swapWith (processedMidi);
    
    for (auto busNr = 0; busNr < busCount; ++busNr)
    {
        auto midiChannelBuffer = filterMidiMessagesForChannel (midiBuffer, busNr + 1);
        auto audioBusBuffer = getBusBuffer (buffer, false, busNr);
        synth [busNr]->renderNextBlock (audioBusBuffer, midiChannelBuffer, 0, audioBusBuffer.getNumSamples());
        buffer.applyGain (0, 0, buffer.getNumSamples(), gainL);
        buffer.applyGain (1, 0, buffer.getNumSamples(), gainR);
        synth2 [busNr]->renderNextBlock (audioBusBuffer, midiChannelBuffer, 0, audioBusBuffer.getNumSamples());
        buffer.applyGain (0, 0, buffer.getNumSamples(), gainL);
        buffer.applyGain (1, 0, buffer.getNumSamples(), gainR);
        synth3 [busNr]->renderNextBlock (audioBusBuffer, midiChannelBuffer, 0, audioBusBuffer.getNumSamples());
       //synth4...
        
    }
}

For sure it won’t work.
I’m new in C++, couldn’t understand how to apply the renderNextBlock as was constantly answered from other similar topics.
Thanks for any direction!