本連載の第191回 ではqsynthを例に、サウンドフォントを用いるサンプル音源シンセサイザーについてお伝えしました。今回は、GigaSamplerフォーマットをライブラリーとして用いるサンプル音源シンセサイザーについてお伝えします。
GigaSamplerとは
サウンドフォントは便利な仕組みですが、使用時にすべてのサンプルをメモリーにロードする必要があります。メモリー使用量を考慮すると、あまりサイズの大きなサンプルを扱うことができませんでした。そこで登場したのがGigaSamplerです。
GigaSamplerは、NemeSys Music Technology社が1999年に開発しました[1] 。必要なデータをその都度ハードディスクに読みに行く仕組み(ディスクストリーミング)を実装し、サウンドフォントが想定していないギガバイトを超える大容量のサンプルデータを扱うことができます。
LinuxSamplerプロジェクトとは
LinuxSampler はこのGigaSamplerフォーマットのライブラリーを扱うことのできるソフトウェアです。Linuxはもちろんのこと、WindowsやMac OS Xでも動作します。
LinuxSampler自体はバックエンドであり、スタンドアローンで動作するGUIや各種プラグイン(LinuxであればLV2/DSSI、WindowsであればVSTi、Mac OS XであればAU)も合わせて提供されています。
UbuntuにおけるLinuxSampler
LinuxSamplerプロジェクトが提供するソフトウェアは、以下の5つとなります。
linuxsampler
LinuxSamplerのエンジン。LTSP(LinuxSampler Control Protocol)プロトコルでクライアントと通信
liblinuxsampler
共有ライブラリー。LV2/DSSI/VSTi/AUの各プラグインも含む
liblscp6
共有ライブラリー。LSCP(LinuxSampler Control Protocol)のC++のAPIを提供
qsampler
Qt4ツールキットを用いた操作画面を提供。LinuxSamplerエンジンとLTSPで通信
gigedit
GigaSamplerフォーマットファイルのエディター。GTK+がツールキット
libgig
共有ライブラリー。GigaSamplerフォーマットファイルを編集するためのC++のAPIを提供
しかし筆者の確認する限りUbuntuでは、LinuxSamplerのエンジン部分であるパッケージ「linuxsampler」と「liblinuxsampler」が、ライセンスの問題で提供されていません 。そのため、自分でビルドしてインストールする必要があります。
ソース自体はLinuxSamplerのウェブサイトから取得できます。また、筆者のPPA ではこのソースからビルドしたパッケージを公開していますので、こちらを利用すると手間が省けるかと思います。PPAの利用の仕方に関しては、本連載の第46回 が参考になるでしょう。
上記6つを、UbuntuソフトウェアセンターかSynapticパッケージマネジャーなどを使ってインストールして下さい。
また、LinuxSamplerプロジェクトのFree Sample Libraries ページからは、LinuxSamplerプロジェクトで用意したフリーのGigaSamplerフォーマットのライブラリーが提供されていますので、合わせてこちらもダウンロードしておくとよいでしょう。
GUIフロントエンド: QSamplerとJSampler
QSamplerとJSamplerはlinuxsamplerを画面から操作するためのソフトウェアです。プラグインではないためホストプログラムを必要とせず、スタンドアローンで動作します。QSamplerは先述のとおりUbuntuのリポジトリからパッケージが提供されています[2] が、JSamplerは自分でソースからインストールする必要があります。
JSamplerはLinuxSamplerの持つ機能すべてを使えるように開発されていますが、QSamplerは一部機能を使うことができません。それでも筆者が試した限り通常利用する上では十分な機能を有しています。入手の容易さを考え、今回はパッケージが提供されているQSamplerを使っていきたいと思います。
パッケージ「qsampler」をインストールしたら、Unityのダッシュボードあるいは端末でコマンド「qsampler」を実行すると、操作画面が起動します。
図1 QSamplerの操作画面
音声出力とMIDI入力の設定
それでは本連載でお馴染み、音声出力やMIDI入力の設定をしてみましょう。ALSAやJACK、PulseAudio、ALSAシーケンサー機能やJACKシーケンサー機能など、Linuxのサウンドシステム周りの用語がたくさん出てきますが、これらに関しては本連載の第177回 で軽く整理してありますので、そちらを参照して下さい。
QSamplerの操作画面で「View」メニューの項目「Devices」を選択して下さい。「 Devices」ウィンドウが開きます。このウィンドウで、音声出力とMIDI入力を設けます。
図2 DeviceウィンドウのAudio DeviceでJACKを選択した場合
音声の出力先は、ALSAとJACKから選択できます。ここでポイントなのは、項目「Driver」で「ALSA」を選択した場合、音声をダイレクトにサウンドデバイスに出力してしまうことです。項目「CARD」の選択肢にPulseAudioサウンドサーバーが表示されないためです。そのため、LinuxSamplerとそれ以外のソフトウェアの出す音声をミックスすることができません。この状態はライブパフォーマンスには向いていますが、複数の出力を扱う=サウンドのミックスの必要性がある用途であればJACKサウンドサーバーに音声を出力するのが無難です。
図3 DeviceウィンドウのAudio DeviceでALSAを選択した場合
項目「Driver」に「ALSA」を選択すると、項目「FRAGNEBTS」と「FRAGMENTSIZE」に関する設定を行うことができます。これは、本連載の第150回 で扱ったリングバッファの「ピリオド」に相当する設定です。
MIDIの入力先は、項目「Driver」でALSAシーケンサー機能とJACKシーケンサー機からを選択することになります。AcconectguiやPatchageなどを併用することで、各シーケンサー機能に開かれたポート間の接続/切断をすることができます。
図4 DeviceウィンドウのMIDI DeviceでALSAシーケンサー機能を選択した場合
図5 DeviceウィンドウのMIDI DeviceでJACKシーケンサー機能を選択した場合
それぞれの入出力先を決定したら、ウィンドウ下部の「Create」ボタンをクリックすると、設定完了です
図6 実際の設定例。ここでは、音声はJACKサウンドサーバーに出力、MIDI入力はALSAシーケンサー機能を利用している
GigaSamplerフォーマットファイルの読み込み
次に音源ライブラリーとなるGigaSamplerフォーマットファイルを読み込んでみましょう。メニュー「Edit」の項目「Add Channel」を選択し、「 New Channel」ウィンドウを開きます。
図7 「 New Channel」ウィンドウ
項目「Filename」において、GigaSamplerフォーマットファイルを読み込んで下さい。MIDI/InputとAudio/Outputでは、先ほど設定したものを選択します。
図8 実際の設定例
ボタン「OK」をクリックすると、メインウィンドウにチャンネルが追加されます。
図9 GigaSamplerファイルを登録してチャンネルをひとつ追加
残る作業は、Patchageなどを使って音声出力とMIDI入力を適切に接続します。MIDIキーボードやMIDIシーケンサーから入力チャンネルに信号が入ると、液晶ディスプレイを模した部分に緑色の点滅が発生します。音声が出力されない場合は、それがMIDIの道のりにあるのか、音声出力の道のりにあるのか、この点滅で問題点の切り分けをして下さい。
複数のGigaSamplerフォーマットファイルを利用する場合
この場合、それぞれのフォーマットファイル別にチャンネル追加していきます。この時、音声出力とMIDI入力をそれぞれ別に指定すると、使い勝手がよくなります。
音声出力に関しては先述の「Devices」で音声出力先を登録する際、項目「Channels」で出力ポートを増やすことができます。少々紛らわしいですが、この「Channels」は音声出力に関するもので、GigaSamplerファイルフォーマットの登録に関する「チャンネル」と混同しないよう注意して下さい。
図10 ここでは音声出力チャンネルを12に増やしてある
MIDI入力に関しては2つの方法があります。ひとつはMIDI入力ポートを増やす方法。そしてもうひとつは、ひとつのMIDI入力ポート内でMIDIチャンネルを切り替えて対応する方法です。MIDI入力ポートは先述の「Device」でMIDI入力を登録する際に増やすことができます。
図11 ここではMIDI入力ポートを8つに増やしてある
音源チャンネルの設定画面で、それぞれの設定を適用します。
図12 チャンネルの設定例
ここではMIDIはPortの0番を使いChannelで2番を割り当てています。音声出力はJACKを使い、4番チャンネルと5番チャンネルにステレオ出力しています。
このようにして別々の出力/入力先を割り当てたチャンネルを追加していきます。
図13 チャンネル追加例
図14 接続例
上図はPatchageで見た接続例です。ここではRosegardenで作成したMIDIシーケンスをLinuxSamplerに出力しています。別にMIDIキーボードからのMIDI出力をLinuxSamplerの別ポートに入力しています。
GigaSamplerフォーマットファイルのエディター: gigedit
LinuxSamplerプロジェクトは、GigaSamplerフォーマットファイルのエディターも提供しています。gigeditです。
図15 gigeditの画面
使うには、パッケージ「gigedit」をインストールして下さい。起動するには、Unityのダッシュボードや端末でコマンド「gigedit」を実行します。本来ならQsamplerの各チャンネルに設けられているボタン「Edit」をクリックしても起動できますが、Ubuntuのリポジトリで提供されているgigeditのパッケージではこの機能が使えません[3] 。前回同様、筆者はGigaSamplerフォーマットのファイルを作ったり編集したりしたことがないので、紹介するだけにとどめておきます。
[3] 先述のとおり、LinuxSamplerのエンジンに関するパッケージがリポジトリに入っていないためです。gigeditの全機能のうち、LinuxSamplerエンジンに依存する機能は無効となっています。
Cakewalk社のSFZフォーマット向け開発
LinuxSamplerは現在、Cakewalk社のsfz File Format への対応を進めています 。このフォーマットはその名称から、本連載の第191回 で紹介したサウンドフォントフォーマットの後継と勘違いされるかもしれませんが、全くの別物です。興味のある方は、LinuxSamplerのSVNリポジトリ から最新のソースを入手して試してみて下さい。
本連載の第184回、第189回、第191回、そして今回と、さまざまなソフトウェアシンセサイザーを扱ってきました。Ubuntuではこの他に、シーケンス機能を備えたサンプル音源シンセサイザーであるHydrogen というドラムマシンソフトウェアも利用可能ですので、ぜひ試してみて下さい。
さて、筆者の次回の担当回では少し趣向を変え、Windows環境でよく使われているプラグイン規格である、Steinberg社のVST(Virtual Studio Technology)を扱おうと思います。VSTにはエフェクト機能を備えたもの、MIDI音源機能を備えたものがあり、それらのWindows用バイナリーをUbuntuのサウンドシステム上で使うソフトウェアを紹介しようと思います。