ChunK

先日のエントリ「小学校低学年に与えるプログラミング言語」の続き.

ハテブで,KZR氏の「オーディオプログラミング言語 ChucK』なるエントリを見つけ,早速試してみる.氏のエントリを注意深く読めば判るが,on-the-fly で遊ぶには,統合開発環境であるminiAudicleが必要っぽい.
(少なくともOSX版の場合)miniAudicleのdmgを取ってくればChunKは別途取って来る必要無さそう.手元の環境 (OSX Leopard)では動いた.

遊び方

遊び方は,簡単.
まず,miniAudicleを実行する.

次に,メニューから,[ChunK]-[Start Virtual Machine]を選び,ChunKのVMを実行する.

エディタで適当なスクリプトを書く.
私は大学時代音楽系のサークルにいたくせに才能がないので,exampleを参考に,プログラマ脳で改変した.

//connect a plucked string to the soundcard out
StifKarp inst => dac;

[0,2,4,5,7,7,9,12,12] @=> int mel[]; //sequence data
[100,200,100,150,100,200,200,100,200] @=> int len[]; //sequence data

for (0=>int i; ; i++) { //infinite loop
    std.mtof( 48 + mel[i%mel.cap()] ) => inst.freq; //set the note
    inst.noteOn( 0.5 ); //play a note at half volume
    (10 * mel[i%len.cap()])::ms => now; //compute audio for 0.3 sec
}

ここまで書いたら,メニューバーの「Add Shred」でVMに投げ込む.プログラマ脳には「Shread」==「Thread」のほうが理解しやすいよね.


あとは,適当に改変しながら on-the-fly で Replace Shread したり,さらに Add Shread したり.


もしかしたら(というか,たぶん)Shreadの同期やトリガーなど使えるのだろうけれど,この段階でもミニマルなビートに浸れて十分に愉しい.

小学校低学年の子供に与えられるか? (偏見)

うちの子供に見せたところ,今春小学校入学の次女のほうが興味を示した.元々,四六時中歌を唄って家内から叱られるような奴なので,音をプログラムできるということに興味を示したのかもしれない.
スクリプトを作ってあげて,配列の数値を替えるよう指示して…とやるのであれば,毎週末毎の半日くらいは親子で遊べるだろう.

とはいえ,この言語は,小学校低学年に与えるには,少し難しいかもしれない.まず,日本語ドキュメントが圧倒的に少ない.Processing は,小さいとはいえ盤石なコミュニティがあるので,漢字だらけだったとしても一応読めるドキュメントが辛うじてある.ChunKは,残念ながら,これからっぽい.

それと,信号処理の言語ゆえの宿命なのだけれど,ある程度の数理的教養が無いと言語を使いこなせない.まあ,Processingでも同じ傾向はあるのだけれども,ちょっとレベルが違う.

言語仕様は簡潔だけれども,ちょっと癖がある.

面白い言語処理系だけれども,my first にするのは,ちょっと難しいかな.


ChunKが子供に与えられないというわけではない.例えば,小中学校の授業でプログラミングを学んだ直後の,2つめの言語として与えるというのは,結構面白いかもと思う.