예제 #1
0
void MidiInput::handleControlChangeMessage( const MidiMessage& msg )
{
        //INFOLOG( QString( "[handleMidiMessage] CONTROL_CHANGE Parameter: %1, Value: %2" ).arg( msg.m_nData1 ).arg( msg.m_nData2 ) );

	Hydrogen *pEngine = Hydrogen::get_instance();
        MidiActionManager * aH = MidiActionManager::get_instance();
	MidiMap * mM = MidiMap::get_instance();

        MidiAction * pAction;

	pAction = mM->getCCAction( msg.m_nData1 );
	pAction->setParameter2( QString::number( msg.m_nData2 ) );

	aH->handleAction( pAction );

	pEngine->lastMidiEvent = "CC";
	pEngine->lastMidiEventParameter = msg.m_nData1;
	

}
예제 #2
0
void MidiTable::setupMidiTable()
{
	MidiMap *mM = MidiMap::get_instance();

	QStringList items;
	items << "" << trUtf8("Event")  <<  trUtf8("Param.")  <<  trUtf8("Action") <<  trUtf8("Param.") ;

	setRowCount( 0 );
    	setColumnCount( 5 );

	verticalHeader()->hide();

	setHorizontalHeaderLabels( items );
    horizontalHeader()->setStretchLastSection(true);

	setColumnWidth( 0 , 25 );
	setColumnWidth( 1 , 155 );
	setColumnWidth( 2, 73 );
	setColumnWidth( 3, 175 );
	setColumnWidth( 4 , 73 );

	bool ok;
	std::map< QString , MidiAction* > mmcMap = mM->getMMCMap();
	std::map< QString , MidiAction* >::iterator dIter( mmcMap.begin() );
	
	for( dIter = mmcMap.begin(); dIter != mmcMap.end(); dIter++ ) {
		MidiAction * pAction = dIter->second;
		QString actionParameter;
		int actionParameterInteger = 0;

		actionParameter = pAction->getParameter1();
		actionParameterInteger = actionParameter.toInt(&ok,10);
		
		insertNewRow(pAction->getType() , dIter->first , 0 , actionParameterInteger );
	}

	for( int note = 0; note < 128; note++ ) {
		MidiAction * pAction = mM->getNoteAction( note );
		QString actionParameter;
		int actionParameterInteger = 0;

		actionParameter = pAction->getParameter1();
		actionParameterInteger = actionParameter.toInt(&ok,10);
		

		if ( pAction->getType() == "NOTHING" ) continue;

		insertNewRow(pAction->getType() , "NOTE" , note , actionParameterInteger );
	}

	for( int parameter = 0; parameter < 128; parameter++ ){
		MidiAction * pAction = mM->getCCAction( parameter );
		QString actionParameter;
		int actionParameterInteger = 0;

		actionParameter = pAction->getParameter1();
		actionParameterInteger = actionParameter.toInt(&ok,10);

		if ( pAction->getType() == "NOTHING" ) continue;

		insertNewRow(pAction->getType() , "CC" , parameter , actionParameterInteger );
	}

	{
		MidiAction * pAction = mM->getPCAction();
		if ( pAction->getType() != "NOTHING" ) {
			QString actionParameter = pAction->getParameter1();
			int actionParameterInteger = actionParameter.toInt(&ok,10);
			insertNewRow( pAction->getType() , "PROGRAM_CHANGE" , 0 , actionParameterInteger );
		}
	}
	
	insertNewRow( "", "", 0, 0 );
}