audiofile support + improved sample rate support + results of a -Wall -Werr
[terminatorX.git] / src / tX_seqpar.cc
index 4e7dc816621d5335eb400e2eaf6ebf6912d1ba9b..6f42f29966464e2608fe0478f1a3cf1a6d823d99 100644 (file)
@@ -150,7 +150,7 @@ void tX_seqpar :: create_persistence_ids()
        }
 }
 
-tX_seqpar* tX_seqpar :: get_sp_by_persistence_id(int pid)
+tX_seqpar* tX_seqpar :: get_sp_by_persistence_id(unsigned int pid)
 {
        list <tX_seqpar *> :: iterator sp;
        
@@ -227,6 +227,7 @@ const char * tX_seqpar :: get_name()
 float tX_seqpar :: get_value()
 {
        printf("Ooops. tX_seqpar::get_value() called. Trouble.");
+       return 0.0;     
 }
 
 void tX_seqpar :: do_exec(const float value)
@@ -383,7 +384,7 @@ void tX_seqpar_vtt_speed :: handle_mouse_input(float adjustment)
 
 void tX_seqpar_vtt_speed :: do_exec(const float value)
 {
-       tt->speed=value;
+       tt->speed=value*tt->audiofile_pitch_correction;
 }
 
 const char * tX_seqpar_vtt_speed :: get_name()
@@ -433,6 +434,30 @@ const char * tX_seqpar_vtt_volume :: get_name()
         return "Volume";
 }
 
+/**** Sequencable Parameter : Pan ****/
+
+tX_seqpar_vtt_pan :: tX_seqpar_vtt_pan()
+{
+       set_mapping_parameters(1.0, -1.0, TX_SEQPAR_DEFAULT_SCALE, 1);
+}
+
+float tX_seqpar_vtt_pan :: get_value(){ return tt->pan; }
+
+void tX_seqpar_vtt_pan :: do_exec(const float value)
+{
+       tt->set_pan(value);
+}
+
+void tX_seqpar_vtt_pan :: do_update_graphics ()
+{
+       gtk_adjustment_set_value(tt->gui.pan, tt->pan);
+}
+
+const char * tX_seqpar_vtt_pan :: get_name()
+{
+        return "Pan";
+}
+
 /**** Sequencable Parameter: TURNTABLE PITCH ****/
 
 tX_seqpar_vtt_pitch :: tX_seqpar_vtt_pitch()
@@ -705,6 +730,55 @@ const char * tX_seqpar_vtt_ec_feedback :: get_name()
         return "Echo: Feedback";
 }
 
+/**** Sequencable Parameter: TURNTABLE ECHO PAN ****/
+
+tX_seqpar_vtt_ec_pan :: tX_seqpar_vtt_ec_pan()
+{
+       set_mapping_parameters(1.0, -1.0, TX_SEQPAR_DEFAULT_SCALE, 1);
+}
+
+float tX_seqpar_vtt_ec_pan :: get_value() { return tt->ec_pan; }
+
+void tX_seqpar_vtt_ec_pan :: do_exec(const float value)
+{
+       tt->ec_set_pan(value);
+}
+
+void tX_seqpar_vtt_ec_pan :: do_update_graphics ()
+{
+       gtk_adjustment_set_value(tt->gui.ec_pan, tt->ec_pan);
+}
+
+const char * tX_seqpar_vtt_ec_pan :: get_name()
+{
+        return "Echo: Pan";
+}
+
+/**** Sequencable Parameter: TURNTABLE ECHO VOLUME ****/
+
+tX_seqpar_vtt_ec_volume :: tX_seqpar_vtt_ec_volume()
+{
+       set_mapping_parameters(0.0, 3.0, TX_SEQPAR_DEFAULT_SCALE, 1);
+}
+
+float tX_seqpar_vtt_ec_volume :: get_value() { return tt->ec_volume; }
+
+void tX_seqpar_vtt_ec_volume :: do_exec(const float value)
+{
+       tt->ec_set_volume(value);
+}
+
+void tX_seqpar_vtt_ec_volume :: do_update_graphics ()
+{
+       gtk_adjustment_set_value(tt->gui.ec_volume, tt->ec_volume);
+}
+
+const char * tX_seqpar_vtt_ec_volume :: get_name()
+{
+        return "Echo: Volume";
+}
+
+
 /**** Sequencable Parameter: TURNTABLE MUTE ****/
 
 tX_seqpar_vtt_mute :: tX_seqpar_vtt_mute()
@@ -787,27 +861,50 @@ void tX_seqpar_vttfx_float :: do_update_graphics()
 GtkSignalFunc tX_seqpar_vttfx_float :: gtk_callback(GtkWidget* w, tX_seqpar_vttfx_float *sp)
 {
        sp->receive_gui_value(sp->myadj->value);        
+       return NULL;    
 }
 
+#define WID_DYN TRUE, TRUE, 0
+#define WID_FIX FALSE, FALSE, 0
+
 void tX_seqpar_vttfx_int :: create_widget()
 {
-       *fx_value=min_value;
+       float tmp=max_value - min_value/1000;
+       GtkWidget *tmpwid;
 
-       /* code goes here */
+       *fx_value=min_value;
+       myadj=GTK_ADJUSTMENT(gtk_adjustment_new(*fx_value, min_value, max_value, tmp, tmp, tmp));
+       widget=gtk_hbox_new(FALSE, 2);
+        tmpwid=gtk_label_new(label_name);
+       gtk_widget_show(tmpwid);
+       gtk_box_pack_start(GTK_BOX(widget), tmpwid, WID_FIX);
+
+       tmpwid=gtk_spin_button_new(myadj,1.0,0);
+       gtk_widget_show(tmpwid);
+       gtk_box_pack_start(GTK_BOX(widget), tmpwid, WID_DYN);
+       
+       gtk_signal_connect(GTK_OBJECT(myadj), "value_changed", (GtkSignalFunc) tX_seqpar_vttfx_int :: gtk_callback, this);
 }
 
-
 tX_seqpar_vttfx_int :: ~tX_seqpar_vttfx_int()
 {
-       /* oh yeah, some more code here */
+       gtk_widget_destroy(widget);
 }
 
 void tX_seqpar_vttfx_int :: do_exec(const float value)
 {
+       *fx_value=value;
 }
 
 void tX_seqpar_vttfx_int :: do_update_graphics()
 {
+       gtk_adjustment_set_value(myadj, *fx_value);
+}
+
+GtkSignalFunc tX_seqpar_vttfx_int :: gtk_callback(GtkWidget* w, tX_seqpar_vttfx_int *sp)
+{
+       sp->receive_gui_value(sp->myadj->value);        
+       return NULL;
 }
 
 void tX_seqpar_vttfx_bool :: create_widget()
@@ -831,6 +928,7 @@ void tX_seqpar_vttfx_bool :: do_exec(const float value)
 GtkSignalFunc tX_seqpar_vttfx_bool :: gtk_callback(GtkWidget* w, tX_seqpar_vttfx_bool *sp)
 {
        sp->receive_gui_value(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sp->widget)));     
+       return NULL;
 }
 
 void tX_seqpar_vttfx_bool :: do_update_graphics()