[CM] Syntactic changes to snd-rt
Kjetil S. Matheussen
k.s.matheussen at notam02.no
Wed Aug 12 09:04:36 PDT 2009
On Wed, 12 Aug 2009, Kjetil S. Matheussen wrote:
>
> I've added a few improvements to the syntax of snd-rt.
> What I like most is the use of the keywords ":where" and
> ":when" which can be placed anywhere in code. (inspired
> by various functional languages)
>
> ":where" is a postfix operator to add local variables,
> and ":when" is a postfix operator for doing conditional tests.
>
Not quite used to the new syntax yet. Here is another version of the
softsynth which exploits it better:
(<rt-stalin>
(sound
(out (+ (* 0.5 softsynth)
(* 0.1 reverb)
:where reverb (+ (comb :scaler 0.742 :size 9601 allpass-sum)
(comb :scaler 0.733 :size 10007 allpass-sum)
(comb :scaler 0.715 :size 10799 allpass-sum)
(comb :scaler 0.697 :size 11597 allpass-sum)
:where allpass-sum (send softsynth :through
(all-pass :feedback -0.7 :feedforward 0.7)
(all-pass :feedback -0.7 :feedforward 0.7)
(all-pass :feedback -0.7 :feedforward 0.7)
(all-pass :feedback -0.7 :feedforward 0.7)))
:where softsynth (in (while #t
(wait-midi :command note-on
(sound
(out (* (-> adsr next) (midi-vol) (oscil :freq (midi-to-freq (midi-note)))))
(stop :when (-> adsr is-finished)))
(spawn
(wait-midi :command note-off :note (midi-note)
(-> adsr stop)))
:where adsr (make-adsr :a 20:-ms :d 30:-ms :s 0.2 :r 70:-ms))))))))
More information about the Cmdist
mailing list