loading . . . mimium mimium # 🎉 mimium v3がリリースされました! レコード型、多段階計算(マクロ)、ライブコーディング機能など、多くの新機能が追加されています。 詳細はv3リリースノートをご覧ください。
#stage(main) let PI = 3.14159265359 fn phasor_shift(freq,phase_shift){ (self + freq/samplerate + phase_shift)%1.0 } fn sinwave(freq,phase){ phasor_shift(freq,phase)*2.0*PI |> sin } fn osc(freq){ sinwave(freq,0.0) } #stage(macro) fn cascade (n,gen){ if (n>0.0){ let multiplier = 1.0-(1.0/(n*0.2)) |> lift_f `|rate| rate - ($gen)(rate/10) * rate * $multiplier |> $cascade(n - 1.0 ,gen) }else{ `|rate| ($gen)(rate) } } #stage(main) fn fbdelay(input,time,fb,mix){ input*mix + (1.0-mix) * delay(40001.0,(input+self*fb),time) } fn dsp(){ let time_r = osc(0.015) *1500 let time_l = osc(0.01) *1000 let f = 700 let r = (f |> cascade!(6,`osc))*0.2 let l = fbdelay(r,20400+time_l,0.9,0.7) let r = fbdelay(r,20000+time_r,0.9,0.7) (r,r) } #stage(main) let PI = 3.14159265359 fn phasor_shift(freq,phase_shift){ (self + freq/samplerate + phase_shift)%1.0 } fn sinwave(freq,phase){ phasor_shift(freq,phase)*2.0*PI |> sin } fn osc(freq){ sinwave(freq,0.0) } #stage(macro) fn cascade (n,gen){ if (n>0.0){ let multiplier = 1.0-(1.0/(n*0.2)) |> lift_f `|rate| rate - ($gen)(rate/10) * rate * $multiplier |> $cascade(n - 1.0 ,gen) }else{ `|rate| ($gen)(rate) } } #stage(main) fn fbdelay(input,time,fb,mix){ input*mix + (1.0-mix) * delay(40001.0,(input+self*fb),time) } fn dsp(){ let time_r = osc(0.015) *1500 let time_l = osc(0.01) *1000 let f = 700 let r = (f |> cascade!(6,`osc))*0.2 let l = fbdelay(r,20400+time_l,0.9,0.7) let r = fbdelay(r,20000+time_r,0.9,0.7) (r,r) } mimium (MInimal-Musical-medIUM) は音楽の記述/生成に特化したプログラミング言語です。 https://mimium.org/ja/