ttymidiのMIDIUSBケーブルの関連付け自動起動をがんばる。

Contents

ttymidi自動で関連付けをさせる

結構テキトーごめん。

ねこっぴ

今回はttymidiでハード音源MIDIを再生するときに、いちいちUSBの番号を確認してターミナルから入力しなきゃだったのを、自動でやっちゃえ!って回にゃ。

ぴぽこ

ただ、USBMIDIケーブルのサンプルが3本なので、もしかしら繋がらないこともあるやも。ってことを頭においておいてくださいませ。

ねこっぴ

一応検証した3本にゃよ。

YAHAMA UX16

Roland UM-ONE

amazonの激安ケーブル

前々回のシェルスクリプトに記入するべし。

ブログ内のラズパイの説明では ユーザー名「 pi 」を使用しています。(/home/ユーザー名)

ねこっぴ

前々回のシェルスクリプトの、IFの部分のON/OFF時のところを書き換えるにゃよ。シェルスクリプトの回ではONのときはオリジナルプログラム、OFFのときはRasNetで設定したにゃ。

ぴぽこ

じゃ、今回は ONでttymidi、OFFでなにもしない、という感じでお願いしますー!

ねこっぴ

おっけー、OFFでRasNetは #いれてすっとばすだけにゃ。
では以下のです。

if [ $data = "1" ]; then
   echo 'OFF時RasNet'
   #/home/pi/RasNet/RasNet-19200
else
   echo 'ON時ttymidi'
   sudo /home/pi/ttymidi/ttymidi -s /dev/serial0 -b 38400 &
   sudo python3 /home/pi/ttymidi/ttymidi.py
   sleep 1

   for((i=0;i<3;i++))
   do
   sudo echo 1 > /sys/class/gpio/gpio$led/value
   sleep 0.2
   sudo echo 0 > /sys/class/gpio/gpio$led/value
   sleep 0.2
   done
fi
ねこっぴ

スイッチON時では ttymidi の
X68000Z UARTでMIDIハード音源を試す で試した
「sudo /home/pi/ttymidi/ttymidi -s /dev/serial0 -b 38400 &」を実行。
次にttymidiフォルダに作った 「ttymidi.py」を実行するにゃ。
その後、LEDをループで点灯させてるにゃ。

ttymidiフォルダに作った 「ttymidi.py」の中身

ぴぽこ

この中身が問題なのね。どうやってるのかしら。

ねこっぴ

とりあえず見ようにゃ。

ねこっぴ

この下まだ続くんにゃけど、このさきはちびモニターへの結果表示だから
重要なとこだけ。
①で、X68000Z UARTでMIDIハード音源を試す で試した
「aconnect -o」の結果を変数に格納するにゃ。

X68000Z UARTでMIDIハード音源を試す で試したときの図

ねこっぴ

②で中身を分割。
③でその分割した中身をさらに分割してチェックしていくんにゃけど、
どれがUSBMIDIケーブルで、どれがttymidiかっていうのを、
共通したキーワードでチェックしてるにゃ。ttymidiはそのまんまだけど、
USBMIDIケーブルの中身は、手持ちの3本を検証すると…..、

amazonやすものケーブル

UX16

UM-ONE

ぴぽこ

「card=」 が 共通ワードね!

ねこっぴ

ttymidiは数字が変わるときは128だったり129だったり。
USBは今回は全部20だけど数字が変わることがあるので、
共通はその「card」だけにゃ。

ぴぽこ

なるほど、なんともいえない微妙さね….。

独学番長 ネットのねこぽんさん

ぴぽこ

番長ちゃーっす。

ねこっぴ

と、いうことで動いてはいるもの、これで合ってるかは謎。
ご理解くださるようお願いします…..。ということで、
④はその結果を文字列にしてコマンド実行させた、ということです。

ねこっぴ

ということでファイルにゃ!

ttymidi.pyのダウンロード

ttymidi.py シェルスクリプト回でいうと ttymidiフォルダの中に入れると動くかんじです。

フォルダ内に置いたら、一応 右クリックで以下の設定しておいてください。

ttymidiをインストールした「ttymidi」フォルダ内 「ttymidi」のパーミッションも上のようにしてね!

ぴぽこ

とりあえず番長んちではラズパイ電源ONでうごいてまーっす。
ちょー便利便利!



Contents