-- | -- Module : DobutokO.Sound.Effects.Classes.FstParamSet -- Copyright : (c) OleksandrZhabenko 2020 -- License : MIT -- Stability : Experimental -- Maintainer : olexandr543@yahoo.com -- -- Helps to create experimental music. -- Can be used for applying the SoX effects. -- {-# OPTIONS_GHC -threaded #-} {-# LANGUAGE FlexibleInstances, MultiParamTypeClasses #-} module DobutokO.Sound.Effects.Classes.FstParamSet where -- inspired with: https://wiki.haskell.org/Scoped_type_variables import GHC.Base (asTypeOf) import DobutokO.Sound.Effects.BassTreble import DobutokO.Sound.Effects.Bend import DobutokO.Sound.Effects.Biquad import DobutokO.Sound.Effects.Channels import DobutokO.Sound.Effects.Chorus import DobutokO.Sound.Effects.Contrast import DobutokO.Sound.Effects.DCShift import DobutokO.Sound.Effects.Delay import DobutokO.Sound.Effects.Dither import DobutokO.Sound.Effects.Downsample import DobutokO.Sound.Effects.Echo import DobutokO.Sound.Effects.Fade import DobutokO.Sound.Effects.FIR import DobutokO.Sound.Effects.Flanger import DobutokO.Sound.Effects.Gain import DobutokO.Sound.Effects.Hilbert import DobutokO.Sound.Effects.LADSPA import DobutokO.Sound.Effects.Loudness import DobutokO.Sound.Effects.MCompand import DobutokO.Sound.Effects.Misc import DobutokO.Sound.Effects.Noise import DobutokO.Sound.Effects.Overdrive import DobutokO.Sound.Effects.Pad import DobutokO.Sound.Effects.PassReject import DobutokO.Sound.Effects.Phaser import DobutokO.Sound.Effects.Pitch import DobutokO.Sound.Effects.Rate import DobutokO.Sound.Effects.Remix import DobutokO.Sound.Effects.Repeat import DobutokO.Sound.Effects.Reverb import DobutokO.Sound.Effects.Segment import DobutokO.Sound.Effects.Silence import DobutokO.Sound.Effects.Sinc import DobutokO.Sound.Effects.Specs import DobutokO.Sound.Effects.Spectrogram import DobutokO.Sound.Effects.Speed import DobutokO.Sound.Effects.Splice import DobutokO.Sound.Effects.Stat import DobutokO.Sound.Effects.Stats import DobutokO.Sound.Effects.Stretch import DobutokO.Sound.Effects.Tempo import DobutokO.Sound.Effects.Timespec import DobutokO.Sound.Effects.Tremolo import DobutokO.Sound.Effects.Trim import DobutokO.Sound.Effects.Upsample import DobutokO.Sound.Effects.Vad import DobutokO.Sound.Effects.Vol import DobutokO.Sound.One class FstParamSet a b where set1 :: a -> b set1G :: a -> b -> b set1G x = asTypeOf (set1 x) class FstParamSet3 a b where set13 :: a -> b -> b class FstParamSetL a b where set1L :: [a] -> b set1GL :: [a] -> b -> b set1GL xs = asTypeOf (set1L xs) class FstParamSetL3 a b where set13L :: [a] -> b -> b class FstParamSet3O a b where set1o :: (One2 a) -> b -> b instance FstParamSet3 a (FreqWidthS a b) where set13 = freqWidthSSet1 instance FstParamSet3 a (Bass a b) where set13 = bassSet1 instance FstParamSet3 a (Treble a b) where set13 = trebleSet1 instance FstParamSet3 a (BendTrio a b) where set13 = bendTrioSet1 instance FstParamSet a (FrameRate a) where set1 = frameRateSet1 instance FstParamSet a (OverSample a) where set1 = overSampleSet1 instance FstParamSet3 a (Bend a b c) where set13 = bendSet1 instance FstParamSet3 a (Coeffs a) where set13 = coeffsSet1 instance FstParamSet3 (Coeffs a) (Biquad a) where set13 = biquadSet1 instance FstParamSet a (Chans a) where set1 = channelsSet1 instance FstParamSet3 a (ChorusTail a b) where set13 = chorusTailSet1 1 instance FstParamSet3 a (Chorus a b) where set13 = chorusSet1 1 instance FstParamSet3 a (Contrast a) where set13 = contrastSet1 instance FstParamSet3 a (DCShift a b) where set13 = dcShiftSet1 instance FstParamSetL TSpecification Dlay where set1L = delaySet1 instance FstParamSet a (Filter a) where set1 = filterSet1 instance FstParamSet Float Precision where set1 = precisionSet1 instance FstParamSet3 a (Dither a b c) where set13 = ditherSet1 instance FstParamSet a (Downsample a) where set1 = downSampleSet1 instance FstParamSet3 a (EchoTail a) where set13 = echoTailSet1 1 instance FstParamSet3 a (Echo a b) where set13 = echoSet1 1 instance FstParamSet3 a (Echos a b) where set13 = echosSet1 1 instance FstParamSet3 a (Fade2 a b) where set13 = fadeSet1 instance FstParamSet3 String Fade where set13 = fadeSet2E 1 instance FstParamSet a (Fir a b) where set1 = firSet1 instance FstParamSetL3 a (Flanger a b) where set13L = flangerSet1 instance FstParamSet3 a (Gain1 a b c d) where set13 = gainSet1 instance FstParamSet a (Hilbert a) where set1 = HI instance FstParamSet3 a (Ladspa1 a b c) where set13 = ladspaSet1 instance FstParamSet3 a (Loudness a) where set13 = loudnessSet1 instance FstParamSet a (FloatE a) where set1 = floatESet1 instance FstParamSet3O a (CompandTail a b) where set1o = compandTailSet1 instance FstParamSet3 a (Pair a) where set13 = pairSet1 instance FstParamSet3 a (AtDe a) where set13 = atDeSet1 instance FstParamSet a (Neg a) where set1 = NG instance FstParamSet a (SoftKnee a) where set1 = SK instance FstParamSet3 a (Compand a b c d) where set13 = compandSet1 instance FstParamSet3 a (FreqComp a b) where set13 = freqCompSet1 instance FstParamSet3 a (MCompand a b) where set13 = mCompandSet1 instance FstParamSetL a (MscS a) where set1L = mscSSet1 instance FstParamSet a (Noiseprof a) where set1 = noiseprofSet1 instance FstParamSet3 a (Noisered a b) where set13 = noiseredSet1 instance FstParamSet3 a (Overdrive a) where set13 = overdriveSet1 instance FstParamSet3 a (PadSpec a) where set13 = padSpecSet1 instance FstParamSet3O a (Pad a b) where set1o = padSet1 instance FstParamSet3 a (FreqWidth a b) where set13 = freqWidthSet1 instance FstParamSet3 a (Freq a) where set13 = freqSet1 instance FstParamSet3 a (AllPass a) where set13 = allPassSet1 instance FstParamSet3 a (BandReject a) where set13 = bandRejectSet1 instance FstParamSet3 a (BandPass a b) where set13 = bandPassSet1 instance FstParamSet3 a (Band a b) where set13 = bandSet1 instance FstParamSet3 a (HighPass a b) where set13 = highPassSet1 instance FstParamSet3 a (LowPass a b) where set13 = lowPassSet1 instance FstParamSet3 a (Equalizer a b) where set13 = equalizerSet1 instance FstParamSet3 a (Phaser a b) where set13 = phaserSet1 1 instance FstParamSet3 a (Pitch a b c) where set13 = pitchSet1 instance FstParamSet a (Ropt4 a) where set1 = rOpt4Set1 instance FstParamSet a (Ropt5 a) where set1 = rOpt5Set1 instance FstParamSet3 a (RateL a b) where set13 = rateLSet1 instance FstParamSet3 a (RateH a b1 b2 b3 b4 b5 c) where set13 = rateHSet1 instance FstParamSet RateLow Rate where set1 = rate2Set1 instance FstParamSet3 Float (Vol3 Float) where set13 = vol3Set1 instance FstParamSet3 a (IChannel a b) where set13 = ichannelSet1 instance FstParamSetL3 a (OChannel a) where set13L = ochannelSet1 instance FstParamSet3 MixSpec ReMix where set13 = remixSet1 instance FstParamSet a (Repeat a) where set1 = Rpt instance FstParamSet3 a (Reverb a b c d) where set13 = reverbSet1 instance FstParamSet3 Float ReverbE where set13 = reverbSet3E 1 instance FstParamSet3 a (Segment a) where set13 = segmentSet1 instance FstParamSet3 a (Threshold a) where set13 = thresholdSet1 instance FstParamSet3 a (Duration a b) where set13 = durationSet1d instance FstParamSet3 a (AboveTSpec1 a b c) where set13 = aboveTSpecSet1a instance FstParamSet3 a (BelowTSpec1 a b c) where set13 = belowTSpecSet1b instance FstParamSet3 a (Silence a b c) where set13 = silenceSet1 instance FstParamSet a (PhaseR a) where set1 = phaseRSet1 instance FstParamSet a (FreqL a) where set1 = freqLSet1 instance FstParamSet a (FreqH a) where set1 = freqHSet1 instance FstParamSet3 a (Sinc a b c d) where set13 = sincSet1 instance FstParamSet3 Float Freq1 where set13 = frequencySet1 instance FstParamSet3 a (Width a) where set13 = widthSet1 instance FstParamSet3 a (SFloat1 a) where set13 = sFloat1Set1 instance FstParamSet3 a (SString1 a) where set13 = sString1Set1 instance FstParamSet a (Advanced1 a) where set1 = advanced1Set1 instance FstParamSet Float FirstDTSpec where set1 = seconds2FstDTSpec2 instance FstParamSet Int FirstDTSpec where set1 = samples2FstDTSpec2 instance FstParamSetL3 a (Spectrogram3 a b c d e) where set13L = spectrogramSet31 instance FstParamSet3 a (Speed a b) where set13 = speedSet1 instance FstParamSet3 a (Splice2 a b) where set13 = splice2Set1 instance FstParamSet a (StatP a) where set1 = statPSet1 instance FstParamSetL a (Stat1 a) where set1L = stat1Set1 instance FstParamSet3 a (StatsP a) where set13 = statsPSet1 instance FstParamSet a (Window1 a) where set1 = window1Set1 instance FstParamSetL3 a (Stats2 a b) where set13L = stats2Set1 instance FstParamSet3 a (StretchP a) where set13 = stretchSet1 instance FstParamSet3 a (Stretch2 a b) where set13 = stretch2Set1 instance FstParamSet3 a (Tempo a b c d) where set13 = tempoSet1 instance FstParamSet3 a (TimeSpec a b) where set13 = timeSpecSet1 instance FstParamSet3 a (Tremolo a) where set13 = tremoloSet1 instance FstParamSet a (Trim a) where set1 = trimSet1 instance FstParamSet a (Upsample a) where set1 = upSampleSet1 instance FstParamSet3 a (VadP a) where set13 = vadPSet1 instance FstParamSetL3 a (Vad1 a) where set13L = vad1Set1 instance FstParamSet3 a (Vol2 a b) where set13 = volSet1 instance FstParamSet3 a (One2 a) where set13 = one2Set1 instance FstParamSet3 a (One3 a) where set13 = one3Set1 ------------------------------------------------------------------------------------------