]> git.0d.be Git - jack_mixer.git/commitdiff
Handle post fader outputs for input channels from Python code
authorFrédéric Péters <fpeters@0d.be>
Tue, 15 Dec 2009 20:51:46 +0000 (21:51 +0100)
committerFrédéric Péters <fpeters@0d.be>
Tue, 15 Dec 2009 20:51:46 +0000 (21:51 +0100)
channel.py
jack_mixer.c
jack_mixer.py

index a913335e12900d66ca61b72ddb74612051f20b80..9aae1ea5896f57f0926094b3a3318a26526d84c4 100644 (file)
@@ -284,6 +284,8 @@ gobject.signal_new('midi-event-received', Channel,
                 gobject.TYPE_NONE, ())
 
 class InputChannel(Channel):
+    post_fader_output_channel = None
+
     def __init__(self, app, name, stereo):
         Channel.__init__(self, app, name, stereo)
 
@@ -390,6 +392,9 @@ class InputChannel(Channel):
 
     def unrealize(self):
         Channel.unrealize(self)
+        if self.post_fader_output_channel:
+            self.post_fader_output_channel.remove()
+            self.post_fader_output_channel = None
         self.channel.remove()
         self.channel = None
 
index c9bb4c1ddcb98c111feac790ef0397348b1a3048..49c0b24e9e78da5198c9fe1baa50f2bfe554ae66 100644 (file)
@@ -83,8 +83,6 @@ struct channel
   void *midi_change_callback_data;
 
   jack_mixer_scale_t midi_scale;
-
-  jack_mixer_output_channel_t output;
 };
 
 struct output_channel {
@@ -393,7 +391,6 @@ remove_channel(
     assert(channel_ptr->mixer_ptr->midi_cc_map[channel_ptr->midi_cc_balance_index] == channel_ptr);
     channel_ptr->mixer_ptr->midi_cc_map[channel_ptr->midi_cc_balance_index] = NULL;
   }
-  remove_output_channel(channel_ptr->output);
 
   free(channel_ptr);
 }
@@ -1075,7 +1072,6 @@ add_channel(
   struct channel * channel_ptr;
   char * port_name;
   size_t channel_name_size;
-  char * output_channel_name;
 
   channel_ptr = malloc(sizeof(struct channel));
   if (channel_ptr == NULL)
@@ -1152,12 +1148,6 @@ add_channel(
 
   calc_channel_volumes(channel_ptr);
 
-  // for monitoring etc.
-  output_channel_name = malloc(channel_name_size + 5);
-  sprintf(output_channel_name, "%s Out", channel_name);
-  channel_ptr->output = add_output_channel(mixer, output_channel_name, stereo, true);
-  free(output_channel_name);
-
   channel_ptr->mixer_ptr->input_channels_list = g_slist_prepend(
                   channel_ptr->mixer_ptr->input_channels_list, channel_ptr);
 
index 2c53ab336daf1bf7d7767624b77c859b26e0c95e..3b0e3bf1ec97903752f1b38e686afa7a776eae11 100755 (executable)
@@ -337,6 +337,7 @@ class JackMixer(SerializedObject):
             channel.channel.balance_midi_cc = int(balance_cc)
         if not (volume_cc or balance_cc):
             channel.channel.autoset_midi_cc()
+
         return channel
 
     def add_channel_precreated(self, channel):
@@ -353,6 +354,12 @@ class JackMixer(SerializedObject):
         for outputchannel in self.output_channels:
             channel.add_control_group(outputchannel)
 
+        # create post fader output channel matching the input channel
+        channel.post_fader_output_channel = self.mixer.add_output_channel(
+                        channel.channel.name + ' Out', channel.channel.is_stereo, True)
+        channel.post_fader_output_channel.volume = 0
+        channel.post_fader_output_channel.set_solo(channel.channel, True)
+
     def read_meters(self):
         for channel in self.channels:
             channel.read_meter()