MIDI受信メッセージを保存するスクリプトをPythonで書く
MIDIメッセージを受信するコマンドはわかりましたが、自動でスタート・ストップをする方法が必要なので、とりあえず一定時間受信したら止まるスクリプトを書いてみました。
参考しにしたのはこちらのサイト
python でコマンド実行。サブプロセスの終了待ち・強制終了・親プロセスと一緒に殺す。 - それマグで!
作成したのはこんな感じ
#!/usr/bin/python3
#!/usr/bin/python3
# coding:utf-8
import subprocess
from subprocess import Popen
from time import sleep
cmd = "arecordmidi -p UM-1G test.mid"
proc = Popen(cmd.split())
print("process id = %s" % proc.pid)
sleep(1)
proc.terminate()
受信コマンドを起動して、プロセスIDを表示して1秒待ってプロセスを終了します。
これをループでぐるぐる回すと、保存されたtest.midファイルが随時更新されるので。
ファイルの中身を見てプログラムチェンジが送信されていれば、目的のコマンドを送信するって方法です。
ポーリング間隔が1秒でよいのか、そもそもスイッチを押したときの割り込み判定にもっといい方法があるのか検討の余地はありますが、、、
とりあえずはここまで