get it:
- install haskell (easiest way)
- install supercollider
- in the terminal: cabal install vivid
- start the supercollider server. in the terminal:
export SC_JACK_DEFAULT_INPUTS="system" export SC_JACK_DEFAULT_OUTPUTS="system" scsynth -u 57110
{-# LANGUAGE DataKinds #-}

import Vivid

wobble = sd (0 ::I "note") $ do
   s <- 50 ~* sinOsc (freq_ 10) ? KR
   s1 <- 0.1 ~* sinOsc (freq_ $ midiCPS (V::V "note") ~+ s)
   out 0 [s1, s1]

main = do
   s <- synth wobble ()
   let notes = take 12 $
         [ x | x <- [38..], (x `mod` 12) `elem` [0,3,5] ]
   forM_ (cycle notes) $ \note -> do
      set s (toI note ::I "note")
      wait 0.2
{-# LANGUAGE DataKinds #-}

import Vivid

tone = sd (0::I "note") $ do
   a <- lfTri (freq_ 0.2) ? KR ~* 0.5 ~+ 0.5
   freq <- lag (in_ $ midiCPS (V::V "note"), lagSecs_ 1.25) ? KR
   b <- 0.1 ~* varSaw (freq_ freq, width_ a)
   out 0 [b, b]

main = do
   s <- synth tone (45::I "note")
   forever $ forM_ [45, 57, 64, 55] $ \freq -> do
      set s (freq :: I "note")
      wait 2.5
docs
the best place for questions is the haskell-art mailing list
attribution: img from wikimedia commons, altered w/ imagemagick and the gimp