ひざの上のオーケストラ

(2008/02/05)

 2008年1月3日以来、LinuxSampler の公式ページで Mac OS X 用バイナリの配布が始まっています。まだいろいろ問題は残っていますが、一応動いているようです。ダウンロードページOS X HowTo ページ をご覧ください。HowTo は僕が書いたことになってますが、総論は Schoenebeck、スクリーンショットは Ebrahim なので僕の貢献度は半分ぐらいかな。ともあれ、よろしくごひいきのほどお願いいたします。

 PowerPC マシンでは大して性能は出ないだろう、と思っていたのだが、Boesendorfer ピアノで100音ぐらいは問題なく発音できることがわかった。これなら、音ネタを選べば「ノートパソコン1台でオーケストラ完結」もあながち不可能ではないかも知れない。さっそくやってみました。

1. 音ネタ

 手元に "Proteus2 Presets.sf2" というサウンドフォントファイルがある。往年の名機、E-mu の Proteus Orchestral のプリセット音をサウンドフォントにしたものである。いつ買ったか忘れてしまったが、タイムスタンプが 1999年3月17日になっているので、この頃ですかね。1999年の秋頃に Nifty の FMIDICLA で窪田さん(「GigaStudio の使い方」の人)と一緒に Csound をああたらこうたらやっていたが、その時に音ネタとして買ったのだった。思い出した。

 このファイル、オーケストラの楽器を中心に 128 の音色が入っていて、たった 8 MB しかない。サンプリングは 16 ビット・20-35 kHz(サンプルによってまちまち)で、「大容量=高品質」と信じられている現代では鼻で笑われそうなスペックではある。確かに音質は荒いとも感じられるのだが、かつては名機と言われた Proteus Orchestral のこと、使いようによってはうまく鳴ってくれるのではなかろうか、と望みをかけて使ってみることにする。実際のところ、CPU もメモリもディスクも非力な我がマシン (PowerBook 1.5 GHz/1.25 GB Mem) にとって、サイズが小さく内部構造も単純なこのファイルは好都合なのだ。ちなみに、最初の64種類の音色は以下の通り。

1Solo Cello17Pizz Violins33Chamber Wind49Chamber Brass
2Solo Viola18Pizzicato 134Section Winds50Brass Strings
3Solo Violin19Pizzicato 235Epilogue51Timpani
4Quartet20Trem Strings36Wind Stack52Gong&Cymbal
5Solo Chamber21Tremolande37French Horn 153Bass&Snare
6Arco Basses22Strgs&Flutes38French Horn 254Temple Block
7Arco Celli23Resting Pad39Section Horns55Xylophone
8Arco Violas24Divertimento40Trumpets 156Glockenspiel
9Arco Violins25Flute41Trumpet 257Celesta
10Marcato 126Piccolo422 Trumpets58Tubular Bells
11Marcato 227Oboe43Harmon Mute59Percussion 1
12Legato Strings28English Horn44Trombone 160Percussion 2
13Concerto29Clarinet45Trombone 261Harp
14Pizz Basses30Bass Clarinet46Tuba62Harpstrings
15Pizz Celli31Bassoon47Back Brass63Harpsikord
16Pizz Violas32Contrabassoon48Bright Brass64Notre Dame

 LinuxSampler は gig フォーマットしか受け付けないので、CDXtract を使ってフォーマット変換する。ここで市販ソフトを使うのはちょっと軟弱だな。サウンドフォントの読み込みライブラリは書いたことがあるので、libgig と組み合わせればフリーの変換プログラムは書けそうだが、果たしてそこまで手間をかける価値があるかどうか。なお、ファイル全体をまるごと変換しても使えるが、あとで編集することを考えると、音色1つごとに別の gig ファイルにした方が便利なこともある。

2. LinuxSampler の設定

 QSampler を立ち上げる。OS X のバイナリパッケージを使えば、QSampler をダブルクリックするだけで Jack server, JackPilot が自動的に立ち上がり、さらに LinuxSampler のバックエンドも走り始めるはず。ただ、ときどきおかしくなることがあるので、「変だな」と思ったら一度 QSampler、Jack server を終了して立ち上げ直すことをお勧めする。このあたり、どうもチェックが甘いのですがご勘弁。

 オーディオデバイスの設定。View->Devices で次のようなウィンドウが出るので、右上が "New Audio device Driver: JACK" となっているのを確かめて(そうなっていなければ、左カラムの "Audio Devices" をクリックする)、"Create" をクリックする。

