-- | Plays standard waveforms: pure tone, triangle, square and sawtooth.
module Waves where

import Csound.Base

main = dac $ do
    -- Creates a master volume slider.
    (gvol, vol) <- masterVolume

    -- We use a standard element to experiment with four classic waveforms.
    -- The return value of the widget is a function that takes a frequency
    -- and returns the signal.
    (gw, f) <- classicWaves "waves" 0

    -- Let's create a simple instrument that uses the waveform.
    let instr x = fades 0.1 0.1 * f x

    -- Places elements on window aligned horizontally.
    panel $ hor [sca 0.1 gvol, gw]

    -- Triggrs the instrument with midi keyboard.
    return $ vol * instr 220

