https://adventar.org/calendars/3353 の21日目のエントリーです(遅れて書いています)
aldaの評価
aldaはテキストからSMFや楽譜に変換するための音楽記述言語・ツールで、作曲家のためのものである、とプロジェクトでは記述しています。その目的はMML(music macro language)に近いものがあります。実のところ、MMLの一種であるPPMCKに影響を受けているそうです。
Inspired by other music/audio programming languages such as PPMCK, LilyPond and ChucK, Alda aims to be a powerful and flexible programming language for the musician who wants to easily compose and generate music on the fly, using naught but a text editor.
実装はClojureであり、一部はClojureScriptとしても動作するようです。
少し前に文法をチェックしていたので、メモ書き程度の内容ですが簡単にコメントします。
(1) note命令はcdefgabで記述します。シャープはc#
d#
... とドキュメントにありますが、+
-
(フラット)も使えるようです。ナチュラルは_
が使われていたようですが、マニュアルには記載がありません。変数代入構文で=
を使っているらしく、ナチュラルには使えないようです。(_はタイ・スラー・ポルタメントの類で使いたいのに、これで使えなくなってしまった感じです。)
(2)音長はc
(デフォルト)、c4
(4分音符)、c4.
(付点)、c500ms
(ミリ秒)、c2s
(秒)のような感じで指定します。これではm
やs
を別の命令に割り当てられなくなってしまうわけですが、aldaはその辺の設計がイマイチです。
(3)名前付き位置の記憶とそこまでのジャンプが可能です。%foobar
と#foobar
で指定します。
(4)その他の表現要素はclojure attributesとして指定します。 (octave 4)
や(panning 50)
のような記述になります。これではまともに入力する気になれない…
(5)制御構文としては、ループがあります。[
〜 ]
で指定します。この辺りはMCKの影響がありそうです。
(6)和音の入力方式が独特で面白いです。c/e/g
のような記述が基本和音構文で、オクターブ指定(相対のみ?)は挟み込めるようです。音長指定があった場合は、最も短いものが和音指定全体の長さとして使用され、続く音は続行している他の音に重なります。c4/e8/g2
とあれば、和音全体は8分音符となり、次のノートはe8に続きます。これでアルペジオ奏法などが楽に表現できるはずです。
現時点で、aldaに関する個人的な評価は以下のような感じです。
- MIDIだけでなくサウンドエンジンまで計画していて野心的です。ただ実現性がどこまであるのかは不明です。
- lilypondとの相互運用?が主眼になっている(時期があった?)っぽく、演奏用としての音楽記述言語は機能が薄く、率直に言えば作曲のために使いたい言語ではありません(それが主目的のはずなのですが)。
- カスタム命令の定義には2文字以上が要求されるので、あまり嬉しくない感じです。また記号の利用もかなり限られていて、特に相対音量指定や音色指定で ( ) @ といった記号を使いたいわたしとしては不満が大きくなりそうです。
- 手入力を前提にするなら、もっと命令を豊富に用意するべきだし、そうでないならもっと手入力しやすいDSLが必要だと思います。そして命令を拡張する制限がMML的な言語として考えるとやや嬉しくない感じです。