From ce582407f90619115c7560fbc35d1112205e4cb0 Mon Sep 17 00:00:00 2001 From: Tobias Doerffel Date: Sun, 15 Jun 2008 16:21:48 +0000 Subject: [PATCH] directly handle MIDI-pitch-bend events git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1146 0778d3d1-df1d-0410-868b-ea421aaaa00d --- ChangeLog | 11 ++++++++++- include/automatable_model.h | 5 +++++ src/tracks/instrument_track.cpp | 12 +++++++++++- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2a5cd25ec..00c013880 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,9 +1,18 @@ 2008-06-15 Tobias Doerffel + * src/gui/file_browser.cpp: + do not load MIDI-settings when loading preset as this might break + existing instrument tracks + + * include/automatable_model.h: + * src/tracks/instrument_track.cpp: + directly handle MIDI-pitch-bend events + * include/instrument_track.h: * src/core/note_play_handle.cpp: * src/tracks/instrument_track.cpp: - added pitch-knob to instrument-track + - added pitch-knob to instrument-track + - fixed activity indicator * plugins/stk/voices/flute/flute_model.cpp: * plugins/stk/voices/flute/flute_model.h: diff --git a/include/automatable_model.h b/include/automatable_model.h index 5eb77625f..afba738fe 100644 --- a/include/automatable_model.h +++ b/include/automatable_model.h @@ -196,6 +196,11 @@ public: setValue( m_value + _steps * m_step ); } + inline float range( void ) const + { + return( m_range ); + } + void setRange( const float _min, const float _max, const float _step = 1 ); diff --git a/src/tracks/instrument_track.cpp b/src/tracks/instrument_track.cpp index 92d728ded..69e732dca 100644 --- a/src/tracks/instrument_track.cpp +++ b/src/tracks/instrument_track.cpp @@ -290,9 +290,17 @@ void instrumentTrack::processInEvent( const midiEvent & _me, } break; + case MidiPitchBend: + if( !m_instrument->handleMidiEvent( _me, _time ) ) + { + m_pitchModel.setValue( m_pitchModel.minValue() + + _me.m_data.m_param[0] * + m_pitchModel.range() / 16384 ); + } + break; + case MidiControlChange: case MidiProgramChange: - case MidiPitchBend: m_instrument->handleMidiEvent( _me, _time ); break; @@ -665,6 +673,7 @@ void instrumentTrack::saveTrackSpecificSettings( QDomDocument & _doc, _this.setAttribute( "name", name() ); m_volumeModel.saveSettings( _doc, _this, "vol" ); m_panningModel.saveSettings( _doc, _this, "pan" ); + m_pitchModel.saveSettings( _doc, _this, "pitch" ); m_effectChannelModel.saveSettings( _doc, _this, "fxch" ); m_baseNoteModel.saveSettings( _doc, _this, "basenote" ); @@ -709,6 +718,7 @@ void instrumentTrack::loadTrackSpecificSettings( const QDomElement & _this ) m_panningModel.loadSettings( _this, "pan" ); } + m_pitchModel.loadSettings( _this, "pitch" ); m_effectChannelModel.loadSettings( _this, "fxch" ); if( _this.hasAttribute( "baseoct" ) )