hello, world
初识ChucK
chuck的hello world就是一段时长为两秒的正弦波声音,毫无规律,及其难听
// connect sine oscillator to D/A convertor (sound card)
SinOsc s => dac;
// allow 2 seconds to pass
2::second => now;
把上面的代码保存为test.ck
,然后在控制台中输入chuck test.ck
打开电脑声音就可以听到一段诡异的声音。
(注意cd到文件所在的目录下)
无限循环,ctrl+c
可以结束程序
SinOsc s => dac;
while(true)
{
2::second => now;
}
beep beep
随机产生一种老科幻电影里的科技感声音
每一百秒在30Hz到1000Hz内随机改变频率
SinOsc s => dac;
while(true)
{
100::ms => now;
Std.rand2f(30.0, 1000.0) => s.freq;
}
时间同步机制
ChucK的virtual machine有一个时间同步的机制,譬如同时运行三个/.ck
文件,那么这三个程序的时间是同步的。
// impulse to filter to dac
Impulse i => BiQuad f => dac;
// set the filter's pole radius
.99 => f.prad;
// set equal gain zero's
1 => f.eqzs;
// initialize float variable
0.0 => float v;
// infinite time-loop
while( true )
{
// set the current sample/impulse
1.0 => i.next;
// sweep the filter resonant frequency
Std.fabs(Math.sin(v)) * 4000.0 => f.pfreq;
// increment v
v + .1 => v;
// advance time
100::ms => now;
}
再复制两个文件test1.ck
test2.ck
,将100::ms
分别改为99::ms
和101::ms
,
同时运行三个文件chuck test.ck test1.ck teste2.ck
,
将会听到一段有规律的脉冲。