# hsc3-lisp

Lisp Supercollider

hsc3-lisp is a simple Lisp interpreter.

The only data type is the SuperCollider Unit Generator.

Why Lisp SuperCollider?

(let* ((s (mixFill 10 (lambda (_) (Resonz (Mul (Dust 0.2) 50) (Rand 200 3200) 0.003))))
       (z (DelayN s 0.048 0.048))
       (y (mixFill 7 (lambda (_) (CombL z 0.1 (MulAdd (LFNoise1 (Rand 0 0.1)) 0.04 0.05) 15))))
       (x (iter 4 (lambda (i) (AllpassN i 0.05 (RandN 2 0 0.05) 1)) y)))
  (Add s (Mul x 0.2)))

There is an OSX (10.9.3) binary (hsc3-lisp.xz), or to build type:

cabal install

An environment variable locates the hsc3-lisp library files:

export HSC3_LISP_DIR=$HOME/sw/hsc3-lisp/scm

To hear the above type C-cC-a in Emacs.

There is a terse tutorial.

hsc3-lisp follows the Haskell SuperCollider (hsc3) rules.

hsc3-lisp requires scsynth be listening at the standard port (57110).

hsc3-lisp is Post-ML, ie.

> (equal? (map (+ 1) (list 1 2 3)) (list 2 3 4))
RESULT: 1

hsc3-lisp is not scheme. Nonetheless, the following rsc3 graphs are working:

There is also an haskell to lisp translator (October, 2014) that re-writes a subset of haskell as lisp.

Lisp

The largest part of the lisp (scheme) sources are directly copied from rhs and rsc3, see the Makefile at the scm directory. These files are marked AUTOGENERATED.

Help

initial announcement: [haskell-art, local] 2014-10-15 05:10:19 GMT

© rohan drape, 2014-2025, gpl.


$ make doctest
Examples: 102  Tried: 102  Errors: 0  Failures: 0
$
lisp supercollider
git clone https://gitlab.com/rd--/hsc3-lisp [ README , dir , log ]