diff --git a/mixer/src/Module.C b/mixer/src/Module.C index 6f238e0..f6ccd4c 100644 --- a/mixer/src/Module.C +++ b/mixer/src/Module.C @@ -846,7 +846,6 @@ Module::menu ( void ) const insert_menu->add( "Meter", 0, 0 ); insert_menu->add( "Mono Pan", 0, 0 ); insert_menu->add( "Aux", 0, 0 ); - insert_menu->add( "Distance", 0, 0 ); insert_menu->add( "Spatializer", 0, 0 ); insert_menu->add( "Plugin", 0, 0 ); diff --git a/mixer/src/Module_Parameter_Editor.C b/mixer/src/Module_Parameter_Editor.C index 74f2582..5c3498e 100644 --- a/mixer/src/Module_Parameter_Editor.C +++ b/mixer/src/Module_Parameter_Editor.C @@ -126,7 +126,6 @@ Module_Parameter_Editor::Module_Parameter_Editor ( Module *module ) : Fl_Double_ Module_Parameter_Editor::~Module_Parameter_Editor ( ) { - controls_by_port.clear(); } @@ -336,7 +335,11 @@ Module_Parameter_Editor::make_controls ( void ) o->point( 0 )->azimuth( azimuth_value ); o->point( 0 )->elevation( elevation_value ); - o->point( 0 )->radius( radius_value ); + if ( radius_port_number >= 0 ) + { + o->point( 0 )->radius_enabled = true; + o->point( 0 )->radius( radius_value ); + } Fl_Labelpad_Group *flg = new Fl_Labelpad_Group( o ); @@ -344,7 +347,8 @@ Module_Parameter_Editor::make_controls ( void ) controls_by_port[azimuth_port_number] = o; controls_by_port[elevation_port_number] = o; - controls_by_port[radius_port_number] = o; + if ( radius_port_number >= 0 ) + controls_by_port[radius_port_number] = o; } @@ -468,9 +472,11 @@ Module_Parameter_Editor::handle_control_changed ( Module::Port *p ) void Module_Parameter_Editor::set_value (int i, float value ) { - _module->control_input[i].control_value( value ); - if ( _module->control_input[i].connected() ) - _module->control_input[i].connected_port()->module()->handle_control_changed( _module->control_input[i].connected_port() ); - + if ( i >= 0 ) + { + _module->control_input[i].control_value( value ); + if ( _module->control_input[i].connected() ) + _module->control_input[i].connected_port()->module()->handle_control_changed( _module->control_input[i].connected_port() ); + } // _module->handle_control_changed( &_module->control_input[i] ); } diff --git a/mixer/src/Panner.H b/mixer/src/Panner.H index d34dd4d..809dc7b 100644 --- a/mixer/src/Panner.H +++ b/mixer/src/Panner.H @@ -46,6 +46,7 @@ public: void *userdata; Fl_Color color; bool visible; + bool radius_enabled; Point ( ) { x = 1; @@ -54,6 +55,7 @@ public: label = 0; visible = 1; color = FL_WHITE; + radius_enabled = false; } Point ( float D, float A ) @@ -63,6 +65,7 @@ public: label = 0; visible = 1; color = FL_WHITE; + radius_enabled = false; } static inline void spherical_to_cartesian (float a, float e, float &x, float &y, float &z ) @@ -83,7 +86,10 @@ public: return atan2f(z,sqrtf(powf(x,2)+powf(y,2)) ) * ( 180 / M_PI ); } float radius ( void ) const { - return sqrtf(powf(x,2)+powf(y,2)+powf(z,2)); + if ( ! radius_enabled ) + return 1.0f; + else + return sqrtf(powf(x,2)+powf(y,2)+powf(z,2)); } void azimuth ( float v ) @@ -109,6 +115,9 @@ public: void radius ( float v ) { + if (! radius_enabled ) + return; + float r = v; spherical_to_cartesian( azimuth(), elevation(), x,y,z ); diff --git a/mixer/src/Spatialization_Console.C b/mixer/src/Spatialization_Console.C index d525880..3466894 100644 --- a/mixer/src/Spatialization_Console.C +++ b/mixer/src/Spatialization_Console.C @@ -65,9 +65,6 @@ Spatialization_Console::~Spatialization_Console ( ) - - - void @@ -93,7 +90,11 @@ Spatialization_Console::make_controls ( void ) p.azimuth( o->spatializer()->control_output[0].control_value() ); p.elevation( o->spatializer()->control_output[1].control_value() ); - p.radius( o->spatializer()->control_output[2].control_value() ); + if ( o->spatializer()->control_output[2].connected() ) + { + p.radius_enabled = true; + p.radius( o->spatializer()->control_output[2].control_value() ); + } } else p.visible = false; @@ -118,7 +119,8 @@ Spatialization_Console::cb_panner_value_handle ( Fl_Widget *w, void *v ) cm->control_output[0].control_value( p->azimuth() ); cm->control_output[1].control_value( p->elevation() ); - cm->control_output[2].control_value( p->radius() ); + if ( p->radius_enabled ) + cm->control_output[2].control_value( p->radius() ); } /* Display changes initiated via automation or from other parts of the GUI */ @@ -136,7 +138,8 @@ Spatialization_Console::handle_control_changed ( Controller_Module *m ) { p->azimuth( m->control_output[0].control_value() ); p->elevation( m->control_output[1].control_value() ); - p->radius( m->control_output[2].control_value() ); + if ( p->radius_enabled ) + p->radius( m->control_output[2].control_value() ); if ( panner->visible_r() ) panner->redraw();