2013/05/04

【Music Works】Garageband for iOSに見るソフトシンセの構造

◎技術の進歩というものはありがたいもので、今やスマートフォンで作曲が出来る時代である。しかも、内臓音源のクオリティもなかなか悪くない。
最近使い倒している中で、Garageband for iOSのスマートギターが、ギターの音域外だとパワーコードストラミング音が出たり、ベロシティによるマルチサンプル再生に対応していたりと、音色クオリティや表現力と言った意味では既にかつての「DTM音源」を凌駕するレベルに有る事に気がついたのだが、これをモバイルデバイスで実現させるカラクリに少し興味を持ち、波形解析をしてみる事にした。


◎波形解析と言っても別に難しい事は何も無く、SmartGuitarを含んだ曲ファイルを書き出してLogic Proで読み込み→音源をEXS24に切り替えてEXS上にサンプルを展開→EXSのエディタでゾーンやマッピングを確認するだけのことだ。
が、ここで面白い事実に気がついた。波形ファイルが一つしか無いのだ。その波形がこれ。

SmartGuitarにおいてこの単一のサンプルファイルの鍵盤やベロシティによって波形の読み出し位置を変えることでマルチサンプル発音を実現しているわけだ。確かにこの方法だとファイルを細分化するよりもストレージメモリの使用量を削減出来る。
ちなみにサンプルレートは22.05kHzと意外に低いが、サンプル数が多いため容量としては26Mにも及ぶ。

◎ここで興味深いのは、一つ一つのサンプルは発音から消音まで収録されていること。PCMシンセサイザーでは一般的なループ処理がない。EXSエディタで確認してみたが、サンプルの再生でループは行っていないのだ。当然そんなことをすれば26Mもの波形容量を食ってしまうのも理解できる。ちなみにピアノは100M近くに及び、こちらもノンループ。(ただしダンパーオン音色はない)
サウンドクオリティをそこまで高くする必要がないはずのソフトにしてはかなり贅沢な仕様だが、何故このような仕様にしているかを考えてみるとスマートデバイスアプリならではの苦労が分かる。サンプルのループ処理を行うと、確かに波形容量が減らせるが、発音エンジンにエンベロープを組み込む事が必須となる。メモリの負荷が減る代わりに、プロセサの負荷が増えてしまうのだ。

◎ただでさえ電池駆動時間という制約のあるスマートデバイスでプロセサ負荷を増やすのは好ましくない。一方でワークメモリの負荷に関しては、ソフトシンセでは一般的な技術であるストレージからのストリーミング再生を行う事で負荷分散を図れる。(GarageBand for iOS起動直後に曲を再生すると、ストリーミングが追いつかず音色のアタック部分だけが再生される)。
通常のソフトシンセはHDD等のストレージメディアからストリーミングを行うためそちらの負荷がかなり高いが、基本フラッシュストレージのiOSにおいてはストリーミングによるリード負荷はそこまで高くない。
GarageBand for iOSはこう言った事を行う事で、決して能力が高いとは言えないモバイルプロセサでのDTM環境を実現しているわけだ。

◎この「プロセサの制約を波形容量で解決する」手法は、GarageBand for iOSに限らずソフトシンセでは一般的に使用されている。ハードシンセのように高速な読み出しメモリや発音処理専用のプロセサを持てず、ワークメモリの容量制限と限られたプロセサリソースを有効に活用するために、ハードシンセ程制約がないストレージを活用して発音処理にかかる処理を引き下げている。
別の言い方をすれば、ハードシンセが音声処理で表現している部分を、ソフトシンセでは波形容量で表現しているのだ。
一般的なソフトシンセではこの波形容量による音色の切替は「演奏時の不自然さ」として現れやすいのだが、もともと高度な演奏を要求出来ないGarageband for iOSが(多少ストレージを食う事になっても)この仕様としたのはプロセサ処理の効率利用という意味では非常に合理的な設計思想だと思う。

0 件のコメント: