module Synthesizer.Dimensional.Amplitude where import qualified Number.DimensionTerm as DN import qualified Algebra.DimensionTerm as Dim {- | Can be used as amplitude value in 'Synthesizer.Dimensional.Causal.Process.T' or in 'Synthesizer.Dimensional.Abstraction.HomogeneousGen', whenever the signal has no amplitude. It would be a bad idea to omit the @Flat@ parameter in 'Synthesizer.Dimensional.Causal.Process.applyFlat' routine, since 'Synthesizer.Dimensional.Causal.Process.apply' can still be used but the correspondence between amplitude type and sample type is lost. -} data Flat = Flat {- | This class is used to make 'Synthesizer.Dimensional.Causal.Process.mapAmplitude' both flexible and a bit safe. Its instances are dimensional numbers 'DN.T' and 'Flat'. It should not be necessary to add more instances. -} class C amp where instance C Flat where instance Dim.C v => C (DN.T v y) where