/* rename and thaw all jack ports--used when changing groups */ void Module::thaw_ports ( void ) { // pass it along to our connected Controller_Modules, if any. for ( int i = 0; i < ncontrol_inputs(); ++i ) { if ( control_input[i].connected() ) control_input[i].connected_port()->module()->thaw_ports(); } const char *trackname = chain()->strip()->group()->single() ? NULL : chain()->name(); for ( unsigned int i = 0; i < aux_audio_input.size(); ++i ) { /* if we're entering a group we need to add the chain name * prefix and if we're leaving one, we need to remove it */ aux_audio_input[i].jack_port()->client( chain()->client() ); aux_audio_input[i].jack_port()->trackname( trackname ); aux_audio_input[i].jack_port()->thaw(); } for ( unsigned int i = 0; i < aux_audio_output.size(); ++i ) { /* if we're entering a group we won't actually be using our * JACK output ports anymore, just mixing into the group outputs */ aux_audio_output[i].jack_port()->client( chain()->client() ); aux_audio_output[i].jack_port()->trackname( trackname ); aux_audio_output[i].jack_port()->thaw(); mixer->maybe_auto_connect_output( &aux_audio_output[i] ); } }
void Module::handle_chain_name_changed ( ) { // pass it along to our connected Controller_Modules, if any. for ( int i = 0; i < ncontrol_inputs(); ++i ) { if ( control_input[i].connected() ) control_input[i].connected_port()->module()->handle_chain_name_changed(); control_input[i].update_osc_port(); } if ( ! chain()->strip()->group()->single() ) { /* we have to rename our JACK ports... */ for ( unsigned int i = 0; i < aux_audio_input.size(); i++ ) { aux_audio_input[i].jack_port()->trackname( chain()->name() ); aux_audio_input[i].jack_port()->rename(); } for ( unsigned int i = 0; i < aux_audio_output.size(); i++ ) { aux_audio_output[i].jack_port()->trackname( chain()->name() ); aux_audio_output[i].jack_port()->rename(); } } }
void Module::command_open_parameter_editor ( void ) { if ( _editor ) { _editor->show(); } else if ( ncontrol_inputs() ) { DMESSAGE( "Opening module parameters for \"%s\"", label() ); _editor = new Module_Parameter_Editor( this ); _editor->show(); } }
void Module::chain ( Chain *v ) { if ( _chain != v ) { DMESSAGE( "Adding module %s in to chain %s", label(), v ? v->name() : "NULL" ); _chain = v; for ( int i = 0; i < ncontrol_inputs(); ++i ) { control_input[i].update_osc_port(); } } else { DMESSAGE( "Module %s already belongs to chain %s", label(), v ? v->name() : "NULL" ); } }
/* freeze/disconnect all jack ports--used when changing groups */ void Module::freeze_ports ( void ) { // pass it along to our connected Controller_Modules, if any. for ( int i = 0; i < ncontrol_inputs(); ++i ) { if ( control_input[i].connected() ) control_input[i].connected_port()->module()->freeze_ports(); } for ( unsigned int i = 0; i < aux_audio_input.size(); ++i ) { aux_audio_input[i].jack_port()->freeze(); aux_audio_input[i].jack_port()->shutdown(); } for ( unsigned int i = 0; i < aux_audio_output.size(); ++i ) { aux_audio_output[i].jack_port()->freeze(); aux_audio_output[i].jack_port()->shutdown(); } }
void Module::send_feedback ( void ) { for ( int i = 0; i < ncontrol_inputs(); i++ ) control_input[i].send_feedback(); }