Example #1
0
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)
Example #3
0
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)