Пример #1
0
    def get_all_ports_and_connections(self):
        self.port_list.clear()
        self.connection_list.clear()
        self.metadata_list.clear()

        #get all currents Jack ports and connections
        port_name_list = c_char_p_p_to_list(
            jacklib.get_ports(self.jack_client, "", "", 0))

        client_names = []

        for port_name in port_name_list:
            port_ptr = jacklib.port_by_name(self.jack_client, port_name)
            jport = JackPort(port_name, self.jack_client)
            self.port_list.append(jport)

            client_name = port_name.partition(':')[0]
            if not client_name in client_names:
                client_names.append(client_name)

            # get port metadatas
            for key in (jacklib.JACK_METADATA_CONNECTED,
                        jacklib.JACK_METADATA_ORDER,
                        jacklib.JACK_METADATA_PORT_GROUP,
                        jacklib.JACK_METADATA_PRETTY_NAME):
                prop = jacklib.get_property(jport.uuid, key)
                if prop is None:
                    continue

                value = self.get_metadata_value_str(prop)
                self.metadata_list.append({
                    'uuid': jport.uuid,
                    'key': key,
                    'value': value
                })

            if jport.flags & jacklib.JackPortIsInput:
                continue

            port_ptr = jacklib.port_by_name(self.jack_client, jport.name)

            # this port is output, list its connections
            port_connection_names = tuple(
                jacklib.port_get_all_connections(self.jack_client, port_ptr))

            for port_con_name in port_connection_names:
                self.connection_list.append((jport.name, port_con_name))

        for client_name in client_names:
            uuid = jacklib.get_uuid_for_client_name(self.jack_client,
                                                    client_name)
            if not uuid:
                continue

            self.client_list.append({'name': client_name, 'uuid': int(uuid)})
Пример #2
0
    def __init__(self, port_name: str, jack_client, port_ptr=None):
        # In some cases, port could has just been renamed
        # then, jacklib.port_by_name fail.
        # that is why, port_ptr can be sent as argument here
        self.name = port_name
        if port_ptr is None:
            port_ptr = jacklib.port_by_name(jack_client, port_name)
        self.flags = jacklib.port_flags(port_ptr)
        self.uuid = jacklib.port_uuid(port_ptr)

        port_type_str = jacklib.port_type(port_ptr)
        if port_type_str == jacklib.JACK_DEFAULT_AUDIO_TYPE:
            self.type = PORT_TYPE_AUDIO
        elif port_type_str == jacklib.JACK_DEFAULT_MIDI_TYPE:
            self.type = PORT_TYPE_MIDI

        order_prop = jacklib.get_property(self.uuid,
                                          jacklib.JACK_METADATA_ORDER)

        ret, alias_1, alias_2 = jacklib.port_get_aliases(port_ptr)
        if ret:
            self.alias_1 = alias_1
            self.alias_2 = alias_2
Пример #3
0
    NSMServer.start()
    NSMServer.announce('JACK Connections', ':dirty:switch:', 'ray-jackpatch')

    #connect signals
    signal.signal(signal.SIGINT, signalHandler)
    signal.signal(signal.SIGTERM, signalHandler)

    #get all currents Jack ports and connections
    portNameList = c_char_p_p_to_list(jacklib.get_ports(jack_client,
                                                        "", "", 0))

    for portName in portNameList:
        jack_port = JackPort()
        jack_port.name = portName

        portPtr = jacklib.port_by_name(jack_client, portName)
        portFlags = jacklib.port_flags(portPtr)

        if portFlags & jacklib.JackPortIsInput:
            jack_port.mode = PORT_MODE_INPUT
        elif portFlags & jacklib.JackPortIsOutput:
            jack_port.mode = PORT_MODE_OUTPUT
        else:
            jack_port.mode = PORT_MODE_NULL

        portTypeStr = str(jacklib.port_type(portPtr), encoding="utf-8")
        if portTypeStr == jacklib.JACK_DEFAULT_AUDIO_TYPE:
            jack_port.type = PORT_TYPE_AUDIO
        elif portTypeStr == jacklib.JACK_DEFAULT_MIDI_TYPE:
            jack_port.type = PORT_TYPE_MIDI
        else:
Пример #4
0
 def _get_port(self, port_name):
     return jacklib.port_by_name(self.client, port_name)