qsampler devices dialog

 左カラムに "Audio Jack Device 0" というのが出現する。これをクリックすると、右下にこのデバイスの設定が表示される。ここで Jack の出力先を指定することができる。下の図では、チャンネル 0 を内蔵オーディオのチャンネル 1 につないでいるところ。すぐ上の "Audio Jack 0" のポップアップでチャンネル 1 を選んで、同様に内蔵オーディオのチャンネル 2 につなぐ。チャンネル番号が 0 ベースだったり 1 ベースだったりしてややこしいが、まあ最初に1回やるだけの操作なので大きな問題ではない。

qsampler devices dialog

 次にMIDIデバイスの設定。左カラムの "MIDI Devices" をクリックすると、右上が "New MIDI device Driver: COREMIDI" となるはず。ここで、オーケストラ曲は MIDI ポートが1つでは足りないので、PORTS のところを 2(または 3 以上)にしておく。

qsampler devices dialog

 左カラムに "MIDI COREMIDI Device 0" が出現する。これをクリックすると、やはり右下に設定が表示されるが、特に変更するところはない。

 あとは「QSampler を使ってみる」でも書いた通り、Add->New Channel でチャンネルを1つずつ作って行く。チャンネル 0 は Arco Violins、チャンネル 1 は Pizz Violins、等々。なお、View->Options ダイアログで Display タブを選び、その中の "Show actual instrument names" をオンにしておくと、gig ファイルの中の音色がちゃんと名前で表示される。これがオフのままだと、New Channel ダイアログの中の Instrument ポップアップが単なる番号で表示されるので、ちょっとつらい。

qsampler display options

qsampler new channel

 QSampler で "Save" すると、それまでの設定内容がテキストファイルで保存される。こんな感じのものになった。→ proteus.lscp いろいろ編集した gig ファイルが含まれているが、それについては後日改めて書く。

3. MIDI シーケンスの作成

 さてお待ちかね、MIDI データの作成である。例によって旧作の焼き直しで恐縮だが、ボロディンの「ポロヴェッツの娘たちの踊り」。FMIDICLA で SC-88 の2ポート再生のテストに使ったデータである。曲想が単純なので小手調べには好都合だろう。Alchemusica に読み込んで MIDI チャンネル、ポートを指定するとこんな風になった。

borodin on alchemusica

 ご覧の通り、2ポートの MIDI はそれぞれ "Linuxsampler_in_0", "Linuxsampler_in_1" として見える。あとはヴェロシティやデュレーションを調整して調整して調整して…編集機能がしょぼいので苦労するが(自分のせいだ)、まあなんとか使い物にはなっている。かなりいろいろな編集を試したが、致命的な不具合は見つからなかった。鬼籍に入った Vision が忘れがたく「Vision に代わる自分のシーケンサを作る」と密かに決意してから幾年月、よくぞここまで来たものよ。いやまだ全然完成してないけど。

4. ポストプロセス

 実は今回の制作ではもう1つやってみたいことがあった。それは、Apple 謹製の "3DMixer" を使ってみること。"Using the 3DMixer Audio Unit"という開発者向けの文書があって、3次元空間で音を定位させることができると書いてある。オーケストラ音楽は、うまく音場を作ると音の分離が良くなり、同じ演奏データでも聞こえ方が全然違ってくるのだが、リバーブとディレイの組み合わせで3次元の分離をシミュレートするのは非常に難しいものだった。3DMixer では、角度と距離を指定するとその位置に音源を定位してくれるというのだから、面白そうではないか。

 3DMixer のデモプログラムは Tiger の開発キットに付いてくるが、細かいパラメータを設定してポストプロセスに使おうと思うと自力でプログラムを書かないといけなさそう。つうわけで、はい、書きました。

3DMixer at work

 これは未公開ですが、そのうちソース付きで公開します。2008.2.8.追記:公開しました

5. 結果

 こんな感じになりました。

 ポストプロセス前の演奏はもっとざらざらした音なのだが、3DMixer の内蔵リバーブで少し角がとれている。ただ、全体にもこもこした感じになってしまった。音の分離は悪くないのだが、3DMixer は結局ゲームなどの音響効果を想定したものなので、こういう目的にはあまり向かないのかも知れない。世の中に優れたポストプロセスのソフトウェアが多数あることは承知しているが、なるべくお金をかけずにやりたいので、Linux や Windows のオーディオ関係も含めてもう少し情報収集が必要だな。なお、今回は mp3 への変換は Audacity を使いました。