@@ -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 ); | |||
@@ -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] ); | |||
} |
@@ -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 ); | |||
@@ -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(); | |||