Add MIDI input for interactive sequencer playback

This commit is contained in:
Jack Andersen
2016-05-19 20:17:02 -10:00
parent 3a8a9f0ef2
commit 2a5823d6de
8 changed files with 232 additions and 3 deletions

View File

@@ -213,7 +213,7 @@ void Sequencer::ChannelState::setCtrlValue(uint8_t ctrl, int8_t val)
if (ctrl == 7)
setVolume(val / 127.f);
else if (ctrl == 8)
else if (ctrl == 8 || ctrl == 10)
setPan(val / 64.f - 1.f);
}
@@ -321,6 +321,24 @@ void Sequencer::allOff(bool now)
chan->allOff();
}
void Sequencer::allOff(uint8_t chan, bool now)
{
if (chan > 15 || !m_chanStates[chan])
return;
if (now)
{
for (const auto& vox : m_chanStates[chan]->m_chanVoxs)
m_engine._destroyVoice(vox.second.get());
for (const auto& vox : m_chanStates[chan]->m_keyoffVoxs)
m_engine._destroyVoice(vox.get());
m_chanStates[chan]->m_chanVoxs.clear();
m_chanStates[chan]->m_keyoffVoxs.clear();
}
else
m_chanStates[chan]->allOff();
}
void Sequencer::ChannelState::killKeygroup(uint8_t kg, bool now)
{
for (auto it = m_chanVoxs.begin() ; it != m_chanVoxs.end() ;)