我目前对 bash 脚本尝试使用 xdotool 将 MIDI 输入转换为击键的问题感到不知所措。
#!/bin/bash
aseqdump -p "USB MIDI cable" | \
while IFS=" ," read src ev1 ev2 ch label1 data1 label2 data2 rest; do
case "$ev1 $ev2 $data1" in
"Note on 48" ) if[$octave=0]
then
xdotool key 9; octave=1
elif[$octave=1]
then xdotool key 1
else
xdotool key 0; octave=1
fi ;;
"Note on 36" ) xdotool key 9; octave=0 ;;
esac
done
对于我的问题:如果我正确理解创建变量,那么按下负责“Note 36”的键应该将八度设置为0,尽管“Note 48”上的if语句无法识别它。另外甚至使用更简单的
if[$octave=1] then xdotool key 1 fi ;;
不适用于提供的变量。
所以最终脚本应该做的是将来自设备的 MIDI 输入转换为击键,尽管根据事先按下的键,相同的键应该输出不同的击键。
附加信息
- 我目前在 Ubuntu 22.04 上运行
- 到目前为止,密钥已正确读取和翻译,只有变量会产生问题