def set_midi_config(): global preset_preload_noteon, midi_single_active_channel global midi_prog_change_zs3, midi_fine_tuning global midi_filter_rules, midi_filter_output global midi_sys_enabled, midi_clock_enabled, midi_aubionotes_enabled global midi_network_enabled, midi_rtpmidi_enabled, midi_touchosc_enabled global master_midi_channel, master_midi_change_type global master_midi_program_change_up, master_midi_program_change_down global master_midi_program_base, master_midi_bank_change_ccnum global master_midi_bank_change_up, master_midi_bank_change_down global master_midi_bank_change_down_ccnum, master_midi_bank_base global disabled_midi_in_ports, enabled_midi_out_ports, enabled_midi_fb_ports # MIDI options midi_fine_tuning = int(os.environ.get('ZYNTHIAN_MIDI_FINE_TUNING', 440)) midi_single_active_channel = int( os.environ.get('ZYNTHIAN_MIDI_SINGLE_ACTIVE_CHANNEL', 0)) midi_prog_change_zs3 = int( os.environ.get('ZYNTHIAN_MIDI_PROG_CHANGE_ZS3', 1)) preset_preload_noteon = int( os.environ.get('ZYNTHIAN_MIDI_PRESET_PRELOAD_NOTEON', 1)) midi_filter_output = int(os.environ.get('ZYNTHIAN_MIDI_FILTER_OUTPUT', 1)) midi_sys_enabled = int(os.environ.get('ZYNTHIAN_MIDI_SYS_ENABLED', 1)) midi_clock_enabled = int(os.environ.get('ZYNTHIAN_MIDI_CLOCK_ENABLED', 0)) midi_network_enabled = int( os.environ.get('ZYNTHIAN_MIDI_NETWORK_ENABLED', 0)) midi_rtpmidi_enabled = int( os.environ.get('ZYNTHIAN_MIDI_RTPMIDI_ENABLED', 0)) midi_touchosc_enabled = int( os.environ.get('ZYNTHIAN_MIDI_TOUCHOSC_ENABLED', 0)) midi_aubionotes_enabled = int( os.environ.get('ZYNTHIAN_MIDI_AUBIONOTES_ENABLED', 0)) # Filter Rules midi_filter_rules = os.environ.get('ZYNTHIAN_MIDI_FILTER_RULES', "") midi_filter_rules = midi_filter_rules.replace("\\n", "\n") # MIDI Ports midi_ports = os.environ.get( 'ZYNTHIAN_MIDI_PORTS', "DISABLED_IN=\nENABLED_OUT=ttymidi:MIDI_out\nENABLED_FB=") midi_ports = midi_ports.replace("\\n", "\n") disabled_midi_in_ports = zynconf.get_disabled_midi_in_ports(midi_ports) enabled_midi_out_ports = zynconf.get_enabled_midi_out_ports(midi_ports) enabled_midi_fb_ports = zynconf.get_enabled_midi_fb_ports(midi_ports) # Master Channel Features master_midi_channel = int( os.environ.get('ZYNTHIAN_MIDI_MASTER_CHANNEL', 16)) if master_midi_channel > 16: master_midi_channel = 16 master_midi_channel -= 1 if master_midi_channel >= 0: mmc_hex = hex(master_midi_channel)[2] else: mmc_hex = None master_midi_change_type = os.environ.get( 'ZYNTHIAN_MIDI_MASTER_CHANGE_TYPE', "Roland") #Use LSB Bank by default master_midi_bank_change_ccnum = int( os.environ.get('ZYNTHIAN_MIDI_MASTER_BANK_CHANGE_CCNUM', 0x20)) #Use MSB Bank by default #master_midi_bank_change_ccnum = int(os.environ.get('ZYNTHIAN_MIDI_MASTER_BANK_CHANGE_CCNUM',0x00)) mmpcu = os.environ.get('ZYNTHIAN_MIDI_MASTER_PROGRAM_CHANGE_UP', "") if mmc_hex and len(mmpcu) == 4: master_midi_program_change_up = int( '{:<06}'.format(mmpcu.replace('#', mmc_hex)), 16) else: master_midi_program_change_up = None mmpcd = os.environ.get('ZYNTHIAN_MIDI_MASTER_PROGRAM_CHANGE_DOWN', "") if mmc_hex and len(mmpcd) == 4: master_midi_program_change_down = int( '{:<06}'.format(mmpcd.replace('#', mmc_hex)), 16) else: master_midi_program_change_down = None mmbcu = os.environ.get('ZYNTHIAN_MIDI_MASTER_BANK_CHANGE_UP', "") if mmc_hex and len(mmbcu) == 6: master_midi_bank_change_up = int( '{:<06}'.format(mmbcu.replace('#', mmc_hex)), 16) else: master_midi_bank_change_up = None mmbcd = os.environ.get('ZYNTHIAN_MIDI_MASTER_BANK_CHANGE_DOWN', "") if mmc_hex and len(mmbcd) == 6: master_midi_bank_change_down = int( '{:<06}'.format(mmbcd.replace('#', mmc_hex)), 16) else: master_midi_bank_change_down = None logging.debug( "MMC Bank Change CCNum: {}".format(master_midi_bank_change_ccnum)) logging.debug("MMC Bank Change UP: {}".format(master_midi_bank_change_up)) logging.debug( "MMC Bank Change DOWN: {}".format(master_midi_bank_change_down)) logging.debug( "MMC Program Change UP: {}".format(master_midi_program_change_up)) logging.debug( "MMC Program Change DOWN: {}".format(master_midi_program_change_down))
def set_midi_config(): global preset_preload_noteon, midi_single_active_channel global midi_network_enabled, midi_touchosc_enabled, midi_aubionotes_enabled global midi_prog_change_zs3, midi_fine_tuning, midi_filter_rules global master_midi_channel, master_midi_change_type global master_midi_program_change_up, master_midi_program_change_down global master_midi_program_base, master_midi_bank_change_ccnum global master_midi_bank_change_up, master_midi_bank_change_down global master_midi_bank_change_down_ccnum, master_midi_bank_base global disabled_midi_in_ports, enabled_midi_out_ports, enabled_midi_fb_ports # MIDI options midi_fine_tuning = int(os.environ.get('ZYNTHIAN_MIDI_FINE_TUNING', 440)) midi_single_active_channel = int( os.environ.get('ZYNTHIAN_MIDI_SINGLE_ACTIVE_CHANNEL', 0)) midi_prog_change_zs3 = int( os.environ.get('ZYNTHIAN_MIDI_PROG_CHANGE_ZS3', 1)) preset_preload_noteon = int( os.environ.get('ZYNTHIAN_MIDI_PRESET_PRELOAD_NOTEON', 1)) midi_network_enabled = int( os.environ.get('ZYNTHIAN_MIDI_NETWORK_ENABLED', 0)) midi_touchosc_enabled = int( os.environ.get('ZYNTHIAN_MIDI_TOUCHOSC_ENABLED', 0)) midi_aubionotes_enabled = int( os.environ.get('ZYNTHIAN_MIDI_AUBIONOTES_ENABLED', 0)) # Filter Rules midi_filter_rules = os.environ.get('ZYNTHIAN_MIDI_FILTER_RULES', "") midi_filter_rules = midi_filter_rules.replace("\\n", "\n") # MIDI Ports midi_ports = os.environ.get( 'ZYNTHIAN_MIDI_PORTS', "DISABLED_IN=\nENABLED_OUT=ttymidi:MIDI_out\nENABLED_FB=") midi_ports = midi_ports.replace("\\n", "\n") disabled_midi_in_ports = zynconf.get_disabled_midi_in_ports(midi_ports) enabled_midi_out_ports = zynconf.get_enabled_midi_out_ports(midi_ports) enabled_midi_fb_ports = zynconf.get_enabled_midi_fb_ports(midi_ports) # Master Channel Features master_midi_channel = int( os.environ.get('ZYNTHIAN_MIDI_MASTER_CHANNEL', 16)) master_midi_change_type = os.environ.get( 'ZYNTHIAN_MIDI_MASTER_CHANGE_TYPE', "Roland") master_midi_program_change_up = os.environ.get( 'ZYNTHIAN_MIDI_MASTER_PROGRAM_CHANGE_UP', "C#7F") master_midi_program_change_down = os.environ.get( 'ZYNTHIAN_MIDI_MASTER_PROGRAM_CHANGE_DOWN', "C#00") if master_midi_program_change_down == "C#00": master_midi_program_base = 1 else: master_midi_program_base = 0 #Use LSB Bank by default master_midi_bank_change_ccnum = os.environ.get( 'ZYNTHIAN_MIDI_MASTER_BANK_CHANGE_CCNUM', 0x20) #Use MSB Bank by default #master_midi_bank_change_ccnum=os.environ.get('ZYNTHIAN_MIDI_MASTER_BANK_CHANGE_CCNUM',0x00) master_midi_bank_change_up = os.environ.get( 'ZYNTHIAN_MIDI_MASTER_BANK_CHANGE_UP', "B#207F") master_midi_bank_change_down = os.environ.get( 'ZYNTHIAN_MIDI_MASTER_BANK_CHANGE_DOWN', "B#2000") try: master_midi_bank_change_down_ccnum = int( master_midi_bank_change_down[2:4], 16) if master_midi_bank_change_down_ccnum == master_midi_bank_change_ccnum: master_midi_bank_base = 1 else: master_midi_bank_base = 0 except: master_midi_bank_base = 0 #MIDI channels: 0-15 if master_midi_channel > 16: master_midi_channel = 16 master_midi_channel = master_midi_channel - 1 mmc_hex = hex(master_midi_channel)[2] #Calculate MIDI Sequences and convert to Integer master_midi_program_change_up = int( '{:<06}'.format(master_midi_program_change_up.replace('#', mmc_hex)), 16) master_midi_program_change_down = int( '{:<06}'.format(master_midi_program_change_down.replace('#', mmc_hex)), 16) master_midi_bank_change_up = int( '{:<06}'.format(master_midi_bank_change_up.replace('#', mmc_hex)), 16) master_midi_bank_change_down = int( '{:<06}'.format(master_midi_bank_change_down.replace('#', mmc_hex)), 16)
def get_ports_config(current_midi_ports=""): midi_ports = {'IN': [], 'OUT': [], 'FB': []} try: #Get MIDI ports list from jack client = jack.Client("ZynthianWebConf") #For jack, output/input convention are reversed => output=readable, input=writable midi_in_ports = client.get_ports(is_midi=True, is_physical=True, is_output=True) midi_out_ports = client.get_ports(is_midi=True, is_physical=True, is_input=True) #Add QMidiNet ports qmidinet_in_ports = client.get_ports("QmidiNet", is_midi=True, is_physical=False, is_output=True) qmidinet_out_ports = client.get_ports("QmidiNet", is_midi=True, is_physical=False, is_input=True) try: midi_in_ports.append(qmidinet_in_ports[0]) midi_out_ports.append(qmidinet_out_ports[0]) except: pass #Add RTP-Midi ports rtpmidi_in_ports = client.get_ports("jackrtpmidid", is_midi=True, is_physical=False, is_output=True) rtpmidi_out_ports = client.get_ports("jackrtpmidid", is_midi=True, is_physical=False, is_input=True) try: midi_in_ports.append(rtpmidi_in_ports[0]) midi_out_ports.append(rtpmidi_out_ports[0]) except: pass disabled_midi_in_ports = zynconf.get_disabled_midi_in_ports( current_midi_ports) enabled_midi_out_ports = zynconf.get_enabled_midi_out_ports( current_midi_ports) enabled_midi_fb_ports = zynconf.get_enabled_midi_fb_ports( current_midi_ports) #Generate MIDI_PORTS{IN,OUT,FB} configuration array for idx, midi_port in enumerate(midi_in_ports): alias = get_port_alias(midi_port) port_id = alias.replace(' ', '_') midi_ports['IN'].append({ 'name': midi_port.name, 'shortname': midi_port.shortname, 'alias': alias, 'id': port_id, 'checked': 'checked="checked"' if port_id not in disabled_midi_in_ports else '' }) for idx, midi_port in enumerate(midi_out_ports): alias = get_port_alias(midi_port) port_id = alias.replace(' ', '_') midi_ports['OUT'].append({ 'name': midi_port.name, 'shortname': midi_port.shortname, 'alias': alias, 'id': port_id, 'checked': 'checked="checked"' if port_id in enabled_midi_out_ports else '' }) for idx, midi_port in enumerate(midi_out_ports): alias = get_port_alias(midi_port) port_id = alias.replace(' ', '_') midi_ports['FB'].append({ 'name': midi_port.name, 'shortname': midi_port.shortname, 'alias': alias, 'id': port_id, 'checked': 'checked="checked"' if port_id in enabled_midi_fb_ports else '' }) except Exception as e: logging.error("%s" % e) logging.debug("MIDI_PORTS => %s" % midi_ports) return midi_ports
def set_midi_config(): global master_midi_channel, master_midi_change_type global master_midi_program_change_up, master_midi_program_change_down global master_midi_program_base, master_midi_bank_change_ccnum global master_midi_bank_change_up, master_midi_bank_change_down global master_midi_bank_change_down_ccnum, master_midi_bank_base global preset_preload_noteon, midi_single_active_channel global midi_prog_change_zs3, midi_fine_tuning, midi_filter_rules global disabled_midi_in_ports, enabled_midi_out_ports, enabled_midi_fb_ports master_midi_channel=int(os.environ.get('ZYNTHIAN_MIDI_MASTER_CHANNEL',16)) master_midi_change_type=os.environ.get('ZYNTHIAN_MIDI_MASTER_CHANGE_TYPE',"Roland") master_midi_program_change_up=os.environ.get('ZYNTHIAN_MIDI_MASTER_PROGRAM_CHANGE_UP',"C#7F") master_midi_program_change_down=os.environ.get('ZYNTHIAN_MIDI_MASTER_PROGRAM_CHANGE_DOWN',"C#00") if master_midi_program_change_down=="C#00": master_midi_program_base=1 else: master_midi_program_base=0 #Use LSB Bank by default master_midi_bank_change_ccnum=os.environ.get('ZYNTHIAN_MIDI_MASTER_BANK_CHANGE_CCNUM',0x20) #Use MSB Bank by default #master_midi_bank_change_ccnum=os.environ.get('ZYNTHIAN_MIDI_MASTER_BANK_CHANGE_CCNUM',0x00) master_midi_bank_change_up=os.environ.get('ZYNTHIAN_MIDI_MASTER_BANK_CHANGE_UP',"B#207F") master_midi_bank_change_down=os.environ.get('ZYNTHIAN_MIDI_MASTER_BANK_CHANGE_DOWN',"B#2000") try: master_midi_bank_change_down_ccnum=int(master_midi_bank_change_down[2:4],16) if master_midi_bank_change_down_ccnum==master_midi_bank_change_ccnum: master_midi_bank_base=1 else: master_midi_bank_base=0 except: master_midi_bank_base=0 #MIDI channels: 0-15 if master_midi_channel>16: master_midi_channel=16 master_midi_channel=master_midi_channel-1 mmc_hex=hex(master_midi_channel)[2] #Calculate MIDI Sequences and convert to Integer master_midi_program_change_up=int('{:<06}'.format(master_midi_program_change_up.replace('#',mmc_hex)),16) master_midi_program_change_down=int('{:<06}'.format(master_midi_program_change_down.replace('#',mmc_hex)),16) master_midi_bank_change_up=int('{:<06}'.format(master_midi_bank_change_up.replace('#',mmc_hex)),16) master_midi_bank_change_down=int('{:<06}'.format(master_midi_bank_change_down.replace('#',mmc_hex)),16) midi_single_active_channel=int(os.environ.get('ZYNTHIAN_MIDI_SINGLE_ACTIVE_CHANNEL',0)) midi_prog_change_zs3=int(os.environ.get('ZYNTHIAN_MIDI_PROG_CHANGE_ZS3',1)) preset_preload_noteon=int(os.environ.get('ZYNTHIAN_MIDI_PRESET_PRELOAD_NOTEON',1)) midi_fine_tuning=int(os.environ.get('ZYNTHIAN_MIDI_FINE_TUNING',440)) midi_filter_rules=os.environ.get('ZYNTHIAN_MIDI_FILTER_RULES',"") midi_filter_rules=midi_filter_rules.replace("\\n","\n") midi_ports=os.environ.get('ZYNTHIAN_MIDI_PORTS',"DISABLED_IN=\nENABLED_OUT=ttymidi:MIDI_out\nENABLED_FB=") midi_ports=midi_ports.replace("\\n","\n") disabled_midi_in_ports=zynconf.get_disabled_midi_in_ports(midi_ports) enabled_midi_out_ports=zynconf.get_enabled_midi_out_ports(midi_ports) enabled_midi_fb_ports=zynconf.get_enabled_midi_fb_ports(midi_ports)
def set_midi_config(): global master_midi_channel, master_midi_change_type global master_midi_program_change_up, master_midi_program_change_down global master_midi_program_base, master_midi_bank_change_ccnum global master_midi_bank_change_up, master_midi_bank_change_down global master_midi_bank_change_down_ccnum, master_midi_bank_base global preset_preload_noteon, midi_fine_tuning, midi_filter_rules global disabled_midi_in_ports, enabled_midi_out_ports master_midi_channel = int( os.environ.get('ZYNTHIAN_MIDI_MASTER_CHANNEL', 16)) master_midi_change_type = os.environ.get( 'ZYNTHIAN_MIDI_MASTER_CHANGE_TYPE', "Roland") master_midi_program_change_up = os.environ.get( 'ZYNTHIAN_MIDI_MASTER_PROGRAM_CHANGE_UP', "C#7F") master_midi_program_change_down = os.environ.get( 'ZYNTHIAN_MIDI_MASTER_PROGRAM_CHANGE_DOWN', "C#00") if master_midi_program_change_down == "C#00": master_midi_program_base = 1 else: master_midi_program_base = 0 #Use LSB Bank by default master_midi_bank_change_ccnum = os.environ.get( 'ZYNTHIAN_MIDI_MASTER_BANK_CHANGE_CCNUM', 0x20) #Use MSB Bank by default #master_midi_bank_change_ccnum=os.environ.get('ZYNTHIAN_MIDI_MASTER_BANK_CHANGE_CCNUM',0x00) master_midi_bank_change_up = os.environ.get( 'ZYNTHIAN_MIDI_MASTER_BANK_CHANGE_UP', "B#207F") master_midi_bank_change_down = os.environ.get( 'ZYNTHIAN_MIDI_MASTER_BANK_CHANGE_DOWN', "B#2000") try: master_midi_bank_change_down_ccnum = int( master_midi_bank_change_down[2:4], 16) if master_midi_bank_change_down_ccnum == master_midi_bank_change_ccnum: master_midi_bank_base = 1 else: master_midi_bank_base = 0 except: master_midi_bank_base = 0 #MIDI channels: 0-15 if master_midi_channel > 16: master_midi_channel = 16 master_midi_channel = master_midi_channel - 1 mmc_hex = hex(master_midi_channel)[2] #Calculate MIDI Sequences and convert to Integer master_midi_program_change_up = int( '{:<06}'.format(master_midi_program_change_up.replace('#', mmc_hex)), 16) master_midi_program_change_down = int( '{:<06}'.format(master_midi_program_change_down.replace('#', mmc_hex)), 16) master_midi_bank_change_up = int( '{:<06}'.format(master_midi_bank_change_up.replace('#', mmc_hex)), 16) master_midi_bank_change_down = int( '{:<06}'.format(master_midi_bank_change_down.replace('#', mmc_hex)), 16) preset_preload_noteon = int( os.environ.get('ZYNTHIAN_MIDI_PRESET_PRELOAD_NOTEON', 1)) midi_fine_tuning = int(os.environ.get('ZYNTHIAN_MIDI_FINE_TUNING', 440)) midi_filter_rules = os.environ.get('ZYNTHIAN_MIDI_FILTER_RULES', "") midi_filter_rules = midi_filter_rules.replace("\\n", "\n") midi_ports = os.environ.get('ZYNTHIAN_MIDI_PORTS', "DISABLED_IN=\nENABLED_OUT=MIDI_out") midi_ports = midi_ports.replace("\\n", "\n") disabled_midi_in_ports = zynconf.get_disabled_midi_in_ports(midi_ports) enabled_midi_out_ports = zynconf.get_enabled_midi_out_ports(midi_ports)