Linux

midiとpuredataの自動接続
alsaでmidiを接続する時、patchageのようなGUIのアプリを使ってたのだけど、いちいち立ち上げて操作するのが面倒なので、コマンドで操作できて、できないかな?という事で調べて出てきたのが以下のコマンド。
aconnect -li

aconnect -lo
最初の方がmidiのインプットのポートで、2つめがアウトプットのポート。
これでusbのmidiインターフェースのポートを調べて、puredataが使ってるポートに接続してやれば良い、と。
オイラの場合だと、
aconnect 20:0 129:0
とこんな感じ。
20:0の方が送り出したいポートで、129:0の方が受け取りたい方のポート。
入力が2つあるインターフェースの信号を1つの入力ポートに送りたい場合、
aconnect 20:0 129:0
aconnect 20:1 129:0
という風にすればオッケー。

もっと詳しい情報は
googleで”alsa midi コマンド 操作 ”と調べれば色々情報が出てくる。
参考にしたのは以下のサイト
http://archive.linux.or.jp/JF/JFdocs/midisynth-howto/x64.html

起動の自動化
以上の様なコマンドをコンサートの会場とかで打ったりするのは面倒くさいし、必要なアプリやファイルを開くのにアッチコッチ操作するのも面倒…という事で、一回のダブルクリックでほぼ全てのスタンバイが出来るようにしたい…。そこでスクリプトを使用してる。

ただ、直列実行するとアプリを起動したらそれを終了しないとその後に書いたモノを実行してくれない。一つ実行して終了したら次に行く感じ。

なので並列実行のコマンドを挿入して書く感じ。並列実行には コマンドの後ろに&を入れる。

ただ、並列に実行するとアプリが起動するタイミングがコントロール出来ない為、例えば、puredataの後にalsaにmidiを接続するコマンドを実行したいのに起動の速さが逆になると接続出来ない、となる。
だから、puredataが起動し終わるタイミングまでまってalsaのmidi接続を実行とする、と。
そうなると、puredataが起動するタイミングまでalsaの処理を遅らせるワケだけど、そのさいにはsleepを使う。

googleでは”linux スクリプト sleep”で検索。
ちなみに以下のサイトの情報を参考にしました。
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/029sleep.html
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/029sleep.html

以下、例としてオイラが使ってるスクリプト。

#!/bin/sh
purr-data &
sleep 5; patchage &
sleep 10; aconnect 20:0 129:0 & aconnect 20:1 129:0

こうするとmidiは自動的にpurrdataに接続されて、patchageで状況をモニターできるようになる。あとはpurrdataから直接開きたいパッチを起動すればオッケー。
こうすると、purrdataの5秒後にpachageの起動が始まり、その10秒後にalsaへのmidiの接続が始まる、と。
ポートの番号は状況によって異なるだろうから、各自調べた方が良いと思われまっす。
ちなみにpurrdataは誤植ではなくって、そういうフレーバーっす。だからvanilaを使ってる人はpuredataでっす。