| @@ -28,11 +28,12 @@ using Jack::JackALSARawMidiPort; | |||||
| JackALSARawMidiPort::JackALSARawMidiPort(snd_rawmidi_info_t *info, | JackALSARawMidiPort::JackALSARawMidiPort(snd_rawmidi_info_t *info, | ||||
| size_t index) | size_t index) | ||||
| { | { | ||||
| int card = snd_rawmidi_info_get_card(info); | |||||
| unsigned int device = snd_rawmidi_info_get_device(info); | |||||
| unsigned int subdevice = snd_rawmidi_info_get_subdevice(info); | |||||
| char device_id[32]; | char device_id[32]; | ||||
| snprintf(device_id, sizeof(device_id), "hw:%d,%d,%d", | |||||
| snd_rawmidi_info_get_card(info), | |||||
| snd_rawmidi_info_get_device(info), | |||||
| snd_rawmidi_info_get_subdevice(info)); | |||||
| snprintf(device_id, sizeof(device_id), "hw:%d,%d,%d", card, device, | |||||
| subdevice); | |||||
| const char *alias_prefix; | const char *alias_prefix; | ||||
| const char *error_message; | const char *error_message; | ||||
| snd_rawmidi_t **in; | snd_rawmidi_t **in; | ||||
| @@ -76,6 +77,15 @@ JackALSARawMidiPort::JackALSARawMidiPort(snd_rawmidi_info_t *info, | |||||
| func = "snd_rawmidi_params_set_avail_min"; | func = "snd_rawmidi_params_set_avail_min"; | ||||
| goto free_params; | goto free_params; | ||||
| } | } | ||||
| // Smallest valid buffer size. | |||||
| code = snd_rawmidi_params_set_buffer_size(rawmidi, params, 32); | |||||
| if (code) { | |||||
| error_message = snd_strerror(code); | |||||
| func = "snd_rawmidi_params_set_buffer_size"; | |||||
| goto free_params; | |||||
| } | |||||
| code = snd_rawmidi_params_set_no_active_sensing(rawmidi, params, 1); | code = snd_rawmidi_params_set_no_active_sensing(rawmidi, params, 1); | ||||
| if (code) { | if (code) { | ||||
| error_message = snd_strerror(code); | error_message = snd_strerror(code); | ||||
| @@ -95,12 +105,9 @@ JackALSARawMidiPort::JackALSARawMidiPort(snd_rawmidi_info_t *info, | |||||
| func = "snd_rawmidi_poll_descriptors_count"; | func = "snd_rawmidi_poll_descriptors_count"; | ||||
| goto close; | goto close; | ||||
| } | } | ||||
| snprintf(alias, sizeof(alias), "%s%d", alias_prefix, index); | |||||
| device_name = snd_rawmidi_info_get_subdevice_name(info); | |||||
| if (! strlen(device_name)) { | |||||
| device_name = snd_rawmidi_info_get_name(info); | |||||
| } | |||||
| snprintf(name, sizeof(name), "system:%s %s", device_name, name_suffix); | |||||
| snprintf(alias, sizeof(alias), "%s%d", alias_prefix, index + 1); | |||||
| snprintf(name, sizeof(name), "system:%d-%d %s %d %s", card + 1, device + 1, | |||||
| snd_rawmidi_info_get_name(info), subdevice + 1, name_suffix); | |||||
| return; | return; | ||||
| free_params: | free_params: | ||||
| snd_rawmidi_params_free(params); | snd_rawmidi_params_free(params); | ||||