https://adventar.org/calendars/3353 の13日目エントリーです。
mp4saとは?
音楽の表現としてstandard MIDI fileを使うことを考えた時、まっ先に表出するであろう問題点は、再生するMIDIデバイス環境によって全く異なる音楽になってしまうということです。20世紀にまだ日本国内でRoland音源とYAMAHA音源がGS/XGで競っていた頃は、「XX音源専用」のようなMIDI楽曲を見かけることがよくありました(SoundBlaster環境で再生することが前提だったものもあることでしょう)。当時MIDIのような方式で音楽を表現するにはコンピューティングリソースの都合上やむを得なかったでしょう。
現在はコンピューター上でソフトウェア・シンセサイザーを利用して作曲するのも現実的になっており、特定のハードウェアに依存せずに、制作環境と同様にMIDIのような方式で制作された音楽を再生することは可能になりつつあります。MIDIのような方式で全トラックを何の問題もなくフル再生できるかというと、実際のところはまだパフォーマンス上の問題はあるのですが、現実的にはなりつつあります。
しかしMIDIという仕様を越えて楽曲と楽器の表現を標準化するという動きは未だにありません。特定の「ソフトウェア」(特に「音源」)に依存せずに音楽を作るのは、これだけでは無理そうです。誰かが作ったものを、限りなくそのままに近い環境でそのまま再生でき、その演奏データも見ることが出来て、どのように作られているのか、World Wide Webのように知見が共有されて広まっていく時代は来ないのでしょうか? 同じサウンドエクスペリエンスの共有が可能になると、楽しみが増すはずだ、とわたしは確信しています。
実のところ、MIDIを越えて音色定義なども標準化しようという試みはかつて存在していたようです。そのひとつ(?)がMPEG-LAによるMP4-SA (Structured Audio)という仕様です。MP4のISO/IEC仕様の一部になっているのです。割とビックリですね。
SAOLとSASL
MP4-SAの目的は、どのような環境であろうと、MP4-SAに準拠して記述された音楽は、同じ音として再現できるというものです。構造化された音楽データ構造を規定します。
MP4-SAについては、公式サイト(?)が一番詳しくまとめています。
MP4-SAでは、SAOL (Structured Audio Orchestra Language)というオーディオプログラミング言語(APL)とSASL (Structured Audio Score Language)という独自の音楽記述言語によって、音楽を表現します。前者がプログラム/バンク定義を、後者がMIDIメッセージを、それぞれ担当すると考えれば分かりやすいです。
これらの言語で記述された音楽は、sfront
というツールによってWAVファイル等に変換できます。使い方は簡単そうです。
sfront -orc sine.saol -sco sine.sasl -bitout sine.mp4 -aout output.wav
SAOLはDSPを設計するようなコードを書くことになりますが、同種の言語は数多く存在するので、ここで紹介する意味はほぼ無いでしょう。公式サイトにあるSASLのサンプルはこんな感じです:
0 tempo 110
2 tempo 112.1
4 tempo 114
6 tempo 116
8 tempo 118
1 vtone 1.5 52
3 vtone 1.5 64
5 vtone 1 63
6 vtone 0.5 59
6.5 vtone 0.5 61
7 vtone 1 63
8 vtone 1 64
10 end
パッと見た感じでは、BASIC言語のように行頭の数字が処理順を定義していて(ただし小数値も指定可能…!)、別のSAOLファイルで定義されているvtone
という音色を使って、3列目の1.5、1、0.5といった音長、4列目の52、64、63…といった音階のノート命令を実行する、という内容であるようです。便利なのかそうではないのかよくわかりませんが、人間が記述するための言語でないことは見て取れます。Pure Dataなどが近い文法であるというべきでしょうか。
いずれにせよ、これだけではまだ到底使い物になるとは言えず、標準仕様として策定までされているものの、一向に使われる気配がないのも、まあ致し方ないかな…とは思います。SAOL部分をVSTなどに変換できるようにすれば実用性も上がるのでしょうか…(とても上がらない気がしますが)。この辺りは、もう少しオープンソース開発での動向を見てから標準化に流れてもいいのかもしれません。伏線のようになってしまいましたが、日を改めて考察を続けたいと思います。