Even though ZynAddSubFX does not support pitch wheel sensitivity RPN
events and thus we can't update the pitch range from LMMS automatically,
at least default to 100 semitones pitch wheel bend range so behaviour
is consistent with default pitch range in LMMS.
When changing the pitch range all we can do for MIDI is to update the
MIDI pitch bend sensitivity RPN even though this is only supported by
some MIDI instruments.
Closes#129.
As undo/redo are not working properly at the moment, do not expose
according menu items to the user. This will be fixed in upcoming releases.
Closes#152.
If we receive MidiNoteOn, MidiNoteOff or MidiKeyPressure events we always
kind of handle them in processInEvent() so do not forward them to the
instrument.
This fixes a freeze when loading VST plugins as PianoView::focusOutEvent()
tried to send MIDI events to the not yet completely loaded and thus locked
VST plugin.
Closes#160.
Newer versions of GCC seem to assume an array size of 0 for arrays whose
size is not specified explicitely. This causes a warning about an
out-of-bounds array access.
There are situations where processOutEvent() is being called while
loading instrument track settings e.g. when loading the pitch model
whose dataChanged() signal is connected to InstrumentTrack::updatePitch()
which in turn calls processOutEvent(). At this time we do not have an
instrument instance and therefore have to skip processing.
Closes#164.
For some reason executing git shortlog in Qt Creator cmake project
import hangs. This is a workaround so that it is still possible to
use Qt Creator without changing the normal build, in which git shortlog
will certainly complete in 1 second.
As processInEvent() is responsible for starting/stopping notes, we do
not have to set the state of the piano. This is done in processOutEvents()
already.
The MIDI event handling in InstrumentTrack was complex and buggy. It has
been simplified now such that processInEvent() tries to handle note on,
note off and key pressure events. The actions taken should result in
equivalent calls to processOutEvent() by NotePlayHandle instances. The
processOutEvent() function sends according MIDI events to the attached
instruments. All unhandled MIDI events are directly forwarded to the
instrument in processInEvent().
It's possible that some corner-cases are not handled yet with the new code
and we have regressions now.
Furthermore renamed midiTime/midiEvent to MidiTime/MidiEvent to match
coding style.
Closes#72.