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

import qualified Sox.File
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 System.Exit(ExitCode)

-- import NumericPrelude
import PreludeBase



write :: (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' -> FilePath -> SigP.T t t' y y' yv -> IO ExitCode
write freqUnit amp name sig =
   uncurry (Sox.File.write name) (SigP.pureData freqUnit amp sig)