{-# OPTIONS -fno-implicit-prelude #-}
module Synthesizer.Physical.Play where

import qualified Sox.Play
import qualified BinarySample as BinSmp

import qualified Synthesizer.Physical.Signal as SigP

import qualified Algebra.OccasionallyScalar as OccScalar
import qualified Algebra.VectorSpace        as VectorSpace
import qualified Algebra.RealField          as RealField
import qualified Algebra.Field              as Field

-- import NumericPrelude
import PreludeBase



auto :: (RealField.C t, BinSmp.C yv,
         Field.C t', OccScalar.C t t',
         Field.C y', OccScalar.C y y',
         VectorSpace.C y yv) =>
   t' -> y' -> SigP.T t t' y y' yv -> IO ()
auto freqUnit amp sig =
   uncurry Sox.Play.auto (SigP.pureData freqUnit amp sig)