;; rbd-render.sal -- play with portrait data ;; load "upic" load "rbd-upic" ;; the data load "reverb" function change-upic-data(data, waveform, envelope) begin with rslt loop for curve in data set rslt @= cons(waveform, cons(envelope, rest(rest(curve)))) end return rslt end set upic-table = simrep(i, 10, build-harmonic(i + 1, 2048) * (1.0 / (i + 2))) set upic-table = list(upic-table, hz-to-step(1.0), t) define function rbd-env() return env(0.2, 0.05, 0.8, 1, 1, 3) exec autonorm-off() define function render() begin with snd = seq(upic(change-upic-data(rbd, quote(upic-table), quote(rbd-env))) ~ 3, s-rest(3)) set snd = eq-lowshelf(snd, 200, 12) set snd = eq-lowshelf(snd, 50, 6) set snd = eq-highshelf(snd, 2000, 6) ;set snd = snd * pwlv(1, 23.6, 1, 34.4, 0.3, 37.5, 0.1, 40, 0) set snd = snd + reverb(snd, 1.0) * 0.4 set snd = pan(snd, pwlv(0.2, 40, 0.8)) return snd * 0.01 end play render()