Changeset 120
- Timestamp:
- 09/09/06 22:44:03 (5 years ago)
- Files:
-
- 5 modified
-
fm_gui/trunk/src/fm_djmixer_gui.c (modified) (4 diffs)
-
fm_gui/trunk/src/fm_djmixer_gui.h (modified) (1 diff)
-
fm_server/trunk/src/fm_djmixer.c (modified) (7 diffs)
-
fm_server/trunk/src/fm_level_meter.c (modified) (4 diffs)
-
fm_server/trunk/src/fm_level_meter.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
fm_gui/trunk/src/fm_djmixer_gui.c
r119 r120 23 23 static void fm_djmixer_gui_chan_vscale_fader_value_changed (GtkRange *range, 24 24 gpointer user_data); 25 static void fm_djmixer_gui_dial_master_level_value_changed (GtkAdjustment *adj, 26 gpointer user_data); 25 27 static void fm_djmixer_gui_level_changed_cb (RgcRemoteObject *obj, 26 g uint port_n,28 gint port_n, 27 29 gfloat level_l, 28 30 gfloat level_r, … … 93 95 94 96 gui->dial_master_level = glade_xml_get_widget(gui->xml_mixer, "dial_master_level"); 97 gui->dial_master_level_adj = gtk_tx_dial_get_adjustment (GTK_TX_DIAL (gui->dial_master_level)); 95 98 gui->dial_cue_level = glade_xml_get_widget(gui->xml_mixer, "dial_cue_level"); 99 gui->dial_cue_level_adj = gtk_tx_dial_get_adjustment (GTK_TX_DIAL (gui->dial_cue_level)); 96 100 gui->flash_master = glade_xml_get_widget(gui->xml_mixer, "flash_master"); 101 102 g_signal_connect (gui->dial_master_level_adj, "value-changed", G_CALLBACK(fm_djmixer_gui_dial_master_level_value_changed), gui); 97 103 98 104 fm_djmixer_gui_add_channel (gui, 0); … … 160 166 161 167 static void 168 fm_djmixer_gui_dial_master_level_value_changed (GtkAdjustment *adj, 169 gpointer user_data) 170 { 171 FmDJMixerGui *gui = (FmDJMixerGui *) user_data; 172 FmDJMixerData *mixer_data = (FmDJMixerData *) gui->client; 173 174 gdouble orig_value = gtk_adjustment_get_value (adj); 175 gdouble value = orig_value + 1; 176 g_print("fm_djmixer_gui_dial_master_level_changed %f\n", value); 177 178 GValue *p = g_value_init_int (-1); 179 GValue *val = g_value_init_double (value); 180 rgc_remote_object_call (mixer_data->element, "set_gain", p, val, NULL); 181 g_value_destroy (val); 182 } 183 184 185 static void 162 186 fm_djmixer_gui_level_changed_cb (RgcRemoteObject *obj, 163 g uint port_n,187 gint port_n, 164 188 gfloat level_l, 165 189 gfloat level_r, … … 167 191 { 168 192 FmDJMixerGui *gui = (FmDJMixerGui *) user_data; 169 FmDJMixerGuiChannel *chan = (FmDJMixerGuiChannel *) g_list_nth_data (gui->channels, port_n); 170 171 gtk_tx_flash_set_level (GTK_WIDGET(chan->flash_level), level_l, level_r); 172 } 193 194 GtkWidget *flash; 195 if (port_n > -1) { 196 FmDJMixerGuiChannel *chan = (FmDJMixerGuiChannel *) g_list_nth_data (gui->channels, port_n); 197 flash = chan->flash_level; 198 } else if (port_n == -1) { 199 flash = gui->flash_master; 200 } else { 201 g_warning ("Unknown channel %d", port_n); 202 return; 203 } 204 205 gtk_tx_flash_set_level (flash, level_l, level_r); 206 } -
fm_gui/trunk/src/fm_djmixer_gui.h
r119 r120 28 28 29 29 GtkWidget *dial_master_level; 30 GtkAdjustment *dial_master_level_adj; 30 31 GtkWidget *dial_cue_level; 32 GtkAdjustment *dial_cue_level_adj; 31 33 GtkWidget *flash_master; 32 34 -
fm_server/trunk/src/fm_djmixer.c
r119 r120 16 16 static void fm_djmixer_class_init (FmDJMixerClass *class); 17 17 static void fm_djmixer_init (FmDJMixer *mixer); 18 static void fm_djmixer_master_level_changed (GObject *instance, 19 gfloat level_l, 20 gfloat level_r, 21 gpointer user_data); 18 22 static void fm_djmixer_connect_src (FmElement *element, 19 23 FmElement *src); … … 22 26 FmBuffer *buffer); 23 27 static void fm_djmixer_set_gain (FmDJMixer *djm, 24 g uint port_n,28 gint port_n, 25 29 gdouble value); 26 30 static void fm_djmixer_set_pan (FmDJMixer *djm, … … 128 132 fm_element_connect_src (FM_ELEMENT (djm->master_level), FM_ELEMENT (djm->master_gain)); 129 133 fm_element_connect_src (FM_ELEMENT (djm->master_gain), FM_ELEMENT (djm->mixer)); 134 rgc_signal_catch (G_OBJECT(djm->master_level), "level_changed", rgc_marshal_VOID__FLOAT_FLOAT, 135 G_CALLBACK(fm_djmixer_master_level_changed), djm); 130 136 } 131 137 … … 160 166 161 167 168 static void 169 fm_djmixer_master_level_changed (GObject *instance, 170 gfloat level_l, 171 gfloat level_r, 172 gpointer user_data) 173 { 174 FmDJMixer *djm = FM_DJMIXER (user_data); 175 176 GValue *ch = g_value_init_int (-1); 177 GValue *val1 = g_value_init_float (level_l); 178 GValue *val2 = g_value_init_float (level_r); 179 rgc_signal_emit (djm, "level_changed", ch, val1, val2, NULL); 180 g_value_destroy (ch); 181 g_value_destroy (val1); 182 g_value_destroy (val2); 183 } 184 185 162 186 163 187 static void … … 192 216 static void 193 217 fm_djmixer_set_gain (FmDJMixer *djm, 218 gint port_n, 219 gdouble value) 220 { 221 FmEffectGain *gain; 222 223 if (port_n > -1) { 224 g_return_if_fail (port_n < djm->total_ports); 225 FmDJMixerChannel *chan = djm->channels[port_n]; 226 g_return_if_fail (chan); 227 gain = chan->gain; 228 } else if (port_n == -1) { 229 gain = djm->master_gain; 230 } else 231 g_warning ("Unknown port %d", port_n); 232 233 fm_effect_gain_set_gain (gain, value); 234 } 235 236 237 static void 238 fm_djmixer_set_pan (FmDJMixer *djm, 194 239 guint port_n, 195 240 gdouble value) … … 200 245 g_return_if_fail (chan); 201 246 202 fm_effect_ gain_set_gain (chan->gain, value);203 } 204 205 206 static void 207 fm_djmixer_set_ pan(FmDJMixer *djm,247 fm_effect_pan_set_pan (chan->pan, value); 248 } 249 250 251 static void 252 fm_djmixer_set_fader (FmDJMixer *djm, 208 253 guint port_n, 209 254 gdouble value) … … 214 259 g_return_if_fail (chan); 215 260 216 fm_effect_pan_set_pan (chan->pan, value);217 }218 219 220 static void221 fm_djmixer_set_fader (FmDJMixer *djm,222 guint port_n,223 gdouble value)224 {225 g_return_if_fail (port_n < djm->total_ports);226 227 FmDJMixerChannel *chan = djm->channels[port_n];228 g_return_if_fail (chan);229 230 261 fm_effect_gain_set_gain (chan->fader, value); 231 262 } -
fm_server/trunk/src/fm_level_meter.c
r118 r120 30 30 #include "fm_buffer.h" 31 31 #include "fm_element.h" 32 //#include "fm_input.h"33 32 #include "fm_effect.h" 34 33 #include "fm_level_meter.h" … … 118 117 g_print ("Activating level meter...\n"); 119 118 120 meter->last_values = g_new0(gfloat, FM_CHANNELS_STEREO);121 119 meter->current_values = g_new0(gfloat, FM_CHANNELS_STEREO); 122 120 … … 134 132 fm_element_get_buffer_from_src (element, buffer); 135 133 134 meter->sample_count += buffer->requested_samples; 135 136 136 guint i, m; 137 gboolean changed= FALSE;137 gboolean nonzero = FALSE; 138 138 for (i = 0; i < FM_CHANNELS_STEREO; i++) { 139 139 meter->current_values[i] = 0.0; … … 141 141 if (buffer->channel_data[i][m] > meter->current_values[i]) { 142 142 meter->current_values[i] = buffer->channel_data[i][m]; 143 changed= TRUE;143 nonzero = TRUE; 144 144 } 145 145 } 146 146 147 if (changed) { 148 for (i = 0; i < FM_CHANNELS_STEREO; i++) 149 meter->last_values[i] = meter->current_values[i]; 147 if (nonzero) 148 meter->zero_count = 0; 149 else 150 meter->zero_count++; 151 152 if (meter->zero_count > ZERO_N) 153 return; 154 155 if (meter->sample_count > SIGNAL_EVERY_N_SAMPLES) { 156 meter->sample_count = 0; 150 157 151 158 GValue *val1 = g_value_init_float (meter->current_values[0]); -
fm_server/trunk/src/fm_level_meter.h
r118 r120 30 30 #define FM_LEVEL_METER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), FM_TYPE_LEVEL_METER, FmLevelMeterClass)) 31 31 32 33 #define ZERO_N 1000 34 #define SIGNAL_EVERY_N_SAMPLES 2000 35 32 36 typedef struct _FmLevelMeter FmLevelMeter; 33 37 typedef struct _FmLevelMeterClass FmLevelMeterClass; … … 37 41 FmEffect effect; 38 42 39 gfloat *last_values;43 //gfloat *last_values; 40 44 gfloat *current_values; 45 46 guint zero_count; 47 guint sample_count; 41 48 }; 42 49
