module Synthesizer.Inference.Reader.Play where import qualified Synthesizer.Basic.Binary as BinSmp import qualified Synthesizer.Inference.Reader.Signal as SigR import qualified Synthesizer.Inference.Reader.Process as ProcR import qualified Synthesizer.Physical.Play as PlayP 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 System.Exit(ExitCode) toInt16 :: (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' -> t' -> ProcR.T t t' (SigR.T y y' yv) -> IO ExitCode toInt16 freqUnit amp sampleRate proc = PlayP.toInt16 freqUnit amp (SigR.run sampleRate proc)