[an error occurred while processing this directive]
Linux Pipe Organ
Last Updated: 2008/07/21 (Since 2001/08/19)
This page is written in Japanese.
English page is here.
Linux上で仮想的なオルガンを実現するアプリケーションの紹介です。
(本アプリケーションは現在テストバージョンです)
特徴
MIDI鍵盤が1台以上あれば、あなたのLinuxマシンがパイプオルガンになります!
目的はWindows PC+ローランド製外部MIDI音源用の、
SCPOPと似ていますが、
レジストレーションを実際のオルガンと同様に自由に行うことが
できるようになっています。また、発声はPCに内蔵のサウンドカードで行うため、
高価な外部音源を必要としません。その代わり、外部にリバーブ(残響)を付加するための装置(DSP内蔵アンプなど)が必要である(Linuxでは今のところSBLiveのエフェクト機能を使えない為)、使えるようにするまでの作業が面倒という問題があります。
スクリーンショット
Soundfontの音色をストップに割り当てるところです。
ハードウェア構成例
筆者のシステム構成です。
こちらで写真等ご覧いただけます。
導入例:Viscountオルガンとの組合せ
演奏例
(以下のサンプルMP3ファイルは、なるべくヘッドホンを用いてお聴きください。)
File name | Title | Composer | Size | Soundfont | Registration | Reverb setting |
WidorToccata2.mp3 |
トッカータ (Version 0.2) |
ヴィドール |
5.0MBytes |
Jeux14.sf2 |
- |
Windows PC+SBLive |
bwv578-eorg.mp3 |
フーガ ト短調《小フーガ》 |
バッハ |
4.2MBytes |
eorg102.sf2 |
● |
YAMAHA REV500 |
bwv578.mp3 |
フーガ ト短調《小フーガ》 |
バッハ |
4.4MBytes |
Jeux14.sf2 |
- |
Windows PC+SBLive |
karg.mp3 |
Nun danket alle Gott |
カーク・エラート |
680KBytes |
Jeux14.sf2 |
- |
Windows PC+SBLive |
vierne1.mp3 |
NAIADES |
ヴィエルヌ |
380KBytes |
Jeux14.sf2 |
- |
Windows PC+SBLive |
552.mp3 |
Fugue in E-flat major |
バッハ |
1,6MBytes |
Jeux14.sf2 |
- |
Windows PC+SBLive |
540.mp3 |
Toccata in F major |
J.S.Bach |
680KBytes |
Jeux14.sf2 |
- |
Windows PC+SBLive |
572_a.mp3 |
Fantasia in G major(残響なし) |
J.S.Bach |
550KBytes |
Jeux14.sf2 |
- |
NONE |
572_b.mp3 |
Fantasia in G major(残響あり) |
J.S.Bach |
600KBytes |
Jeux14.sf2 |
- |
Windows PC+SBLive |
Chan-mat-eorg-pre.mp3 |
Chanson de matin《朝の歌》(Version 0.1) |
エルガー |
1.3MBytes |
eorg102.sf2 |
- |
Windows PC+SBLive |
上の演奏例では、PC外部のエフェクタを使用していますが、
ソフトウェアでリバーブをかける方法があります。
こちらをご覧ください。
まだアプリケーションとしての完成度はかなり低いのですが、とりあえず使って
みたいという方は、以下を参照し、試してみてください。
必要なもの
- Linuxが動作するコンピュータ(AT互換機)
TiMidity++(ソフトウェアシンセサイザ)を用いて音を出す場合は、CPUは高速なほどよいです(筆者のPCにはAthlonXP-1800+が載っていますが少々厳しいです)。
- サウンドカード
TiMidity++を使用する場合は、サウンドカードの種類は問いません(但し当方は未確認)が、新規に買う・もしくは、とりあえずできるだけ簡単に使ってみたいという場合は、Sound Blaster Live! がお勧めです。SBLiveならば、将来的に、リバーブを付加する装置(後述)を別途用意しなくてもよくなるかも知れません。
- MIDI鍵盤 1台以上4台以下
複数の鍵盤を使用する場合は、それぞれのMIDI出力を(PCの)1つのMIDIポートに接続できるようにしてください。キーボードにMIDI信号をマージする機能が付いていればよいのですが、そうでない場合は、MIDIマージボックスを用意する必要があります。筆者は、カナダのMidi Solutions社製「Quadra Merge」という製品を使用しています。PCのMIDIインタフェイスはサウンドカードについているものを使います。USBのMIDIインタフェイスについては確認しておりません。
- リバーブを付加する装置
発生した音に残響の効果を加える装置があることが望ましいです。あるとないとでは随分違います。必須といえます。PCをDSP内蔵のアンプ等に接続して、コンサートホールの効果を付けるなどして聴いてください。筆者は別のWindowsマシンに音を入力してSB Liveでリバーブを付けています。はじめからWindowsで作ればよいのですが、筆者がWindowsの開発環境を持っていない、Linuxが好きである等の理由でこのようになっています。(と書きましたが、SBLive!ではMIDI音声へのリバーブに関し、直接音の音量調節ができませんので、Linuxで作った意味も無くはないと思います。)
(2002/03/03追記:ソフトウェアでリバーブをかける方法があります。
こちらをご覧ください。)
- ジョイスティック(オプション)
コンビネーションメモリの内容の呼び出しを、ジョイスティックのボタン押下で
できるようにしました。筆者はUSB接続の10ボタン装備のジョイスティックを
使用しています。ゲームポート接続のものについては動作を確認しておりません。
現在、デバイスは、/dev/js0 固定です。
- MIDIフットコントローラ(オプション)
コンビネーションメモリの内容の呼び出しを、足元のスイッチに押下で
できるようにしました。
筆者は、
MIDIWIZARD MP1288という製品を使用しています。
この製品にはボリュームペダルを接続することができるため、
将来、スウェルペダルの機能を持たせる予定です。
- その他必要なソフトウェア等はインストールの解説を参照してください。
音源について
当アプリケーションでは、発音手段として、Sound Blaster Live!
に搭載されているシンセサイザ、もしくはTiMidity
(ソフトウェアシンセサイザ)のいずれかを用います。
前者は、レスポンスがよいという利点がありますが、同時発音数が64音と少ないため、
ストップをたくさん使うと簡単に音抜けが生じてしまいます。
Linux pipe organ では、本物のパイプオルガンと同様、
選択したストップ数×押したキーの数の発声体を消費します。
従って、例えばストップを10個選択してキーを7本同時に押えると、
この時点で音抜けが生じてしまいます。
他方、後者の場合、同時発音数はCPUパワーにのみ制限さます。
Jeuxサウンドフォントを用いる場合、私が使用するAthlon64-3500でもストップを同時に多く使用すると
少々重いといった感じです(古いTimidity++は処理が軽かった為、AthlonXP-1800+程度で
256音の発音も余裕で可能でしたが)。
準備
共通
- C++の開発環境や、ALSAやGNOMEの開発用ライブラリ、ユーティリティをインストールする.Ubuntu8.04LTSの場合、「g++」「libasound2-dev」「gnome-devel」のパッケージをインストールします。
- Linux Pipe Organのソースをダウンロードする。
- コンパイルする.
- アーカイブファイルを展開
tar zxvf vpo_test_080721.tar.gz
- ソースのディレクトリに移る
cd vpo
- コンパイルを行う
make
- パイプオルガンの音色データ(John Wynne McCoy氏作のJeux 1.4サウンドフォントをダウンロードする
- サウンドフォントのファイル(Jeux14.sf2)を、/sf に置く(置き場所は設定ファイルを書き換えることにより変更できます)。
SB Liveに搭載されているシンセサイザにより音を出す場合)
- サウンドフォントをロードする。
sfxload サウンドフォントファイルを置いた場所/Jeux14.SF2
これを/etc/rc.d/rc.local に書いておけばOS起動時に自動的に行われるようになります。
TiMidity++(ソフトウェアシンセサイザ) により音を出す場合
実行
まずソースを展開したディレクトリに移ります。
SBLive搭載シンセサイザを使う場合は、サウンドフォントがロードされていれば
./vpo -p65
で使えます。
Timidityを使う場合は、
./vpo
で実行できます。従来はTiMidity++をまず手動で立ち上げる必要が
ありましたが、不要になりました。
操作方法
準備中
MIDIフットコントローラの使用について
MIDIフットコントローラは、足元のスイッチを押したり
これに接続したボリュームペダルを操作することにより、
音色の切替えや音量等の変化をMIDI信号として出力するものです。
外部から、プログラムチェンジの信号を送ってやることにより、
コンビネーションメモリの呼び出しを行うことができます。
プログラムナンバー0〜9が、それぞれメモリ1〜10の呼び出しに
対応します。入力チャンネルは1〜4の範囲で 、任意です。
また、外部からモジュレーションレベルの信号を送ることにより、
鍵盤3の音量を変化させることができます。0が最小、127が最大です。
入力チャネルは1〜4の範囲で任意です。将来は、複数のボリュームペダルを
用い、任意の複数の鍵盤の音量を変化させることが可能にさせることを
検討しています。もちろん設定のためのGUIも付ける予定です。
以下の点にご注意ください
このアプリケーションについて筆者は何らの保証もいたしません。
例え、試してみようと思い、機材を揃えてインストールをしようとしたが
失敗し、もしくは得られた結果が期待外れであったことにより、
時間的経済的損失・精神的苦痛等を被ったとしても、
当方は苦情を一切受け付けません。悪しからず、ご了承ください。
変更履歴
2008/07/21 テストバージョン更新。いくつかのバグフィクス等。
2008/07/19 テストバージョン更新。Ubuntu 8.04 LTSにて使用可能としました。Jeux14.sf2のバンク0しか使用できない問題点を解消しました。
2005/02/12 テストバージョン更新。ALSA1.0以上,Timidity++-2.13.2 に対応。ALSA-0.5以下は非対応となりました。
2003/01/10 テストバージョン更新。ALSA 0.9以上がインストールされた状態でのコンパイルエラー修正。
2002/12/28 テストバージョン更新。レジストレーションファイル中のサウンドフォント指定方法を変更。これにより同じサウンドフォントを使用するならばサウンドフォントの格納場所によらず、レジストレーションファイルの内容は変わらなくなる(他人とのやりとりに好都合)が、いままでのレジストレーションファイルは読み込めなくなりました。悪しからず御了承ください。その他、いくつかのバグフィクス。
2002/08/25 テストバージョン更新。ピッチ調整機能追加。
2002/05/18 テストバージョン更新。フットコントローラを使用し、足でコンビネーションメモリを呼び出し可能とした。
2002/03/31 テストバージョン更新。終了時状態保存、バグフィクス等
2002/03/24 テストバージョン更新。外部鍵盤からの入力でノートオフ時、ヴェロシティの値がゼロでない時に音が残る問題を回避。
導入事例追加。
2002/03/23 テストバージョン更新。TiMidity++等をvpoから起動するようにした。
2002/03/17 テストバージョン更新。コーラスの度合(全ストップのピッチをランダムにずらす)
を調節する機能を追加(従来はハードコーディング)。
2002/03/03 ソフトウェアでリバーブをかける方法を掲載(こちら)
2002/01/18 テストバージョン更新。コンビネーションメモリにヴェロシティを記憶しないように変更。トレモロの深さを変更。
2001/12/29 筆者のシステム構成図変更等
2001/10/28 テストバージョン更新。ジョイスティック対応(コンビネーションメモリ呼出)、カプラ・トレミュラントの選択状態をコンビネーションメモリに記憶できるようにした。
2001/09/30 テストバージョン更新。些細なバグフィクス等
2001/09/15 テストバージョン更新。トレモロとカプラ機能を実装(まだコンビネーションメモリには選択状態を保存できません)。画面レイアウト変更。
2001/09/13 テストバージョン更新。発声の制御部分を改良
2001/09/09 テストバージョン更新。ALSAのバージョンが0.5xでも使用可能とした。
2001/09/02 テストバージョン更新。コーラス機能・出力先ALSAシーケンサクライアント選択オプション追加、バグフィクス(15番目のストップが働かない、音色削除の挙動がおかしい等)
2001/08/26 テストバージョン更新。各ストップに割り当てられる音色の
GUI上での変更・設定の保存をできるようにした。
2001/08/19 テストバージョン掲載