/** * Give the @a n 'th port the name of @a instr . * If the n'th port doesn't exist, new ports up to n are created. */ void JackOutput::setTrackOutput( int n, Instrument * instr, InstrumentComponent * compo, Song * song ) { QString chName; if ( track_port_count <= n ) { // need to create more ports for ( int m = track_port_count; m <= n; m++ ) { chName = QString( "Track_%1_" ).arg( m + 1 ); track_output_ports_L[m] = jack_port_register ( client, ( chName + "L" ).toLocal8Bit(), JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0 ); track_output_ports_R[m] = jack_port_register ( client, ( chName + "R" ).toLocal8Bit(), JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0 ); if ( ! track_output_ports_R[m] || ! track_output_ports_L[m] ) { Hydrogen::get_instance()->raiseError( Hydrogen::JACK_ERROR_IN_PORT_REGISTER ); } } track_port_count = n + 1; } // Now we're sure there is an n'th port, rename it. //DrumkitComponent* p_dmCompo = Hydrogen::get_instance()->getSong()->get_component( compo->get_drumkit_componentID() ); DrumkitComponent* p_dmCompo = song->get_component( compo->get_drumkit_componentID() ); chName = QString( "Track_%1_%2_%3_" ).arg( n + 1 ).arg( instr->get_name() ).arg( p_dmCompo->get_name() ); #ifdef HAVE_JACK_PORT_RENAME jack_port_rename( client, track_output_ports_L[n], ( chName + "L" ).toLocal8Bit() ); jack_port_rename( client, track_output_ports_R[n], ( chName + "R" ).toLocal8Bit() ); #else jack_port_set_name( track_output_ports_L[n], ( chName + "L" ).toLocal8Bit() ); jack_port_set_name( track_output_ports_R[n], ( chName + "R" ).toLocal8Bit() ); #endif }
/** * Give the @a n 'th port the name of @a instr . * If the n'th port doesn't exist, new ports up to n are created. */ void JackAudioDriver::setTrackOutput( int n, Instrument * instr, InstrumentComponent * pCompo, Song * pSong ) { QString chName; // The function considers `track_port_count' as the number of // ports already present. If its smaller than `n', new ports // have to be created. if ( track_port_count <= n ) { for ( int m = track_port_count; m <= n; m++ ) { chName = QString( "Track_%1_" ).arg( m + 1 ); track_output_ports_L[m] = jack_port_register( m_pClient, ( chName + "L" ).toLocal8Bit(), JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0 ); track_output_ports_R[m] = jack_port_register( m_pClient, ( chName + "R" ).toLocal8Bit(), JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0 ); if ( ! track_output_ports_R[m] || ! track_output_ports_L[m] ) { Hydrogen::get_instance()->raiseError( Hydrogen::JACK_ERROR_IN_PORT_REGISTER ); } } track_port_count = n + 1; } // Now we're sure there is an n'th port, rename it. DrumkitComponent* pDrumkitComponent = pSong->get_component( pCompo->get_drumkit_componentID() ); chName = QString( "Track_%1_%2_%3_" ).arg( n + 1 ).arg( instr->get_name() ).arg( pDrumkitComponent->get_name() ); #ifdef HAVE_JACK_PORT_RENAME // This differs from jack_port_set_name() by triggering // PortRename notifications to clients that have registered a // port rename handler. jack_port_rename( m_pClient, track_output_ports_L[n], ( chName + "L" ).toLocal8Bit() ); jack_port_rename( m_pClient, track_output_ports_R[n], ( chName + "R" ).toLocal8Bit() ); #else jack_port_set_name( track_output_ports_L[n], ( chName + "L" ).toLocal8Bit() ); jack_port_set_name( track_output_ports_R[n], ( chName + "R" ).toLocal8Bit() ); #endif }