memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

オーディオプログラミング言語 ChucK

KZRさんのブログで知った言語。ここ数日、電車でマニュアルを見ながら遊んでいます。

DTM+プログラミングに興味がある人は向いていますね。

何よりプログラミング言語のChucKがオモシロい。

プログラミング初心者がつまづく要素の一つに代入操作があります。特に以下のようなインクリメントの表現が難しい。数式として見てしまうとiとi+1が等しい??ええー?という感じです。「変数iに1を加えて、その結果を変数iに入れる」と読めればいいのですが。

i = i + 1;

一方、ChucKの代入操作は以下のように書きます。これなら素直に「変数iに1を加えて、その結果を変数iに入れる」と読めますね。

i + 1 => i;

もう少し書きます。

関数呼び出しもJavaRubyと異なっています。以下のような感じです。関数呼び出しで引数を渡すところが違いますね。右から左に代入するのではなく、左の実行結果を右に受け流す。。。感じで読みます。*1

fun int add(int x, int y)
{
return x+y;
}

(10,20) => add;

実は、上記のコードでは実行結果が表示されません。で、作為的ですが、表示用のshow関数を用意します。System.out.println()はChucKでは<<< >>>と書きます。

面白いと思いません?左から右に受け流す。。。そんな感じです。

fun int add(int x, int y)
{
return x+y;
}

fun void show(int n)
{
<<< n >>>;
}

(10,20) => add => show;

まだ勉強中なので簡単なオーディオしか再生できませんが、オーディオ処理の特性を踏まえて、タスク間通信や並行プログラミングもできるようです。

processingは絵を動かしながらインタラクティブにプログラミングが学べる教材として好んで使ってきましたが、ChucKで音を出しながらプログラミングが勉強できると、学生さんも楽しめるんじゃないかな。。。と思ったりしているわけです。

ChucKのダウンロードはこちらから

ChucKはコマンドラインで使用しますが、特に理由がなければChucKの統合環境であるminiAudicleを使った方が勉強しやすいですね。miniAudicleを入れれば上記のChucKは入れる必要がないようです。

miniAudicleのダウンロードはこちら

*1:Javaと同じように「add(10,20);」と書くこともできます。