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:
Hyunjin Song
2019-09-15 21:08:33 +09:00
37 changed files with 25 additions and 9 deletions

View File

@@ -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;

View File

@@ -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:

View File

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