関数の引数

同じ名前の関数を作り引数の数を変えると、

fun void miu(int num1)
{ <<<num1>>>; }
fun void miu(int num1, int num2)
{ <<<num1 + num2>>>; }

miu(1);
miu(1,2);
miu(1, 2, 3)

当然ですがmiu(1,2,3)はエラーになります。これは関数のオーバーロードと言うらしい。さあ、最後は模写chirp.ckです。

sinosc s => dac;
.4 => s.gain;
chirp(127, 20, 1::second);
chirp(20, 120, 1.5::second, 100::ms);

fun void chirp(float src, float target, dur duration)
{
   chirp(src, target, duration, 1::ms);
}

fun void chirp(float src, float target, dur duration, dur tinc)
{
   src => float freq;
   duration / tinc => float steps;
   (target - src) / steps => float inc;
   float count;
   while(count < steps)
   {
      freq+ inc => freq;
      1 +=> count;
      std.mtof(freq) => s.freq;
      tinc => now;
   }
}