|
|
|
@@ -90,6 +90,7 @@ struct midi_port_t { |
|
|
|
alsa_id_t id; |
|
|
|
char dev[16]; |
|
|
|
char name[64]; |
|
|
|
char device_name[64]; |
|
|
|
|
|
|
|
jack_port_t *jack; |
|
|
|
snd_rawmidi_t *rawmidi; |
|
|
|
@@ -410,9 +411,10 @@ void midi_port_init(const alsa_rawmidi_t *midi, midi_port_t *port, snd_rawmidi_i |
|
|
|
|
|
|
|
port->id = *id; |
|
|
|
snprintf(port->dev, sizeof(port->dev), "hw:%d,%d,%d", id->id[0], id->id[1], id->id[3]); |
|
|
|
snprintf(port->device_name, sizeof(port->device_name), snd_rawmidi_info_get_name(info)); |
|
|
|
name = snd_rawmidi_info_get_subdevice_name(info); |
|
|
|
if (!strlen(name)) |
|
|
|
name = snd_rawmidi_info_get_name(info); |
|
|
|
name = port->device_name; |
|
|
|
snprintf(port->name, sizeof(port->name), "%s %s %s", port->id.id[2] ? "out":"in", port->dev, name); |
|
|
|
|
|
|
|
// replace all offending characters with '-' |
|
|
|
@@ -429,15 +431,18 @@ inline int midi_port_open_jack(alsa_rawmidi_t *midi, midi_port_t *port, int type |
|
|
|
char name[128]; |
|
|
|
|
|
|
|
if (type & JackPortIsOutput) |
|
|
|
snprintf(name, sizeof(name), "system:midi_capture_%d", ++midi->midi_in_cnt); |
|
|
|
snprintf(name, sizeof(name), "system_midi:capture_%d", ++midi->midi_in_cnt); |
|
|
|
else |
|
|
|
snprintf(name, sizeof(name), "system:midi_playback_%d", ++midi->midi_out_cnt); |
|
|
|
snprintf(name, sizeof(name), "system_midi:playback_%d", ++midi->midi_out_cnt); |
|
|
|
|
|
|
|
port->jack = jack_port_register(midi->client, name, JACK_DEFAULT_MIDI_TYPE, |
|
|
|
type | JackPortIsPhysical | JackPortIsTerminal, 0); |
|
|
|
|
|
|
|
if (port->jack) |
|
|
|
if (port->jack) { |
|
|
|
jack_port_set_alias(port->jack, alias); |
|
|
|
jack_port_set_device_metadata(port->jack, port->device_name); |
|
|
|
} |
|
|
|
|
|
|
|
return port->jack == NULL; |
|
|
|
} |
|
|
|
|
|
|
|
|