@@ -846,7 +846,6 @@ Module::menu ( void ) const | |||||
insert_menu->add( "Meter", 0, 0 ); | insert_menu->add( "Meter", 0, 0 ); | ||||
insert_menu->add( "Mono Pan", 0, 0 ); | insert_menu->add( "Mono Pan", 0, 0 ); | ||||
insert_menu->add( "Aux", 0, 0 ); | insert_menu->add( "Aux", 0, 0 ); | ||||
insert_menu->add( "Distance", 0, 0 ); | |||||
insert_menu->add( "Spatializer", 0, 0 ); | insert_menu->add( "Spatializer", 0, 0 ); | ||||
insert_menu->add( "Plugin", 0, 0 ); | insert_menu->add( "Plugin", 0, 0 ); | ||||
@@ -126,7 +126,6 @@ Module_Parameter_Editor::Module_Parameter_Editor ( Module *module ) : Fl_Double_ | |||||
Module_Parameter_Editor::~Module_Parameter_Editor ( ) | 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 )->azimuth( azimuth_value ); | ||||
o->point( 0 )->elevation( elevation_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 ); | 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[azimuth_port_number] = o; | ||||
controls_by_port[elevation_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 | void | ||||
Module_Parameter_Editor::set_value (int i, float value ) | 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] ); | // _module->handle_control_changed( &_module->control_input[i] ); | ||||
} | } |
@@ -46,6 +46,7 @@ public: | |||||
void *userdata; | void *userdata; | ||||
Fl_Color color; | Fl_Color color; | ||||
bool visible; | bool visible; | ||||
bool radius_enabled; | |||||
Point ( ) { | Point ( ) { | ||||
x = 1; | x = 1; | ||||
@@ -54,6 +55,7 @@ public: | |||||
label = 0; | label = 0; | ||||
visible = 1; | visible = 1; | ||||
color = FL_WHITE; | color = FL_WHITE; | ||||
radius_enabled = false; | |||||
} | } | ||||
Point ( float D, float A ) | Point ( float D, float A ) | ||||
@@ -63,6 +65,7 @@ public: | |||||
label = 0; | label = 0; | ||||
visible = 1; | visible = 1; | ||||
color = FL_WHITE; | color = FL_WHITE; | ||||
radius_enabled = false; | |||||
} | } | ||||
static inline void spherical_to_cartesian (float a, float e, float &x, float &y, float &z ) | 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 ); | return atan2f(z,sqrtf(powf(x,2)+powf(y,2)) ) * ( 180 / M_PI ); | ||||
} | } | ||||
float radius ( void ) const { | 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 ) | void azimuth ( float v ) | ||||
@@ -109,6 +115,9 @@ public: | |||||
void radius ( float v ) | void radius ( float v ) | ||||
{ | { | ||||
if (! radius_enabled ) | |||||
return; | |||||
float r = v; | float r = v; | ||||
spherical_to_cartesian( azimuth(), elevation(), x,y,z ); | spherical_to_cartesian( azimuth(), elevation(), x,y,z ); | ||||
@@ -65,9 +65,6 @@ Spatialization_Console::~Spatialization_Console ( ) | |||||
void | void | ||||
@@ -93,7 +90,11 @@ Spatialization_Console::make_controls ( void ) | |||||
p.azimuth( o->spatializer()->control_output[0].control_value() ); | p.azimuth( o->spatializer()->control_output[0].control_value() ); | ||||
p.elevation( o->spatializer()->control_output[1].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 | else | ||||
p.visible = false; | 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[0].control_value( p->azimuth() ); | ||||
cm->control_output[1].control_value( p->elevation() ); | 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 */ | /* 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->azimuth( m->control_output[0].control_value() ); | ||||
p->elevation( m->control_output[1].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() ) | if ( panner->visible_r() ) | ||||
panner->redraw(); | panner->redraw(); | ||||