-- | The 'Make' class provides the 'ugen' function, and has instances
-- for record constructors for all unit generators that take at least
-- one parameter.
--
-- There are two primary use scenarios.
--
-- In the first individual record variants are used in isolatation for
-- UGens having many inputs where default values are required
--
-- In the second graphs are predominantly constructed using record
-- syntax for clarity.
--
-- In the latter case clarity is greatly enhanced using record field
-- disambiguation as is present in ghc since version 6.8.2.
--
-- The record variants are generated by a program using the database
-- at hsc3-db and are /not/ stored in the darcs repository.  This
-- database is auto-generated from the supercollider language unit
-- generator bindings and is not entirely accurate.
--
-- See <http://slavepianos.org/rd?t=hsc3-db>
--
-- In particular neither argument re-ordering or multiple channel
-- collapse are correctly annotated, see for instance the Out unit
-- generator in the help file @analog-bubbles.hs@, where explicit bus
-- numbering is required.
module Sound.SC3.UGen.Record where

import Sound.SC3.UGen.Type

class Make a where
    ugen :: a -> UGen