* Set MIDI port pretty names on macOS * Set MIDI port pretty names on Windows * Set MIDI port pretty names on Linux/alsarawmidi * Update alsarawmidi port naming to match CoreMIDI and WinMME * Rename PortSetPrettyNameProperty to PortSetDeviceName * Set hardware property to MIDI port namestags/v1.9.13
| @@ -34,6 +34,9 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
| #include "JackChannel.h" | #include "JackChannel.h" | ||||
| #include "JackError.h" | #include "JackError.h" | ||||
| extern const char* JACK_METADATA_HARDWARE; | |||||
| extern const char* JACK_METADATA_PRETTY_NAME; | |||||
| namespace Jack | namespace Jack | ||||
| { | { | ||||
| @@ -1071,6 +1074,25 @@ int JackEngine::PortRename(int refnum, jack_port_id_t port, const char* name) | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| int JackEngine::PortSetDeviceName(jack_port_id_t port, const char* pretty_name) | |||||
| { | |||||
| static const char* type = "text/plain"; | |||||
| jack_uuid_t uuid = jack_port_uuid_generate(port); | |||||
| int res = fMetadata.SetProperty(NULL, uuid, JACK_METADATA_HARDWARE, pretty_name, type); | |||||
| if (res == -1) { | |||||
| return -1; | |||||
| } | |||||
| char *v, *t; | |||||
| res = fMetadata.GetProperty(uuid, JACK_METADATA_PRETTY_NAME, &v, &t); | |||||
| if (res == -1) { | |||||
| res = fMetadata.SetProperty(NULL, uuid, JACK_METADATA_PRETTY_NAME, pretty_name, type); | |||||
| } | |||||
| return res; | |||||
| } | |||||
| //-------------------- | //-------------------- | ||||
| // Session management | // Session management | ||||
| //-------------------- | //-------------------- | ||||
| @@ -138,6 +138,8 @@ class SERVER_EXPORT JackEngine : public JackLockAble | |||||
| int PortRename(int refnum, jack_port_id_t port, const char* name); | int PortRename(int refnum, jack_port_id_t port, const char* name); | ||||
| int PortSetDeviceName(jack_port_id_t port, const char* pretty_name); | |||||
| int ComputeTotalLatencies(); | int ComputeTotalLatencies(); | ||||
| int PropertyChangeNotify(jack_uuid_t subject, const char* key,jack_property_change_t change); | int PropertyChangeNotify(jack_uuid_t subject, const char* key,jack_property_change_t change); | ||||
| @@ -48,12 +48,6 @@ extern "C" | |||||
| LIB_EXPORT int jack_get_client_pid (const char *name); | LIB_EXPORT int jack_get_client_pid (const char *name); | ||||
| // Metadata API | // Metadata API | ||||
| LIB_EXPORT const char* JACK_METADATA_PRETTY_NAME = "http://jackaudio.org/metadata/pretty-name"; | |||||
| LIB_EXPORT const char* JACK_METADATA_HARDWARE = "http://jackaudio.org/metadata/hardware"; | |||||
| LIB_EXPORT const char* JACK_METADATA_CONNECTED = "http://jackaudio.org/metadata/connected"; | |||||
| LIB_EXPORT const char* JACK_METADATA_PORT_GROUP = "http://jackaudio.org/metadata/port-group"; | |||||
| LIB_EXPORT const char* JACK_METADATA_ICON_SMALL = "http://jackaudio.org/metadata/icon-small"; | |||||
| LIB_EXPORT const char* JACK_METADATA_ICON_LARGE = "http://jackaudio.org/metadata/icon-large"; | |||||
| LIB_EXPORT int jack_set_property(jack_client_t*, jack_uuid_t subject, const char* key, const char* value, const char* type); | LIB_EXPORT int jack_set_property(jack_client_t*, jack_uuid_t subject, const char* key, const char* value, const char* type); | ||||
| LIB_EXPORT int jack_get_property(jack_uuid_t subject, const char* key, char** value, char** type); | LIB_EXPORT int jack_get_property(jack_uuid_t subject, const char* key, char** value, char** type); | ||||
| @@ -246,6 +246,14 @@ class SERVER_EXPORT JackLockedEngine | |||||
| CATCH_EXCEPTION_RETURN | CATCH_EXCEPTION_RETURN | ||||
| } | } | ||||
| int PortSetDeviceName(int refnum, jack_port_id_t port, const char* pretty_name) | |||||
| { | |||||
| TRY_CALL | |||||
| JackLock lock(&fEngine); | |||||
| return (fEngine.CheckClient(refnum)) ? fEngine.PortSetDeviceName(port, pretty_name) : -1; | |||||
| CATCH_EXCEPTION_RETURN | |||||
| } | |||||
| int ComputeTotalLatencies() | int ComputeTotalLatencies() | ||||
| { | { | ||||
| TRY_CALL | TRY_CALL | ||||
| @@ -25,6 +25,14 @@ | |||||
| #include <limits.h> | #include <limits.h> | ||||
| LIB_EXPORT const char* JACK_METADATA_PRETTY_NAME = "http://jackaudio.org/metadata/pretty-name"; | |||||
| LIB_EXPORT const char* JACK_METADATA_HARDWARE = "http://jackaudio.org/metadata/hardware"; | |||||
| LIB_EXPORT const char* JACK_METADATA_CONNECTED = "http://jackaudio.org/metadata/connected"; | |||||
| LIB_EXPORT const char* JACK_METADATA_PORT_GROUP = "http://jackaudio.org/metadata/port-group"; | |||||
| LIB_EXPORT const char* JACK_METADATA_ICON_SMALL = "http://jackaudio.org/metadata/icon-small"; | |||||
| LIB_EXPORT const char* JACK_METADATA_ICON_LARGE = "http://jackaudio.org/metadata/icon-large"; | |||||
| namespace Jack | namespace Jack | ||||
| { | { | ||||
| @@ -80,6 +80,8 @@ JackALSARawMidiDriver::Attach() | |||||
| port = fGraphManager->GetPort(index); | port = fGraphManager->GetPort(index); | ||||
| port->SetAlias(alias); | port->SetAlias(alias); | ||||
| port->SetLatencyRange(JackCaptureLatency, &latency_range); | port->SetLatencyRange(JackCaptureLatency, &latency_range); | ||||
| fEngine->PortSetDeviceName(fClientControl.fRefNum, index, | |||||
| input_port->GetDeviceName()); | |||||
| fCapturePortList[i] = index; | fCapturePortList[i] = index; | ||||
| jack_info("JackALSARawMidiDriver::Attach - input port registered " | jack_info("JackALSARawMidiDriver::Attach - input port registered " | ||||
| @@ -106,6 +108,8 @@ JackALSARawMidiDriver::Attach() | |||||
| port = fGraphManager->GetPort(index); | port = fGraphManager->GetPort(index); | ||||
| port->SetAlias(alias); | port->SetAlias(alias); | ||||
| port->SetLatencyRange(JackPlaybackLatency, &latency_range); | port->SetLatencyRange(JackPlaybackLatency, &latency_range); | ||||
| fEngine->PortSetDeviceName(fClientControl.fRefNum, index, | |||||
| output_port->GetDeviceName()); | |||||
| fPlaybackPortList[i] = index; | fPlaybackPortList[i] = index; | ||||
| jack_info("JackALSARawMidiDriver::Attach - output port registered " | jack_info("JackALSARawMidiDriver::Attach - output port registered " | ||||
| @@ -405,6 +409,7 @@ JackALSARawMidiDriver::Open(bool capturing, bool playing, int in_channels, | |||||
| } | } | ||||
| size_t num_inputs = 0; | size_t num_inputs = 0; | ||||
| size_t num_outputs = 0; | size_t num_outputs = 0; | ||||
| const char *client_name = fClientControl.fName; | |||||
| if (potential_inputs) { | if (potential_inputs) { | ||||
| try { | try { | ||||
| input_ports = new JackALSARawMidiInputPort *[potential_inputs]; | input_ports = new JackALSARawMidiInputPort *[potential_inputs]; | ||||
| @@ -428,7 +433,7 @@ JackALSARawMidiDriver::Open(bool capturing, bool playing, int in_channels, | |||||
| for (size_t i = 0; i < potential_inputs; i++) { | for (size_t i = 0; i < potential_inputs; i++) { | ||||
| snd_rawmidi_info_t *info = in_info_list.at(i); | snd_rawmidi_info_t *info = in_info_list.at(i); | ||||
| try { | try { | ||||
| input_ports[num_inputs] = new JackALSARawMidiInputPort(info, i); | |||||
| input_ports[num_inputs] = new JackALSARawMidiInputPort(client_name, info, i); | |||||
| num_inputs++; | num_inputs++; | ||||
| } catch (std::exception& e) { | } catch (std::exception& e) { | ||||
| jack_error("JackALSARawMidiDriver::Open - while creating new " | jack_error("JackALSARawMidiDriver::Open - while creating new " | ||||
| @@ -439,7 +444,7 @@ JackALSARawMidiDriver::Open(bool capturing, bool playing, int in_channels, | |||||
| for (size_t i = 0; i < potential_outputs; i++) { | for (size_t i = 0; i < potential_outputs; i++) { | ||||
| snd_rawmidi_info_t *info = out_info_list.at(i); | snd_rawmidi_info_t *info = out_info_list.at(i); | ||||
| try { | try { | ||||
| output_ports[num_outputs] = new JackALSARawMidiOutputPort(info, i); | |||||
| output_ports[num_outputs] = new JackALSARawMidiOutputPort(client_name, info, i); | |||||
| num_outputs++; | num_outputs++; | ||||
| } catch (std::exception& e) { | } catch (std::exception& e) { | ||||
| jack_error("JackALSARawMidiDriver::Open - while creating new " | jack_error("JackALSARawMidiDriver::Open - while creating new " | ||||
| @@ -26,11 +26,12 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
| using Jack::JackALSARawMidiInputPort; | using Jack::JackALSARawMidiInputPort; | ||||
| JackALSARawMidiInputPort::JackALSARawMidiInputPort(snd_rawmidi_info_t *info, | |||||
| JackALSARawMidiInputPort::JackALSARawMidiInputPort(const char* client_name, | |||||
| snd_rawmidi_info_t *info, | |||||
| size_t index, | size_t index, | ||||
| size_t max_bytes, | size_t max_bytes, | ||||
| size_t max_messages): | size_t max_messages): | ||||
| JackALSARawMidiPort(info, index, POLLIN) | |||||
| JackALSARawMidiPort(client_name, info, index, POLLIN) | |||||
| { | { | ||||
| alsa_event = 0; | alsa_event = 0; | ||||
| jack_event = 0; | jack_event = 0; | ||||
| @@ -41,7 +41,9 @@ namespace Jack { | |||||
| public: | public: | ||||
| JackALSARawMidiInputPort(snd_rawmidi_info_t *info, size_t index, | |||||
| JackALSARawMidiInputPort(const char* client_name, | |||||
| snd_rawmidi_info_t *info, | |||||
| size_t index, | |||||
| size_t max_bytes=4096, | size_t max_bytes=4096, | ||||
| size_t max_messages=1024); | size_t max_messages=1024); | ||||
| @@ -25,12 +25,13 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
| using Jack::JackALSARawMidiOutputPort; | using Jack::JackALSARawMidiOutputPort; | ||||
| JackALSARawMidiOutputPort::JackALSARawMidiOutputPort(snd_rawmidi_info_t *info, | |||||
| JackALSARawMidiOutputPort::JackALSARawMidiOutputPort(const char* client_name, | |||||
| snd_rawmidi_info_t *info, | |||||
| size_t index, | size_t index, | ||||
| size_t max_bytes_per_poll, | size_t max_bytes_per_poll, | ||||
| size_t max_bytes, | size_t max_bytes, | ||||
| size_t max_messages): | size_t max_messages): | ||||
| JackALSARawMidiPort(info, index, POLLOUT) | |||||
| JackALSARawMidiPort(client_name, info, index, POLLOUT) | |||||
| { | { | ||||
| alsa_event = 0; | alsa_event = 0; | ||||
| read_queue = new JackMidiBufferReadQueue(); | read_queue = new JackMidiBufferReadQueue(); | ||||
| @@ -40,7 +40,9 @@ namespace Jack { | |||||
| public: | public: | ||||
| JackALSARawMidiOutputPort(snd_rawmidi_info_t *info, size_t index, | |||||
| JackALSARawMidiOutputPort(const char* client_name, | |||||
| snd_rawmidi_info_t *info, | |||||
| size_t index, | |||||
| size_t max_bytes_per_poll=3, | size_t max_bytes_per_poll=3, | ||||
| size_t max_bytes=4096, | size_t max_bytes=4096, | ||||
| size_t max_messages=1024); | size_t max_messages=1024); | ||||
| @@ -27,7 +27,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
| using Jack::JackALSARawMidiPort; | using Jack::JackALSARawMidiPort; | ||||
| JackALSARawMidiPort::JackALSARawMidiPort(snd_rawmidi_info_t *info, | |||||
| JackALSARawMidiPort::JackALSARawMidiPort(const char *client_name, snd_rawmidi_info_t *info, | |||||
| size_t index, unsigned short io_mask) | size_t index, unsigned short io_mask) | ||||
| { | { | ||||
| int card = snd_rawmidi_info_get_card(info); | int card = snd_rawmidi_info_get_card(info); | ||||
| @@ -36,20 +36,21 @@ JackALSARawMidiPort::JackALSARawMidiPort(snd_rawmidi_info_t *info, | |||||
| char device_id[32]; | char device_id[32]; | ||||
| snprintf(device_id, sizeof(device_id), "hw:%d,%d,%d", card, device, | snprintf(device_id, sizeof(device_id), "hw:%d,%d,%d", card, device, | ||||
| subdevice); | subdevice); | ||||
| const char* driver_name = snd_rawmidi_info_get_name(info); | |||||
| const char *alias_suffix; | const char *alias_suffix; | ||||
| const char *error_message; | const char *error_message; | ||||
| snd_rawmidi_t **in; | snd_rawmidi_t **in; | ||||
| const char *name_prefix; | |||||
| const char *port_name; | |||||
| snd_rawmidi_t **out; | snd_rawmidi_t **out; | ||||
| if (snd_rawmidi_info_get_stream(info) == SND_RAWMIDI_STREAM_OUTPUT) { | if (snd_rawmidi_info_get_stream(info) == SND_RAWMIDI_STREAM_OUTPUT) { | ||||
| alias_suffix = "out"; | alias_suffix = "out"; | ||||
| in = 0; | in = 0; | ||||
| name_prefix = "system:midi_playback_"; | |||||
| port_name = "playback_"; | |||||
| out = &rawmidi; | out = &rawmidi; | ||||
| } else { | } else { | ||||
| alias_suffix = "in"; | alias_suffix = "in"; | ||||
| in = &rawmidi; | in = &rawmidi; | ||||
| name_prefix = "system:midi_capture_"; | |||||
| port_name = "capture_"; | |||||
| out = 0; | out = 0; | ||||
| } | } | ||||
| const char *func; | const char *func; | ||||
| @@ -114,9 +115,10 @@ JackALSARawMidiPort::JackALSARawMidiPort(snd_rawmidi_info_t *info, | |||||
| goto close; | goto close; | ||||
| } | } | ||||
| snprintf(alias, sizeof(alias), "system:%d-%d %s %d %s", card + 1, | snprintf(alias, sizeof(alias), "system:%d-%d %s %d %s", card + 1, | ||||
| device + 1, snd_rawmidi_info_get_name(info), subdevice + 1, | |||||
| device + 1, driver_name, subdevice + 1, | |||||
| alias_suffix); | alias_suffix); | ||||
| snprintf(name, sizeof(name), "%s%zu", name_prefix, index + 1); | |||||
| snprintf(name, sizeof(name), "%s:%s%zu", client_name, port_name, index + 1); | |||||
| strncpy(device_name, driver_name, sizeof(device_name) - 1); | |||||
| this->io_mask = io_mask; | this->io_mask = io_mask; | ||||
| return; | return; | ||||
| free_params: | free_params: | ||||
| @@ -178,6 +180,12 @@ JackALSARawMidiPort::GetName() | |||||
| return name; | return name; | ||||
| } | } | ||||
| const char * | |||||
| JackALSARawMidiPort::GetDeviceName() | |||||
| { | |||||
| return device_name; | |||||
| } | |||||
| int | int | ||||
| JackALSARawMidiPort::GetPollDescriptorCount() | JackALSARawMidiPort::GetPollDescriptorCount() | ||||
| { | { | ||||
| @@ -37,6 +37,7 @@ namespace Jack { | |||||
| int fds[2]; | int fds[2]; | ||||
| unsigned short io_mask; | unsigned short io_mask; | ||||
| char name[REAL_JACK_PORT_NAME_SIZE+1]; | char name[REAL_JACK_PORT_NAME_SIZE+1]; | ||||
| char device_name[REAL_JACK_PORT_NAME_SIZE+1]; | |||||
| struct pollfd *queue_poll_fd; | struct pollfd *queue_poll_fd; | ||||
| protected: | protected: | ||||
| @@ -60,8 +61,8 @@ namespace Jack { | |||||
| public: | public: | ||||
| JackALSARawMidiPort(snd_rawmidi_info_t *info, size_t index, | |||||
| unsigned short io_mask); | |||||
| JackALSARawMidiPort(const char *client_name, snd_rawmidi_info_t *info, | |||||
| size_t index, unsigned short io_mask); | |||||
| virtual | virtual | ||||
| ~JackALSARawMidiPort(); | ~JackALSARawMidiPort(); | ||||
| @@ -72,6 +73,9 @@ namespace Jack { | |||||
| const char * | const char * | ||||
| GetName(); | GetName(); | ||||
| const char * | |||||
| GetDeviceName(); | |||||
| int | int | ||||
| GetPollDescriptorCount(); | GetPollDescriptorCount(); | ||||
| @@ -372,6 +372,8 @@ JackCoreMidiDriver::Attach() | |||||
| port = fGraphManager->GetPort(index); | port = fGraphManager->GetPort(index); | ||||
| port->SetAlias(port_obj->GetAlias()); | port->SetAlias(port_obj->GetAlias()); | ||||
| port->SetLatencyRange(JackCaptureLatency, &latency_range); | port->SetLatencyRange(JackCaptureLatency, &latency_range); | ||||
| fEngine->PortSetDeviceName(fClientControl.fRefNum, index, | |||||
| port_obj->GetDeviceName()); | |||||
| fCapturePortList[i] = index; | fCapturePortList[i] = index; | ||||
| } | } | ||||
| @@ -390,6 +392,8 @@ JackCoreMidiDriver::Attach() | |||||
| port = fGraphManager->GetPort(index); | port = fGraphManager->GetPort(index); | ||||
| port->SetAlias(port_obj->GetAlias()); | port->SetAlias(port_obj->GetAlias()); | ||||
| port->SetLatencyRange(JackCaptureLatency, &latency_range); | port->SetLatencyRange(JackCaptureLatency, &latency_range); | ||||
| fEngine->PortSetDeviceName(fClientControl.fRefNum, index, | |||||
| port_obj->GetDeviceName()); | |||||
| fCapturePortList[num_physical_inputs + i] = index; | fCapturePortList[num_physical_inputs + i] = index; | ||||
| } | } | ||||
| @@ -415,6 +419,8 @@ JackCoreMidiDriver::Attach() | |||||
| port = fGraphManager->GetPort(index); | port = fGraphManager->GetPort(index); | ||||
| port->SetAlias(port_obj->GetAlias()); | port->SetAlias(port_obj->GetAlias()); | ||||
| port->SetLatencyRange(JackPlaybackLatency, &latency_range); | port->SetLatencyRange(JackPlaybackLatency, &latency_range); | ||||
| fEngine->PortSetDeviceName(fClientControl.fRefNum, index, | |||||
| port_obj->GetDeviceName()); | |||||
| fPlaybackPortList[i] = index; | fPlaybackPortList[i] = index; | ||||
| } | } | ||||
| @@ -434,6 +440,8 @@ JackCoreMidiDriver::Attach() | |||||
| port = fGraphManager->GetPort(index); | port = fGraphManager->GetPort(index); | ||||
| port->SetAlias(port_obj->GetAlias()); | port->SetAlias(port_obj->GetAlias()); | ||||
| port->SetLatencyRange(JackPlaybackLatency, &latency_range); | port->SetLatencyRange(JackPlaybackLatency, &latency_range); | ||||
| fEngine->PortSetDeviceName(fClientControl.fRefNum, index, | |||||
| port_obj->GetDeviceName()); | |||||
| fPlaybackPortList[num_physical_outputs + i] = index; | fPlaybackPortList[num_physical_outputs + i] = index; | ||||
| } | } | ||||
| @@ -33,6 +33,7 @@ namespace Jack { | |||||
| char alias[REAL_JACK_PORT_NAME_SIZE+1]; | char alias[REAL_JACK_PORT_NAME_SIZE+1]; | ||||
| char name[REAL_JACK_PORT_NAME_SIZE+1]; | char name[REAL_JACK_PORT_NAME_SIZE+1]; | ||||
| char device_name[REAL_JACK_PORT_NAME_SIZE+1]; | |||||
| bool initialized; | bool initialized; | ||||
| protected: | protected: | ||||
| @@ -62,7 +63,10 @@ namespace Jack { | |||||
| const char * | const char * | ||||
| GetName(); | GetName(); | ||||
| const char * | |||||
| GetDeviceName(); | |||||
| static bool IsInternalPort(MIDIObjectRef port_aux); | static bool IsInternalPort(MIDIObjectRef port_aux); | ||||
| }; | }; | ||||
| @@ -65,6 +65,13 @@ JackCoreMidiPort::GetName() | |||||
| return name; | return name; | ||||
| } | } | ||||
| const char * | |||||
| JackCoreMidiPort::GetDeviceName() | |||||
| { | |||||
| assert(initialized); | |||||
| return device_name; | |||||
| } | |||||
| void | void | ||||
| JackCoreMidiPort::Initialize(const char *alias_name, const char *client_name, | JackCoreMidiPort::Initialize(const char *alias_name, const char *client_name, | ||||
| const char *driver_name, int index, | const char *driver_name, int index, | ||||
| @@ -96,6 +103,7 @@ JackCoreMidiPort::Initialize(const char *alias_name, const char *client_name, | |||||
| } | } | ||||
| snprintf(name, sizeof(name), "%s:%s_%d", client_name, | snprintf(name, sizeof(name), "%s:%s_%d", client_name, | ||||
| is_output ? "playback" : "capture", num); | is_output ? "playback" : "capture", num); | ||||
| strncpy(device_name, endpoint_name, sizeof(device_name) - 1); | |||||
| this->endpoint = endpoint; | this->endpoint = endpoint; | ||||
| initialized = true; | initialized = true; | ||||
| } | } | ||||
| @@ -71,6 +71,8 @@ JackWinMMEDriver::Attach() | |||||
| port = fGraphManager->GetPort(index); | port = fGraphManager->GetPort(index); | ||||
| port->SetAlias(input_port->GetAlias()); | port->SetAlias(input_port->GetAlias()); | ||||
| port->SetLatencyRange(JackCaptureLatency, &latency_range); | port->SetLatencyRange(JackCaptureLatency, &latency_range); | ||||
| fEngine->PortSetDeviceName(fClientControl.fRefNum, index, | |||||
| input_port->GetDeviceName()); | |||||
| fCapturePortList[i] = index; | fCapturePortList[i] = index; | ||||
| } | } | ||||
| @@ -95,6 +97,8 @@ JackWinMMEDriver::Attach() | |||||
| port = fGraphManager->GetPort(index); | port = fGraphManager->GetPort(index); | ||||
| port->SetAlias(output_port->GetAlias()); | port->SetAlias(output_port->GetAlias()); | ||||
| port->SetLatencyRange(JackPlaybackLatency, &latency_range); | port->SetLatencyRange(JackPlaybackLatency, &latency_range); | ||||
| fEngine->PortSetDeviceName(fClientControl.fRefNum, index, | |||||
| output_port->GetDeviceName()); | |||||
| fPlaybackPortList[i] = index; | fPlaybackPortList[i] = index; | ||||
| } | } | ||||
| @@ -424,22 +428,3 @@ extern "C" | |||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||
| } | } | ||||
| #endif | #endif | ||||
| /* | |||||
| jack_connect system:midi_capture_1 system_midi:playback_1 | |||||
| jack_connect system:midi_capture_1 system_midi:playback_2 | |||||
| jack_connect system:midi_capture_1 system_midi:playback_1 | |||||
| jack_connect system:midi_capture_1 system_midi:playback_1 | |||||
| jack_connect system:midi_capture_1 system_midi:playback_1 | |||||
| jack_connect system_midi:capture_1 system:midi_playback_1 | |||||
| jack_connect system_midi:capture_2 system:midi_playback_1 | |||||
| jack_connect system_midi:capture_1 system_midi:playback_1 | |||||
| */ | |||||
| @@ -92,6 +92,7 @@ JackWinMMEInputPort::JackWinMMEInputPort(const char *alias_name, | |||||
| snprintf(alias, sizeof(alias) - 1, "%s:%s:in%d", alias_name, name_tmp, | snprintf(alias, sizeof(alias) - 1, "%s:%s:in%d", alias_name, name_tmp, | ||||
| index + 1); | index + 1); | ||||
| snprintf(name, sizeof(name) - 1, "%s:capture_%d", client_name, index + 1); | snprintf(name, sizeof(name) - 1, "%s:capture_%d", client_name, index + 1); | ||||
| strncpy(device_name, name_tmp, sizeof(device_name) - 1); | |||||
| jack_event = 0; | jack_event = 0; | ||||
| started = false; | started = false; | ||||
| write_queue_ptr.release(); | write_queue_ptr.release(); | ||||
| @@ -87,6 +87,7 @@ JackWinMMEOutputPort::JackWinMMEOutputPort(const char *alias_name, | |||||
| snprintf(alias, sizeof(alias) - 1, "%s:%s:out%d", alias_name, name_tmp, | snprintf(alias, sizeof(alias) - 1, "%s:%s:out%d", alias_name, name_tmp, | ||||
| index + 1); | index + 1); | ||||
| snprintf(name, sizeof(name) - 1, "%s:playback_%d", client_name, index + 1); | snprintf(name, sizeof(name) - 1, "%s:playback_%d", client_name, index + 1); | ||||
| strncpy(device_name, name_tmp, sizeof(device_name) - 1); | |||||
| read_queue_ptr.release(); | read_queue_ptr.release(); | ||||
| thread_queue_ptr.release(); | thread_queue_ptr.release(); | ||||
| thread_ptr.release(); | thread_ptr.release(); | ||||
| @@ -18,7 +18,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
| */ | */ | ||||
| #include <memory> | #include <memory> | ||||
| #include <stdexcept> | |||||
| #include <stdexcept> | |||||
| #include <stdio.h> | #include <stdio.h> | ||||
| #include "JackWinMMEPort.h" | #include "JackWinMMEPort.h" | ||||
| @@ -48,6 +48,12 @@ JackWinMMEPort::GetName() | |||||
| return name; | return name; | ||||
| } | } | ||||
| const char * | |||||
| JackWinMMEPort::GetDeviceName() | |||||
| { | |||||
| return device_name; | |||||
| } | |||||
| void | void | ||||
| JackWinMMEPort::GetOSErrorString(LPTSTR text) | JackWinMMEPort::GetOSErrorString(LPTSTR text) | ||||
| { | { | ||||
| @@ -33,6 +33,7 @@ namespace Jack { | |||||
| char alias[REAL_JACK_PORT_NAME_SIZE+1]; | char alias[REAL_JACK_PORT_NAME_SIZE+1]; | ||||
| char name[REAL_JACK_PORT_NAME_SIZE+1]; | char name[REAL_JACK_PORT_NAME_SIZE+1]; | ||||
| char device_name[REAL_JACK_PORT_NAME_SIZE+1]; | |||||
| public: | public: | ||||
| @@ -46,6 +47,9 @@ namespace Jack { | |||||
| const char * | const char * | ||||
| GetName(); | GetName(); | ||||
| const char * | |||||
| GetDeviceName(); | |||||
| void | void | ||||
| GetOSErrorString(LPTSTR text); | GetOSErrorString(LPTSTR text); | ||||