Language)という言語がありました。PMMLはテキストベースで楽譜を書いていくコンピュータ言語です。PMMLは単に音符をテキストに置き換えただけではなく制御構造やマクロなどのプログラミング言語の要素を多く取り入れられていたため、楽譜上での繰り返し記号であったり、アルペジエータであったりの記述がラクに行えました。短時間での音楽制作が可能になるだけでなく、プログラミング言語としても利用が可能だったのが大きな特徴でした。僕も標準MIDIファイルから3Dアニメーションを自動生成するプログラムをPMMLで作成し、音高やヴェロシティといった音楽要素をアニメ内の任意の要素(色や位置や形状)に変換することについての卒業研究を行いました。Collider、Overtoneなど、音楽や音響を扱うための言語は増えましたが、1990年代半ばにはPMMLほど高機能・抽象的にMIDIをプログラミングできる言語は無かったのです。言ってもPMMLはマイナーな言語でした。Languageばかりが出てきますし、1998年以降の(一般公開された)アップデートもありませんでした。TaktそしてPMMLから15年以上経った2014年9月のICMC(国際コンピュータ音楽会議)にて、西村先生がTaktという新言語の発表を行います(9月17日発表のようです)。現在のバージョンがSourceForgeに公開されていたので、さっそくダウンロードして試してみました。コマンドラインから実行するオールドスクールなプログラミング言語ですが、Emacs用のtakt-modeなども用意されているので、EmacsをIDEとして利用している人にはまったく問題ないでしょう。インストールできたものとして話を進めます。-Q」とすると、使用できるMIDIデバイスの一覧が表示されます。SD-90が表示されました。Loop)機能(いわゆるインタプリタ)としての使い方があります。MIDIデバイスが使用できるときには、REPLを使うとその場で様々な実験ができて便利です。Taktを使ってみるオプション無しでTaktを起動すると「>」というプロンプトが表示されます。^C(リターン)」と入力すると、使用しているMIDIデバイスから「ドレミファソラシド」と音階が再生されます。CDE〜は大文字でも小文字でも構いませんが、あいだにスペースを入れないと一音とみなしてくれません。シャープやフラットも「C#」や「Eb」として使えます(フラットは小文字のBです)。Cの半音下だってEの半音上だって「Cb」「E#」と書けますし、半音記号を重ねて「Cbb」などとすることも可能です(C###のように3つまで)。^Cオクターブの変更さて、最後の「^C」は何かというと、「(いま設定しているオクターブから)1オクターブ上のC」という意味になります。Cの前や後にスペースを空けずに記号を入れることで、Cの意味を少し変えることができます(モディファイアと呼びます)。^C」は3オクターブぶんのCを再生します。指定したい場合は「C4」「C6」などとオクターブ番号を書きます。先ほど「いま設定しているオクターブから」という表現をしましたが、「o=4」のように設定することで、それ以降の音がどのオクターブ範囲に対して鳴らされるのかを変えることができます。以下のようにすると、同じ「ドミソド」でも、異なる音高になります。他にも多くのモディファイアが用意されています。「C+」「C-」は、ノートオン・ヴェロシティ(打鍵の強さ)を上げ下げします。C-------」などと書けますよ。C」のようにすることも可能。D」のように元に戻す必要があります。F」のようにするのが良いでしょう。音の長さ(音価)を変えるときには、「\」で音の長さが半分、「*」で音の長さを倍にできます。長さでCを再生します。「.」で付点を付けることができます。基準とする音価を変えるのも「L4」で四分音符、「L8」で八分音符など、簡単です(L6やL7といったこともできますし、解像度単位での指定(l=480)といったことも可能です)。スタッカートは「!」、タイは「~」など、様々なモディファイアが準備されています。^C]」のように大括弧で囲みます。E」のように中括弧を使うと、モディファイアが中括弧の中のものすべてに適用できます。F」のように、変化を中括弧の中だけにとどめることも可能です。以上のことだけを組み合わせるだけでも、テキストベースでいろいろな曲を書くことができそうですが、本当はここからがTaktの真骨頂です。プログラミングをかじったことがある人は以下のTaktプログラム(Taktのサンプルプログラムから抜粋)を読んでピンと来るかもしれません。TaktにはC言語ライクな制御構造が用意されているので、for文で繰り返しを行い、繰り返しの1回目と2回目とで異なる音を出力することが可能です。楽譜の1番カッコ、2番カッコに相当します。}}とりあえずまとめまだTaktのマニュアルを読み切れていないのですが、PMMLで可能だったことはすべて出来るようですし、それ以上の機能も入っています。複数トラックを作成することはもちろん、コントロール・イベントに代表されるMIDIの機能はほぼ網羅されていますし、高度なマクロ機能や、並行処理、オブジェクト指向、数値計算や乱数生成や文字列処理のためのライブラリ群なども準備されています(このあたりはTaktを勉強して改めて紹介しようと思います)。REPLでリアルタイム動作するため、MIDIエフェクタとしての使用も可能かと思います。MIDIデータの読み込みをして、各音高のカウントをするなどできますので、音楽制作だけじゃなく、MIDIファイルの解析による音楽学的研究にも利用できるかもしれません(パッと思いつくのは十二音技法の解析など)。このあたりが、音楽制作(だけ)を目的として作成された既存の音楽プログラミング言語と一線を画すところなのでしょう。2013)あけましておめでとうございます。(21)月別アーカイブはてなブログをはじめよう!amaruiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。