void getNextAudioBlock (const AudioSourceChannelInfo& bufferToFill) { // the synth always adds its output to the audio buffer, so we have to clear it // first.. bufferToFill.clearActiveBufferRegion(); // fill a midi buffer with incoming messages from the midi input. MidiBuffer incomingMidi; midiCollector.removeNextBlockOfMessages (incomingMidi, bufferToFill.numSamples); // and now get the synth to process the midi events and generate its output. synth.renderNextBlock (*bufferToFill.buffer, incomingMidi, 0, bufferToFill.numSamples); }
void getNextAudioBlock (const AudioSourceChannelInfo& bufferToFill) { // the synth always adds its output to the audio buffer, so we have to clear it // first.. bufferToFill.clearActiveBufferRegion(); // fill a midi buffer with incoming messages from the midi input. MidiBuffer incomingMidi; midiCollector.removeNextBlockOfMessages (incomingMidi, bufferToFill.numSamples); // pass these messages to the keyboard state so that it can update the component // to show on-screen which keys are being pressed on the physical midi keyboard. // This call will also add midi messages to the buffer which were generated by // the mouse-clicking on the on-screen keyboard. keyboardState.processNextMidiBuffer (incomingMidi, 0, bufferToFill.numSamples, true); // and now get the synth to process the midi events and generate its output. synth.renderNextBlock (*bufferToFill.buffer, incomingMidi, 0, bufferToFill.numSamples); }
void getNextAudioBlock (AudioSourceChannelInfo const& bufferToFill) { int const numSamples = bufferToFill.numSamples; // the synth always adds its output //bufferToFill.clearActiveBufferRegion(); m_midi.clear (); if (m_active) { double const samplesPerBeat = m_sampleRate * 60 / m_tempo; // Adjust phase so the beat is on or after the beginning of the output double beat; if (m_phase > 0) beat = 1 - m_phase; else beat = 0 - m_phase; // Set notes in midi buffer for (;;beat += 1) { // Calc beat pos int pos = static_cast <int> (beat * samplesPerBeat); if (pos < numSamples) { m_midi.addEvent (MidiMessage::noteOn (1, 84, 1.f), pos); } else { break; } } } m_synth.renderNextBlock (*bufferToFill.buffer, m_midi, 0, bufferToFill.numSamples); }