Я хочу создать скрипт, который перечисляет все доступные устройства midi и предлагает пользователю выбрать одно, а затем назначить ярлыки для каждой заметки.Мне удалось получить список всех устройств, использующих aseqdump -l
.В моем случае это выдает:
Port Client name Port name
0:0 System Timer
0:1 System Announce
14:0 Midi Through Midi Through Port-0
20:0 UMC404HD 192k UMC404HD 192k MIDI 1
28:0 Launchpad S Launchpad S MIDI 1
, и с моими минимальными навыками я создал скрипт, который добавляет число перед каждой строкой так, чтобы он выглядел так:
Port Client name Port name
1) 0:0 System Timer
2) 0:1 System Announce
3) 14:0 Midi Through Midi Through Port-0
4) 20:0 UMC404HD 192k UMC404HD 192k MIDI 1
5) 28:0 Launchpad S Launchpad S MIDI 1
И затемпользователю предлагается выбрать устройство по номерам слева.Все веселье и игры, но я не знаю, как я мог прочитать только название устройства.Например, если пользователь ввел «4», я хочу, чтобы моя переменная mDevice была равна «UMC404HD 192k», чтобы я мог вызывать aseqdump -p $(mDevice)
и отслеживать его активность.
Я попытался прочитать вывод командыслово за словом, но это кажется бесполезным, поскольку количество слов в каждом поле варьируется от 1 до 5 или даже больше.Можно ли проанализировать ввод этой команды в 2d массив, где одно измерение будет хранить устройство?Например, в идеале я бы имел
mDevicesArray[0] = { "0:0", "System, "Timer"}
mDevicesArray[1] = { "0:1", "System", "Announce"}
...
mDevicesArray[4] = { "28:0", "Launchpad S", "Launchpad S MIDI 1"}
и затем использовал бы этот массив для дальнейшей обработки устройств.