試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

MIDIデータの演奏状況をリアルタイムにグラフィカル表示するASeqViewの使い方

以前「STed2上の演奏と独自インターフェースについて(VirMIDIとrcpplayを使用した例・前半)」「STed2上の演奏と独自インターフェースについて(VirMIDIとrcpplayを使用した例・後半)」でも少し扱っているが、この機会に使い方をまとめておく。

  1. 前提
  2. 起動
  3. アプリケーションから使用
  4. 操作

前提

前提として、出力先のALSA MIDIバイスが存在しているものとする。
TiMidity++を用いる場合は

$ timidity -iA --sequencer-ports=2 --realtime-priority=99

などのようにしてalsaseqインターフェースで起動しておく。起動した端末ではCtrl+CTiMidity++を止めるまではシェル上で次のコマンドを実行することはできないが、「-iAD」のようにデーモンとして起動した場合や最後に「 &」を付けてバックグラウンドで起動した場合は別(終了にはkillallなどを用いる)。
以下、TiMidity++を2ポートのデバイスとして動かし、そのポートが130:0と130:1(OSのMIDIポート割り当て状況によって異なる)に割り当てられたものとする。
TiMidity++に割り当てられたポートは端末に

TiMidity starting in ALSA server mode
set SCHED_FIFO(99)
Opening sequencer port: 130:0 130:1

のように出力される他、QjackCtlの「Connections」ダイアログ(オーディオの接続状況を参照/操作するダイアログ)にある「ALSA」タブでも確認できる。

起動

-pオプションで接続するポート数、-dオプションで出力先のポート(複数ある場合はコンマ区切り)を指定して起動する。

$ aseqview -p 2 -d 130:0,130:1 &

これで

出力先ポートと自動的に接続され、出力ポートの数だけウィンドウが表示される。

2ポート目からは演奏部分(線より上の部分)のみの表示となる。
オプションを省略して起動した場合、入出力のポートはそれぞれ1つだけとなり、接続も行われない。このとき、(音を出すために)後で出力先デバイスへの手動のポート接続が必要で、aconnectコマンド(alsa-utilsに含まれる)かQjackCtl(推奨・左右の2つのポートを選択後「Connect」を押すだけ)を用いる。
前者の場合、ASeqViewに割り当てられたポートを確認後

$ aconnect [ASeqViewの出力ポート] [出力先の入力ポート]

のようにする。各引数(ポート)は

[デバイス番号]:[MIDIポート番号]

の形をとる(例:「130:0」)。

アプリケーションから使用

ALSA MIDIアプリケーション(Wine上のWindowsアプリケーション*1含む)から出力デバイスに「MIDI Viewer」の各ポートを指定することにより、演奏状態をリアルタイムで表示しつつ出力先デバイスで演奏することができる。
alsa-utilsのaplaymidiを用いる場合は

$ aplaymidi -p [ASeqViewのポート1],[ASeqViewのポート2] [MIDIファイルの場所]

のようになる。

操作

左に並んでいるボタンを切り替えることでチャンネルのミュートができ、右下のスライダーで音の高さや音量が変更できる。

使用したバージョン:

  • ASeqView 0.2.8
  • QjackCtl 0.3.4
  • alsa-utils 1.0.21

*1:オーディオ出力先をALSAに設定した場合