def create_mixer(self, client_name, with_nsm=True): self.mixer = jack_mixer_c.Mixer(client_name) if not self.mixer: raise RuntimeError("Failed to create Mixer instance.") self.create_ui(with_nsm) self.window.set_title(client_name) self.monitor_channel = self.mixer.add_output_channel( "Monitor", True, True) self.save = False GLib.timeout_add(33, self.read_meters) GLib.timeout_add(50, self.midi_events_check) if with_nsm: GLib.timeout_add(200, self.nsm_react)
# This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2 of the License # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. import jack_mixer_c mixer = jack_mixer_c.Mixer("test") print("Channels count: %u" % mixer.channels_count) channel = mixer.add_channel("Channel 1", True) if channel.is_stereo: channel_type = "Stereo" else: channel_type = "Mono" channel_name = channel.name print('%s channel "%s"' % (channel_type, channel_name)) print("Channel meter read %s" % repr(channel.meter)) print("Channels count: %u" % mixer.channels_count)
def __init__(self, name, lash_client): self.mixer = jack_mixer_c.Mixer(name) if not self.mixer: return self.monitor_channel = self.mixer.add_output_channel( "Monitor", True, True) self.save = False if lash_client: # Send our client name to server lash_event = lash.lash_event_new_with_type(lash.LASH_Client_Name) lash.lash_event_set_string(lash_event, name) lash.lash_send_event(lash_client, lash_event) lash.lash_jack_client_name(lash_client, name) self.window = Gtk.Window(type=Gtk.WindowType.TOPLEVEL) if name != self.mixer.client_name(): self.window.set_title(name + " (" + self.mixer.client_name() + ")") else: self.window.set_title(name) self.window.set_icon_name('jack_mixer') self.gui_factory = gui.Factory(self.window, self.meter_scales, self.slider_scales) self.vbox_top = Gtk.VBox() self.window.add(self.vbox_top) self.menubar = Gtk.MenuBar() self.vbox_top.pack_start(self.menubar, False, True, 0) mixer_menu_item = Gtk.MenuItem.new_with_mnemonic("_Mixer") self.menubar.append(mixer_menu_item) edit_menu_item = Gtk.MenuItem.new_with_mnemonic('_Edit') self.menubar.append(edit_menu_item) help_menu_item = Gtk.MenuItem.new_with_mnemonic('_Help') self.menubar.append(help_menu_item) self.window.set_default_size(120, 300) mixer_menu = Gtk.Menu() mixer_menu_item.set_submenu(mixer_menu) add_input_channel = Gtk.MenuItem.new_with_mnemonic( 'New _Input Channel') mixer_menu.append(add_input_channel) add_input_channel.connect("activate", self.on_add_input_channel) add_output_channel = Gtk.MenuItem.new_with_mnemonic( 'New _Output Channel') mixer_menu.append(add_output_channel) add_output_channel.connect("activate", self.on_add_output_channel) mixer_menu.append(Gtk.SeparatorMenuItem()) open = Gtk.MenuItem.new_with_mnemonic('_Open') mixer_menu.append(open) open.connect('activate', self.on_open_cb) save = Gtk.MenuItem.new_with_mnemonic('_Save') mixer_menu.append(save) save.connect('activate', self.on_save_cb) save_as = Gtk.MenuItem.new_with_mnemonic('Save_As') mixer_menu.append(save_as) save_as.connect('activate', self.on_save_as_cb) mixer_menu.append(Gtk.SeparatorMenuItem()) quit = Gtk.MenuItem.new_with_mnemonic('_Quit') mixer_menu.append(quit) quit.connect('activate', self.on_quit_cb) edit_menu = Gtk.Menu() edit_menu_item.set_submenu(edit_menu) self.channel_edit_input_menu_item = Gtk.MenuItem.new_with_mnemonic( '_Edit Input Channel') edit_menu.append(self.channel_edit_input_menu_item) self.channel_edit_input_menu = Gtk.Menu() self.channel_edit_input_menu_item.set_submenu( self.channel_edit_input_menu) self.channel_edit_output_menu_item = Gtk.MenuItem.new_with_mnemonic( 'Edit _Output Channel') edit_menu.append(self.channel_edit_output_menu_item) self.channel_edit_output_menu = Gtk.Menu() self.channel_edit_output_menu_item.set_submenu( self.channel_edit_output_menu) self.channel_remove_input_menu_item = Gtk.MenuItem.new_with_mnemonic( 'Remove _Input Channel') edit_menu.append(self.channel_remove_input_menu_item) self.channel_remove_input_menu = Gtk.Menu() self.channel_remove_input_menu_item.set_submenu( self.channel_remove_input_menu) self.channel_remove_output_menu_item = Gtk.MenuItem.new_with_mnemonic( '_Remove Output Channel') edit_menu.append(self.channel_remove_output_menu_item) self.channel_remove_output_menu = Gtk.Menu() self.channel_remove_output_menu_item.set_submenu( self.channel_remove_output_menu) channel_remove_all_menu_item = Gtk.MenuItem.new_with_mnemonic('Clear') edit_menu.append(channel_remove_all_menu_item) channel_remove_all_menu_item.connect("activate", self.on_channels_clear) edit_menu.append(Gtk.SeparatorMenuItem()) preferences = Gtk.MenuItem.new_with_mnemonic('_Preferences') preferences.connect('activate', self.on_preferences_cb) edit_menu.append(preferences) help_menu = Gtk.Menu() help_menu_item.set_submenu(help_menu) about = Gtk.MenuItem.new_with_mnemonic('_About') help_menu.append(about) about.connect("activate", self.on_about) self.hbox_top = Gtk.HBox() self.vbox_top.pack_start(self.hbox_top, True, True, 0) self.scrolled_window = Gtk.ScrolledWindow() self.hbox_top.pack_start(self.scrolled_window, True, True, 0) self.hbox_inputs = Gtk.HBox() self.hbox_inputs.set_spacing(0) self.hbox_inputs.set_border_width(0) self.hbox_top.set_spacing(0) self.hbox_top.set_border_width(0) self.channels = [] self.output_channels = [] self.scrolled_window.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC) self.scrolled_window.add(self.hbox_inputs) self.hbox_outputs = Gtk.HBox() self.hbox_outputs.set_spacing(0) self.hbox_outputs.set_border_width(0) frame = Gtk.Frame() self.hbox_outputs.pack_start(frame, False, True, 0) self.hbox_top.pack_start(self.hbox_outputs, False, True, 0) self.window.connect("destroy", Gtk.main_quit) self.window.connect('delete-event', self.on_delete_event) GLib.timeout_add(80, self.read_meters) self.lash_client = lash_client GLib.timeout_add(200, self.lash_check_events) GLib.timeout_add(50, self.midi_events_check)
def __init__(self, name, lash_client): self.mixer = jack_mixer_c.Mixer(name) if not self.mixer: return self.monitor_channel = self.mixer.add_output_channel( "Monitor", True, True) self.save = False if lash_client: # Send our client name to server lash_event = lash.lash_event_new_with_type(lash.LASH_Client_Name) lash.lash_event_set_string(lash_event, name) lash.lash_send_event(lash_client, lash_event) lash.lash_jack_client_name(lash_client, name) self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) if name != self.mixer.client_name(): self.window.set_title(name + " (" + self.mixer.client_name() + ")") else: self.window.set_title(name) self.window.set_icon_name('jack_mixer') self.gui_factory = gui.Factory(self.window, self.meter_scales, self.slider_scales) self.vbox_top = gtk.VBox() self.window.add(self.vbox_top) self.menubar = gtk.MenuBar() self.vbox_top.pack_start(self.menubar, False) mixer_menu_item = gtk.MenuItem("_Mixer") self.menubar.append(mixer_menu_item) edit_menu_item = gtk.MenuItem('_Edit') self.menubar.append(edit_menu_item) help_menu_item = gtk.MenuItem('_Help') self.menubar.append(help_menu_item) self.window.set_default_size(120, 300) mixer_menu = gtk.Menu() mixer_menu_item.set_submenu(mixer_menu) add_input_channel = gtk.ImageMenuItem('New _Input Channel') mixer_menu.append(add_input_channel) add_input_channel.connect("activate", self.on_add_input_channel) add_output_channel = gtk.ImageMenuItem('New _Output Channel') mixer_menu.append(add_output_channel) add_output_channel.connect("activate", self.on_add_output_channel) mixer_menu.append(gtk.SeparatorMenuItem()) open = gtk.ImageMenuItem(gtk.STOCK_OPEN) mixer_menu.append(open) open.connect('activate', self.on_open_cb) save = gtk.ImageMenuItem(gtk.STOCK_SAVE) mixer_menu.append(save) save.connect('activate', self.on_save_cb) save_as = gtk.ImageMenuItem(gtk.STOCK_SAVE_AS) mixer_menu.append(save_as) save_as.connect('activate', self.on_save_as_cb) mixer_menu.append(gtk.SeparatorMenuItem()) quit = gtk.ImageMenuItem(gtk.STOCK_QUIT) mixer_menu.append(quit) quit.connect('activate', self.on_quit_cb) edit_menu = gtk.Menu() edit_menu_item.set_submenu(edit_menu) self.channel_edit_input_menu_item = gtk.MenuItem('_Edit Input Channel') edit_menu.append(self.channel_edit_input_menu_item) self.channel_edit_input_menu = gtk.Menu() self.channel_edit_input_menu_item.set_submenu( self.channel_edit_input_menu) self.channel_edit_output_menu_item = gtk.MenuItem( 'Edit _Output Channel') edit_menu.append(self.channel_edit_output_menu_item) self.channel_edit_output_menu = gtk.Menu() self.channel_edit_output_menu_item.set_submenu( self.channel_edit_output_menu) self.channel_remove_input_menu_item = gtk.MenuItem( 'Remove _Input Channel') edit_menu.append(self.channel_remove_input_menu_item) self.channel_remove_input_menu = gtk.Menu() self.channel_remove_input_menu_item.set_submenu( self.channel_remove_input_menu) self.channel_remove_output_menu_item = gtk.MenuItem( '_Remove Output Channel') edit_menu.append(self.channel_remove_output_menu_item) self.channel_remove_output_menu = gtk.Menu() self.channel_remove_output_menu_item.set_submenu( self.channel_remove_output_menu) channel_remove_all_menu_item = gtk.ImageMenuItem(gtk.STOCK_CLEAR) edit_menu.append(channel_remove_all_menu_item) channel_remove_all_menu_item.connect("activate", self.on_channels_clear) edit_menu.append(gtk.SeparatorMenuItem()) preferences = gtk.ImageMenuItem(gtk.STOCK_PREFERENCES) preferences.connect('activate', self.on_preferences_cb) edit_menu.append(preferences) help_menu = gtk.Menu() help_menu_item.set_submenu(help_menu) about = gtk.ImageMenuItem(gtk.STOCK_ABOUT) help_menu.append(about) about.connect("activate", self.on_about) self.hbox_top = gtk.HBox() self.vbox_top.pack_start(self.hbox_top, True) self.scrolled_window = gtk.ScrolledWindow() self.hbox_top.pack_start(self.scrolled_window, True) self.hbox_inputs = gtk.HBox() self.hbox_inputs.set_spacing(0) self.hbox_inputs.set_border_width(0) self.hbox_top.set_spacing(0) self.hbox_top.set_border_width(0) self.channels = [] self.output_channels = [] self.scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.scrolled_window.add_with_viewport(self.hbox_inputs) self.hbox_outputs = gtk.HBox() self.hbox_outputs.set_spacing(0) self.hbox_outputs.set_border_width(0) frame = gtk.Frame() self.hbox_outputs.pack_start(frame, False) self.hbox_top.pack_start(self.hbox_outputs, False) self.window.connect("destroy", gtk.main_quit) self.trayicon = TrayIcon(self) self.window.connect('delete-event', self.on_delete_event) gobject.timeout_add(80, self.read_meters) self.lash_client = lash_client gobject.timeout_add(200, self.lash_check_events) gobject.timeout_add(50, self.midi_events_check)