Merge branch 'stable-1.2'
# Conflicts: # .mailmap # cmake/linux/lmms.desktop # src/gui/editors/PianoRoll.cpp # src/tracks/BBTrack.cpp
This commit is contained in:
@@ -196,7 +196,12 @@ void NotePlayHandle::play( sampleFrame * _working_buffer )
|
||||
|
||||
lock();
|
||||
|
||||
if( m_totalFramesPlayed == 0 && !m_hasMidiNote
|
||||
/* It is possible for NotePlayHandle::noteOff to be called before NotePlayHandle::play,
|
||||
* which results in a note-on message being sent without a subsequent note-off message.
|
||||
* Therefore, we check here whether the note has already been released before sending
|
||||
* the note-on message. */
|
||||
if( !m_released
|
||||
&& m_totalFramesPlayed == 0 && !m_hasMidiNote
|
||||
&& ( hasParent() || ! m_instrumentTrack->isArpeggioEnabled() ) )
|
||||
{
|
||||
m_hasMidiNote = true;
|
||||
|
||||
@@ -563,7 +563,7 @@ void MidiAlsaSeq::run()
|
||||
|
||||
case SND_SEQ_EVENT_CONTROLLER:
|
||||
dest->processInEvent( MidiEvent(
|
||||
MidiControlChange,
|
||||
MidiControlChange,
|
||||
ev->data.control.channel,
|
||||
ev->data.control.param,
|
||||
ev->data.control.value, source ),
|
||||
@@ -572,11 +572,11 @@ void MidiAlsaSeq::run()
|
||||
|
||||
case SND_SEQ_EVENT_PGMCHANGE:
|
||||
dest->processInEvent( MidiEvent(
|
||||
MidiProgramChange,
|
||||
MidiProgramChange,
|
||||
ev->data.control.channel,
|
||||
ev->data.control.param,
|
||||
ev->data.control.value, source ),
|
||||
MidiTime() );
|
||||
ev->data.control.value, 0,
|
||||
source ),
|
||||
MidiTime() );
|
||||
break;
|
||||
|
||||
case SND_SEQ_EVENT_CHANPRESS:
|
||||
|
||||
@@ -222,12 +222,16 @@ void MidiClientRaw::parseData( const unsigned char c )
|
||||
case MidiNoteOff:
|
||||
case MidiNoteOn:
|
||||
case MidiKeyPressure:
|
||||
case MidiProgramChange:
|
||||
case MidiChannelPressure:
|
||||
m_midiParseData.m_midiEvent.setKey( m_midiParseData.m_buffer[0] - KeysPerOctave );
|
||||
m_midiParseData.m_midiEvent.setVelocity( m_midiParseData.m_buffer[1] );
|
||||
break;
|
||||
|
||||
case MidiProgramChange:
|
||||
m_midiParseData.m_midiEvent.setKey( m_midiParseData.m_buffer[0] );
|
||||
m_midiParseData.m_midiEvent.setVelocity( m_midiParseData.m_buffer[1] );
|
||||
break;
|
||||
|
||||
case MidiControlChange:
|
||||
m_midiParseData.m_midiEvent.setControllerNumber( m_midiParseData.m_buffer[0] );
|
||||
m_midiParseData.m_midiEvent.setControllerValue( m_midiParseData.m_buffer[1] );
|
||||
|
||||
Reference in New Issue
Block a user