{-# LANGUAGE NoImplicitPrelude #-}
module Synthesizer.Physical.Play where

import qualified Synthesizer.Plain.Play as Play
import qualified Synthesizer.Basic.Binary 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 System.Exit(ExitCode)

-- import NumericPrelude
import PreludeBase



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' -> SigP.T t t' y y' yv -> IO ExitCode
toInt16 freqUnit amp sig =
   uncurry Play.toInt16 (SigP.pureData freqUnit amp sig)