packages feed

synthesizer-0.0.3: src/Test/Sound/Synthesizer/Plain/Oscillator.hs

module Test.Sound.Synthesizer.Plain.Oscillator (tests) where

import qualified Synthesizer.Plain.Oscillator as Osci
import qualified Synthesizer.Basic.Wave       as Wave
-- import qualified Synthesizer.Plain.Interpolation as Interpolation

import qualified Test.Sound.Synthesizer.Plain.Wave          as WaveTest
-- import qualified Test.Sound.Synthesizer.Plain.Interpolation as InterpolationTest

import Test.QuickCheck (test, {- Property, (==>), -} )
-- import Test.Utility

-- import qualified Number.NonNegative       as NonNeg

-- import qualified Algebra.RealTranscendental    as RealTrans
-- import qualified Algebra.Module                as Module
import qualified Algebra.RealField             as RealField
-- import qualified Algebra.Field                 as Field
-- import qualified Algebra.Ring                  as Ring
import qualified Algebra.Additive              as Additive


import NumericPrelude
import PreludeBase
import Prelude ()



phaseShapeMod :: (RealField.C a, Eq b) => (Wave.T a b) -> a -> [a] -> Bool
phaseShapeMod wave freq phases =
   Osci.phaseMod wave freq phases ==
   Osci.shapeMod (Wave.phaseOffset wave) zero freq phases

phaseShapeModRational ::
   WaveTest.Ring Rational -> Integer -> Integer -> [Integer] -> Bool
phaseShapeModRational w denom0 freq0 phases0 =
   let denom  = 1 + abs denom0
       freq   = freq0 % denom
       phases = map (% denom) phases0
   in  phaseShapeMod (WaveTest.ringWave w) freq phases



tests :: [(String, IO ())]
tests =
   ("phaseShapeModRational",  test phaseShapeModRational) :
   []