ライブ・コーディング
広義(?)のライブ・コーディングではなく、ChucKを開発しているところが提唱するOn-the-fly Programmingについて。
Using Code as an Expressive Musical Instrument
ってことで、即興演奏をコーディングでという話だと思う。ソロだけでなく例えば二人によるデモっぽいのはCounterpointで見れる。しかしこれをパフォーマンスとして楽しめる人は相当限られるだろう。普及は厳しいんじゃないかな。
時間
ChucKは時間の概念が言語の根幹に組み込まれて*1いて、プログラマがコントロールできる。
内部型として時 time と継続期間 dur がある。dur として用意されている単位はミリ秒から週までのms、second、minute、hour、day、weekと自分には意味不明なsamp。例えば二分三十秒は
2::minute + 30::second
でOK。「::」は一体何なんだ。
VM内部での現在時間を保持するのは time型の now というキーワードで、こいつをいじることで時は進む*2。進め方はChucK演算子を使って、
- dur型 => now : 指定した継続期間だけ時を進める
- time型 => now : 指定した時間になるまで時を進める
とやる。
無意味にFizzBuzzを書き換えてみた。一分間0.5秒毎に数を数え上げていくバージョン。
now + 1::minute => time later; // 今から一分後 1 => int i; while(now < later) { if (i % 15 == 0) <<<"FizzBuzz">>>; else if (i % 3 == 0) <<<"Fizz">>>; else if (i % 5 == 0) <<<"Buzz">>>; else <<<i>>>; i++; .5::second => now; // 0.5秒進める }
まだ音は出ない。