-- Synth piano for OAK. #INCLUDE "oak.inc" #USE "basic" #USE "osc" #USE "env" --{{{ PROC synth.piano (CHAN SIGNAL pitch?, trigger?, velocity?, out!) PROC synth.piano (CHAN SIGNAL pitch?, trigger?, velocity?, out!) CHAN SIGNAL sq.pitch, sq.vol, sq: CHAN SIGNAL si.pitch, si.vol, si: PAR da (pitch?, [sq.pitch!, si.pitch!]) CHAN SIGNAL x, e: PAR sqrt (velocity?, x!) da (x?, [sq.vol!, e!]) amp (e?, -1.0, si.vol!) CHAN SIGNAL w: PAR generate.square (sq.pitch?, w!) gate (w?, sq.vol?, sq!) CHAN SIGNAL p, w: PAR transpose (si.pitch?, p!, 12) generate.sine (p?, w!) gate (w?, si.vol?, si!) CHAN SIGNAL c, d: PAR mixer ([sq?, si?], [0.1, 1.0], c!) adsr (trigger?, d!, 0.001, 4.0, 0.0, 0.05) gate (c?, d?, out!) : --}}}