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

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

STed2上の演奏と独自インターフェースについて(TiMidity++ 1を使用)

パッチの適用可能なTiMidity++ 1をビルドしてSTed2との協調動作を試してみた。

  1. パッチ当て後に適用する修正
  2. 設定と動作
    1. 再生位置表示
    2. その他の操作

パッチ当て後に適用する修正

パッチ当て後の幾つかの手作業による修正部分とビルドエラーを回避するための修正をパッチにした。協調動作をさせるために使用するrcddef.h(STed2のソースツリーからコピーしたもの)を含むため長くなったので、bzip2圧縮してBase64エンコードした。
[base64][任意]ファイル名: timidity++-1.3.9-enable-sted2-and-fix.patch.bz2.b64

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

このファイルを用意して下のように作業した。libtoolizeはシステムの種類が検出できなかったので実行した*1

$ tar jxf [TiMidity++-1.3.9.tar.bz2の場所]
$ cd TiMidity++-1.3.9/
$ patch -p1 < [sted2-20021104の場所]/contrib/timidity_interface/TiMidity++-1.3.2.patch
$ base64 -d [timidity++-1.3.9-enable-sted2-and-fix.patch.bz2.b64の場所] | bunzip2 | patch -p1
$ libtoolize --copy --force
$ ./configure
$ make

インストールは

$ sudo make install-strip
もしくは
$ sudo install -s timidity/timidity /usr/local/bin/timidity-1

のようにして別名で行うかのどちらか。makeでインストールしてもマニュアルページが入るぐらいの違いなので、今回は手動で入れた。
また、データを再生すると変なノイズが混じってしまったのだが、今回は動作を確認するだけなのでそのまま進めることに。

設定と動作

設定ファイルには

* 外部 MIDI Player の設定
* #player=(flag), (player_name) (option)
* flag: bit0: rcp_capable(1)
*       bit1: sted controllable(1)

とあり、その下にコメントアウトされている項目には、協調動作のできるプレーヤの名前(timidity(バージョン1)とrcpplay)もあり、それらは「flag」部分の数字が「3」になっているのだが、実際には動作せず、

#player=1,timidity-1 -iS

「1」にしたときにのみ協調動作が行われた。*2

再生位置表示
既定の操作設定では、演奏*3時にトラック編集モードで英数(「CapsLock」のキーで、シンボル名は「Eisu_toggle」)キー*4を押すことで、譜面/コントロール値表示部分*5に黄色い縦線が現れ、再生位置を示して自動的に動く。左側のデータ表示部分でも、処理中のデータを反転表示しながら下へスクロールしていく。英数Escで解除する(演奏は続行)か停止のキーを押す(演奏も停止)ことで、このモードを抜ける。

しかし、発音と表示位置は微妙にずれている(音が少し遅れている)気がする。

その他の操作
以下の2つの操作はできることを確認した。

  • ひらがな カタカナキー(XF4の既定の割り当て)で一時停止
  • 変換キー(XF3の既定の割り当て)で一時停止状態から演奏再開

音色一覧*6時にEnd(UNDOの既定の割り当て)を押すことで音色テストができるようになっているが、これはうまくいかなかった。

*1:検出できないとオーディオ出力が有効にならないようになっている

*2:sted2-20021104/contrib/timidity_interface/README.timidity_interfaceにも「3」と書いてあるのだが...

*3:Pで開始する/停止は設定ファイル中の「key_xf5」のキー(Mode_switch)だが、Alt+変換なので、「Alt_R」など、別のキーに割り当てないと使いにくいかもしれない

*4:キーの割り当ては設定ファイル(${HOME}/.sted2rcか、インストール先のsted2.cnf)で変更

*5:Ctrl+Gによって右側に表示され、表示形式が順番に切り替わる

*6:/Gと入力後、下矢印キーを押す