improved MIDI-support
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@429 0778d3d1-df1d-0410-868b-ea421aaaa00d
This commit is contained in:
@@ -364,6 +364,21 @@ void vestigeInstrument::deleteNotePluginData( notePlayHandle * _n )
|
||||
|
||||
|
||||
|
||||
bool vestigeInstrument::handleMidiEvent( const midiEvent & _me,
|
||||
const midiTime & _time )
|
||||
{
|
||||
m_pluginMutex.lock();
|
||||
if( m_plugin != NULL )
|
||||
{
|
||||
m_plugin->enqueueMidiEvent( _me, _time );
|
||||
}
|
||||
m_pluginMutex.unlock();
|
||||
return( TRUE );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void vestigeInstrument::openPlugin( void )
|
||||
{
|
||||
#ifdef QT4
|
||||
|
||||
@@ -84,6 +84,9 @@ public:
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
virtual bool handleMidiEvent( const midiEvent & _me,
|
||||
const midiTime & _time );
|
||||
|
||||
|
||||
protected slots:
|
||||
void openPlugin( void );
|
||||
|
||||
@@ -512,8 +512,18 @@ void VSTPlugin::enqueueMidiEvent( const midiEvent & _event,
|
||||
event.reserved1 = 0;
|
||||
event.reserved2 = 0;
|
||||
event.midiData[0] = _event.m_type + _event.m_channel;
|
||||
event.midiData[1] = _event.key();
|
||||
event.midiData[2] = _event.velocity();
|
||||
switch( _event.m_type )
|
||||
{
|
||||
case PITCH_BEND:
|
||||
event.midiData[1] = _event.m_data.m_param[0] & 0x7f;
|
||||
event.midiData[2] = _event.m_data.m_param[0] >> 7;
|
||||
break;
|
||||
// TODO: handle more special cases
|
||||
default:
|
||||
event.midiData[1] = _event.key();
|
||||
event.midiData[2] = _event.velocity();
|
||||
break;
|
||||
}
|
||||
event.midiData[3] = 0;
|
||||
m_midiEvents.push_back( event );
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user