{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
-- | Patches
--
-- Collection of beautiful timbres. To try the instrument with midi device just type in the interpreter:
--
-- > > dac $ atMidi hammondOrgan
-- If you don't have the real device, you can try the virtual midi:
--
-- > > vdac $ atMidi vibraphone1
--
-- The function @atMidi@ invokes a @Patch@ with midi.
module Csound.Patch(

  -- * Electric piano
  Epiano1(..), epiano1, epiano1',
  MutedPiano(..), mutedPiano, mutedPiano',
  amPiano, fmPiano,
  epiano2, epianoHeavy, epianoBright,
  vibraphonePiano1, vibraphonePiano2,
  addHammer,

  -- * Organ
  cathedralOrgan, toneWheelOrgan,
  HammondOrgan(..), hammondOrgan, hammondOrgan',
  sawOrgan, triOrgan, sqrOrgan, pwOrgan, waveOrgan,

  hammondOrganm, hammondOrganm', sawOrganm, triOrganm, sqrOrganm, pwOrganm, waveOrganm,

  -- * Accordeon
  accordeon, accordeonBright1, accordeonBright2, brokenAccordeon, accordeonHeavy,
  accordeon', Accordeon(..),

  -- * Choir
  choirA, choirO, choirU, choirE,
  Choir(..), choirA', choirO', choirU', choirE',

  windSings, noisyChoir, longNoisyChoir, noisyChoir', longNoisyChoir', NoisyChoir(..),
  noisyRise, noisySpiral, noisySpiral',

  -- * Pad
  pwPad, triPad, nightPad, overtonePad, caveOvertonePad,
  chorusel, pwEnsemble, fmDroneSlow, fmDroneMedium, fmDroneFast, vibrophonePad,
  RazorPad(..), razorPadSlow, razorPadFast, razorPadTremolo, razorPad, razorPad',
  dreamPad, underwaterPad, lightIsTooBrightPad, whaleSongPad, dreamPadBy,
  dreamPad', underwaterPad', lightIsTooBrightPad', whaleSongPad',

  -- ** Pad Monosynth
  pwPadm, triPadm, nightPadm, overtonePadm, caveOvertonePadm, choruselm,
  pwEnsemblem, fmDroneSlowm, fmDroneMediumm, fmDroneFastm,
  razorPadSlowm, razorPadFastm, razorPadTremolom, razorPadm, razorPadm',
  dreamPadm, dreamPadBym, underwaterPadm, lightIsTooBrightPadm, whaleSongPadm, dreamPadm', underwaterPadm', dreamPadBym',
  lightIsTooBrightPadm', whaleSongPadm',

  -- * Lead
  polySynth,
  phasingLead, RazorLead(..), razorLeadSlow, razorLeadFast, razorLeadTremolo,
  razorLead, razorLead',
  overtoneLead,

  -- ** Lead Monosynth
  polySynthm, dafunkLead,

  -- * Bass
  simpleBass, pwBass, deepBass, withDeepBass,
  fmBass1, fmBass2,

  -- * Bowed
  celloSynt,

  -- * Plucked
  guitar, harpsichord,

  -- * Strikeh

  smallDahina, dahina, largeDahina, magicDahina,
  smallBanyan,banyan, largeBanyan, magicBanyan,
  smallXylophone, xylophone, largeXylophone, magicXylophone,
  smallTibetanBowl180, tibetanBowl180, largeTibetanBowl180, magicTibetanBowl180,
  smallSpinelSphere, spinelSphere, largeSpinelSphere, magicSpinelSphere,
  smallPotLid, potLid, largePotLid, magicPotLid,
  smallRedCedarWoodPlate, redCedarWoodPlate, largeRedCedarWoodPlate, magicRedCedarWoodPlate,
  smallTubularBell, tubularBell, largeTubularBell, magicTubularBell,
  smallRedwoodPlate, redwoodPlate, largeRedwoodPlate, magicRedwoodPlate, smallDouglasFirWoodPlate,
  douglasFirWoodPlate, largeDouglasFirWoodPlate, magicDouglasFirWoodPlate, smallUniformWoodenBar,
  uniformWoodenBar, largeUniformWoodenBar, magicUniformWoodenBar, smallUniformAluminumBar,
  uniformAluminumBar, largeUniformAluminumBar, magicUniformAluminumBar,
  smallVibraphone1, vibraphone1, largeVibraphone1, magicVibraphone1,
  smallVibraphone2, vibraphone2, largeVibraphone2, magicVibraphone2,
  smallChalandiPlates, chalandiPlates, largeChalandiPlates, magicChalandiPlates,
  smallTibetanBowl152, tibetanBowl152, largeTibetanBowl152, magicTibetanBowl152,
  smallTibetanBowl140, tibetanBowl140, largeTibetanBowl140, magicTibetanBowl140,
  smallWineGlass, wineGlass, largeWineGlass, magicWineGlass,
  smallHandbell, handbell, largeHandbell, magicHandbell,
  smallAlbertClockBellBelfast, albertClockBellBelfast, largeAlbertClockBellBelfast, magicAlbertClockBellBelfast,
  smallWoodBlock, woodBlock, largeWoodBlock, magicWoodBlock,

  -- * Scrape
  scrapeDahina, scrapeBanyan, scrapeXylophone, scrapeTibetanBowl180, scrapeSpinelSphere, scrapePotLid, scrapeRedCedarWoodPlate,
  scrapeTubularBell, scrapeRedwoodPlate, scrapeDouglasFirWoodPlate, scrapeUniformWoodenBar, scrapeUniformAluminumBar,
  scrapeVibraphone1, scrapeVibraphone2, scrapeChalandiPlates, scrapeTibetanBowl152, scrapeTibetanBowl140, scrapeWineGlass,
  scrapeSmallHandbell, scrapeAlbertClockBellBelfast, scrapeWoodBlock,

  scrapeFastDahina, scrapeFastBanyan, scrapeFastXylophone, scrapeFastTibetanBowl180, scrapeFastSpinelSphere, scrapeFastPotLid,
  scrapeFastRedCedarWoodPlate, scrapeFastTubularBell, scrapeFastRedwoodPlate, scrapeFastDouglasFirWoodPlate, scrapeFastUniformWoodenBar,
  scrapeFastUniformAluminumBar, scrapeFastVibraphone1, scrapeFastVibraphone2, scrapeFastChalandiPlates, scrapeFastTibetanBowl152,
  scrapeFastTibetanBowl140, scrapeFastWineGlass, scrapeFastSmallHandbell, scrapeFastAlbertClockBellBelfast, scrapeFastWoodBlock,

  scrapePadDahina, scrapePadBanyan, scrapePadXylophone, scrapePadTibetanBowl180, scrapePadSpinelSphere, scrapePadPotLid,
  scrapePadRedCedarWoodPlate, scrapePadTubularBell, scrapePadRedwoodPlate, scrapePadDouglasFirWoodPlate, scrapePadUniformWoodenBar,
  scrapePadUniformAluminumBar, scrapePadVibraphone1, scrapePadVibraphone2, scrapePadChalandiPlates, scrapePadTibetanBowl152,
  scrapePadTibetanBowl140, scrapePadWineGlass, scrapePadSmallHandbell, scrapePadAlbertClockBellBelfast, scrapePadWoodBlock,


  -- ** Scrape monosynth
  -- | Unfortunately they don't work with @atMonoMidi@. Though @atNote@ works fine.
  scrapeDahinam, scrapeBanyanm, scrapeXylophonem, scrapeTibetanBowl180m, scrapeSpinelSpherem, scrapePotLidm, scrapeRedCedarWoodPlatem,
  scrapeTubularBellm, scrapeRedwoodPlatem, scrapeDouglasFirWoodPlatem, scrapeUniformWoodenBarm, scrapeUniformAluminumBarm,
  scrapeVibraphone1m, scrapeVibraphone2m, scrapeChalandiPlatesm, scrapeTibetanBowl152m, scrapeTibetanBowl140m, scrapeWineGlassm,
  scrapeSmallHandbellm, scrapeAlbertClockBellBelfastm, scrapeWoodBlockm,

  scrapePadDahinam, scrapePadBanyanm, scrapePadXylophonem, scrapePadTibetanBowl180m, scrapePadSpinelSpherem, scrapePadPotLidm,
  scrapePadRedCedarWoodPlatem, scrapePadTubularBellm, scrapePadRedwoodPlatem, scrapePadDouglasFirWoodPlatem, scrapePadUniformWoodenBarm,
  scrapePadUniformAluminumBarm, scrapePadVibraphone1m, scrapePadVibraphone2m, scrapePadChalandiPlatesm, scrapePadTibetanBowl152m,
  scrapePadTibetanBowl140m, scrapePadWineGlassm, scrapePadSmallHandbellm, scrapePadAlbertClockBellBelfastm, scrapePadWoodBlockm,

  -- * Woodwind

  Wind(..), woodWind',

  fluteSpec, shortFluteSpec,
  flute, shortFlute, fluteVibrato, mutedFlute, brightFlute,

  bassClarinetSpec, shortBassClarinetSpec,
  bassClarinet, shortBassClarinet, bassClarinetVibrato, mutedBassClarinet, brightBassClarinet,

  frenchHornSpec, shortFrenchHornSpec,
  frenchHorn, shortFrenchHorn, frenchHornVibrato, mutedFrenchHorn, brightFrenchHorn,

  shengSpec, shortShengSpec,
  sheng, shortSheng, shengVibrato, mutedSheng, brightSheng,

  hulusiSpec, shortHulusiSpec,
  hulusi, shortHulusi, hulusiVibrato, mutedHulusi, brightHulusi,

  diziSpec, shortDiziSpec,
  dizi, shortDizi, diziVibrato, mutedDizi, brightDizi,

  -- * SHARC instruments
  SharcInstr,
  soloSharc, orcSharc, padSharc, purePadSharc,
  dreamSharc, lightIsTooBrightSharc, whaleSongSharc,
  sharcOrgan,

  -- ** Padsynth instruments
  PadSharcSpec(..),

  psOrganSharc, psOrganSharc', psLargeOrganSharc, psLargeOrganSharc', psPianoSharc, psPianoSharc',
  xpsPianoSharc, xpsPianoSharc',
  psPadSharc, psPadSharc', psSoftPadSharc, psSoftPadSharc',
  psMagicPadSharc, psMagicPadSharc', psMagicSoftPadSharc, psMagicSoftPadSharc',
  psLargePianoSharc, psLargePianoSharc',
  xpsLargePianoSharc,
  xpsLargePianoSharc',

  -- *** Deep pads
  psDeepPadSharc, psDeepPadSharc', psDeepSoftPadSharc, psDeepSoftPadSharc',
  psDeepMagicPadSharc, psDeepMagicPadSharc', psDeepMagicSoftPadSharc, psDeepMagicSoftPadSharc',

  --- *** Crossfades
  psPadSharcCfd, psPadSharcCfd', psPadSharcCfd4, psPadSharcCfd4', psDeepPadSharcCfd, psDeepPadSharcCfd',
  psDeepPadSharcCfd4, psDeepPadSharcCfd4', psSoftPadSharcCfd, psSoftPadSharcCfd', psSoftPadSharcCfd4, psSoftPadSharcCfd4',
  psDeepSoftPadSharcCfd, psDeepSoftPadSharcCfd', psDeepSoftPadSharcCfd4, psDeepSoftPadSharcCfd4',

  -- *** High resolution Padsynth instruments
  psOrganSharcHifi,
  psLargeOrganSharcHifi,
  psPianoSharcHifi,
  xpsPianoSharcHifi,
  psPadSharcHifi,
  psSoftPadSharcHifi,
  psMagicPadSharcHifi,
  psMagicSoftPadSharcHifi,
  psLargePianoSharcHifi,
  xpsLargePianoSharcHifi,

  -- *** Vedic pads
  -- | Deep spiritual pads.
  vedicPad, vedicPadCfd, vedicPadCfd4, vibhu, rishi, agni, prakriti, rajas, avatara, bhumi,

  --- *** High resolution vedic pads
  -- | Deep spiritual pads.
  vedicPadHifi, vibhuHifi, rishiHifi, agniHifi, prakritiHifi, rajasHifi, avataraHifi, bhumiHifi,

  --- *** Low resolution vedic pads
  -- | Deep spiritual pads.
  vedicPadLofi, vibhuLofi, rishiLofi, agniLofi, prakritiLofi, rajasLofi, avataraLofi, bhumiLofi,

  --- *** Crossfade vedic pads
  -- | Crossfade between deep spiritual pads. All pads take in padsynthBandwidth and crossfade level as parameters.
  vibhuRishi, vibhuAgni, vibhuPrakriti, vibhuRajas, vibhuAvatara, vibhuBhumi, rishiAgni, rishiPrakriti,
  rishiRajas, rishiAvatara, rishiBhumi, agniPrakriti, agniRajas, agniAvatara, agniBhumi, prakritiRajas,
  prakritiAvatara, prakritiBhumi, rajasAvatara, rajasBhumi, avataraBhumi,

  -- ** concrete instruments
  shViolin, shViolinPizzicato, shViolinMuted, shViolinMarteleBowing, shViolinsEnsemble, shViola, shViolaPizzicato, shViolaMuted,
    shViolaMarteleBowing, shTuba, shTromboneMuted, shTrombone, shPiccolo, shOboe, shFrenchHornMuted, shFrenchHorn, shFlute,
    shEnglishHorn, shClarinetEflat, shTrumpetMutedC, shTrumpetC, shContrabassClarinet, shContrabassoon, shCello, shCelloPizzicato,
    shCelloMuted, shCelloMarteleBowing, shContrabassPizzicato, shContrabassMuted, shContrabassMarteleBowing, shContrabass,
    shClarinet, shBassTrombone, shBassClarinet, shBassoon, shBassFlute, shTrumpetBach, shAltoTrombone, shAltoFlute,

  -- * X-rays
  pulseWidth, xanadu, alienIsAngry, noiz, blue, black, simpleMarimba, impulseMarimba1, impulseMarimba2, okComputer, noiseBell,

  -- * Robotic vowels
  robotVowels, robotLoopVowels, robotVowel,

   -- ** Vowels
    maleA, maleE, maleIY, maleO, maleOO, maleU, maleER, maleUH,
    femaleA, femaleE, femaleIY, femaleO, femaleOO,

  -- * Nature
  windWall, mildWind, wind, snowCrackle,

  -- * Misc
  limRel,
  singleFx, singleFx'
) where

import Prelude hiding (filter)

import Csound.Base hiding (ampCps, br, seed, filt, detune, mute)
import qualified Csound.Base as C(br, filt)

import qualified Csound.Catalog.Wave as C
import qualified Csound.Catalog.Reson as C

import Csound.Catalog.Wave(maleA, maleE, maleIY, maleO, maleOO, maleU, maleER, maleUH,
    femaleA, femaleE, femaleIY, femaleO, femaleOO)

import Csound.Catalog.Wave(Accordeon(..),
  ReleaseTime,
  SharcInstr,
  PadSharcSpec(..),
  shViolin, shViolinPizzicato, shViolinMuted, shViolinMarteleBowing, shViolinsEnsemble, shViola, shViolaPizzicato, shViolaMuted,
    shViolaMarteleBowing, shTuba, shTromboneMuted, shTrombone, shPiccolo, shOboe, shFrenchHornMuted, shFrenchHorn, shFlute,
    shEnglishHorn, shClarinetEflat, shTrumpetMutedC, shTrumpetC, shContrabassClarinet, shContrabassoon, shCello, shCelloPizzicato,
    shCelloMuted, shCelloMarteleBowing, shContrabassPizzicato, shContrabassMuted, shContrabassMarteleBowing, shContrabass,
    shClarinet, shBassTrombone, shBassClarinet, shBassoon, shBassFlute, shTrumpetBach, shAltoTrombone, shAltoFlute)


monoArgToNote :: MonoArg -> (Sig, Sig)
monoArgToNote :: MonoArg -> (DryWetRatio, DryWetRatio)
monoArgToNote MonoArg
arg = (MonoArg -> DryWetRatio
monoAmp MonoArg
arg DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* MonoArg -> DryWetRatio
monoGate MonoArg
arg, MonoArg -> DryWetRatio
monoCps MonoArg
arg)

monoSig1 :: SigSpace a => (Sig -> a) -> (MonoArg -> a)
monoSig1 :: forall a. SigSpace a => (DryWetRatio -> a) -> MonoArg -> a
monoSig1 DryWetRatio -> a
f MonoArg
arg = DryWetRatio -> a -> a
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
env (a -> a) -> a -> a
forall a b. (a -> b) -> a -> b
$ DryWetRatio -> a
f DryWetRatio
cps
  where
    env :: DryWetRatio
env = DryWetRatio
amp DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* MonoArg -> MonoAdsr
monoAdsr MonoArg
arg DryWetRatio
0.35 DryWetRatio
0.5 DryWetRatio
1 DryWetRatio
0.5
    amp :: DryWetRatio
amp = DryWetRatio -> D -> DryWetRatio
port (MonoArg -> DryWetRatio
monoAmp MonoArg
arg) D
0.01
    cps :: DryWetRatio
cps = DryWetRatio -> DryWetRatio -> DryWetRatio
portk (MonoArg -> DryWetRatio
monoCps MonoArg
arg) (DryWetRatio -> DryWetRatio
delay1 DryWetRatio
gate DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio
0.01)
    gate :: DryWetRatio
gate = MonoArg -> DryWetRatio
monoGate MonoArg
arg

fx1 :: Sig -> (a -> a) -> Patch a -> Patch a
fx1 :: forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
dw a -> a
f = [GenFxSpec a] -> Patch a -> Patch a
forall a. [GenFxSpec a] -> Patch a -> Patch a
FxChain [DryWetRatio -> Fx a -> GenFxSpec a
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
dw (Fx a
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return Fx a -> (a -> a) -> Fx a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> a
f)]

fx1' :: Sig -> (a -> SE a) -> Patch a -> Patch a
fx1' :: forall a. DryWetRatio -> (a -> SE a) -> Patch a -> Patch a
fx1' DryWetRatio
dw a -> SE a
f = [GenFxSpec a] -> Patch a -> Patch a
forall a. [GenFxSpec a] -> Patch a -> Patch a
FxChain [DryWetRatio -> (a -> SE a) -> GenFxSpec a
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
dw a -> SE a
f]

-- | Creates a simple FX-xhain, that contains a single pure effect.
-- The first argument is the dry/wet-value.
singleFx :: Sig -> (a -> a) -> Patch a -> Patch a
singleFx :: forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
singleFx = DryWetRatio -> (a -> a) -> Patch a -> Patch a
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1

singleFxFilter :: Sig -> (ResonFilter -> a -> a) -> Patch a -> Patch a
singleFxFilter :: forall a.
DryWetRatio -> (ResonFilter -> a -> a) -> Patch a -> Patch a
singleFxFilter DryWetRatio
dw ResonFilter -> a -> a
f = [GenFxSpec a] -> Patch a -> Patch a
forall a. [GenFxSpec a] -> Patch a -> Patch a
FxChain [DryWetRatio -> (ResonFilter -> Fx a) -> GenFxSpec a
forall a. DryWetRatio -> (ResonFilter -> Fx a) -> GenFxSpec a
fxSpecFilter DryWetRatio
dw (\ResonFilter
filter a
x -> Fx a
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return Fx a -> Fx a
forall a b. (a -> b) -> a -> b
$ ResonFilter -> a -> a
f ResonFilter
filter a
x)]

-- | Creates a simple FX-xhain, that contains a single effect.
-- The first argument is the dry/wet-value.
singleFx' :: Sig -> (a -> SE a) -> Patch a -> Patch a
singleFx' :: forall a. DryWetRatio -> (a -> SE a) -> Patch a -> Patch a
singleFx' = DryWetRatio -> (a -> SE a) -> Patch a -> Patch a
forall a. DryWetRatio -> (a -> SE a) -> Patch a -> Patch a
fx1'

-- | Limits the release section of the note.
limRel :: SigSpace a => D -> Patch a -> Patch a
limRel :: forall a. SigSpace a => D -> Patch a -> Patch a
limRel D
rel Patch a
p =  (Instr D a -> Instr D a) -> Patch a -> Patch a
forall a. (Instr D a -> Instr D a) -> Patch a -> Patch a
mapPatchInstr (\Instr D a
instr -> (a -> a) -> SE a -> SE a
forall a b. (a -> b) -> SE a -> SE b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (DryWetRatio -> a -> a
forall a. SigSpace a => DryWetRatio -> a -> a
mul (D -> DryWetRatio
fadeOut D
rel)) (SE a -> SE a) -> Instr D a -> Instr D a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Instr D a
instr) Patch a
p

----------------------------------------------
-- electric pianos

data Epiano1 = Epiano1
  { Epiano1 -> D
epiano1Rel :: D }

instance Default Epiano1 where
  def :: Epiano1
def = D -> Epiano1
Epiano1 D
5

epiano1 :: Patch2
epiano1 = Epiano1 -> Patch2
epiano1' Epiano1
forall a. Default a => a
def

epiano1' :: Epiano1 -> Patch2
epiano1' (Epiano1 D
rel) = Patch2 -> Patch2
withLargeHall (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ \CsdNote D
a -> DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.4 (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ D -> Instr D (DryWetRatio, DryWetRatio)
C.simpleFading D
rel CsdNote D
a

data MutedPiano = MutedPiano
  { MutedPiano -> DryWetRatio
mutedPianoMute :: Sig
  , MutedPiano -> D
mutedPianoRel  :: D }

instance Default MutedPiano where
  def :: MutedPiano
def = DryWetRatio -> D -> MutedPiano
MutedPiano DryWetRatio
0.5 D
7

mutedPiano :: Patch2
mutedPiano = MutedPiano -> Patch2
mutedPiano' MutedPiano
forall a. Default a => a
def

mutedPiano' :: MutedPiano -> Patch2
mutedPiano' (MutedPiano DryWetRatio
mute D
rel) = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.25 ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2 ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at (ResonFilter
mlp3 (DryWetRatio
250 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
+ DryWetRatio
7000 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio
mute) DryWetRatio
0.2)) (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$
  Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ \CsdNote D
a -> DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.7 (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ D -> Instr D (DryWetRatio, DryWetRatio)
C.simpleSust D
rel CsdNote D
a

amPiano :: Patch DryWetRatio
amPiano = DryWetRatio
-> (DryWetRatio -> DryWetRatio)
-> Patch DryWetRatio
-> Patch DryWetRatio
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.25 DryWetRatio -> DryWetRatio
forall a. a -> a
id (Patch DryWetRatio -> Patch DryWetRatio)
-> Patch DryWetRatio -> Patch DryWetRatio
forall a b. (a -> b) -> a -> b
$ (ResonFilter -> Instr D DryWetRatio) -> Patch DryWetRatio
forall a. (ResonFilter -> Instr D a) -> Patch a
polySyntFilter ((ResonFilter -> Instr D DryWetRatio) -> Patch DryWetRatio)
-> (ResonFilter -> Instr D DryWetRatio) -> Patch DryWetRatio
forall a b. (a -> b) -> a -> b
$ \ResonFilter
filter -> DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
1.4 (SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (ResonFilter -> DryWetRatio -> SE DryWetRatio
C.amPianoBy ResonFilter
filter)

fmPiano :: Patch2
fmPiano = Patch2 -> Patch2
withSmallHall (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.75 (SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (D -> DryWetRatio -> DryWetRatio -> DryWetRatio
C.fmFlavio D
6 DryWetRatio
3)

epianoReleaseTime :: ReleaseTime
epianoReleaseTime :: D
epianoReleaseTime = D
0.25

epiano2 :: Patch2
epiano2 = DryWetRatio -> Patch2 -> Patch2
addHammer DryWetRatio
0.15 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.25 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$
  (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> Instr D a) -> Patch a
polySyntFilter ((ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ \ResonFilter
filter -> DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
1.125 (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Instr D (DryWetRatio, DryWetRatio)
-> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Instr D DryWetRatio
-> CsdNote D -> SE (CpsInstrOut (Instr D DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (Instr D DryWetRatio
 -> CsdNote D -> SE (CpsInstrOut (Instr D DryWetRatio)))
-> Instr D DryWetRatio
-> CsdNote D
-> SE (CpsInstrOut (Instr D DryWetRatio))
forall a b. (a -> b) -> a -> b
$ ResonFilter -> D -> [EpianoOsc] -> Instr D DryWetRatio
C.epianoBy ResonFilter
filter D
epianoReleaseTime [Int -> DryWetRatio -> DryWetRatio -> DryWetRatio -> EpianoOsc
C.EpianoOsc Int
4 DryWetRatio
5 DryWetRatio
1 DryWetRatio
1, Int -> DryWetRatio -> DryWetRatio -> DryWetRatio -> EpianoOsc
C.EpianoOsc Int
8 DryWetRatio
10 DryWetRatio
2.01 DryWetRatio
1])

epianoHeavy :: Patch2
epianoHeavy = DryWetRatio -> Patch2 -> Patch2
addHammer DryWetRatio
0.15 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.2 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$
  (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> Instr D a) -> Patch a
polySyntFilter ((ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ \ResonFilter
filter -> DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
1.125 (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Instr D (DryWetRatio, DryWetRatio)
-> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Instr D DryWetRatio
-> CsdNote D -> SE (CpsInstrOut (Instr D DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (Instr D DryWetRatio
 -> CsdNote D -> SE (CpsInstrOut (Instr D DryWetRatio)))
-> Instr D DryWetRatio
-> CsdNote D
-> SE (CpsInstrOut (Instr D DryWetRatio))
forall a b. (a -> b) -> a -> b
$ ResonFilter -> D -> [EpianoOsc] -> Instr D DryWetRatio
C.epianoBy ResonFilter
filter D
epianoReleaseTime [Int -> DryWetRatio -> DryWetRatio -> DryWetRatio -> EpianoOsc
C.EpianoOsc Int
4 DryWetRatio
5 DryWetRatio
1 DryWetRatio
1, Int -> DryWetRatio -> DryWetRatio -> DryWetRatio -> EpianoOsc
C.EpianoOsc Int
8 DryWetRatio
10 DryWetRatio
2.01 DryWetRatio
1, Int -> DryWetRatio -> DryWetRatio -> DryWetRatio -> EpianoOsc
C.EpianoOsc Int
8 DryWetRatio
15 DryWetRatio
0.5 DryWetRatio
0.5])

epianoBright :: Patch2
epianoBright = DryWetRatio -> Patch2 -> Patch2
addHammer DryWetRatio
0.15 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.2 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$
  (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> Instr D a) -> Patch a
polySyntFilter ((ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ \ResonFilter
filter -> DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
1.12 (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Instr D (DryWetRatio, DryWetRatio)
-> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Instr D DryWetRatio
-> CsdNote D -> SE (CpsInstrOut (Instr D DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (Instr D DryWetRatio
 -> CsdNote D -> SE (CpsInstrOut (Instr D DryWetRatio)))
-> Instr D DryWetRatio
-> CsdNote D
-> SE (CpsInstrOut (Instr D DryWetRatio))
forall a b. (a -> b) -> a -> b
$ ResonFilter -> D -> [EpianoOsc] -> Instr D DryWetRatio
C.epianoBy ResonFilter
filter D
epianoReleaseTime [Int -> DryWetRatio -> DryWetRatio -> DryWetRatio -> EpianoOsc
C.EpianoOsc Int
4 DryWetRatio
5 DryWetRatio
1 DryWetRatio
1, Int -> DryWetRatio -> DryWetRatio -> DryWetRatio -> EpianoOsc
C.EpianoOsc Int
8 DryWetRatio
10 DryWetRatio
3.01 DryWetRatio
1, Int -> DryWetRatio -> DryWetRatio -> DryWetRatio -> EpianoOsc
C.EpianoOsc Int
8 DryWetRatio
15 DryWetRatio
5 DryWetRatio
0.5, Int -> DryWetRatio -> DryWetRatio -> DryWetRatio -> EpianoOsc
C.EpianoOsc Int
8 DryWetRatio
4 DryWetRatio
7 DryWetRatio
0.3])

vibraphonePiano1 :: Patch2
vibraphonePiano1 = Patch2 -> Patch2
vibraphoneToPiano Patch2
smallVibraphone1
vibraphonePiano2 :: Patch2
vibraphonePiano2 = Patch2 -> Patch2
vibraphoneToPiano Patch2
smallVibraphone2

vibraphoneToPiano :: Patch2 -> Patch2
vibraphoneToPiano Patch2
patch = DryWetRatio -> Patch2 -> Patch2
addHammer DryWetRatio
0.15 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (Instr D (DryWetRatio, DryWetRatio)
 -> Instr D (DryWetRatio, DryWetRatio))
-> Patch2 -> Patch2
forall a. (Instr D a -> Instr D a) -> Patch a -> Patch a
mapPatchInstr (\Instr D (DryWetRatio, DryWetRatio)
instr -> DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
1.5 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> DryWetRatio
fadeOut D
0.25) (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Instr D (DryWetRatio, DryWetRatio)
-> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (SE (DryWetRatio, DryWetRatio))
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at (ResonFilter
mlp DryWetRatio
6500 DryWetRatio
0.1) (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Instr D (DryWetRatio, DryWetRatio)
-> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Instr D (DryWetRatio, DryWetRatio)
instr) Patch2
patch

-- | Adds a hammer strike sound. The first argument is the amount of hammer sound.
addHammer :: Sig -> Patch2 -> Patch2
addHammer :: DryWetRatio -> Patch2 -> Patch2
addHammer DryWetRatio
amt = DryWetRatio -> Patch2 -> Patch2 -> Patch2
forall b.
(SigSpace b, Num b) =>
DryWetRatio -> Patch b -> Patch b -> Patch b
mixInstr DryWetRatio
amt Patch2
impulseMarimba2

----------------------------------------------
-- organs

cathedralOrgan :: Patch2
cathedralOrgan = Patch2 -> Patch2
withLargeHall (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.7 (SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps DryWetRatio -> SE DryWetRatio
C.cathedralOrgan

-- [0, 30]
data HammondOrgan = HammondOrgan
  { HammondOrgan -> DryWetRatio
hammondOrganDetune :: Sig }

instance Default HammondOrgan where
  def :: HammondOrgan
def = DryWetRatio -> HammondOrgan
HammondOrgan DryWetRatio
12

hammondOrgan :: Patch2
hammondOrgan = HammondOrgan -> Patch2
hammondOrgan' HammondOrgan
forall a. Default a => a
def

hammondOrganm :: Patch2
hammondOrganm = HammondOrgan -> Patch2
hammondOrganm' HammondOrgan
forall a. Default a => a
def

hammondOrgan' :: HammondOrgan -> Patch2
hammondOrgan' (HammondOrgan DryWetRatio
detune) = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.15 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallRoom2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.4 (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Instr D (DryWetRatio, DryWetRatio)
-> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (DryWetRatio -> DryWetRatio -> SE DryWetRatio
C.hammondOrgan DryWetRatio
detune)

hammondOrganm' :: HammondOrgan -> Patch2
hammondOrganm' (HammondOrgan DryWetRatio
detune) = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.15 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallRoom2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ MonoInstr (DryWetRatio, DryWetRatio) -> Patch2
forall a. MonoInstr a -> Patch a
monoSynt (MonoInstr (DryWetRatio, DryWetRatio) -> Patch2)
-> MonoInstr (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.4 (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> MonoInstr (DryWetRatio, DryWetRatio)
-> MonoInstr (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> (MonoArg -> SE DryWetRatio)
-> MonoInstr (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio) -> MonoArg -> SE DryWetRatio
forall a. SigSpace a => (DryWetRatio -> a) -> MonoArg -> a
monoSig1 (DryWetRatio -> DryWetRatio -> SE DryWetRatio
C.hammondOrgan DryWetRatio
detune)

toneWheelOrgan :: Patch2
toneWheelOrgan = Patch2 -> Patch2
withSmallHall (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono  (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
0.6 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> DryWetRatio
fadeOut D
0.05) (SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (D -> DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (D -> DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps D -> DryWetRatio
C.toneWheel

sawOrgan :: Patch2
sawOrgan  = DryWetRatio -> Patch2 -> Patch2
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.45 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> SE DryWetRatio) -> Patch2
waveOrgan DryWetRatio -> SE DryWetRatio
rndSaw
triOrgan :: Patch2
triOrgan  = DryWetRatio -> Patch2 -> Patch2
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.5  (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> SE DryWetRatio) -> Patch2
waveOrgan DryWetRatio -> SE DryWetRatio
rndTri
sqrOrgan :: Patch2
sqrOrgan  = DryWetRatio -> Patch2 -> Patch2
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.45 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> SE DryWetRatio) -> Patch2
waveOrgan DryWetRatio -> SE DryWetRatio
rndSqr
pwOrgan :: DryWetRatio -> Patch2
pwOrgan DryWetRatio
k = DryWetRatio -> Patch2 -> Patch2
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.45 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> SE DryWetRatio) -> Patch2
waveOrgan (DryWetRatio -> DryWetRatio -> SE DryWetRatio
rndPw DryWetRatio
k)

sawOrganm :: Patch2
sawOrganm  = DryWetRatio -> Patch2 -> Patch2
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.45 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> SE DryWetRatio) -> Patch2
waveOrganm DryWetRatio -> SE DryWetRatio
rndSaw
triOrganm :: Patch2
triOrganm  = DryWetRatio -> Patch2 -> Patch2
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.5  (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> SE DryWetRatio) -> Patch2
waveOrganm DryWetRatio -> SE DryWetRatio
rndTri
sqrOrganm :: Patch2
sqrOrganm  = DryWetRatio -> Patch2 -> Patch2
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.45 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> SE DryWetRatio) -> Patch2
waveOrganm DryWetRatio -> SE DryWetRatio
rndSqr
pwOrganm :: DryWetRatio -> Patch2
pwOrganm DryWetRatio
k = DryWetRatio -> Patch2 -> Patch2
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.45 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> SE DryWetRatio) -> Patch2
waveOrganm (DryWetRatio -> DryWetRatio -> SE DryWetRatio
rndPw DryWetRatio
k)

organFx :: Patch2 -> Patch2
organFx :: Patch2 -> Patch2
organFx = Patch2 -> Patch2
withSmallHall (Patch2 -> Patch2) -> (Patch2 -> Patch2) -> Patch2 -> Patch2
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio
-> (ResonFilter
    -> (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a.
DryWetRatio -> (ResonFilter -> a -> a) -> Patch a -> Patch a
singleFxFilter DryWetRatio
1 (\ResonFilter
filter -> (DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at ((DryWetRatio -> DryWetRatio)
 -> (DryWetRatio, DryWetRatio)
 -> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ ResonFilter
filter DryWetRatio
3500 DryWetRatio
0.1)

waveOrgan :: (Sig -> SE Sig) -> Patch2
waveOrgan :: (DryWetRatio -> SE DryWetRatio) -> Patch2
waveOrgan DryWetRatio -> SE DryWetRatio
wave = Patch2 -> Patch2
organFx (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> CsdNote D
-> SE (CpsInstrOut (DryWetRatio -> SE (DryWetRatio, DryWetRatio)))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps ((DryWetRatio -> SE (DryWetRatio, DryWetRatio))
 -> CsdNote D
 -> SE (CpsInstrOut (DryWetRatio -> SE (DryWetRatio, DryWetRatio))))
-> (DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> CsdNote D
-> SE (CpsInstrOut (DryWetRatio -> SE (DryWetRatio, DryWetRatio)))
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> SE DryWetRatio)
-> DryWetRatio
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (D -> D -> DryWetRatio
fades D
0.01 D
0.01) (SE DryWetRatio -> SE DryWetRatio)
-> (DryWetRatio -> SE DryWetRatio) -> DryWetRatio -> SE DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio
wave

waveOrganm :: (Sig -> SE Sig) -> Patch2
waveOrganm :: (DryWetRatio -> SE DryWetRatio) -> Patch2
waveOrganm DryWetRatio -> SE DryWetRatio
wave = Patch2 -> Patch2
organFx (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ MonoInstr (DryWetRatio, DryWetRatio) -> Patch2
forall a. MonoInstr a -> Patch a
monoSynt (MonoInstr (DryWetRatio, DryWetRatio) -> Patch2)
-> MonoInstr (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> MonoInstr (DryWetRatio, DryWetRatio)
forall a. SigSpace a => (DryWetRatio -> a) -> MonoArg -> a
monoSig1 ((DryWetRatio -> SE (DryWetRatio, DryWetRatio))
 -> MonoInstr (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> MonoInstr (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> SE DryWetRatio)
-> DryWetRatio
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (D -> D -> DryWetRatio
fades D
0.01 D
0.01) (SE DryWetRatio -> SE DryWetRatio)
-> (DryWetRatio -> SE DryWetRatio) -> DryWetRatio -> SE DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio
wave

waveOrganWithKey :: (D -> Sig -> SE Sig) -> Patch2
waveOrganWithKey :: (D -> DryWetRatio -> SE DryWetRatio) -> Patch2
waveOrganWithKey D -> DryWetRatio -> SE DryWetRatio
wave = Patch2 -> Patch2
organFx (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (D -> SE (DryWetRatio, DryWetRatio))
-> CsdNote D
-> SE (CpsInstrOut (D -> SE (DryWetRatio, DryWetRatio)))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps ((D -> SE (DryWetRatio, DryWetRatio))
 -> CsdNote D
 -> SE (CpsInstrOut (D -> SE (DryWetRatio, DryWetRatio))))
-> (D -> SE (DryWetRatio, DryWetRatio))
-> CsdNote D
-> SE (CpsInstrOut (D -> SE (DryWetRatio, DryWetRatio)))
forall a b. (a -> b) -> a -> b
$ \D
cps -> ((DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> SE DryWetRatio)
-> DryWetRatio
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (D -> D -> DryWetRatio
fades D
0.01 D
0.01) (SE DryWetRatio -> SE DryWetRatio)
-> (DryWetRatio -> SE DryWetRatio) -> DryWetRatio -> SE DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> DryWetRatio -> SE DryWetRatio
wave D
cps) (D -> DryWetRatio
sig D
cps)

----------------------------------------------
-- accordeons

accordeon :: Patch2
accordeon = Accordeon -> Patch2
accordeon' Accordeon
forall a. Default a => a
def

accordeonBright1 :: Patch2
accordeonBright1 = Accordeon -> Patch2
accordeon' (DryWetRatio
-> DryWetRatio -> DryWetRatio -> DryWetRatio -> Accordeon
C.Accordeon DryWetRatio
1 DryWetRatio
5 DryWetRatio
3 DryWetRatio
7)
accordeonBright2 :: Patch2
accordeonBright2 = Accordeon -> Patch2
accordeon' (DryWetRatio
-> DryWetRatio -> DryWetRatio -> DryWetRatio -> Accordeon
C.Accordeon DryWetRatio
1 DryWetRatio
6 DryWetRatio
3 DryWetRatio
13)

accordeonHeavy :: Patch2
accordeonHeavy = Accordeon -> Patch2
accordeon' (DryWetRatio
-> DryWetRatio -> DryWetRatio -> DryWetRatio -> Accordeon
C.Accordeon DryWetRatio
1 DryWetRatio
0.501 DryWetRatio
2 DryWetRatio
1.005)
brokenAccordeon :: Patch2
brokenAccordeon = Accordeon -> Patch2
accordeon' (DryWetRatio
-> DryWetRatio -> DryWetRatio -> DryWetRatio -> Accordeon
C.Accordeon DryWetRatio
1 DryWetRatio
1.07 DryWetRatio
2.02 DryWetRatio
0.5)

accordeon' :: Accordeon -> Patch2
accordeon' Accordeon
spec = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> SE a) -> Patch a -> Patch a
fx1' DryWetRatio
0.25 (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
C.accordeonFx (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.63 (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Instr D (DryWetRatio, DryWetRatio)
-> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> CsdNote D
-> SE (CpsInstrOut (DryWetRatio -> SE (DryWetRatio, DryWetRatio)))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (Accordeon -> DryWetRatio -> SE (DryWetRatio, DryWetRatio)
C.accordeon Accordeon
spec)

----------------------------------------------
-- choir

data Choir = Choir { Choir -> DryWetRatio
choirVibr :: Sig }

instance Default Choir where
  def :: Choir
def  = DryWetRatio -> Choir
Choir DryWetRatio
7

tenor' :: (DryWetRatio -> DryWetRatio) -> Choir -> Patch2
tenor'   DryWetRatio -> DryWetRatio
filt (Choir DryWetRatio
vib) = Patch2 -> Patch2
withSmallHall (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.15 (SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps ((DryWetRatio -> DryWetRatio)
-> DryWetRatio -> DryWetRatio -> SE DryWetRatio
C.tenorOsc DryWetRatio -> DryWetRatio
filt DryWetRatio
vib)
soprano' :: (DryWetRatio -> DryWetRatio) -> Choir -> Patch2
soprano' DryWetRatio -> DryWetRatio
filt (Choir DryWetRatio
vib) = Patch2 -> Patch2
withSmallHall (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.15 (SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps ((DryWetRatio -> DryWetRatio)
-> DryWetRatio -> DryWetRatio -> SE DryWetRatio
C.sopranoOsc DryWetRatio -> DryWetRatio
filt DryWetRatio
vib)

choir' :: (DryWetRatio -> DryWetRatio) -> Choir -> Patch2
choir' DryWetRatio -> DryWetRatio
filt Choir
vib = Patch2 -> Patch2
withSmallHall (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Patch2 -> D -> Patch2 -> Patch2
forall a. Patch a -> D -> Patch a -> Patch a
SplitPatch (Patch2 -> Patch2
forall a. Patch a -> Patch a
dryPatch (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> DryWetRatio) -> Choir -> Patch2
tenor' DryWetRatio -> DryWetRatio
filt Choir
vib) D
220 (Patch2 -> Patch2
forall a. Patch a -> Patch a
dryPatch (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> DryWetRatio) -> Choir -> Patch2
soprano' DryWetRatio -> DryWetRatio
filt Choir
vib)

choirA :: Patch2
choirA = Choir -> Patch2
choirA' Choir
forall a. Default a => a
def
choirO :: Patch2
choirO = Choir -> Patch2
choirO' Choir
forall a. Default a => a
def
choirE :: Patch2
choirE = Choir -> Patch2
choirE' Choir
forall a. Default a => a
def
choirU :: Patch2
choirU = Choir -> Patch2
choirU' Choir
forall a. Default a => a
def

choirA' :: Choir -> Patch2
choirA' = (DryWetRatio -> DryWetRatio) -> Choir -> Patch2
choir' DryWetRatio -> DryWetRatio
singA
choirO' :: Choir -> Patch2
choirO' = (DryWetRatio -> DryWetRatio) -> Choir -> Patch2
choir' DryWetRatio -> DryWetRatio
singO
choirE' :: Choir -> Patch2
choirE' = (DryWetRatio -> DryWetRatio) -> Choir -> Patch2
choir' DryWetRatio -> DryWetRatio
singE
choirU' :: Choir -> Patch2
choirU' = (DryWetRatio -> DryWetRatio) -> Choir -> Patch2
choir' DryWetRatio -> DryWetRatio
singU

data NoisyChoir = NoisyChoir
  { NoisyChoir -> Int
noisyChoirFilterNum :: Int
  , NoisyChoir -> DryWetRatio
noisyChoirBw        :: Sig
  }

instance Default NoisyChoir where
  def :: NoisyChoir
def = Int -> DryWetRatio -> NoisyChoir
NoisyChoir Int
2 DryWetRatio
25

windSings :: Patch2
windSings = NoisyChoir -> Patch2
longNoisyChoir' (Int -> DryWetRatio -> NoisyChoir
NoisyChoir Int
1 DryWetRatio
15)

longNoisyChoir :: Patch2
longNoisyChoir = NoisyChoir -> Patch2
longNoisyChoir' NoisyChoir
forall a. Default a => a
def
noisyChoir :: Patch2
noisyChoir = NoisyChoir -> Patch2
noisyChoir' NoisyChoir
forall a. Default a => a
def


dryNoisyChoir :: NoisyChoir -> Patch2
dryNoisyChoir (NoisyChoir Int
n DryWetRatio
bw) = Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.45 (SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (Int -> DryWetRatio -> DryWetRatio -> SE DryWetRatio
C.noisyChoir Int
n DryWetRatio
bw)

longNoisyChoir' :: NoisyChoir -> Patch2
longNoisyChoir' NoisyChoir
ch = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.15 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
magicCave2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ NoisyChoir -> Patch2
dryNoisyChoir NoisyChoir
ch

noisyChoir' :: NoisyChoir -> Patch2
noisyChoir' NoisyChoir
ch = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.15 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ NoisyChoir -> Patch2
dryNoisyChoir NoisyChoir
ch

-- modes (wth delay or not delay)
--
--  dac $ mixAt 0.15 largeHall2 $ mixAt 0.2 (echo 0.25 0.45) $ at fromMono $ midi $ onMsg $ onCps (mul (fadeOut 2) . C.tibetanBowl152    )

----------------------------------------------
-- pads

pwPad :: Patch2
pwPad  = Patch2 -> Patch2
withSmallHall (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> Instr D a) -> Patch a
polySyntFilter ((ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ \ResonFilter
filter -> DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.6 (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Instr D (DryWetRatio, DryWetRatio)
-> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (ResonFilter -> DryWetRatio -> SE DryWetRatio
C.pwPadBy ResonFilter
filter)
pwPadm :: Patch2
pwPadm = Patch2 -> Patch2
withSmallHall (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> MonoInstr a) -> Patch a
monoSyntFilter ((ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ \ResonFilter
filter -> DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.6 (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> MonoInstr (DryWetRatio, DryWetRatio)
-> MonoInstr (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> (MonoArg -> SE DryWetRatio)
-> MonoInstr (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio) -> MonoArg -> SE DryWetRatio
forall a. SigSpace a => (DryWetRatio -> a) -> MonoArg -> a
monoSig1 (ResonFilter -> DryWetRatio -> SE DryWetRatio
C.pwPadBy ResonFilter
filter)

triPad :: Patch2
triPad  = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> SE a) -> Patch a -> Patch a
fx1' DryWetRatio
0.25 (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
C.triPadFx (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> Instr D a) -> Patch a
polySyntFilter ((ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ \ResonFilter
filter -> (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> SE a -> SE b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.7 (SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (ResonFilter -> DryWetRatio -> SE DryWetRatio
C.triPadBy ResonFilter
filter)
triPadm :: Patch2
triPadm = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> SE a) -> Patch a -> Patch a
fx1' DryWetRatio
0.25 (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
C.triPadFx (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> MonoInstr a) -> Patch a
monoSyntFilter ((ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ \ResonFilter
filter -> (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> SE a -> SE b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> (MonoArg -> SE DryWetRatio)
-> MonoInstr (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.7 (SE DryWetRatio -> SE DryWetRatio)
-> (MonoArg -> SE DryWetRatio) -> MonoArg -> SE DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio) -> MonoArg -> SE DryWetRatio
forall a. SigSpace a => (DryWetRatio -> a) -> MonoArg -> a
monoSig1 (ResonFilter -> DryWetRatio -> SE DryWetRatio
C.triPadBy ResonFilter
filter)

nightPad :: Patch2
nightPad  = Patch2 -> Patch2
withLargeHall (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.48 (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Instr D (DryWetRatio, DryWetRatio)
-> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (D -> DryWetRatio
fadeOut D
1) (DryWetRatio -> DryWetRatio)
-> (DryWetRatio -> DryWetRatio) -> DryWetRatio -> DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> DryWetRatio -> DryWetRatio
C.nightPad D
0.5)
nightPadm :: Patch2
nightPadm = Patch2 -> Patch2
withLargeHall (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ MonoInstr (DryWetRatio, DryWetRatio) -> Patch2
forall a. MonoInstr a -> Patch a
monoSynt (MonoInstr (DryWetRatio, DryWetRatio) -> Patch2)
-> MonoInstr (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.48 (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> MonoInstr (DryWetRatio, DryWetRatio)
-> MonoInstr (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> (MonoArg -> (DryWetRatio, DryWetRatio))
-> MonoInstr (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> (MonoArg -> DryWetRatio)
-> MonoArg
-> (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> DryWetRatio) -> MonoArg -> DryWetRatio
forall a. SigSpace a => (DryWetRatio -> a) -> MonoArg -> a
monoSig1 ((D -> DryWetRatio
fadeOut D
1 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* ) (DryWetRatio -> DryWetRatio)
-> (DryWetRatio -> DryWetRatio) -> DryWetRatio -> DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> DryWetRatio -> DryWetRatio
C.nightPad D
0.5)

overtoneFx :: Patch2 -> Patch2
overtoneFx     Patch2
p = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.35 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ DryWetRatio
-> (ResonFilter
    -> (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a.
DryWetRatio -> (ResonFilter -> a -> a) -> Patch a -> Patch a
singleFxFilter DryWetRatio
0.25 (\ResonFilter
filter -> (DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at (ResonFilter
filter DryWetRatio
1500 DryWetRatio
0.1)) Patch2
p
caveOvertoneFx :: Patch2 -> Patch2
caveOvertoneFx Patch2
p = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.2  (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
magicCave2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ DryWetRatio
-> (ResonFilter
    -> (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a.
DryWetRatio -> (ResonFilter -> a -> a) -> Patch a -> Patch a
singleFxFilter DryWetRatio
0.25 (\ResonFilter
filter -> (DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at (ResonFilter
filter DryWetRatio
1500 DryWetRatio
0.1)) (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ DryWetRatio -> Patch2 -> Patch2
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.8 Patch2
p

overtonePad :: Patch2
overtonePad  = Patch2 -> Patch2
overtoneFx (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.65 (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Instr D (DryWetRatio, DryWetRatio)
-> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (\DryWetRatio
cps -> DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (D -> D -> DryWetRatio
fades D
0.25 D
1.2) (Int -> DryWetRatio -> DryWetRatio -> DryWetRatio
C.tibetan Int
11 DryWetRatio
0.012 DryWetRatio
cps) DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
+ DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (D -> D -> DryWetRatio
fades D
0.25 D
1) (Int -> DryWetRatio -> DryWetRatio -> DryWetRatio
C.tibetan Int
13 DryWetRatio
0.015 (DryWetRatio
cps DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio
0.5)))
overtonePadm :: Patch2
overtonePadm = Patch2 -> Patch2
overtoneFx (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ MonoInstr (DryWetRatio, DryWetRatio) -> Patch2
forall a. MonoInstr a -> Patch a
monoSynt (MonoInstr (DryWetRatio, DryWetRatio) -> Patch2)
-> MonoInstr (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$  DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.65 (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> MonoInstr (DryWetRatio, DryWetRatio)
-> MonoInstr (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> (MonoArg -> (DryWetRatio, DryWetRatio))
-> MonoInstr (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> (MonoArg -> DryWetRatio)
-> MonoArg
-> (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> DryWetRatio) -> MonoArg -> DryWetRatio
forall a. SigSpace a => (DryWetRatio -> a) -> MonoArg -> a
monoSig1 (\DryWetRatio
cps -> DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (D -> D -> DryWetRatio
fades D
0.25 D
1.2) (Int -> DryWetRatio -> DryWetRatio -> DryWetRatio
C.tibetan Int
11 DryWetRatio
0.012 DryWetRatio
cps) DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
+ DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (D -> D -> DryWetRatio
fades D
0.25 D
1) (Int -> DryWetRatio -> DryWetRatio -> DryWetRatio
C.tibetan Int
13 DryWetRatio
0.015 (DryWetRatio
cps DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio
0.5)))

caveOvertonePad :: Patch2
caveOvertonePad =  Patch2 -> Patch2
caveOvertoneFx (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Patch2 -> Patch2
forall a. Patch a -> Patch a
dryPatch Patch2
overtonePad
caveOvertonePadm :: Patch2
caveOvertonePadm = Patch2 -> Patch2
caveOvertoneFx (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Patch2 -> Patch2
forall a. Patch a -> Patch a
dryPatch Patch2
overtonePadm

chorusel :: Patch2
chorusel  = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.35 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> Instr D a) -> Patch a
polySyntFilter ((ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ \ResonFilter
filter CsdNote D
note -> (DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.9 (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Instr D (DryWetRatio, DryWetRatio)
-> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (SE (DryWetRatio, DryWetRatio))
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at (ResonFilter
filter (DryWetRatio
3500 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
+ DryWetRatio
2000 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio -> DryWetRatio
uosc DryWetRatio
0.1) DryWetRatio
0.1) (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Instr D (DryWetRatio, DryWetRatio)
-> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> CsdNote D
-> SE (CpsInstrOut (DryWetRatio -> (DryWetRatio, DryWetRatio)))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (DryWetRatio
-> (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul (D -> D -> DryWetRatio
fades D
0.65 D
1) ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> DryWetRatio
-> (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> D -> D -> DryWetRatio -> (DryWetRatio, DryWetRatio)
C.chorusel D
13 D
0.5 D
10)) CsdNote D
note
choruselm :: Patch2
choruselm = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.35 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> MonoInstr a) -> Patch a
monoSyntFilter ((ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ \ResonFilter
filter MonoArg
note -> (DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.9 (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> MonoInstr (DryWetRatio, DryWetRatio)
-> MonoInstr (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> (MonoArg -> (DryWetRatio, DryWetRatio))
-> MonoInstr (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at (ResonFilter
filter (DryWetRatio
3500 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
+ DryWetRatio
2000 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio -> DryWetRatio
uosc DryWetRatio
0.1) DryWetRatio
0.1) ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (MonoArg -> (DryWetRatio, DryWetRatio))
-> MonoArg
-> (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> MonoArg -> (DryWetRatio, DryWetRatio)
forall a. SigSpace a => (DryWetRatio -> a) -> MonoArg -> a
monoSig1 (DryWetRatio
-> (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul (D -> D -> DryWetRatio
fades D
0.65 D
1) ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> DryWetRatio
-> (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> D -> D -> DryWetRatio -> (DryWetRatio, DryWetRatio)
C.chorusel D
13 D
0.5 D
10)) MonoArg
note

pwEnsemble :: Patch2
pwEnsemble = Patch2 -> Patch2
withSmallHall (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> Instr D a) -> Patch a
polySyntFilter ((ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ \ResonFilter
filter -> (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.55 (SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (ResonFilter -> DryWetRatio -> SE DryWetRatio
C.pwEnsembleBy ResonFilter
filter)
pwEnsemblem :: Patch2
pwEnsemblem = Patch2 -> Patch2
withSmallHall (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> MonoInstr a) -> Patch a
monoSyntFilter ((ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ \ResonFilter
filter -> (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> (MonoArg -> SE DryWetRatio)
-> MonoInstr (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.55 (SE DryWetRatio -> SE DryWetRatio)
-> (MonoArg -> SE DryWetRatio) -> MonoArg -> SE DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio) -> MonoArg -> SE DryWetRatio
forall a. SigSpace a => (DryWetRatio -> a) -> MonoArg -> a
monoSig1 (ResonFilter -> DryWetRatio -> SE DryWetRatio
C.pwEnsembleBy ResonFilter
filter)

fmDroneSlow :: Patch2
fmDroneSlow = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.35 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE (DryWetRatio, DryWetRatio)
-> AtOut
     DryWetRatio
     (DryWetRatio, DryWetRatio)
     (SE (DryWetRatio, DryWetRatio))
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Instr D (DryWetRatio, DryWetRatio)
-> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.5 (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Instr D (DryWetRatio, DryWetRatio)
-> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> CsdNote D
-> SE (CpsInstrOut (DryWetRatio -> (DryWetRatio, DryWetRatio)))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (DryWetRatio
-> CsdNote D -> DryWetRatio -> (DryWetRatio, DryWetRatio)
C.fmDrone DryWetRatio
3 (D
10, D
5))
fmDroneSlowm :: Patch2
fmDroneSlowm = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.35 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ MonoInstr (DryWetRatio, DryWetRatio) -> Patch2
forall a. MonoInstr a -> Patch a
monoSynt (MonoInstr (DryWetRatio, DryWetRatio) -> Patch2)
-> MonoInstr (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> (MonoArg -> (DryWetRatio, DryWetRatio))
-> MonoInstr (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> AtOut
     DryWetRatio (DryWetRatio, DryWetRatio) (DryWetRatio, DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (MonoArg -> (DryWetRatio, DryWetRatio))
-> MonoArg
-> (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio
-> (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.5 ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (MonoArg -> (DryWetRatio, DryWetRatio))
-> MonoArg
-> (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> MonoArg -> (DryWetRatio, DryWetRatio)
forall a. SigSpace a => (DryWetRatio -> a) -> MonoArg -> a
monoSig1 (DryWetRatio
-> CsdNote D -> DryWetRatio -> (DryWetRatio, DryWetRatio)
C.fmDrone DryWetRatio
3 (D
10, D
5))

fmDroneMedium :: Patch2
fmDroneMedium = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.35 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE (DryWetRatio, DryWetRatio)
-> AtOut
     DryWetRatio
     (DryWetRatio, DryWetRatio)
     (SE (DryWetRatio, DryWetRatio))
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Instr D (DryWetRatio, DryWetRatio)
-> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.5 (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Instr D (DryWetRatio, DryWetRatio)
-> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> CsdNote D
-> SE (CpsInstrOut (DryWetRatio -> (DryWetRatio, DryWetRatio)))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (DryWetRatio
-> CsdNote D -> DryWetRatio -> (DryWetRatio, DryWetRatio)
C.fmDrone DryWetRatio
3 (D
5, D
3))
fmDroneMediumm :: Patch2
fmDroneMediumm = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.35 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ MonoInstr (DryWetRatio, DryWetRatio) -> Patch2
forall a. MonoInstr a -> Patch a
monoSynt (MonoInstr (DryWetRatio, DryWetRatio) -> Patch2)
-> MonoInstr (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> (MonoArg -> (DryWetRatio, DryWetRatio))
-> MonoInstr (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> AtOut
     DryWetRatio (DryWetRatio, DryWetRatio) (DryWetRatio, DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (MonoArg -> (DryWetRatio, DryWetRatio))
-> MonoArg
-> (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio
-> (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.5 ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (MonoArg -> (DryWetRatio, DryWetRatio))
-> MonoArg
-> (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> MonoArg -> (DryWetRatio, DryWetRatio)
forall a. SigSpace a => (DryWetRatio -> a) -> MonoArg -> a
monoSig1 (DryWetRatio
-> CsdNote D -> DryWetRatio -> (DryWetRatio, DryWetRatio)
C.fmDrone DryWetRatio
3 (D
5, D
3))

fmDroneFast :: Patch2
fmDroneFast = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.25 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE (DryWetRatio, DryWetRatio)
-> AtOut
     DryWetRatio
     (DryWetRatio, DryWetRatio)
     (SE (DryWetRatio, DryWetRatio))
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Instr D (DryWetRatio, DryWetRatio)
-> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.5 (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Instr D (DryWetRatio, DryWetRatio)
-> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> CsdNote D
-> SE (CpsInstrOut (DryWetRatio -> (DryWetRatio, DryWetRatio)))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (DryWetRatio
-> CsdNote D -> DryWetRatio -> (DryWetRatio, DryWetRatio)
C.fmDrone DryWetRatio
3 (D
0.5, D
1))
fmDroneFastm :: Patch2
fmDroneFastm = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.25 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ MonoInstr (DryWetRatio, DryWetRatio) -> Patch2
forall a. MonoInstr a -> Patch a
monoSynt (MonoInstr (DryWetRatio, DryWetRatio) -> Patch2)
-> MonoInstr (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> (MonoArg -> (DryWetRatio, DryWetRatio))
-> MonoInstr (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> AtOut
     DryWetRatio (DryWetRatio, DryWetRatio) (DryWetRatio, DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (MonoArg -> (DryWetRatio, DryWetRatio))
-> MonoArg
-> (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio
-> (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.5 ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (MonoArg -> (DryWetRatio, DryWetRatio))
-> MonoArg
-> (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> MonoArg -> (DryWetRatio, DryWetRatio)
forall a. SigSpace a => (DryWetRatio -> a) -> MonoArg -> a
monoSig1 (DryWetRatio
-> CsdNote D -> DryWetRatio -> (DryWetRatio, DryWetRatio)
C.fmDrone DryWetRatio
3 (D
0.5, D
1))

vibrophonePad :: Patch2
vibrophonePad = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> SE a) -> Patch a -> Patch a
addPreFx DryWetRatio
1 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at ((DryWetRatio -> DryWetRatio)
 -> (DryWetRatio, DryWetRatio)
 -> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ ResonFilter
mlp DryWetRatio
2500 DryWetRatio
0.1)) (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (Instr D (DryWetRatio, DryWetRatio)
 -> Instr D (DryWetRatio, DryWetRatio))
-> Patch2 -> Patch2
forall a. (Instr D a -> Instr D a) -> Patch a -> Patch a
mapPatchInstr (\Instr D (DryWetRatio, DryWetRatio)
instr -> DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
1.5 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> D -> DryWetRatio
fades D
0.5 D
0.25) (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Instr D (DryWetRatio, DryWetRatio)
-> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Instr D (DryWetRatio, DryWetRatio)
instr) Patch2
largeVibraphone1

data RazorPad = RazorPad { RazorPad -> DryWetRatio
razorPadSpeed :: Sig }

instance Default RazorPad where
  def :: RazorPad
def = DryWetRatio -> RazorPad
RazorPad DryWetRatio
0.5

razorPadSlow :: Patch2
razorPadSlow = RazorPad -> Patch2
razorPad' (RazorPad
forall a. Default a => a
def { razorPadSpeed = 0.1 })
razorPadFast :: Patch2
razorPadFast = RazorPad -> Patch2
razorPad' (RazorPad
forall a. Default a => a
def { razorPadSpeed = 1.7 })
razorPadTremolo :: Patch2
razorPadTremolo = RazorPad -> Patch2
razorPad' (RazorPad
forall a. Default a => a
def { razorPadSpeed = 6.7 })

razorPadSlowm :: Patch2
razorPadSlowm = RazorPad -> Patch2
razorPadm' (RazorPad
forall a. Default a => a
def { razorPadSpeed = 0.1 })
razorPadFastm :: Patch2
razorPadFastm = RazorPad -> Patch2
razorPadm' (RazorPad
forall a. Default a => a
def { razorPadSpeed = 1.7 })
razorPadTremolom :: Patch2
razorPadTremolom = RazorPad -> Patch2
razorPadm' (RazorPad
forall a. Default a => a
def { razorPadSpeed = 6.7 })

razorPad :: Patch2
razorPad = RazorPad -> Patch2
razorPad' RazorPad
forall a. Default a => a
def

razorPadm :: Patch2
razorPadm = RazorPad -> Patch2
razorPadm' RazorPad
forall a. Default a => a
def

razorPad' :: RazorPad -> Patch2
razorPad'  (RazorPad DryWetRatio
speed) = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.35 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> Instr D a) -> Patch a
polySyntFilter ((ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ \ResonFilter
filter -> (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.6 (SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((DryWetRatio, DryWetRatio) -> SE DryWetRatio)
-> CsdNote D
-> SE (CpsInstrOut ((DryWetRatio, DryWetRatio) -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps ((DryWetRatio -> DryWetRatio -> SE DryWetRatio)
-> (DryWetRatio, DryWetRatio) -> SE DryWetRatio
forall a b c. (a -> b -> c) -> (a, b) -> c
uncurry ((DryWetRatio -> DryWetRatio -> SE DryWetRatio)
 -> (DryWetRatio, DryWetRatio) -> SE DryWetRatio)
-> (DryWetRatio -> DryWetRatio -> SE DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> SE DryWetRatio
forall a b. (a -> b) -> a -> b
$ ResonFilter
-> DryWetRatio -> DryWetRatio -> DryWetRatio -> SE DryWetRatio
forall {b} {t}.
(SigSpace (SE b), Fractional t, Fractional (SE b)) =>
(DryWetRatio -> t -> DryWetRatio -> b)
-> DryWetRatio -> DryWetRatio -> DryWetRatio -> SE b
C.razorPad ResonFilter
filter DryWetRatio
speed)
razorPadm' :: RazorPad -> Patch2
razorPadm' (RazorPad DryWetRatio
speed) = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.35 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> MonoInstr a) -> Patch a
monoSyntFilter ((ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ \ResonFilter
filter MonoArg
arg -> ((DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> SE DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.6 (SE DryWetRatio -> SE DryWetRatio)
-> ((DryWetRatio, DryWetRatio) -> SE DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> SE DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((DryWetRatio -> DryWetRatio -> SE DryWetRatio)
-> (DryWetRatio, DryWetRatio) -> SE DryWetRatio
forall a b c. (a -> b -> c) -> (a, b) -> c
uncurry ((DryWetRatio -> DryWetRatio -> SE DryWetRatio)
 -> (DryWetRatio, DryWetRatio) -> SE DryWetRatio)
-> (DryWetRatio -> DryWetRatio -> SE DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> SE DryWetRatio
forall a b. (a -> b) -> a -> b
$ ResonFilter
-> DryWetRatio -> DryWetRatio -> DryWetRatio -> SE DryWetRatio
forall {b} {t}.
(SigSpace (SE b), Fractional t, Fractional (SE b)) =>
(DryWetRatio -> t -> DryWetRatio -> b)
-> DryWetRatio -> DryWetRatio -> DryWetRatio -> SE b
C.razorPad ResonFilter
filter DryWetRatio
speed)) (MonoArg -> (DryWetRatio, DryWetRatio)
monoArgToNote MonoArg
arg)

dreamPadFx :: Patch2 -> Patch2
dreamPadFx = [GenFxSpec (DryWetRatio, DryWetRatio)] -> Patch2 -> Patch2
forall a. [GenFxSpec a] -> Patch a -> Patch a
FxChain [DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
0.35 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2), DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
0.25 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at ((DryWetRatio -> DryWetRatio)
 -> (DryWetRatio, DryWetRatio)
 -> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ D -> DryWetRatio -> DryWetRatio -> DryWetRatio
echo D
0.25 DryWetRatio
0.65)), DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
0.25 ((DryWetRatio -> SE DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio (SE DryWetRatio) (DryWetRatio, DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at ((DryWetRatio -> SE DryWetRatio)
 -> (DryWetRatio, DryWetRatio)
 -> AtOut DryWetRatio (SE DryWetRatio) (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> SE DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio (SE DryWetRatio) (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ DryWetRatio
-> DryWetRatio -> DryWetRatio -> DryWetRatio -> SE DryWetRatio
chorus DryWetRatio
0.07 DryWetRatio
1.25 DryWetRatio
1)]

dreamPad :: Patch2
dreamPad = DryWetRatio -> Patch2
dreamPad' DryWetRatio
0.35
underwaterPad :: Patch2
underwaterPad = DryWetRatio -> Patch2
underwaterPad' DryWetRatio
0.35
lightIsTooBrightPad :: Patch2
lightIsTooBrightPad = DryWetRatio -> Patch2
lightIsTooBrightPad' DryWetRatio
0.55
whaleSongPad :: Patch2
whaleSongPad = DryWetRatio -> Patch2
whaleSongPad' DryWetRatio
0.35

dreamPadm :: Patch2
dreamPadm = DryWetRatio -> Patch2
dreamPadm' DryWetRatio
0.35
underwaterPadm :: Patch2
underwaterPadm = DryWetRatio -> Patch2
underwaterPadm' DryWetRatio
0.35
lightIsTooBrightPadm :: Patch2
lightIsTooBrightPadm = DryWetRatio -> Patch2
lightIsTooBrightPadm' DryWetRatio
0.55
whaleSongPadm :: Patch2
whaleSongPadm = DryWetRatio -> Patch2
whaleSongPadm' DryWetRatio
0.35

dreamPadBym :: (DryWetRatio -> SE DryWetRatio) -> Patch2
dreamPadBym = DryWetRatio -> (DryWetRatio -> SE DryWetRatio) -> Patch2
dreamPadBym' DryWetRatio
0.35

-- | The first argument is brightness (0 to 1)
dreamPad' :: Sig -> Patch2
dreamPad' :: DryWetRatio -> Patch2
dreamPad' DryWetRatio
bright = Patch2 -> Patch2
dreamPadFx (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> Instr D a) -> Patch a
polySyntFilter ((ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ \ResonFilter
filter CsdNote D
note -> ((DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> SE a -> SE b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (ResonFilter -> DryWetRatio -> DryWetRatio -> SE DryWetRatio
C.dreamPad ResonFilter
filter DryWetRatio
bright)) CsdNote D
note

-- | The first argument is brightness. The second argument is a wave shape function.
dreamPadBy :: Sig -> Wave -> Patch2
dreamPadBy :: DryWetRatio -> (DryWetRatio -> SE DryWetRatio) -> Patch2
dreamPadBy DryWetRatio
brightness DryWetRatio -> SE DryWetRatio
wave = Patch2 -> Patch2
dreamPadFx (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> Instr D a) -> Patch a
polySyntFilter ((ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ \ResonFilter
filter CsdNote D
note ->  ((DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> SE a -> SE b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (ResonFilter
-> (DryWetRatio -> SE DryWetRatio)
-> DryWetRatio
-> DryWetRatio
-> SE DryWetRatio
C.dreamPadBy ResonFilter
filter DryWetRatio -> SE DryWetRatio
wave DryWetRatio
brightness)) CsdNote D
note

genDreamPadNote :: (ResonFilter -> Wave -> Sig -> Sig -> SE Sig) -> (D -> Wave) -> Sig -> ResonFilter -> Instr D Sig2
genDreamPadNote :: (ResonFilter
 -> (DryWetRatio -> SE DryWetRatio)
 -> DryWetRatio
 -> DryWetRatio
 -> SE DryWetRatio)
-> (D -> DryWetRatio -> SE DryWetRatio)
-> DryWetRatio
-> ResonFilter
-> Instr D (DryWetRatio, DryWetRatio)
genDreamPadNote ResonFilter
-> (DryWetRatio -> SE DryWetRatio)
-> DryWetRatio
-> DryWetRatio
-> SE DryWetRatio
f D -> DryWetRatio -> SE DryWetRatio
wave DryWetRatio
brightness ResonFilter
filter = (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> SE a -> SE b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (D -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (D -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (\D
cps -> ResonFilter
-> (DryWetRatio -> SE DryWetRatio)
-> DryWetRatio
-> DryWetRatio
-> SE DryWetRatio
f ResonFilter
filter (D -> DryWetRatio -> SE DryWetRatio
wave D
cps) DryWetRatio
brightness (D -> DryWetRatio
sig D
cps))

-- genDreamPadNoteWithKey :: (ResonFilter -> (D -> Wave) -> Sig -> Sig -> SE Sig) -> Wave -> Sig -> ResonFilter -> Instr D Sig2
-- genDreamPadNoteWithKey f wave brightness filter = fmap fromMono . onCps (\cps -> f filter (wave cps) brightness (sig cps))

dreamPadWithKey :: Sig -> (D -> Sig -> SE Sig) -> Patch2
dreamPadWithKey :: DryWetRatio -> (D -> DryWetRatio -> SE DryWetRatio) -> Patch2
dreamPadWithKey DryWetRatio
brightness D -> DryWetRatio -> SE DryWetRatio
wave = Patch2 -> Patch2
dreamPadFx (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> Instr D a) -> Patch a
polySyntFilter ((ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ (ResonFilter
 -> (DryWetRatio -> SE DryWetRatio)
 -> DryWetRatio
 -> DryWetRatio
 -> SE DryWetRatio)
-> (D -> DryWetRatio -> SE DryWetRatio)
-> DryWetRatio
-> ResonFilter
-> Instr D (DryWetRatio, DryWetRatio)
genDreamPadNote ResonFilter
-> (DryWetRatio -> SE DryWetRatio)
-> DryWetRatio
-> DryWetRatio
-> SE DryWetRatio
C.dreamPadBy D -> DryWetRatio -> SE DryWetRatio
wave DryWetRatio
brightness

-- | The first argument is brightness (0 to 1)
dreamPadm' :: Sig -> Patch2
dreamPadm' :: DryWetRatio -> Patch2
dreamPadm' DryWetRatio
bright = Patch2 -> Patch2
dreamPadFx (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> MonoInstr a) -> Patch a
monoSyntFilter ((ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ \ResonFilter
filter -> (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> SE a -> SE b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> (MonoArg -> SE DryWetRatio)
-> MonoInstr (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio) -> MonoArg -> SE DryWetRatio
forall a. SigSpace a => (DryWetRatio -> a) -> MonoArg -> a
monoSig1 (ResonFilter -> DryWetRatio -> DryWetRatio -> SE DryWetRatio
C.dreamPad ResonFilter
filter DryWetRatio
bright)

-- | The first argument is brightness (0 to 1). The second argument is a wave function.
dreamPadBym' :: Sig -> (Sig -> SE Sig) -> Patch2
dreamPadBym' :: DryWetRatio -> (DryWetRatio -> SE DryWetRatio) -> Patch2
dreamPadBym' DryWetRatio
bright DryWetRatio -> SE DryWetRatio
wave = Patch2 -> Patch2
dreamPadFx (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> MonoInstr a) -> Patch a
monoSyntFilter ((ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ \ResonFilter
filter -> (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> SE a -> SE b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> (MonoArg -> SE DryWetRatio)
-> MonoInstr (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio) -> MonoArg -> SE DryWetRatio
forall a. SigSpace a => (DryWetRatio -> a) -> MonoArg -> a
monoSig1 (ResonFilter
-> (DryWetRatio -> SE DryWetRatio)
-> DryWetRatio
-> DryWetRatio
-> SE DryWetRatio
C.dreamPadBy ResonFilter
filter DryWetRatio -> SE DryWetRatio
wave DryWetRatio
bright)

-- | The first argument is brightness (0 to 1)
underwaterPad' :: Sig -> Patch2
underwaterPad' :: DryWetRatio -> Patch2
underwaterPad' DryWetRatio
bright = Patch2 -> Patch2
dreamPadFx (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> Instr D a) -> Patch a
polySyntFilter ((ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ \ResonFilter
filter ->  (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> SE a -> SE b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (ResonFilter -> DryWetRatio -> DryWetRatio -> SE DryWetRatio
C.underwaterPad ResonFilter
filter DryWetRatio
bright)

-- | The first argument is brightness (0 to 1)
underwaterPadm' :: Sig -> Patch2
underwaterPadm' :: DryWetRatio -> Patch2
underwaterPadm' DryWetRatio
bright = Patch2 -> Patch2
dreamPadFx (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> MonoInstr a) -> Patch a
monoSyntFilter ((ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ \ResonFilter
filter -> (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> SE a -> SE b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> (MonoArg -> SE DryWetRatio)
-> MonoInstr (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio) -> MonoArg -> SE DryWetRatio
forall a. SigSpace a => (DryWetRatio -> a) -> MonoArg -> a
monoSig1 (ResonFilter -> DryWetRatio -> DryWetRatio -> SE DryWetRatio
C.underwaterPad ResonFilter
filter DryWetRatio
bright)

-- | The first argument is brightness (0 to 1)
lightIsTooBrightPad' :: Sig -> Patch2
lightIsTooBrightPad' :: DryWetRatio -> Patch2
lightIsTooBrightPad' DryWetRatio
bright = Patch2 -> Patch2
dreamPadFx (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> Instr D a) -> Patch a
polySyntFilter ((ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ \ResonFilter
filter ->  (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> SE a -> SE b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (ResonFilter -> DryWetRatio -> DryWetRatio -> SE DryWetRatio
C.lightIsTooBrightPad ResonFilter
filter DryWetRatio
bright)

lightIsTooBrightPadm' :: Sig -> Patch2
lightIsTooBrightPadm' :: DryWetRatio -> Patch2
lightIsTooBrightPadm' DryWetRatio
bright = Patch2 -> Patch2
dreamPadFx (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> MonoInstr a) -> Patch a
monoSyntFilter ((ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ \ResonFilter
filter -> (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> SE a -> SE b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> (MonoArg -> SE DryWetRatio)
-> MonoInstr (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio) -> MonoArg -> SE DryWetRatio
forall a. SigSpace a => (DryWetRatio -> a) -> MonoArg -> a
monoSig1 (ResonFilter -> DryWetRatio -> DryWetRatio -> SE DryWetRatio
C.lightIsTooBrightPad ResonFilter
filter DryWetRatio
bright)

lightIsTooBrightPadWithKey :: Sig -> (D -> Sig -> SE Sig) -> Patch2
lightIsTooBrightPadWithKey :: DryWetRatio -> (D -> DryWetRatio -> SE DryWetRatio) -> Patch2
lightIsTooBrightPadWithKey DryWetRatio
brightness D -> DryWetRatio -> SE DryWetRatio
wave = Patch2 -> Patch2
dreamPadFx (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> Instr D a) -> Patch a
polySyntFilter ((ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ (ResonFilter
 -> (DryWetRatio -> SE DryWetRatio)
 -> DryWetRatio
 -> DryWetRatio
 -> SE DryWetRatio)
-> (D -> DryWetRatio -> SE DryWetRatio)
-> DryWetRatio
-> ResonFilter
-> Instr D (DryWetRatio, DryWetRatio)
genDreamPadNote ResonFilter
-> (DryWetRatio -> SE DryWetRatio)
-> DryWetRatio
-> DryWetRatio
-> SE DryWetRatio
C.lightIsTooBrightPadBy D -> DryWetRatio -> SE DryWetRatio
wave DryWetRatio
brightness

-- | The first argument is brightness (0 to 1)
whaleSongPad' :: Sig -> Patch2
whaleSongPad' :: DryWetRatio -> Patch2
whaleSongPad' DryWetRatio
bright = Patch2 -> Patch2
dreamPadFx (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> Instr D a) -> Patch a
polySyntFilter ((ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ \ResonFilter
filter -> (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> SE a -> SE b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (ResonFilter -> DryWetRatio -> DryWetRatio -> SE DryWetRatio
C.whaleSongPad ResonFilter
filter DryWetRatio
bright)

whaleSongPadm' :: Sig -> Patch2
whaleSongPadm' :: DryWetRatio -> Patch2
whaleSongPadm' DryWetRatio
bright = Patch2 -> Patch2
dreamPadFx (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> MonoInstr a) -> Patch a
monoSyntFilter ((ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> MonoInstr (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ \ResonFilter
filter -> (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> SE a -> SE b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> (MonoArg -> SE DryWetRatio)
-> MonoInstr (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio) -> MonoArg -> SE DryWetRatio
forall a. SigSpace a => (DryWetRatio -> a) -> MonoArg -> a
monoSig1 (ResonFilter -> DryWetRatio -> DryWetRatio -> SE DryWetRatio
C.whaleSongPad ResonFilter
filter DryWetRatio
bright)

whaleSongPadWithKey :: Sig -> (D -> Sig -> SE Sig) -> Patch2
whaleSongPadWithKey :: DryWetRatio -> (D -> DryWetRatio -> SE DryWetRatio) -> Patch2
whaleSongPadWithKey DryWetRatio
brightness D -> DryWetRatio -> SE DryWetRatio
wave = Patch2 -> Patch2
dreamPadFx (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> Instr D a) -> Patch a
polySyntFilter ((ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ (ResonFilter
 -> (DryWetRatio -> SE DryWetRatio)
 -> DryWetRatio
 -> DryWetRatio
 -> SE DryWetRatio)
-> (D -> DryWetRatio -> SE DryWetRatio)
-> DryWetRatio
-> ResonFilter
-> Instr D (DryWetRatio, DryWetRatio)
genDreamPadNote ResonFilter
-> (DryWetRatio -> SE DryWetRatio)
-> DryWetRatio
-> DryWetRatio
-> SE DryWetRatio
C.whaleSongPadBy D -> DryWetRatio -> SE DryWetRatio
wave DryWetRatio
brightness

------------------------------------
-- leads

polySynthFxChain :: Patch2 -> Patch2
polySynthFxChain = [GenFxSpec (DryWetRatio, DryWetRatio)] -> Patch2 -> Patch2
forall a. [GenFxSpec a] -> Patch a -> Patch a
FxChain [DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
0.25 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2), DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
0.25 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at ((DryWetRatio -> DryWetRatio)
 -> (DryWetRatio, DryWetRatio)
 -> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ D -> DryWetRatio -> DryWetRatio -> DryWetRatio
echo D
0.25 DryWetRatio
0.65)), DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
0.25 ((DryWetRatio -> SE DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio (SE DryWetRatio) (DryWetRatio, DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at ((DryWetRatio -> SE DryWetRatio)
 -> (DryWetRatio, DryWetRatio)
 -> AtOut DryWetRatio (SE DryWetRatio) (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> SE DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio (SE DryWetRatio) (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ DryWetRatio
-> DryWetRatio -> DryWetRatio -> DryWetRatio -> SE DryWetRatio
chorus DryWetRatio
0.07 DryWetRatio
1.25 DryWetRatio
1), DryWetRatio
-> (ResonFilter
    -> (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a. DryWetRatio -> (ResonFilter -> Fx a) -> GenFxSpec a
fxSpecFilter DryWetRatio
1 ((ResonFilter
  -> (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
 -> GenFxSpec (DryWetRatio, DryWetRatio))
-> (ResonFilter
    -> (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ \ResonFilter
filter -> (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at (ResonFilter
filter DryWetRatio
5500 DryWetRatio
0.12 (DryWetRatio -> DryWetRatio)
-> (DryWetRatio -> DryWetRatio) -> DryWetRatio -> DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> ResonFilter -> ResonFilter
C.filt Int
2 ResonFilter
C.br DryWetRatio
18000 DryWetRatio
0.3)]

polySynth :: Patch2
polySynth  = Patch2 -> Patch2
polySynthFxChain (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> SE a -> SE b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps DryWetRatio -> SE DryWetRatio
C.polySynth
polySynthm :: Patch2
polySynthm = Patch2 -> Patch2
polySynthFxChain (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ MonoInstr (DryWetRatio, DryWetRatio) -> Patch2
forall a. MonoInstr a -> Patch a
monoSynt (MonoInstr (DryWetRatio, DryWetRatio) -> Patch2)
-> MonoInstr (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> SE a -> SE b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> (MonoArg -> SE DryWetRatio)
-> MonoInstr (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio) -> MonoArg -> SE DryWetRatio
forall a. SigSpace a => (DryWetRatio -> a) -> MonoArg -> a
monoSig1 DryWetRatio -> SE DryWetRatio
C.polySynth

phasingLead :: Patch2
phasingLead = Patch2 -> Patch2
withSmallHall (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
0.7 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> DryWetRatio
fadeOut D
0.05) (SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((DryWetRatio, DryWetRatio) -> DryWetRatio)
-> CsdNote D
-> SE (CpsInstrOut ((DryWetRatio, DryWetRatio) -> DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps ((DryWetRatio -> DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio) -> DryWetRatio
forall a b c. (a -> b -> c) -> (a, b) -> c
uncurry DryWetRatio -> DryWetRatio -> DryWetRatio
C.phasingSynth)

data RazorLead = RazorLead
  { RazorLead -> DryWetRatio
razorLeadBright :: Sig
  , RazorLead -> DryWetRatio
razorLeadSpeed  :: Sig }

instance Default RazorLead where
  def :: RazorLead
def = DryWetRatio -> DryWetRatio -> RazorLead
RazorLead DryWetRatio
0.5 DryWetRatio
0.5

razorLeadSlow :: Patch2
razorLeadSlow = RazorLead -> Patch2
razorLead' (RazorLead
forall a. Default a => a
def { razorLeadSpeed = 0.1 })
razorLeadFast :: Patch2
razorLeadFast = RazorLead -> Patch2
razorLead' (RazorLead
forall a. Default a => a
def { razorLeadSpeed = 1.7 })
razorLeadTremolo :: Patch2
razorLeadTremolo = RazorLead -> Patch2
razorLead' (RazorLead
forall a. Default a => a
def { razorLeadSpeed = 6.7 })

razorLead :: Patch2
razorLead = RazorLead -> Patch2
razorLead' RazorLead
forall a. Default a => a
def

razorLead' :: RazorLead -> Patch2
razorLead' (RazorLead DryWetRatio
bright DryWetRatio
speed) = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.35 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (\(D
amp, D
cps) -> DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (D -> DryWetRatio
fadeOut (D
0.05 D -> D -> D
forall a. Num a => a -> a -> a
+ D
amp D -> D -> D
forall a. Num a => a -> a -> a
* D
0.3)) (SE DryWetRatio -> SE DryWetRatio)
-> SE DryWetRatio -> SE DryWetRatio
forall a b. (a -> b) -> a -> b
$ DryWetRatio
-> DryWetRatio -> DryWetRatio -> DryWetRatio -> SE DryWetRatio
C.razorLead (DryWetRatio
bright DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> DryWetRatio
sig D
amp) (DryWetRatio
speed DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> DryWetRatio
sig D
amp) (D -> DryWetRatio
sig D
amp) (D -> DryWetRatio
sig D
cps))

overtoneLeadFx :: Sig2 -> SE Sig2
overtoneLeadFx :: (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
overtoneLeadFx (DryWetRatio, DryWetRatio)
x = (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
magicCave2 ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ DryWetRatio
-> (DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b c.
MixAt a b c =>
DryWetRatio -> (a -> b) -> c -> AtOut a b c
mixAt DryWetRatio
0.2 (D -> DryWetRatio -> DryWetRatio -> DryWetRatio
echo D
0.25 DryWetRatio
0.45) (DryWetRatio, DryWetRatio)
x

overtoneLead :: Patch2
overtoneLead :: Patch2
overtoneLead = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> SE a) -> Patch a -> Patch a
fx1' DryWetRatio
0.15 (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
overtoneLeadFx (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.4 (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Instr D (DryWetRatio, DryWetRatio)
-> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (D -> D -> DryWetRatio
fades D
0.01 D
1) (DryWetRatio -> DryWetRatio)
-> (DryWetRatio -> DryWetRatio) -> DryWetRatio -> DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> DryWetRatio -> DryWetRatio -> DryWetRatio
C.tibetan Int
13 DryWetRatio
0.012)

------------------------------------
-- bass

simpleBass :: Patch2
simpleBass = Patch2 -> Patch2
withSmallRoom (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.32 (SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (CsdNote D -> DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (CsdNote D -> DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps CsdNote D -> DryWetRatio
C.simpleBass

pwBass :: Patch2
pwBass = Patch2 -> Patch2
withSmallHall (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> Instr D a) -> Patch a
polySyntFilter ((ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ \ResonFilter
filter -> (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.4 (SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (ResonFilter -> DryWetRatio -> SE DryWetRatio
C.pwBassBy ResonFilter
filter)

deepBass :: Patch2
deepBass = Patch2 -> Patch2
withSmallHall (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.4 (SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps DryWetRatio -> DryWetRatio
C.deepBass

fmBass1 :: Patch2
fmBass1 = (MonoAdsr
 -> (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Patch2
forall a. (MonoAdsr -> Instr DryWetRatio a) -> Patch a
adsrMono (\MonoAdsr
env (DryWetRatio
amp, DryWetRatio
cps) -> (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> DryWetRatio -> (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ MonoAdsr -> (DryWetRatio, DryWetRatio) -> DryWetRatio
C.fmBass1 MonoAdsr
env (DryWetRatio
amp, DryWetRatio
cps))

fmBass2 :: Patch2
fmBass2 = Patch2 -> Patch2
fxs (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (MonoAdsr
 -> (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Patch2
forall a. (MonoAdsr -> Instr DryWetRatio a) -> Patch a
adsrMono (\MonoAdsr
env (DryWetRatio
amp, DryWetRatio
cps) -> (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> DryWetRatio -> (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ MonoAdsr -> (DryWetRatio, DryWetRatio) -> DryWetRatio
C.fmBass2 MonoAdsr
env (DryWetRatio
amp, DryWetRatio
cps))
  where fxs :: Patch2 -> Patch2
fxs = [GenFxSpec (DryWetRatio, DryWetRatio)] -> Patch2 -> Patch2
forall a. [GenFxSpec a] -> Patch a -> Patch a
FxChain [DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
1 ((DryWetRatio -> SE DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio (SE DryWetRatio) (DryWetRatio, DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at (DryWetRatio
-> DryWetRatio -> DryWetRatio -> DryWetRatio -> SE DryWetRatio
chorus DryWetRatio
0.2 DryWetRatio
0.15 DryWetRatio
0.17)), DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
1 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at (DryWetRatio -> DryWetRatio -> DryWetRatio
bhp DryWetRatio
35 (DryWetRatio -> DryWetRatio)
-> (DryWetRatio -> DryWetRatio) -> DryWetRatio -> DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> DryWetRatio -> DryWetRatio
blp DryWetRatio
1200))]

-- | The first argument is the amount of deepBass to mix into the original patch.
withDeepBass :: Sig -> Patch2 -> Patch2
withDeepBass :: DryWetRatio -> Patch2 -> Patch2
withDeepBass DryWetRatio
k = DryWetRatio -> Patch2 -> Patch2 -> Patch2
forall b.
(SigSpace b, Num b) =>
DryWetRatio -> Patch b -> Patch b -> Patch b
mixInstr DryWetRatio
k Patch2
deepBass

------------------------------------
-- plucked

guitar :: Patch2
guitar = Patch2 -> Patch2
withSmallHall (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (D -> (DryWetRatio, DryWetRatio))
-> CsdNote D -> SE (CpsInstrOut (D -> (DryWetRatio, DryWetRatio)))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps ((D -> (DryWetRatio, DryWetRatio))
 -> CsdNote D -> SE (CpsInstrOut (D -> (DryWetRatio, DryWetRatio))))
-> (D -> (DryWetRatio, DryWetRatio))
-> CsdNote D
-> SE (CpsInstrOut (D -> (DryWetRatio, DryWetRatio)))
forall a b. (a -> b) -> a -> b
$ DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> (D -> DryWetRatio) -> D -> (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
0.6 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> D -> DryWetRatio
fades D
0.01 D
0.25) (DryWetRatio -> DryWetRatio)
-> (D -> DryWetRatio) -> D -> DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> DryWetRatio
C.plainString

harpsichord :: Patch2
harpsichord = Patch2 -> Patch2
withSmallHall (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (D -> (DryWetRatio, DryWetRatio))
-> CsdNote D -> SE (CpsInstrOut (D -> (DryWetRatio, DryWetRatio)))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps ((D -> (DryWetRatio, DryWetRatio))
 -> CsdNote D -> SE (CpsInstrOut (D -> (DryWetRatio, DryWetRatio))))
-> (D -> (DryWetRatio, DryWetRatio))
-> CsdNote D
-> SE (CpsInstrOut (D -> (DryWetRatio, DryWetRatio)))
forall a b. (a -> b) -> a -> b
$ DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> (D -> DryWetRatio) -> D -> (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
0.65 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> D -> DryWetRatio
fades D
0.01 D
0.13) (DryWetRatio -> DryWetRatio)
-> (D -> DryWetRatio) -> D -> DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> DryWetRatio
C.harpsichord

------------------------------------
-- strike

strikeFx :: Strike -> Sig2 -> SE Sig2
strikeFx :: Strike
-> (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
strikeFx Strike
spec (DryWetRatio, DryWetRatio)
a = ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> SE (DryWetRatio, DryWetRatio)
-> AtOut
     (DryWetRatio, DryWetRatio)
     (DryWetRatio, DryWetRatio)
     (SE (DryWetRatio, DryWetRatio))
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at (Strike -> (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
strikeReverb Strike
spec) (SE (DryWetRatio, DryWetRatio)
 -> AtOut
      (DryWetRatio, DryWetRatio)
      (DryWetRatio, DryWetRatio)
      (SE (DryWetRatio, DryWetRatio)))
-> SE (DryWetRatio, DryWetRatio)
-> AtOut
     (DryWetRatio, DryWetRatio)
     (DryWetRatio, DryWetRatio)
     (SE (DryWetRatio, DryWetRatio))
forall a b. (a -> b) -> a -> b
$ (if (Strike -> Bool
strikeHasDelay Strike
spec) then (DryWetRatio
-> (DryWetRatio -> DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (SE (DryWetRatio, DryWetRatio))
forall a b c.
MixAt a b c =>
DryWetRatio -> (a -> b) -> c -> AtOut a b c
mixAt DryWetRatio
0.35 (D -> DryWetRatio -> DryWetRatio -> DryWetRatio
echo D
0.25 DryWetRatio
0.55)) else SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
SE (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (SE (DryWetRatio, DryWetRatio))
forall a. a -> a
id) ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return (DryWetRatio, DryWetRatio)
a :: SE Sig2)

strikeRelease :: (D, D) -> Strike -> D
strikeRelease :: CsdNote D -> Strike -> D
strikeRelease (D
amp, D
cps) Strike
spec = (D
0.85 D -> D -> D
forall a. Num a => a -> a -> a
* Strike -> D
strikeRel Strike
spec D -> D -> D
forall a. Num a => a -> a -> a
* D
amp) D -> D -> D
forall a. Num a => a -> a -> a
* D
amp D -> D -> D
forall a. Num a => a -> a -> a
+ (Strike -> D
strikeRel Strike
spec) D -> D -> D
forall a. Num a => a -> a -> a
- (D
cps D -> D -> D
forall a. Fractional a => a -> a -> a
/ D
10000)

-- dac $ mixAt 0.15 largeHall2 $ mixAt 0.2 (echo 0.25 0.45) $ at fromMono $ midi $ onMsg $ onCps (mul (fadeOut 2) . C.tibetanBowl152 )
data Strike = Strike
  { Strike -> D
strikeRel :: D
  , Strike -> Bool
strikeHasDelay :: Bool
  , Strike -> (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
strikeReverb :: Sig2 -> Sig2
  }

instance Default Strike where
  def :: Strike
def = D
-> Bool
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Strike
Strike D
1.5 Bool
True (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallHall2

strike' :: Strike -> (Sig -> Sig) -> Patch2
strike' :: Strike -> (DryWetRatio -> DryWetRatio) -> Patch2
strike' Strike
spec DryWetRatio -> DryWetRatio
instr = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> SE a) -> Patch a -> Patch a
fx1' DryWetRatio
0.25 (Strike
-> (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
strikeFx Strike
spec) (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ \x :: CsdNote D
x@(D
amp, D
cps) -> (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> DryWetRatio -> (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
0.75 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> DryWetRatio
sig D
amp DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> DryWetRatio
fadeOut (CsdNote D -> D
rel CsdNote D
x)) (DryWetRatio -> DryWetRatio) -> DryWetRatio -> DryWetRatio
forall a b. (a -> b) -> a -> b
$ DryWetRatio -> DryWetRatio
instr (D -> DryWetRatio
sig D
cps)
  where rel :: CsdNote D -> D
rel CsdNote D
a = CsdNote D -> Strike -> D
strikeRelease CsdNote D
a Strike
spec

data Size = Small | Medium | Large | Huge

nextSize :: Size -> Size
nextSize Size
x = case Size
x of
  Size
Small -> Size
Medium
  Size
Medium -> Size
Large
  Size
Large -> Size
Huge
  Size
Huge -> Size
Huge

prevSize :: Size -> Size
prevSize Size
x = case Size
x of
  Size
Small -> Size
Small
  Size
Medium -> Size
Small
  Size
Large -> Size
Medium
  Size
Huge -> Size
Large

toStrikeSpec :: Size -> Size -> Strike
toStrikeSpec :: Size -> Size -> Strike
toStrikeSpec Size
revSpec Size
restSpec = Strike
  { strikeReverb :: (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
strikeReverb  = Size -> (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
toReverb Size
revSpec
  , strikeRel :: D
strikeRel = Size -> D
toRel Size
restSpec
  , strikeHasDelay :: Bool
strikeHasDelay = Size -> Bool
toHasDelay Size
restSpec }

toReverb :: Size -> (Sig2  -> Sig2)
toReverb :: Size -> (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
toReverb Size
x = case Size
x of
  Size
Small -> (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallRoom2
  Size
Medium -> (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallHall2
  Size
Large -> (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2
  Size
Huge -> (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
magicCave2

toRel :: Size -> D
toRel :: Size -> D
toRel Size
x = case Size
x of
  Size
Small -> D
0.4
  Size
Medium -> D
1.5
  Size
Large -> D
2.5
  Size
Huge -> D
4.5

toGain :: Size -> Sig
toGain :: Size -> DryWetRatio
toGain Size
x = case Size
x of
  Size
Small -> DryWetRatio
0.85
  Size
Medium -> DryWetRatio
0.75
  Size
Large -> DryWetRatio
0.6
  Size
Huge -> DryWetRatio
0.45

toHasDelay :: Size -> Bool
toHasDelay :: Size -> Bool
toHasDelay Size
x = case Size
x of
  Size
Small -> Bool
False
  Size
_     -> Bool
True

dahinaSize :: Size
dahinaSize        = Size
Small
banyanSize :: Size
banyanSize        = Size
Medium
xylophoneSize :: Size
xylophoneSize     = Size
Small
tibetanBowl152Size :: Size
tibetanBowl152Size    = Size
Medium
tibetanBowl140Size :: Size
tibetanBowl140Size    = Size
Small
tibetanBowl180Size :: Size
tibetanBowl180Size    = Size
Medium
spinelSphereSize :: Size
spinelSphereSize      = Size
Small
potLidSize :: Size
potLidSize            = Size
Medium
redCedarWoodPlateSize :: Size
redCedarWoodPlateSize = Size
Small
tubularBellSize :: Size
tubularBellSize       = Size
Large
redwoodPlateSize :: Size
redwoodPlateSize      = Size
Small
douglasFirWoodPlateSize :: Size
douglasFirWoodPlateSize = Size
Small
uniformWoodenBarSize :: Size
uniformWoodenBarSize = Size
Small
uniformAluminumBarSize :: Size
uniformAluminumBarSize = Size
Small
vibraphone1Size :: Size
vibraphone1Size = Size
Medium
vibraphone2Size :: Size
vibraphone2Size = Size
Medium
chalandiPlatesSize :: Size
chalandiPlatesSize = Size
Medium
wineGlassSize :: Size
wineGlassSize  = Size
Medium
smallHandbellSize :: Size
smallHandbellSize = Size
Medium
albertClockBellBelfastSize :: Size
albertClockBellBelfastSize = Size
Large
woodBlockSize :: Size
woodBlockSize = Size
Small

smallStrike :: Size -> (Sig -> Sig) -> Patch2
smallStrike :: Size -> (DryWetRatio -> DryWetRatio) -> Patch2
smallStrike Size
size = Size -> Size -> (DryWetRatio -> DryWetRatio) -> Patch2
mediumStrike' (Size -> Size
prevSize Size
size) Size
size

mediumStrike :: Size -> (Sig -> Sig) -> Patch2
mediumStrike :: Size -> (DryWetRatio -> DryWetRatio) -> Patch2
mediumStrike Size
size = Size -> Size -> (DryWetRatio -> DryWetRatio) -> Patch2
mediumStrike' Size
size Size
size

largeStrike :: Size -> (Sig -> Sig) -> Patch2
largeStrike :: Size -> (DryWetRatio -> DryWetRatio) -> Patch2
largeStrike Size
size = Size -> Size -> (DryWetRatio -> DryWetRatio) -> Patch2
mediumStrike' (Size -> Size
nextSize Size
size) Size
size

magicStrike :: Size -> (Sig -> Sig) -> Patch2
magicStrike :: Size -> (DryWetRatio -> DryWetRatio) -> Patch2
magicStrike Size
size = Size -> Size -> (DryWetRatio -> DryWetRatio) -> Patch2
mediumStrike' (Size -> Size
nextSize (Size -> Size) -> Size -> Size
forall a b. (a -> b) -> a -> b
$ Size -> Size
nextSize Size
size) Size
size

mediumStrike' :: Size -> Size -> (Sig -> Sig) -> Patch2
mediumStrike' :: Size -> Size -> (DryWetRatio -> DryWetRatio) -> Patch2
mediumStrike' Size
revSize Size
size DryWetRatio -> DryWetRatio
f = (Instr D (DryWetRatio, DryWetRatio)
 -> Instr D (DryWetRatio, DryWetRatio))
-> Patch2 -> Patch2
forall a. (Instr D a -> Instr D a) -> Patch a -> Patch a
mapPatchInstr (\Instr D (DryWetRatio, DryWetRatio)
instr -> DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul (Size -> DryWetRatio
toGain Size
size) (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Instr D (DryWetRatio, DryWetRatio)
-> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Instr D (DryWetRatio, DryWetRatio)
instr) Patch2
p
  where p :: Patch2
p = Strike -> (DryWetRatio -> DryWetRatio) -> Patch2
strike' (Size -> Size -> Strike
toStrikeSpec Size
revSize Size
size) DryWetRatio -> DryWetRatio
f


smallDahina :: Patch2
smallDahina = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
smallStrike Size
dahinaSize DryWetRatio -> DryWetRatio
C.dahina
dahina :: Patch2
dahina = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
mediumStrike Size
dahinaSize DryWetRatio -> DryWetRatio
C.dahina
largeDahina :: Patch2
largeDahina = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
largeStrike Size
dahinaSize DryWetRatio -> DryWetRatio
C.dahina
magicDahina :: Patch2
magicDahina = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
magicStrike Size
dahinaSize DryWetRatio -> DryWetRatio
C.dahina

smallBanyan :: Patch2
smallBanyan = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
smallStrike Size
banyanSize DryWetRatio -> DryWetRatio
C.banyan
banyan :: Patch2
banyan = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
mediumStrike Size
banyanSize DryWetRatio -> DryWetRatio
C.banyan
largeBanyan :: Patch2
largeBanyan = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
largeStrike Size
banyanSize DryWetRatio -> DryWetRatio
C.banyan
magicBanyan :: Patch2
magicBanyan = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
magicStrike Size
banyanSize DryWetRatio -> DryWetRatio
C.banyan

smallXylophone :: Patch2
smallXylophone = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
smallStrike Size
xylophoneSize DryWetRatio -> DryWetRatio
C.xylophone
xylophone :: Patch2
xylophone = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
mediumStrike Size
xylophoneSize DryWetRatio -> DryWetRatio
C.xylophone
largeXylophone :: Patch2
largeXylophone = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
largeStrike Size
xylophoneSize DryWetRatio -> DryWetRatio
C.xylophone
magicXylophone :: Patch2
magicXylophone = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
magicStrike Size
xylophoneSize DryWetRatio -> DryWetRatio
C.xylophone

smallTibetanBowl180 :: Patch2
smallTibetanBowl180 = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
smallStrike Size
tibetanBowl180Size DryWetRatio -> DryWetRatio
C.tibetanBowl180
tibetanBowl180 :: Patch2
tibetanBowl180 = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
mediumStrike Size
tibetanBowl180Size DryWetRatio -> DryWetRatio
C.tibetanBowl180
largeTibetanBowl180 :: Patch2
largeTibetanBowl180 = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
largeStrike Size
tibetanBowl180Size DryWetRatio -> DryWetRatio
C.tibetanBowl180
magicTibetanBowl180 :: Patch2
magicTibetanBowl180 = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
magicStrike Size
tibetanBowl180Size DryWetRatio -> DryWetRatio
C.tibetanBowl180

smallSpinelSphere :: Patch2
smallSpinelSphere = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
smallStrike Size
spinelSphereSize DryWetRatio -> DryWetRatio
C.spinelSphere
spinelSphere :: Patch2
spinelSphere = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
mediumStrike Size
spinelSphereSize DryWetRatio -> DryWetRatio
C.spinelSphere
largeSpinelSphere :: Patch2
largeSpinelSphere = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
largeStrike Size
spinelSphereSize DryWetRatio -> DryWetRatio
C.spinelSphere
magicSpinelSphere :: Patch2
magicSpinelSphere = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
magicStrike Size
spinelSphereSize DryWetRatio -> DryWetRatio
C.spinelSphere

smallPotLid :: Patch2
smallPotLid = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
smallStrike Size
potLidSize DryWetRatio -> DryWetRatio
C.potLid
potLid :: Patch2
potLid = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
mediumStrike Size
potLidSize DryWetRatio -> DryWetRatio
C.potLid
largePotLid :: Patch2
largePotLid = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
largeStrike Size
potLidSize DryWetRatio -> DryWetRatio
C.potLid
magicPotLid :: Patch2
magicPotLid = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
magicStrike Size
potLidSize DryWetRatio -> DryWetRatio
C.potLid

smallRedCedarWoodPlate :: Patch2
smallRedCedarWoodPlate = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
smallStrike Size
redCedarWoodPlateSize DryWetRatio -> DryWetRatio
C.redCedarWoodPlate
redCedarWoodPlate :: Patch2
redCedarWoodPlate = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
mediumStrike Size
redCedarWoodPlateSize DryWetRatio -> DryWetRatio
C.redCedarWoodPlate
largeRedCedarWoodPlate :: Patch2
largeRedCedarWoodPlate = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
largeStrike Size
redCedarWoodPlateSize DryWetRatio -> DryWetRatio
C.redCedarWoodPlate
magicRedCedarWoodPlate :: Patch2
magicRedCedarWoodPlate = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
magicStrike Size
redCedarWoodPlateSize DryWetRatio -> DryWetRatio
C.redCedarWoodPlate

smallTubularBell :: Patch2
smallTubularBell = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
smallStrike Size
tubularBellSize DryWetRatio -> DryWetRatio
C.tubularBell
tubularBell :: Patch2
tubularBell = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
mediumStrike Size
tubularBellSize DryWetRatio -> DryWetRatio
C.tubularBell
largeTubularBell :: Patch2
largeTubularBell = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
largeStrike Size
tubularBellSize DryWetRatio -> DryWetRatio
C.tubularBell
magicTubularBell :: Patch2
magicTubularBell = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
magicStrike Size
tubularBellSize DryWetRatio -> DryWetRatio
C.tubularBell

smallRedwoodPlate :: Patch2
smallRedwoodPlate = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
smallStrike Size
redwoodPlateSize DryWetRatio -> DryWetRatio
C.redwoodPlate
redwoodPlate :: Patch2
redwoodPlate = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
mediumStrike Size
redwoodPlateSize DryWetRatio -> DryWetRatio
C.redwoodPlate
largeRedwoodPlate :: Patch2
largeRedwoodPlate = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
largeStrike Size
redwoodPlateSize DryWetRatio -> DryWetRatio
C.redwoodPlate
magicRedwoodPlate :: Patch2
magicRedwoodPlate = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
magicStrike Size
redwoodPlateSize DryWetRatio -> DryWetRatio
C.redwoodPlate

smallDouglasFirWoodPlate :: Patch2
smallDouglasFirWoodPlate = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
smallStrike Size
douglasFirWoodPlateSize DryWetRatio -> DryWetRatio
C.douglasFirWoodPlate
douglasFirWoodPlate :: Patch2
douglasFirWoodPlate = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
mediumStrike Size
douglasFirWoodPlateSize DryWetRatio -> DryWetRatio
C.douglasFirWoodPlate
largeDouglasFirWoodPlate :: Patch2
largeDouglasFirWoodPlate = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
largeStrike Size
douglasFirWoodPlateSize DryWetRatio -> DryWetRatio
C.douglasFirWoodPlate
magicDouglasFirWoodPlate :: Patch2
magicDouglasFirWoodPlate = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
magicStrike Size
douglasFirWoodPlateSize DryWetRatio -> DryWetRatio
C.douglasFirWoodPlate

smallUniformWoodenBar :: Patch2
smallUniformWoodenBar = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
smallStrike Size
uniformWoodenBarSize DryWetRatio -> DryWetRatio
C.uniformWoodenBar
uniformWoodenBar :: Patch2
uniformWoodenBar = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
mediumStrike Size
uniformWoodenBarSize DryWetRatio -> DryWetRatio
C.uniformWoodenBar
largeUniformWoodenBar :: Patch2
largeUniformWoodenBar = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
largeStrike Size
uniformWoodenBarSize DryWetRatio -> DryWetRatio
C.uniformWoodenBar
magicUniformWoodenBar :: Patch2
magicUniformWoodenBar = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
magicStrike Size
uniformWoodenBarSize DryWetRatio -> DryWetRatio
C.uniformWoodenBar

smallUniformAluminumBar :: Patch2
smallUniformAluminumBar = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
smallStrike Size
uniformAluminumBarSize DryWetRatio -> DryWetRatio
C.uniformAluminumBar
uniformAluminumBar :: Patch2
uniformAluminumBar = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
mediumStrike Size
uniformAluminumBarSize DryWetRatio -> DryWetRatio
C.uniformAluminumBar
largeUniformAluminumBar :: Patch2
largeUniformAluminumBar = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
largeStrike Size
uniformAluminumBarSize DryWetRatio -> DryWetRatio
C.uniformAluminumBar
magicUniformAluminumBar :: Patch2
magicUniformAluminumBar = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
magicStrike Size
uniformAluminumBarSize DryWetRatio -> DryWetRatio
C.uniformAluminumBar

smallVibraphone1 :: Patch2
smallVibraphone1 = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
smallStrike Size
vibraphone1Size DryWetRatio -> DryWetRatio
C.vibraphone1
vibraphone1 :: Patch2
vibraphone1 = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
mediumStrike Size
vibraphone1Size DryWetRatio -> DryWetRatio
C.vibraphone1
largeVibraphone1 :: Patch2
largeVibraphone1 = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
largeStrike Size
vibraphone1Size DryWetRatio -> DryWetRatio
C.vibraphone1
magicVibraphone1 :: Patch2
magicVibraphone1 = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
magicStrike Size
vibraphone1Size DryWetRatio -> DryWetRatio
C.vibraphone1

smallVibraphone2 :: Patch2
smallVibraphone2 = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
smallStrike Size
vibraphone2Size DryWetRatio -> DryWetRatio
C.vibraphone2
vibraphone2 :: Patch2
vibraphone2 = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
mediumStrike Size
vibraphone2Size DryWetRatio -> DryWetRatio
C.vibraphone2
largeVibraphone2 :: Patch2
largeVibraphone2 = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
largeStrike Size
vibraphone2Size DryWetRatio -> DryWetRatio
C.vibraphone2
magicVibraphone2 :: Patch2
magicVibraphone2 = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
magicStrike Size
vibraphone2Size DryWetRatio -> DryWetRatio
C.vibraphone2

smallChalandiPlates :: Patch2
smallChalandiPlates = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
smallStrike Size
chalandiPlatesSize DryWetRatio -> DryWetRatio
C.chalandiPlates
chalandiPlates :: Patch2
chalandiPlates = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
mediumStrike Size
chalandiPlatesSize DryWetRatio -> DryWetRatio
C.chalandiPlates
largeChalandiPlates :: Patch2
largeChalandiPlates = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
largeStrike Size
chalandiPlatesSize DryWetRatio -> DryWetRatio
C.chalandiPlates
magicChalandiPlates :: Patch2
magicChalandiPlates = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
magicStrike Size
chalandiPlatesSize DryWetRatio -> DryWetRatio
C.chalandiPlates

smallTibetanBowl152 :: Patch2
smallTibetanBowl152 = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
smallStrike Size
tibetanBowl152Size DryWetRatio -> DryWetRatio
C.tibetanBowl152
tibetanBowl152 :: Patch2
tibetanBowl152 = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
mediumStrike Size
tibetanBowl152Size DryWetRatio -> DryWetRatio
C.tibetanBowl152
largeTibetanBowl152 :: Patch2
largeTibetanBowl152 = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
largeStrike Size
tibetanBowl152Size DryWetRatio -> DryWetRatio
C.tibetanBowl152
magicTibetanBowl152 :: Patch2
magicTibetanBowl152 = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
magicStrike Size
tibetanBowl152Size DryWetRatio -> DryWetRatio
C.tibetanBowl152

smallTibetanBowl140 :: Patch2
smallTibetanBowl140 = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
smallStrike Size
tibetanBowl140Size DryWetRatio -> DryWetRatio
C.tibetanBowl140
tibetanBowl140 :: Patch2
tibetanBowl140 = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
mediumStrike Size
tibetanBowl140Size DryWetRatio -> DryWetRatio
C.tibetanBowl140
largeTibetanBowl140 :: Patch2
largeTibetanBowl140 = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
largeStrike Size
tibetanBowl140Size DryWetRatio -> DryWetRatio
C.tibetanBowl140
magicTibetanBowl140 :: Patch2
magicTibetanBowl140 = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
magicStrike Size
tibetanBowl140Size DryWetRatio -> DryWetRatio
C.tibetanBowl140

smallWineGlass :: Patch2
smallWineGlass = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
smallStrike Size
wineGlassSize DryWetRatio -> DryWetRatio
C.wineGlass
wineGlass :: Patch2
wineGlass = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
mediumStrike Size
wineGlassSize DryWetRatio -> DryWetRatio
C.wineGlass
largeWineGlass :: Patch2
largeWineGlass = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
largeStrike Size
wineGlassSize DryWetRatio -> DryWetRatio
C.wineGlass
magicWineGlass :: Patch2
magicWineGlass = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
magicStrike Size
wineGlassSize DryWetRatio -> DryWetRatio
C.wineGlass

smallHandbell :: Patch2
smallHandbell = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
smallStrike Size
smallHandbellSize DryWetRatio -> DryWetRatio
C.smallHandbell
handbell :: Patch2
handbell = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
mediumStrike Size
smallHandbellSize DryWetRatio -> DryWetRatio
C.smallHandbell
largeHandbell :: Patch2
largeHandbell = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
largeStrike Size
smallHandbellSize DryWetRatio -> DryWetRatio
C.smallHandbell
magicHandbell :: Patch2
magicHandbell = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
magicStrike Size
smallHandbellSize DryWetRatio -> DryWetRatio
C.smallHandbell

smallAlbertClockBellBelfast :: Patch2
smallAlbertClockBellBelfast = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
smallStrike Size
albertClockBellBelfastSize DryWetRatio -> DryWetRatio
C.albertClockBellBelfast
albertClockBellBelfast :: Patch2
albertClockBellBelfast = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
mediumStrike Size
albertClockBellBelfastSize DryWetRatio -> DryWetRatio
C.albertClockBellBelfast
largeAlbertClockBellBelfast :: Patch2
largeAlbertClockBellBelfast = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
largeStrike Size
albertClockBellBelfastSize DryWetRatio -> DryWetRatio
C.albertClockBellBelfast
magicAlbertClockBellBelfast :: Patch2
magicAlbertClockBellBelfast = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
magicStrike Size
albertClockBellBelfastSize DryWetRatio -> DryWetRatio
C.albertClockBellBelfast

smallWoodBlock :: Patch2
smallWoodBlock = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
smallStrike Size
woodBlockSize DryWetRatio -> DryWetRatio
C.woodBlock
woodBlock :: Patch2
woodBlock = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
mediumStrike Size
woodBlockSize DryWetRatio -> DryWetRatio
C.woodBlock
largeWoodBlock :: Patch2
largeWoodBlock = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
largeStrike Size
woodBlockSize DryWetRatio -> DryWetRatio
C.woodBlock
magicWoodBlock :: Patch2
magicWoodBlock = Size -> (DryWetRatio -> DryWetRatio) -> Patch2
magicStrike Size
woodBlockSize DryWetRatio -> DryWetRatio
C.woodBlock

---------------------------------------------------------------
-- scrape

-- scrapePatch

scrapeRelease :: (D, D) -> D -> D
scrapeRelease :: CsdNote D -> D -> D
scrapeRelease (D
amp, D
cps) D
rel = (D
0.85 D -> D -> D
forall a. Num a => a -> a -> a
* D
rel D -> D -> D
forall a. Num a => a -> a -> a
* D
amp) D -> D -> D
forall a. Num a => a -> a -> a
* D
amp D -> D -> D
forall a. Num a => a -> a -> a
+ D
rel D -> D -> D
forall a. Num a => a -> a -> a
- (D
cps D -> D -> D
forall a. Fractional a => a -> a -> a
/ D
10000)

scrapeFast :: DryWetRatio -> Modes DryWetRatio -> Patch2
scrapeFast DryWetRatio
k Modes DryWetRatio
m = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.15 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ \x :: CsdNote D
x@(D
amp, D
cps) -> (DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
0.75 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> DryWetRatio
sig D
amp DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio
k DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> D -> DryWetRatio
fades D
0.02 (CsdNote D -> D -> D
scrapeRelease CsdNote D
x D
0.25)) (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> DryWetRatio
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> SE DryWetRatio)
-> DryWetRatio
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Modes DryWetRatio -> DryWetRatio -> SE DryWetRatio
C.scrapeModes Modes DryWetRatio
m) (D -> DryWetRatio
sig D
cps)

scrape :: DryWetRatio -> Modes DryWetRatio -> Patch2
scrape DryWetRatio
k Modes DryWetRatio
m = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.15 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ \x :: CsdNote D
x@(D
amp, D
cps) -> (DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
0.75 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> DryWetRatio
sig D
amp DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio
k DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> D -> DryWetRatio
fades D
0.5 (CsdNote D -> D -> D
scrapeRelease CsdNote D
x D
0.97)) (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> DryWetRatio
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> SE DryWetRatio)
-> DryWetRatio
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Modes DryWetRatio -> DryWetRatio -> SE DryWetRatio
C.scrapeModes Modes DryWetRatio
m) (D -> DryWetRatio
sig D
cps)

scrapem :: DryWetRatio -> Modes DryWetRatio -> Patch2
scrapem DryWetRatio
k Modes DryWetRatio
m = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.15 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ MonoInstr (DryWetRatio, DryWetRatio) -> Patch2
forall a. MonoInstr a -> Patch a
monoSynt (MonoInstr (DryWetRatio, DryWetRatio) -> Patch2)
-> MonoInstr (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (\(DryWetRatio
amp, DryWetRatio
cps) -> (DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
0.75 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio
amp DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio
k DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> D -> DryWetRatio
fades D
0.5 D
1.97) (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> DryWetRatio
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> SE DryWetRatio)
-> DryWetRatio
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Modes DryWetRatio -> DryWetRatio -> SE DryWetRatio
C.scrapeModes Modes DryWetRatio
m) DryWetRatio
cps) ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> (MonoArg -> (DryWetRatio, DryWetRatio))
-> MonoInstr (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MonoArg -> (DryWetRatio, DryWetRatio)
monoArgToNote

scrapePad :: DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePad DryWetRatio
k Modes DryWetRatio
m =
  DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.15 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$
    Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ \x :: CsdNote D
x@(D
amp, D
cps) -> (DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
0.75 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> DryWetRatio
sig D
amp DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio
k DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> D -> DryWetRatio
fades D
0.5 (CsdNote D -> D -> D
scrapeRelease CsdNote D
x D
2.27)) (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> DryWetRatio
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> SE DryWetRatio)
-> DryWetRatio
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Modes DryWetRatio -> DryWetRatio -> SE DryWetRatio
C.scrapeModes Modes DryWetRatio
m) (D -> DryWetRatio
sig D
cps)

scrapePadm :: DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePadm DryWetRatio
k Modes DryWetRatio
m = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.15 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ MonoInstr (DryWetRatio, DryWetRatio) -> Patch2
forall a. MonoInstr a -> Patch a
monoSynt (MonoInstr (DryWetRatio, DryWetRatio) -> Patch2)
-> MonoInstr (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (\(DryWetRatio
amp, DryWetRatio
cps) -> (DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
0.75 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio
amp DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio
k DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> D -> DryWetRatio
fades D
0.5 D
2.27) (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> DryWetRatio
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> SE DryWetRatio)
-> DryWetRatio
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Modes DryWetRatio -> DryWetRatio -> SE DryWetRatio
C.scrapeModes Modes DryWetRatio
m) DryWetRatio
cps) ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> (MonoArg -> (DryWetRatio, DryWetRatio))
-> MonoInstr (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MonoArg -> (DryWetRatio, DryWetRatio)
monoArgToNote

scaleScrapeDahina :: DryWetRatio
scaleScrapeDahina = DryWetRatio
1.32
scaleScrapeBanyan :: DryWetRatio
scaleScrapeBanyan = DryWetRatio
0.95
scaleScrapeXylophone :: DryWetRatio
scaleScrapeXylophone = DryWetRatio
1
scaleScrapeTibetanBowl180 :: DryWetRatio
scaleScrapeTibetanBowl180 = DryWetRatio
0.55
scaleScrapeSpinelSphere :: DryWetRatio
scaleScrapeSpinelSphere = DryWetRatio
1.4
scaleScrapePotLid :: DryWetRatio
scaleScrapePotLid = DryWetRatio
0.65
scaleScrapeRedCedarWoodPlate :: DryWetRatio
scaleScrapeRedCedarWoodPlate = DryWetRatio
1
scaleScrapeTubularBell :: DryWetRatio
scaleScrapeTubularBell = DryWetRatio
0.75
scaleScrapeRedwoodPlate :: DryWetRatio
scaleScrapeRedwoodPlate = DryWetRatio
1
scaleScrapeDouglasFirWoodPlate :: DryWetRatio
scaleScrapeDouglasFirWoodPlate = DryWetRatio
1
scaleScrapeUniformWoodenBar :: DryWetRatio
scaleScrapeUniformWoodenBar = DryWetRatio
1
scaleScrapeUniformAluminumBar :: DryWetRatio
scaleScrapeUniformAluminumBar = DryWetRatio
0.75
scaleScrapeVibraphone1 :: DryWetRatio
scaleScrapeVibraphone1 = DryWetRatio
0.9
scaleScrapeVibraphone2 :: DryWetRatio
scaleScrapeVibraphone2 = DryWetRatio
0.9
scaleScrapeChalandiPlates :: DryWetRatio
scaleScrapeChalandiPlates = DryWetRatio
1
scaleScrapeTibetanBowl152 :: DryWetRatio
scaleScrapeTibetanBowl152 = DryWetRatio
0.65
scaleScrapeTibetanBowl140 :: DryWetRatio
scaleScrapeTibetanBowl140 = DryWetRatio
0.75
scaleScrapeWineGlass :: DryWetRatio
scaleScrapeWineGlass = DryWetRatio
0.6
scaleScrapeSmallHandbell :: DryWetRatio
scaleScrapeSmallHandbell = DryWetRatio
1
scaleScrapeAlbertClockBellBelfast :: DryWetRatio
scaleScrapeAlbertClockBellBelfast = DryWetRatio
0.5
scaleScrapeWoodBlock :: DryWetRatio
scaleScrapeWoodBlock = DryWetRatio
1.32

scrapeDahina :: Patch2
scrapeDahina = DryWetRatio -> Modes DryWetRatio -> Patch2
scrape DryWetRatio
scaleScrapeDahina Modes DryWetRatio
forall a. Fractional a => Modes a
C.dahinaModes
scrapeBanyan :: Patch2
scrapeBanyan = DryWetRatio -> Modes DryWetRatio -> Patch2
scrape DryWetRatio
scaleScrapeBanyan Modes DryWetRatio
forall a. Fractional a => Modes a
C.banyanModes
scrapeXylophone :: Patch2
scrapeXylophone = DryWetRatio -> Modes DryWetRatio -> Patch2
scrape DryWetRatio
scaleScrapeXylophone Modes DryWetRatio
forall a. Fractional a => Modes a
C.xylophoneModes
scrapeTibetanBowl180 :: Patch2
scrapeTibetanBowl180 = DryWetRatio -> Modes DryWetRatio -> Patch2
scrape DryWetRatio
scaleScrapeTibetanBowl180 Modes DryWetRatio
forall a. Fractional a => Modes a
C.tibetanBowlModes180
scrapeSpinelSphere :: Patch2
scrapeSpinelSphere = DryWetRatio -> Modes DryWetRatio -> Patch2
scrape DryWetRatio
scaleScrapeSpinelSphere Modes DryWetRatio
forall a. Fractional a => Modes a
C.spinelSphereModes
scrapePotLid :: Patch2
scrapePotLid = DryWetRatio -> Modes DryWetRatio -> Patch2
scrape DryWetRatio
scaleScrapePotLid Modes DryWetRatio
forall a. Fractional a => Modes a
C.potLidModes
scrapeRedCedarWoodPlate :: Patch2
scrapeRedCedarWoodPlate = DryWetRatio -> Modes DryWetRatio -> Patch2
scrape DryWetRatio
scaleScrapeRedCedarWoodPlate Modes DryWetRatio
forall a. Fractional a => Modes a
C.redCedarWoodPlateModes
scrapeTubularBell :: Patch2
scrapeTubularBell = DryWetRatio -> Modes DryWetRatio -> Patch2
scrape DryWetRatio
scaleScrapeTubularBell Modes DryWetRatio
forall a. Fractional a => Modes a
C.tubularBellModes
scrapeRedwoodPlate :: Patch2
scrapeRedwoodPlate = DryWetRatio -> Modes DryWetRatio -> Patch2
scrape DryWetRatio
scaleScrapeRedwoodPlate Modes DryWetRatio
forall a. Fractional a => Modes a
C.redwoodPlateModes
scrapeDouglasFirWoodPlate :: Patch2
scrapeDouglasFirWoodPlate = DryWetRatio -> Modes DryWetRatio -> Patch2
scrape DryWetRatio
scaleScrapeDouglasFirWoodPlate Modes DryWetRatio
forall a. Fractional a => Modes a
C.douglasFirWoodPlateModes
scrapeUniformWoodenBar :: Patch2
scrapeUniformWoodenBar = DryWetRatio -> Modes DryWetRatio -> Patch2
scrape DryWetRatio
scaleScrapeUniformWoodenBar Modes DryWetRatio
forall a. Fractional a => Modes a
C.uniformWoodenBarModes
scrapeUniformAluminumBar :: Patch2
scrapeUniformAluminumBar = DryWetRatio -> Modes DryWetRatio -> Patch2
scrape DryWetRatio
scaleScrapeUniformAluminumBar Modes DryWetRatio
forall a. Fractional a => Modes a
C.uniformAluminumBarModes
scrapeVibraphone1 :: Patch2
scrapeVibraphone1 = DryWetRatio -> Modes DryWetRatio -> Patch2
scrape DryWetRatio
scaleScrapeVibraphone1 Modes DryWetRatio
forall a. Fractional a => Modes a
C.vibraphoneModes1
scrapeVibraphone2 :: Patch2
scrapeVibraphone2 = DryWetRatio -> Modes DryWetRatio -> Patch2
scrape DryWetRatio
scaleScrapeVibraphone2 Modes DryWetRatio
forall a. Fractional a => Modes a
C.vibraphoneModes2
scrapeChalandiPlates :: Patch2
scrapeChalandiPlates = DryWetRatio -> Modes DryWetRatio -> Patch2
scrape DryWetRatio
scaleScrapeChalandiPlates Modes DryWetRatio
forall a. Fractional a => Modes a
C.chalandiPlatesModes
scrapeTibetanBowl152 :: Patch2
scrapeTibetanBowl152 = DryWetRatio -> Modes DryWetRatio -> Patch2
scrape DryWetRatio
scaleScrapeTibetanBowl152 Modes DryWetRatio
forall a. Fractional a => Modes a
C.tibetanBowlModes152
scrapeTibetanBowl140 :: Patch2
scrapeTibetanBowl140 = DryWetRatio -> Modes DryWetRatio -> Patch2
scrape DryWetRatio
scaleScrapeTibetanBowl140 Modes DryWetRatio
forall a. Fractional a => Modes a
C.tibetanBowlModes140
scrapeWineGlass :: Patch2
scrapeWineGlass = DryWetRatio -> Modes DryWetRatio -> Patch2
scrape DryWetRatio
scaleScrapeWineGlass Modes DryWetRatio
forall a. Fractional a => Modes a
C.wineGlassModes
scrapeSmallHandbell :: Patch2
scrapeSmallHandbell = DryWetRatio -> Modes DryWetRatio -> Patch2
scrape DryWetRatio
scaleScrapeSmallHandbell Modes DryWetRatio
forall a. Fractional a => Modes a
C.smallHandbellModes
scrapeAlbertClockBellBelfast :: Patch2
scrapeAlbertClockBellBelfast = DryWetRatio -> Modes DryWetRatio -> Patch2
scrape DryWetRatio
scaleScrapeAlbertClockBellBelfast Modes DryWetRatio
forall a. Fractional a => Modes a
C.albertClockBellBelfastModes
scrapeWoodBlock :: Patch2
scrapeWoodBlock = DryWetRatio -> Modes DryWetRatio -> Patch2
scrape DryWetRatio
scaleScrapeWoodBlock Modes DryWetRatio
forall a. Fractional a => Modes a
C.woodBlockModes

scrapeDahinam :: Patch2
scrapeDahinam = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapem DryWetRatio
scaleScrapeDahina Modes DryWetRatio
forall a. Fractional a => Modes a
C.dahinaModes
scrapeBanyanm :: Patch2
scrapeBanyanm = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapem DryWetRatio
scaleScrapeBanyan Modes DryWetRatio
forall a. Fractional a => Modes a
C.banyanModes
scrapeXylophonem :: Patch2
scrapeXylophonem = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapem DryWetRatio
scaleScrapeXylophone Modes DryWetRatio
forall a. Fractional a => Modes a
C.xylophoneModes
scrapeTibetanBowl180m :: Patch2
scrapeTibetanBowl180m = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapem DryWetRatio
scaleScrapeTibetanBowl180 Modes DryWetRatio
forall a. Fractional a => Modes a
C.tibetanBowlModes180
scrapeSpinelSpherem :: Patch2
scrapeSpinelSpherem = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapem DryWetRatio
scaleScrapeSpinelSphere Modes DryWetRatio
forall a. Fractional a => Modes a
C.spinelSphereModes
scrapePotLidm :: Patch2
scrapePotLidm = DryWetRatio -> Modes DryWetRatio -> Patch2
scrape DryWetRatio
scaleScrapePotLid Modes DryWetRatio
forall a. Fractional a => Modes a
C.potLidModes
scrapeRedCedarWoodPlatem :: Patch2
scrapeRedCedarWoodPlatem = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapem DryWetRatio
scaleScrapeRedCedarWoodPlate Modes DryWetRatio
forall a. Fractional a => Modes a
C.redCedarWoodPlateModes
scrapeTubularBellm :: Patch2
scrapeTubularBellm = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapem DryWetRatio
scaleScrapeTubularBell Modes DryWetRatio
forall a. Fractional a => Modes a
C.tubularBellModes
scrapeRedwoodPlatem :: Patch2
scrapeRedwoodPlatem = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapem DryWetRatio
scaleScrapeRedwoodPlate Modes DryWetRatio
forall a. Fractional a => Modes a
C.redwoodPlateModes
scrapeDouglasFirWoodPlatem :: Patch2
scrapeDouglasFirWoodPlatem = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapem DryWetRatio
scaleScrapeDouglasFirWoodPlate Modes DryWetRatio
forall a. Fractional a => Modes a
C.douglasFirWoodPlateModes
scrapeUniformWoodenBarm :: Patch2
scrapeUniformWoodenBarm = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapem DryWetRatio
scaleScrapeUniformWoodenBar Modes DryWetRatio
forall a. Fractional a => Modes a
C.uniformWoodenBarModes
scrapeUniformAluminumBarm :: Patch2
scrapeUniformAluminumBarm = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapem DryWetRatio
scaleScrapeUniformAluminumBar Modes DryWetRatio
forall a. Fractional a => Modes a
C.uniformAluminumBarModes
scrapeVibraphone1m :: Patch2
scrapeVibraphone1m = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapem DryWetRatio
scaleScrapeVibraphone1 Modes DryWetRatio
forall a. Fractional a => Modes a
C.vibraphoneModes1
scrapeVibraphone2m :: Patch2
scrapeVibraphone2m = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapem DryWetRatio
scaleScrapeVibraphone2 Modes DryWetRatio
forall a. Fractional a => Modes a
C.vibraphoneModes2
scrapeChalandiPlatesm :: Patch2
scrapeChalandiPlatesm = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapem DryWetRatio
scaleScrapeChalandiPlates Modes DryWetRatio
forall a. Fractional a => Modes a
C.chalandiPlatesModes
scrapeTibetanBowl152m :: Patch2
scrapeTibetanBowl152m = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapem DryWetRatio
scaleScrapeTibetanBowl152 Modes DryWetRatio
forall a. Fractional a => Modes a
C.tibetanBowlModes152
scrapeTibetanBowl140m :: Patch2
scrapeTibetanBowl140m = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapem DryWetRatio
scaleScrapeTibetanBowl140 Modes DryWetRatio
forall a. Fractional a => Modes a
C.tibetanBowlModes140
scrapeWineGlassm :: Patch2
scrapeWineGlassm = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapem DryWetRatio
scaleScrapeWineGlass Modes DryWetRatio
forall a. Fractional a => Modes a
C.wineGlassModes
scrapeSmallHandbellm :: Patch2
scrapeSmallHandbellm = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapem DryWetRatio
scaleScrapeSmallHandbell Modes DryWetRatio
forall a. Fractional a => Modes a
C.smallHandbellModes
scrapeAlbertClockBellBelfastm :: Patch2
scrapeAlbertClockBellBelfastm = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapem DryWetRatio
scaleScrapeAlbertClockBellBelfast Modes DryWetRatio
forall a. Fractional a => Modes a
C.albertClockBellBelfastModes
scrapeWoodBlockm :: Patch2
scrapeWoodBlockm = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapem DryWetRatio
scaleScrapeWoodBlock Modes DryWetRatio
forall a. Fractional a => Modes a
C.woodBlockModes

scrapeFastDahina :: Patch2
scrapeFastDahina = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapeFast DryWetRatio
scaleScrapeDahina Modes DryWetRatio
forall a. Fractional a => Modes a
C.dahinaModes
scrapeFastBanyan :: Patch2
scrapeFastBanyan = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapeFast DryWetRatio
scaleScrapeBanyan Modes DryWetRatio
forall a. Fractional a => Modes a
C.banyanModes
scrapeFastXylophone :: Patch2
scrapeFastXylophone = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapeFast DryWetRatio
scaleScrapeXylophone Modes DryWetRatio
forall a. Fractional a => Modes a
C.xylophoneModes
scrapeFastTibetanBowl180 :: Patch2
scrapeFastTibetanBowl180 = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapeFast DryWetRatio
scaleScrapeTibetanBowl180 Modes DryWetRatio
forall a. Fractional a => Modes a
C.tibetanBowlModes180
scrapeFastSpinelSphere :: Patch2
scrapeFastSpinelSphere = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapeFast DryWetRatio
scaleScrapeSpinelSphere Modes DryWetRatio
forall a. Fractional a => Modes a
C.spinelSphereModes
scrapeFastPotLid :: Patch2
scrapeFastPotLid = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapeFast DryWetRatio
scaleScrapePotLid Modes DryWetRatio
forall a. Fractional a => Modes a
C.potLidModes
scrapeFastRedCedarWoodPlate :: Patch2
scrapeFastRedCedarWoodPlate = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapeFast DryWetRatio
scaleScrapeRedCedarWoodPlate Modes DryWetRatio
forall a. Fractional a => Modes a
C.redCedarWoodPlateModes
scrapeFastTubularBell :: Patch2
scrapeFastTubularBell = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapeFast DryWetRatio
scaleScrapeTubularBell Modes DryWetRatio
forall a. Fractional a => Modes a
C.tubularBellModes
scrapeFastRedwoodPlate :: Patch2
scrapeFastRedwoodPlate = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapeFast DryWetRatio
scaleScrapeRedwoodPlate Modes DryWetRatio
forall a. Fractional a => Modes a
C.redwoodPlateModes
scrapeFastDouglasFirWoodPlate :: Patch2
scrapeFastDouglasFirWoodPlate = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapeFast DryWetRatio
scaleScrapeDouglasFirWoodPlate Modes DryWetRatio
forall a. Fractional a => Modes a
C.douglasFirWoodPlateModes
scrapeFastUniformWoodenBar :: Patch2
scrapeFastUniformWoodenBar = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapeFast DryWetRatio
scaleScrapeUniformWoodenBar Modes DryWetRatio
forall a. Fractional a => Modes a
C.uniformWoodenBarModes
scrapeFastUniformAluminumBar :: Patch2
scrapeFastUniformAluminumBar = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapeFast DryWetRatio
scaleScrapeUniformAluminumBar Modes DryWetRatio
forall a. Fractional a => Modes a
C.uniformAluminumBarModes
scrapeFastVibraphone1 :: Patch2
scrapeFastVibraphone1 = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapeFast DryWetRatio
scaleScrapeVibraphone1 Modes DryWetRatio
forall a. Fractional a => Modes a
C.vibraphoneModes1
scrapeFastVibraphone2 :: Patch2
scrapeFastVibraphone2 = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapeFast DryWetRatio
scaleScrapeVibraphone2 Modes DryWetRatio
forall a. Fractional a => Modes a
C.vibraphoneModes2
scrapeFastChalandiPlates :: Patch2
scrapeFastChalandiPlates = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapeFast DryWetRatio
scaleScrapeChalandiPlates Modes DryWetRatio
forall a. Fractional a => Modes a
C.chalandiPlatesModes
scrapeFastTibetanBowl152 :: Patch2
scrapeFastTibetanBowl152 = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapeFast DryWetRatio
scaleScrapeTibetanBowl152 Modes DryWetRatio
forall a. Fractional a => Modes a
C.tibetanBowlModes152
scrapeFastTibetanBowl140 :: Patch2
scrapeFastTibetanBowl140 = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapeFast DryWetRatio
scaleScrapeTibetanBowl140 Modes DryWetRatio
forall a. Fractional a => Modes a
C.tibetanBowlModes140
scrapeFastWineGlass :: Patch2
scrapeFastWineGlass = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapeFast DryWetRatio
scaleScrapeWineGlass Modes DryWetRatio
forall a. Fractional a => Modes a
C.wineGlassModes
scrapeFastSmallHandbell :: Patch2
scrapeFastSmallHandbell = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapeFast DryWetRatio
scaleScrapeSmallHandbell Modes DryWetRatio
forall a. Fractional a => Modes a
C.smallHandbellModes
scrapeFastAlbertClockBellBelfast :: Patch2
scrapeFastAlbertClockBellBelfast = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapeFast DryWetRatio
scaleScrapeAlbertClockBellBelfast Modes DryWetRatio
forall a. Fractional a => Modes a
C.albertClockBellBelfastModes
scrapeFastWoodBlock :: Patch2
scrapeFastWoodBlock = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapeFast DryWetRatio
scaleScrapeWoodBlock Modes DryWetRatio
forall a. Fractional a => Modes a
C.woodBlockModes

scrapePadDahina :: Patch2
scrapePadDahina = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePad DryWetRatio
scaleScrapeDahina Modes DryWetRatio
forall a. Fractional a => Modes a
C.dahinaModes
scrapePadBanyan :: Patch2
scrapePadBanyan = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePad DryWetRatio
scaleScrapeBanyan Modes DryWetRatio
forall a. Fractional a => Modes a
C.banyanModes
scrapePadXylophone :: Patch2
scrapePadXylophone = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePad DryWetRatio
scaleScrapeXylophone Modes DryWetRatio
forall a. Fractional a => Modes a
C.xylophoneModes
scrapePadTibetanBowl180 :: Patch2
scrapePadTibetanBowl180 = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePad DryWetRatio
scaleScrapeTibetanBowl180 Modes DryWetRatio
forall a. Fractional a => Modes a
C.tibetanBowlModes180
scrapePadSpinelSphere :: Patch2
scrapePadSpinelSphere = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePad DryWetRatio
scaleScrapeSpinelSphere Modes DryWetRatio
forall a. Fractional a => Modes a
C.spinelSphereModes
scrapePadPotLid :: Patch2
scrapePadPotLid = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePad DryWetRatio
scaleScrapePotLid Modes DryWetRatio
forall a. Fractional a => Modes a
C.potLidModes
scrapePadRedCedarWoodPlate :: Patch2
scrapePadRedCedarWoodPlate = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePad DryWetRatio
scaleScrapeRedCedarWoodPlate Modes DryWetRatio
forall a. Fractional a => Modes a
C.redCedarWoodPlateModes
scrapePadTubularBell :: Patch2
scrapePadTubularBell = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePad DryWetRatio
scaleScrapeTubularBell Modes DryWetRatio
forall a. Fractional a => Modes a
C.tubularBellModes
scrapePadRedwoodPlate :: Patch2
scrapePadRedwoodPlate = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePad DryWetRatio
scaleScrapeRedwoodPlate Modes DryWetRatio
forall a. Fractional a => Modes a
C.redwoodPlateModes
scrapePadDouglasFirWoodPlate :: Patch2
scrapePadDouglasFirWoodPlate = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePad DryWetRatio
scaleScrapeDouglasFirWoodPlate Modes DryWetRatio
forall a. Fractional a => Modes a
C.douglasFirWoodPlateModes
scrapePadUniformWoodenBar :: Patch2
scrapePadUniformWoodenBar = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePad DryWetRatio
scaleScrapeUniformWoodenBar Modes DryWetRatio
forall a. Fractional a => Modes a
C.uniformWoodenBarModes
scrapePadUniformAluminumBar :: Patch2
scrapePadUniformAluminumBar = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePad DryWetRatio
scaleScrapeUniformAluminumBar Modes DryWetRatio
forall a. Fractional a => Modes a
C.uniformAluminumBarModes
scrapePadVibraphone1 :: Patch2
scrapePadVibraphone1 = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePad DryWetRatio
scaleScrapeVibraphone1 Modes DryWetRatio
forall a. Fractional a => Modes a
C.vibraphoneModes1
scrapePadVibraphone2 :: Patch2
scrapePadVibraphone2 = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePad DryWetRatio
scaleScrapeVibraphone2 Modes DryWetRatio
forall a. Fractional a => Modes a
C.vibraphoneModes2
scrapePadChalandiPlates :: Patch2
scrapePadChalandiPlates = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePad DryWetRatio
scaleScrapeChalandiPlates Modes DryWetRatio
forall a. Fractional a => Modes a
C.chalandiPlatesModes
scrapePadTibetanBowl152 :: Patch2
scrapePadTibetanBowl152 = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePad DryWetRatio
scaleScrapeTibetanBowl152 Modes DryWetRatio
forall a. Fractional a => Modes a
C.tibetanBowlModes152
scrapePadTibetanBowl140 :: Patch2
scrapePadTibetanBowl140 = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePad DryWetRatio
scaleScrapeTibetanBowl140 Modes DryWetRatio
forall a. Fractional a => Modes a
C.tibetanBowlModes140
scrapePadWineGlass :: Patch2
scrapePadWineGlass = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePad DryWetRatio
scaleScrapeWineGlass Modes DryWetRatio
forall a. Fractional a => Modes a
C.wineGlassModes
scrapePadSmallHandbell :: Patch2
scrapePadSmallHandbell = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePad DryWetRatio
scaleScrapeSmallHandbell Modes DryWetRatio
forall a. Fractional a => Modes a
C.smallHandbellModes
scrapePadAlbertClockBellBelfast :: Patch2
scrapePadAlbertClockBellBelfast = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePad DryWetRatio
scaleScrapeAlbertClockBellBelfast Modes DryWetRatio
forall a. Fractional a => Modes a
C.albertClockBellBelfastModes
scrapePadWoodBlock :: Patch2
scrapePadWoodBlock = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePad DryWetRatio
scaleScrapeWoodBlock Modes DryWetRatio
forall a. Fractional a => Modes a
C.woodBlockModes

scrapePadDahinam :: Patch2
scrapePadDahinam = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePadm DryWetRatio
scaleScrapeDahina Modes DryWetRatio
forall a. Fractional a => Modes a
C.dahinaModes
scrapePadBanyanm :: Patch2
scrapePadBanyanm = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePadm DryWetRatio
scaleScrapeBanyan Modes DryWetRatio
forall a. Fractional a => Modes a
C.banyanModes
scrapePadXylophonem :: Patch2
scrapePadXylophonem = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePadm DryWetRatio
scaleScrapeXylophone Modes DryWetRatio
forall a. Fractional a => Modes a
C.xylophoneModes
scrapePadTibetanBowl180m :: Patch2
scrapePadTibetanBowl180m = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePadm DryWetRatio
scaleScrapeTibetanBowl180 Modes DryWetRatio
forall a. Fractional a => Modes a
C.tibetanBowlModes180
scrapePadSpinelSpherem :: Patch2
scrapePadSpinelSpherem = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePadm DryWetRatio
scaleScrapeSpinelSphere Modes DryWetRatio
forall a. Fractional a => Modes a
C.spinelSphereModes
scrapePadPotLidm :: Patch2
scrapePadPotLidm = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePadm DryWetRatio
scaleScrapePotLid Modes DryWetRatio
forall a. Fractional a => Modes a
C.potLidModes
scrapePadRedCedarWoodPlatem :: Patch2
scrapePadRedCedarWoodPlatem = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePadm DryWetRatio
scaleScrapeRedCedarWoodPlate Modes DryWetRatio
forall a. Fractional a => Modes a
C.redCedarWoodPlateModes
scrapePadTubularBellm :: Patch2
scrapePadTubularBellm = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePadm DryWetRatio
scaleScrapeTubularBell Modes DryWetRatio
forall a. Fractional a => Modes a
C.tubularBellModes
scrapePadRedwoodPlatem :: Patch2
scrapePadRedwoodPlatem = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePadm DryWetRatio
scaleScrapeRedwoodPlate Modes DryWetRatio
forall a. Fractional a => Modes a
C.redwoodPlateModes
scrapePadDouglasFirWoodPlatem :: Patch2
scrapePadDouglasFirWoodPlatem = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePadm DryWetRatio
scaleScrapeDouglasFirWoodPlate Modes DryWetRatio
forall a. Fractional a => Modes a
C.douglasFirWoodPlateModes
scrapePadUniformWoodenBarm :: Patch2
scrapePadUniformWoodenBarm = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePadm DryWetRatio
scaleScrapeUniformWoodenBar Modes DryWetRatio
forall a. Fractional a => Modes a
C.uniformWoodenBarModes
scrapePadUniformAluminumBarm :: Patch2
scrapePadUniformAluminumBarm = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePadm DryWetRatio
scaleScrapeUniformAluminumBar Modes DryWetRatio
forall a. Fractional a => Modes a
C.uniformAluminumBarModes
scrapePadVibraphone1m :: Patch2
scrapePadVibraphone1m = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePadm DryWetRatio
scaleScrapeVibraphone1 Modes DryWetRatio
forall a. Fractional a => Modes a
C.vibraphoneModes1
scrapePadVibraphone2m :: Patch2
scrapePadVibraphone2m = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePadm DryWetRatio
scaleScrapeVibraphone2 Modes DryWetRatio
forall a. Fractional a => Modes a
C.vibraphoneModes2
scrapePadChalandiPlatesm :: Patch2
scrapePadChalandiPlatesm = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePadm DryWetRatio
scaleScrapeChalandiPlates Modes DryWetRatio
forall a. Fractional a => Modes a
C.chalandiPlatesModes
scrapePadTibetanBowl152m :: Patch2
scrapePadTibetanBowl152m = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePadm DryWetRatio
scaleScrapeTibetanBowl152 Modes DryWetRatio
forall a. Fractional a => Modes a
C.tibetanBowlModes152
scrapePadTibetanBowl140m :: Patch2
scrapePadTibetanBowl140m = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePadm DryWetRatio
scaleScrapeTibetanBowl140 Modes DryWetRatio
forall a. Fractional a => Modes a
C.tibetanBowlModes140
scrapePadWineGlassm :: Patch2
scrapePadWineGlassm = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePadm DryWetRatio
scaleScrapeWineGlass Modes DryWetRatio
forall a. Fractional a => Modes a
C.wineGlassModes
scrapePadSmallHandbellm :: Patch2
scrapePadSmallHandbellm = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePadm DryWetRatio
scaleScrapeSmallHandbell Modes DryWetRatio
forall a. Fractional a => Modes a
C.smallHandbellModes
scrapePadAlbertClockBellBelfastm :: Patch2
scrapePadAlbertClockBellBelfastm = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePadm DryWetRatio
scaleScrapeAlbertClockBellBelfast Modes DryWetRatio
forall a. Fractional a => Modes a
C.albertClockBellBelfastModes
scrapePadWoodBlockm :: Patch2
scrapePadWoodBlockm = DryWetRatio -> Modes DryWetRatio -> Patch2
scrapePadm DryWetRatio
scaleScrapeWoodBlock Modes DryWetRatio
forall a. Fractional a => Modes a
C.woodBlockModes


------------------------------------
-- woodwind

data Wind = Wind
  { Wind -> D
windAtt :: D
  , Wind -> D
windDec :: D
  , Wind -> D
windSus :: D
  , Wind -> D
windVib :: D
  , Wind -> D
windBright :: D }

woodWind' :: Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' Wind
spec t -> D -> D -> D -> D -> D -> D -> DryWetRatio
instr = Patch2 -> Patch2
withSmallHall (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ \(D
amp, D
cps) -> DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
1.3 (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ do
    t
seed <- t -> SE t
forall a. SigOrD a => a -> SE a
rnd t
1
    D
vibDisp <- D -> SE D
forall a. SigOrD a => a -> SE a
rnd (D
0.1 D -> D -> D
forall a. Num a => a -> a -> a
* D
amp)
    let dispVib :: D -> D
dispVib D
vib = D
vib D -> D -> D
forall a. Num a => a -> a -> a
* (D
0.9 D -> D -> D
forall a. Num a => a -> a -> a
+ D
vibDisp)
    (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> DryWetRatio -> (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
0.8 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> DryWetRatio
sig D
amp DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> DryWetRatio
fadeOut (Wind -> D
windDec Wind
spec)) (DryWetRatio -> DryWetRatio) -> DryWetRatio -> DryWetRatio
forall a b. (a -> b) -> a -> b
$ t -> D -> D -> D -> D -> D -> D -> DryWetRatio
instr t
seed (D -> D
dispVib (D -> D) -> D -> D
forall a b. (a -> b) -> a -> b
$ Wind -> D
windVib Wind
spec) (Wind -> D
windAtt Wind
spec) (Wind -> D
windSus Wind
spec) (Wind -> D
windDec Wind
spec) (D
0.4 D -> D -> D
forall a. Num a => a -> a -> a
+ D
0.75 D -> D -> D
forall a. Num a => a -> a -> a
* Wind -> D
windBright Wind
spec D -> D -> D
forall a. Num a => a -> a -> a
* D
amp) D
cps

-- flute

fluteSpec :: D -> D -> Wind
fluteSpec D
bright D
vib = Wind
  { windAtt :: D
windAtt = D
0.08
  , windDec :: D
windDec = D
0.1
  , windSus :: D
windSus = D
20
  , windVib :: D
windVib = D
vib
  , windBright :: D
windBright = D
bright }

shortFluteSpec :: D -> D -> Wind
shortFluteSpec D
bright D
vib = Wind
  { windAtt :: D
windAtt = D
0.03
  , windDec :: D
windDec = D
0.05
  , windSus :: D
windSus = D
20
  , windVib :: D
windVib = D
vib
  , windBright :: D
windBright = D
bright }

flute :: Patch2
flute = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
fluteSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.flute
  where
    br :: D
br = D
0.7
    vib :: D
vib = D
0.015

shortFlute :: Patch2
shortFlute = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
shortFluteSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.flute
  where
    br :: D
br = D
0.7
    vib :: D
vib = D
0.015

fluteVibrato :: Patch2
fluteVibrato = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
fluteSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.flute
  where
    br :: D
br = D
0.7
    vib :: D
vib = D
0.04

mutedFlute :: Patch2
mutedFlute = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
fluteSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.flute
  where
    br :: D
br = D
0.25
    vib :: D
vib = D
0.015

brightFlute :: Patch2
brightFlute = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
fluteSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.flute
  where
    br :: D
br = D
1.2
    vib :: D
vib = D
0.015

-- bass clarinet

bassClarinetSpec :: D -> D -> Wind
bassClarinetSpec D
bright D
vib = Wind
  { windAtt :: D
windAtt = D
0.06
  , windDec :: D
windDec = D
0.15
  , windSus :: D
windSus = D
20
  , windVib :: D
windVib = D
vib
  , windBright :: D
windBright = D
bright }

shortBassClarinetSpec :: D -> D -> Wind
shortBassClarinetSpec D
bright D
vib = Wind
  { windAtt :: D
windAtt = D
0.03
  , windDec :: D
windDec = D
0.04
  , windSus :: D
windSus = D
20
  , windVib :: D
windVib = D
vib
  , windBright :: D
windBright = D
bright }

bassClarinet :: Patch2
bassClarinet = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
bassClarinetSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.bassClarinet
  where
    br :: D
br = D
0.7
    vib :: D
vib = D
0.01

shortBassClarinet :: Patch2
shortBassClarinet = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
shortBassClarinetSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.bassClarinet
  where
    br :: D
br = D
0.7
    vib :: D
vib = D
0.01

bassClarinetVibrato :: Patch2
bassClarinetVibrato = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
bassClarinetSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.bassClarinet
  where
    br :: D
br = D
0.7
    vib :: D
vib = D
0.035

mutedBassClarinet :: Patch2
mutedBassClarinet = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
bassClarinetSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.bassClarinet
  where
    br :: D
br = D
0.25
    vib :: D
vib = D
0.01

brightBassClarinet :: Patch2
brightBassClarinet = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
bassClarinetSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.bassClarinet
  where
    br :: D
br = D
1.2
    vib :: D
vib = D
0.01

-- french horn

frenchHornSpec :: D -> D -> Wind
frenchHornSpec D
bright D
vib = Wind
  { windAtt :: D
windAtt = D
0.08
  , windDec :: D
windDec = D
0.25
  , windSus :: D
windSus = D
20
  , windVib :: D
windVib = D
vib
  , windBright :: D
windBright = D
bright }

shortFrenchHornSpec :: D -> D -> Wind
shortFrenchHornSpec D
bright D
vib = Wind
  { windAtt :: D
windAtt = D
0.03
  , windDec :: D
windDec = D
0.04
  , windSus :: D
windSus = D
20
  , windVib :: D
windVib = D
vib
  , windBright :: D
windBright = D
bright }

frenchHorn :: Patch2
frenchHorn = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
frenchHornSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.frenchHorn
  where
    br :: D
br = D
0.7
    vib :: D
vib = D
0.01

shortFrenchHorn :: Patch2
shortFrenchHorn = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
shortFrenchHornSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.frenchHorn
  where
    br :: D
br = D
0.7
    vib :: D
vib = D
0.01

frenchHornVibrato :: Patch2
frenchHornVibrato = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
frenchHornSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.frenchHorn
  where
    br :: D
br = D
0.7
    vib :: D
vib = D
0.035

mutedFrenchHorn :: Patch2
mutedFrenchHorn = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
frenchHornSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.frenchHorn
  where
    br :: D
br = D
0.25
    vib :: D
vib = D
0.01

brightFrenchHorn :: Patch2
brightFrenchHorn = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
frenchHornSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.frenchHorn
  where
    br :: D
br = D
1.2
    vib :: D
vib = D
0.01

-- sheng

shengSpec :: D -> D -> Wind
shengSpec D
bright D
vib = Wind
  { windAtt :: D
windAtt = D
0.1
  , windDec :: D
windDec = D
0.2
  , windSus :: D
windSus = D
20
  , windVib :: D
windVib = D
vib
  , windBright :: D
windBright = D
bright }

shortShengSpec :: D -> D -> Wind
shortShengSpec D
bright D
vib = Wind
  { windAtt :: D
windAtt = D
0.03
  , windDec :: D
windDec = D
0.04
  , windSus :: D
windSus = D
20
  , windVib :: D
windVib = D
vib
  , windBright :: D
windBright = D
bright }

sheng :: Patch2
sheng = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
shengSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.sheng
  where
    br :: D
br = D
0.7
    vib :: D
vib = D
0.01

shortSheng :: Patch2
shortSheng = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
shortShengSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.sheng
  where
    br :: D
br = D
0.7
    vib :: D
vib = D
0.01

shengVibrato :: Patch2
shengVibrato = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
shengSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.sheng
  where
    br :: D
br = D
0.7
    vib :: D
vib = D
0.025

mutedSheng :: Patch2
mutedSheng = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
shengSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.sheng
  where
    br :: D
br = D
0.25
    vib :: D
vib = D
0.01

brightSheng :: Patch2
brightSheng = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
shortShengSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.sheng
  where
    br :: D
br = D
1.2
    vib :: D
vib = D
0.01

-- hulusi

hulusiSpec :: D -> D -> Wind
hulusiSpec D
bright D
vib = Wind
  { windAtt :: D
windAtt = D
0.12
  , windDec :: D
windDec = D
0.14
  , windSus :: D
windSus = D
20
  , windVib :: D
windVib = D
vib
  , windBright :: D
windBright = D
bright }

shortHulusiSpec :: D -> D -> Wind
shortHulusiSpec D
bright D
vib = Wind
  { windAtt :: D
windAtt = D
0.03
  , windDec :: D
windDec = D
0.04
  , windSus :: D
windSus = D
20
  , windVib :: D
windVib = D
vib
  , windBright :: D
windBright = D
bright }

hulusi :: Patch2
hulusi = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
hulusiSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.hulusi
  where
    br :: D
br = D
0.7
    vib :: D
vib = D
0.015

shortHulusi :: Patch2
shortHulusi = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
shortHulusiSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.hulusi
  where
    br :: D
br = D
0.7
    vib :: D
vib = D
0.015

hulusiVibrato :: Patch2
hulusiVibrato = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
hulusiSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.hulusi
  where
    br :: D
br = D
0.7
    vib :: D
vib = D
0.035

mutedHulusi :: Patch2
mutedHulusi = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
hulusiSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.hulusi
  where
    br :: D
br = D
0.25
    vib :: D
vib = D
0.015

brightHulusi :: Patch2
brightHulusi = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
shortHulusiSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.hulusi
  where
    br :: D
br = D
1.2
    vib :: D
vib = D
0.015


-- dizi

diziSpec :: D -> D -> Wind
diziSpec D
bright D
vib = Wind
  { windAtt :: D
windAtt = D
0.03
  , windDec :: D
windDec = D
0.2
  , windSus :: D
windSus = D
20
  , windVib :: D
windVib = D
vib
  , windBright :: D
windBright = D
bright }

shortDiziSpec :: D -> D -> Wind
shortDiziSpec D
bright D
vib = Wind
  { windAtt :: D
windAtt = D
0.1
  , windDec :: D
windDec = D
0.04
  , windSus :: D
windSus = D
20
  , windVib :: D
windVib = D
vib
  , windBright :: D
windBright = D
bright }

dizi :: Patch2
dizi = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
diziSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.dizi
  where
    br :: D
br = D
0.7
    vib :: D
vib = D
0.01

shortDizi :: Patch2
shortDizi = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
shortDiziSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.dizi
  where
    br :: D
br = D
0.7
    vib :: D
vib = D
0.01

diziVibrato :: Patch2
diziVibrato = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
diziSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.dizi
  where
    br :: D
br = D
0.7
    vib :: D
vib = D
0.035

mutedDizi :: Patch2
mutedDizi = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
diziSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.dizi
  where
    br :: D
br = D
0.25
    vib :: D
vib = D
0.01

brightDizi :: Patch2
brightDizi = Wind -> (D -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
forall {t}.
SigOrD t =>
Wind -> (t -> D -> D -> D -> D -> D -> D -> DryWetRatio) -> Patch2
woodWind' (D -> D -> Wind
shortDiziSpec D
br D
vib) D -> D -> D -> D -> D -> D -> D -> DryWetRatio
C.dizi
  where
    br :: D
br = D
1.2
    vib :: D
vib = D
0.01

------------------------------------
-- x-rays

pulseWidth :: Patch2
pulseWidth = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.15 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
0.75 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio
0.6) (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Instr D (DryWetRatio, DryWetRatio)
-> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (D -> D -> DryWetRatio
fades D
0.07 D
0.1)(SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((DryWetRatio, DryWetRatio) -> DryWetRatio)
-> CsdNote D
-> SE (CpsInstrOut ((DryWetRatio, DryWetRatio) -> DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps ((DryWetRatio -> DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio) -> DryWetRatio
forall a b c. (a -> b -> c) -> (a, b) -> c
uncurry DryWetRatio -> DryWetRatio -> DryWetRatio
C.pulseWidth)

xanadu :: Patch2
xanadu = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.27 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
1.2 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio
0.6) (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Instr D (DryWetRatio, DryWetRatio)
-> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (D -> D -> DryWetRatio
fades D
0.01 D
2.2)(SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (D -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (D -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps D -> SE DryWetRatio
C.xanadu1

alienIsAngry :: Patch2
alienIsAngry = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.15 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallRoom2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
0.5 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> D -> DryWetRatio
fades D
0.01 D
2.3)(SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (D -> DryWetRatio -> DryWetRatio
C.fmMod D
5)

noiz :: Patch2
noiz = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.15 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
1.5 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> D -> DryWetRatio
fades D
0.01 D
0.5)(SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps DryWetRatio -> SE DryWetRatio
C.noiz

blue :: Patch2
blue = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.25 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
1.5 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> D -> DryWetRatio
fades D
0.01 D
0.5)(SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (D -> D -> D -> DryWetRatio -> DryWetRatio -> SE DryWetRatio
C.blue D
5 D
7 D
0.24 DryWetRatio
12)

black :: Patch2
black = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.25 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
2 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> D -> DryWetRatio
fades D
0.01 D
0.5)(SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (D -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (D -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (\D
cps -> D -> D -> D -> DryWetRatio -> DryWetRatio -> SE DryWetRatio
C.black D
3 (D
cps D -> D -> D
forall a. Fractional a => a -> a -> a
/ D
2) (D
cps D -> D -> D
forall a. Num a => a -> a -> a
* D
2) DryWetRatio
12 (D -> DryWetRatio
sig D
cps))

simpleMarimba :: Patch2
simpleMarimba = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.25 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
0.8 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> D -> DryWetRatio
fades D
0.01 D
0.5)(SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (D -> DryWetRatio -> DryWetRatio
C.simpleMarimba D
5)

impulseMarimba1 :: Patch2
impulseMarimba1 = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.3 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
0.8 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> DryWetRatio
fadeOut D
0.75)(SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps DryWetRatio -> DryWetRatio
C.impulseMarimba1

impulseMarimba2 :: Patch2
impulseMarimba2 = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.3 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
0.8 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> DryWetRatio
fadeOut D
0.75)(SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps DryWetRatio -> DryWetRatio
C.impulseMarimba2

okComputer :: Patch2
okComputer = (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> Instr D a) -> Patch a
polySyntFilter ((ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ \ResonFilter
filter (D
amp, D
cps) -> ((DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> SE DryWetRatio)
-> DryWetRatio
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
0.75 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> DryWetRatio
sig D
amp DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> D -> DryWetRatio
fades D
0.01 D
0.01) (SE DryWetRatio -> SE DryWetRatio)
-> (DryWetRatio -> SE DryWetRatio) -> DryWetRatio -> SE DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> DryWetRatio)
-> SE DryWetRatio -> AtOut DryWetRatio DryWetRatio (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at (ResonFilter
filter (DryWetRatio
1500 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
+ D -> DryWetRatio
sig D
amp DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio
8500) DryWetRatio
0.1) (SE DryWetRatio -> SE DryWetRatio)
-> (DryWetRatio -> SE DryWetRatio) -> DryWetRatio -> SE DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio
C.okComputer (DryWetRatio -> SE DryWetRatio)
-> (DryWetRatio -> DryWetRatio) -> DryWetRatio -> SE DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Fractional a => a -> a -> a
/ DryWetRatio
25))) (D -> DryWetRatio
sig D
cps)

snowCrackle :: Patch2
snowCrackle = Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ \(D
amp, D
cps) -> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> DryWetRatio
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> DryWetRatio)
-> DryWetRatio
-> (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
0.8 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> DryWetRatio
sig D
amp DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> D -> DryWetRatio
fades D
0.001 D
0.001) (DryWetRatio -> DryWetRatio)
-> (DryWetRatio -> DryWetRatio) -> DryWetRatio -> DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> DryWetRatio
C.snowCrackle (DryWetRatio -> DryWetRatio)
-> (DryWetRatio -> DryWetRatio) -> DryWetRatio -> DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Fractional a => a -> a -> a
/ DryWetRatio
25))) (D -> DryWetRatio
sig D
cps)

noiseBell :: Patch2
noiseBell = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.25 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.75 (SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (CsdNote D -> D -> DryWetRatio -> DryWetRatio -> SE DryWetRatio
C.noiseBell (D
31, D
125) D
2.3 DryWetRatio
0.2 (DryWetRatio -> SE DryWetRatio)
-> (DryWetRatio -> DryWetRatio) -> DryWetRatio -> SE DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ( DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio
8))

------------------------------------
-- vowels

robotVowels :: [(Vowel, D)] -> Vowel -> Patch2
robotVowels [(Vowel, D)]
vows Vowel
latVow = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.15 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
1.1 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> D -> DryWetRatio
fades D
0.1 D
0.1)(SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (D -> [(Vowel, D)] -> Vowel -> DryWetRatio -> DryWetRatio
C.vowels D
25 [(Vowel, D)]
vows Vowel
latVow)

robotLoopVowels :: DryWetRatio -> [(Vowel, D)] -> Patch2
robotLoopVowels DryWetRatio
loopDur [(Vowel, D)]
vows = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.15 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
1.1 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> D -> DryWetRatio
fades D
0.1 D
0.1)(SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (D -> DryWetRatio -> [(Vowel, D)] -> DryWetRatio -> DryWetRatio
C.loopVowels D
25 DryWetRatio
loopDur [(Vowel, D)]
vows)

robotVowel :: Vowel -> Patch2
robotVowel Vowel
vow = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.15 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
1.1 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> D -> DryWetRatio
fades D
0.1 D
0.1)(SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (D -> Vowel -> DryWetRatio -> DryWetRatio
C.oneVowel D
25 Vowel
vow)

------------------------------------
-- nature / effects

windWall :: Patch2
windWall = Patch2 -> Patch2
withLargeHall (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
1.25 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> D -> DryWetRatio
fades D
0.1 D
5)(SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps DryWetRatio -> SE DryWetRatio
C.windWall

mildWind :: Patch2
mildWind = Patch2 -> Patch2
withLargeHall (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
1.25 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> D -> DryWetRatio
fades D
0.1 D
1.5)(SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps DryWetRatio -> SE DryWetRatio
C.mildWind

wind :: Patch2
wind = Patch2 -> Patch2
withLargeHall (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> SE DryWetRatio -> SE DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
0.8 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> D -> DryWetRatio
fades D
0.1 D
1.5)(SE DryWetRatio -> SE DryWetRatio)
-> Instr D DryWetRatio -> Instr D DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (DryWetRatio -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (\DryWetRatio
cps -> DryWetRatio
-> DryWetRatio -> (DryWetRatio, DryWetRatio) -> SE DryWetRatio
C.thorWind (DryWetRatio
cps DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio
2) DryWetRatio
150 (DryWetRatio
0.3, DryWetRatio
1))

------------------------------------
-- drums

------------------------------------
-- SHARC patches

-- | Solo instrument.
soloSharc :: SharcInstr -> Patch2
soloSharc :: SharcInstr -> Patch2
soloSharc SharcInstr
instr = Patch2 -> Patch2
withSmallHall (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> SE a -> SE b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (D -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (D -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (SharcInstr -> D -> SE DryWetRatio
C.soloSharcOsc SharcInstr
instr)

-- | Instrumet played in ensemble (with chorus).
orcSharc :: SharcInstr -> Patch2
orcSharc :: SharcInstr -> Patch2
orcSharc SharcInstr
instr = Patch2 -> Patch2
withLargeHall (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> SE a -> SE b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (D -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (D -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (SharcInstr -> D -> SE DryWetRatio
C.orcSharcOsc SharcInstr
instr)

-- | Pad orchestra instrument.
padSharc :: SharcInstr -> Patch2
padSharc :: SharcInstr -> Patch2
padSharc SharcInstr
instr = Patch2 -> Patch2
withLargeHall (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> SE a -> SE b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (D -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (D -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (SharcInstr -> D -> SE DryWetRatio
C.padSharcOsc SharcInstr
instr)

-- | Pad solo instrument.`
purePadSharc :: SharcInstr -> Patch2
purePadSharc :: SharcInstr -> Patch2
purePadSharc SharcInstr
instr = DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> a) -> Patch a -> Patch a
fx1 DryWetRatio
0.35 (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> SE a -> SE b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> Instr D DryWetRatio -> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (D -> SE DryWetRatio)
-> CsdNote D -> SE (CpsInstrOut (D -> SE DryWetRatio))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (SharcInstr -> D -> SE DryWetRatio
C.purePadSharcOsc SharcInstr
instr)

-- | Dream Pad patch made with SHARC oscillators.
dreamSharc :: SharcInstr -> Patch2
dreamSharc :: SharcInstr -> Patch2
dreamSharc SharcInstr
instr = DryWetRatio -> (D -> DryWetRatio -> SE DryWetRatio) -> Patch2
dreamPadWithKey DryWetRatio
0.35 (SharcInstr -> D -> DryWetRatio -> SE DryWetRatio
C.rndSigSharcOsc SharcInstr
instr)

-- | Dream Pad patch made with SHARC oscillators.
lightIsTooBrightSharc :: SharcInstr -> Patch2
lightIsTooBrightSharc :: SharcInstr -> Patch2
lightIsTooBrightSharc SharcInstr
instr = DryWetRatio -> (D -> DryWetRatio -> SE DryWetRatio) -> Patch2
lightIsTooBrightPadWithKey DryWetRatio
0.6 (SharcInstr -> D -> DryWetRatio -> SE DryWetRatio
C.rndSigSharcOsc SharcInstr
instr)

-- | Dream Pad patch made with SHARC oscillators.
whaleSongSharc :: SharcInstr -> Patch2
whaleSongSharc :: SharcInstr -> Patch2
whaleSongSharc SharcInstr
instr = DryWetRatio -> (D -> DryWetRatio -> SE DryWetRatio) -> Patch2
whaleSongPadWithKey DryWetRatio
0.4 (SharcInstr -> D -> DryWetRatio -> SE DryWetRatio
C.rndSigSharcOsc SharcInstr
instr)

sharcOrgan :: SharcInstr -> Patch2
sharcOrgan :: SharcInstr -> Patch2
sharcOrgan SharcInstr
instr = (D -> DryWetRatio -> SE DryWetRatio) -> Patch2
waveOrganWithKey (SharcInstr -> D -> DryWetRatio -> SE DryWetRatio
C.rndSigSharcOsc SharcInstr
instr)

type PadsynthBandwidth = Double

-- | Padsynth instrument with organ-like amplitude envelope.
psOrganSharc :: SharcInstr -> Patch2
psOrganSharc :: SharcInstr -> Patch2
psOrganSharc = PadSharcSpec -> SharcInstr -> Patch2
psOrganSharc' PadSharcSpec
forall a. Default a => a
def

hiDef :: PadSharcSpec
hiDef = PadSharcSpec
forall a. Default a => a
def { padSharcSize = 35 }

-- | High resolution Padsynth instrument with organ-like amplitude envelope.
psOrganSharcHifi :: SharcInstr -> Patch2
psOrganSharcHifi :: SharcInstr -> Patch2
psOrganSharcHifi = PadSharcSpec -> SharcInstr -> Patch2
psOrganSharc' PadSharcSpec
hiDef

-- | Padsynth instrument with organ-like amplitude envelope. We can specify aux parameters.
psOrganSharc' :: PadSharcSpec -> SharcInstr -> Patch2
psOrganSharc' :: PadSharcSpec -> SharcInstr -> Patch2
psOrganSharc' PadSharcSpec
spec SharcInstr
sh = Patch2 -> Patch2
fxs (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
0.5 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> D -> DryWetRatio
fades D
0.01 D
0.1) (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Instr D (DryWetRatio, DryWetRatio)
-> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (D -> SE (DryWetRatio, DryWetRatio))
-> CsdNote D
-> SE (CpsInstrOut (D -> SE (DryWetRatio, DryWetRatio)))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (PadSharcSpec -> SharcInstr -> D -> SE (DryWetRatio, DryWetRatio)
C.padsynthSharcOsc2' PadSharcSpec
spec SharcInstr
sh)
    where fxs :: Patch2 -> Patch2
fxs = [GenFxSpec (DryWetRatio, DryWetRatio)] -> Patch2 -> Patch2
forall a. [GenFxSpec a] -> Patch a -> Patch a
FxChain [DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
0.25 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallHall2), DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
1 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at ((DryWetRatio -> DryWetRatio)
 -> (DryWetRatio, DryWetRatio)
 -> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
1.4 (DryWetRatio -> DryWetRatio)
-> (DryWetRatio -> DryWetRatio) -> DryWetRatio -> DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> DryWetRatio -> DryWetRatio
saturator DryWetRatio
0.75))]

-- | Padsynth instrument with organ-like amplitude envelope and huge reverb.
psLargeOrganSharc :: SharcInstr -> Patch2
psLargeOrganSharc :: SharcInstr -> Patch2
psLargeOrganSharc = PadSharcSpec -> SharcInstr -> Patch2
psLargeOrganSharc' PadSharcSpec
forall a. Default a => a
def

-- | High resolution Padsynth instrument with organ-like amplitude envelope and huge reverb.
psLargeOrganSharcHifi :: SharcInstr -> Patch2
psLargeOrganSharcHifi :: SharcInstr -> Patch2
psLargeOrganSharcHifi = PadSharcSpec -> SharcInstr -> Patch2
psLargeOrganSharc' PadSharcSpec
hiDef

-- | Padsynth instrument with organ-like amplitude envelope and huge reverb.
psLargeOrganSharc' :: PadSharcSpec -> SharcInstr -> Patch2
psLargeOrganSharc' :: PadSharcSpec -> SharcInstr -> Patch2
psLargeOrganSharc' PadSharcSpec
spec SharcInstr
sh = Patch2 -> Patch2
fxs (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
0.65 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> D -> DryWetRatio
fades D
0.01 D
0.1) (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Instr D (DryWetRatio, DryWetRatio)
-> Instr D (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (D -> SE (DryWetRatio, DryWetRatio))
-> CsdNote D
-> SE (CpsInstrOut (D -> SE (DryWetRatio, DryWetRatio)))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (PadSharcSpec -> SharcInstr -> D -> SE (DryWetRatio, DryWetRatio)
C.padsynthSharcOsc2' PadSharcSpec
spec SharcInstr
sh)
    where fxs :: Patch2 -> Patch2
fxs = [GenFxSpec (DryWetRatio, DryWetRatio)] -> Patch2 -> Patch2
forall a. [GenFxSpec a] -> Patch a -> Patch a
FxChain [DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
0.35 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2), DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
1 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at ((DryWetRatio -> DryWetRatio)
 -> (DryWetRatio, DryWetRatio)
 -> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
1.4 (DryWetRatio -> DryWetRatio)
-> (DryWetRatio -> DryWetRatio) -> DryWetRatio -> DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> DryWetRatio -> DryWetRatio
saturator DryWetRatio
0.75))]

-- | Padsynth instrument with piano-like amplitude envelope.
psPianoSharc :: ReleaseTime -> SharcInstr -> Patch2
psPianoSharc :: D -> SharcInstr -> Patch2
psPianoSharc = PadSharcSpec -> D -> SharcInstr -> Patch2
psPianoSharc' PadSharcSpec
forall a. Default a => a
def

-- | High resolution Padsynth instrument with piano-like amplitude envelope.
psPianoSharcHifi :: ReleaseTime -> SharcInstr -> Patch2
psPianoSharcHifi :: D -> SharcInstr -> Patch2
psPianoSharcHifi = PadSharcSpec -> D -> SharcInstr -> Patch2
psPianoSharc' PadSharcSpec
hiDef

-- | Padsynth instrument with piano-like amplitude envelope. We can specify aux parameters.
psPianoSharc' :: PadSharcSpec -> ReleaseTime -> SharcInstr -> Patch2
psPianoSharc' :: PadSharcSpec -> D -> SharcInstr -> Patch2
psPianoSharc' PadSharcSpec
spec D
releaseTime SharcInstr
sh = Patch2 -> Patch2
fxs (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ \CsdNote D
ampCps -> DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
0.75 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> CsdNote D -> DryWetRatio
C.pianoEnv D
releaseTime CsdNote D
ampCps) (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ (D -> SE (DryWetRatio, DryWetRatio))
-> CsdNote D
-> SE (CpsInstrOut (D -> SE (DryWetRatio, DryWetRatio)))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (PadSharcSpec -> SharcInstr -> D -> SE (DryWetRatio, DryWetRatio)
C.padsynthSharcOsc2' PadSharcSpec
spec SharcInstr
sh) CsdNote D
ampCps
    where fxs :: Patch2 -> Patch2
fxs = [GenFxSpec (DryWetRatio, DryWetRatio)] -> Patch2 -> Patch2
forall a. [GenFxSpec a] -> Patch a -> Patch a
FxChain [DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
0.15 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallHall2), DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
1 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at ((DryWetRatio -> DryWetRatio)
 -> (DryWetRatio, DryWetRatio)
 -> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
1.4 (DryWetRatio -> DryWetRatio)
-> (DryWetRatio -> DryWetRatio) -> DryWetRatio -> DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> DryWetRatio -> DryWetRatio
saturator DryWetRatio
0.75))]

-- | Padsynth instrument with piano-like amplitude envelope.
xpsPianoSharc :: ReleaseTime -> SharcInstr -> Patch2
xpsPianoSharc :: D -> SharcInstr -> Patch2
xpsPianoSharc = PadSharcSpec -> D -> SharcInstr -> Patch2
xpsPianoSharc' PadSharcSpec
forall a. Default a => a
def

-- | High resolution Padsynth instrument with piano-like amplitude envelope.
xpsPianoSharcHifi :: ReleaseTime -> SharcInstr -> Patch2
xpsPianoSharcHifi :: D -> SharcInstr -> Patch2
xpsPianoSharcHifi = PadSharcSpec -> D -> SharcInstr -> Patch2
xpsPianoSharc' PadSharcSpec
hiDef

-- | Padsynth instrument with piano-like amplitude envelope. We can specify aux parameters.
xpsPianoSharc' :: PadSharcSpec -> ReleaseTime -> SharcInstr -> Patch2
xpsPianoSharc' :: PadSharcSpec -> D -> SharcInstr -> Patch2
xpsPianoSharc' PadSharcSpec
spec D
releaseTime SharcInstr
sh = DryWetRatio -> Patch2 -> Patch2
addHammer DryWetRatio
0.12 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Patch2 -> Patch2
fxs (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ \CsdNote D
ampCps -> DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
0.75 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> CsdNote D -> DryWetRatio
C.xpianoEnv D
releaseTime CsdNote D
ampCps) (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ (D -> SE (DryWetRatio, DryWetRatio))
-> CsdNote D
-> SE (CpsInstrOut (D -> SE (DryWetRatio, DryWetRatio)))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (PadSharcSpec -> SharcInstr -> D -> SE (DryWetRatio, DryWetRatio)
C.padsynthSharcOsc2' PadSharcSpec
spec SharcInstr
sh) CsdNote D
ampCps
    where fxs :: Patch2 -> Patch2
fxs = [GenFxSpec (DryWetRatio, DryWetRatio)] -> Patch2 -> Patch2
forall a. [GenFxSpec a] -> Patch a -> Patch a
FxChain [DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
0.15 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
smallHall2), DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
1 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at ((DryWetRatio -> DryWetRatio)
 -> (DryWetRatio, DryWetRatio)
 -> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
1.4 (DryWetRatio -> DryWetRatio)
-> (DryWetRatio -> DryWetRatio) -> DryWetRatio -> DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> DryWetRatio -> DryWetRatio
saturator DryWetRatio
0.75))]

-- | Padsynth instrument with piano-like amplitude envelope.
psLargePianoSharc :: ReleaseTime -> SharcInstr -> Patch2
psLargePianoSharc :: D -> SharcInstr -> Patch2
psLargePianoSharc = PadSharcSpec -> D -> SharcInstr -> Patch2
psLargePianoSharc' PadSharcSpec
forall a. Default a => a
def

-- | High resolution Padsynth instrument with piano-like amplitude envelope.
psLargePianoSharcHifi :: ReleaseTime -> SharcInstr -> Patch2
psLargePianoSharcHifi :: D -> SharcInstr -> Patch2
psLargePianoSharcHifi = PadSharcSpec -> D -> SharcInstr -> Patch2
psLargePianoSharc' PadSharcSpec
hiDef

-- | Padsynth instrument with piano-like amplitude envelope. We can specify aux parameters.
psLargePianoSharc' :: PadSharcSpec -> ReleaseTime -> SharcInstr -> Patch2
psLargePianoSharc' :: PadSharcSpec -> D -> SharcInstr -> Patch2
psLargePianoSharc' PadSharcSpec
spec D
releaseTime SharcInstr
sh = Patch2 -> Patch2
fxs (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ \CsdNote D
ampCps -> DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
0.75 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> CsdNote D -> DryWetRatio
C.pianoEnv D
releaseTime CsdNote D
ampCps) (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ (D -> SE (DryWetRatio, DryWetRatio))
-> CsdNote D
-> SE (CpsInstrOut (D -> SE (DryWetRatio, DryWetRatio)))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (PadSharcSpec -> SharcInstr -> D -> SE (DryWetRatio, DryWetRatio)
C.padsynthSharcOsc2' PadSharcSpec
spec SharcInstr
sh) CsdNote D
ampCps
    where fxs :: Patch2 -> Patch2
fxs = [GenFxSpec (DryWetRatio, DryWetRatio)] -> Patch2 -> Patch2
forall a. [GenFxSpec a] -> Patch a -> Patch a
FxChain [DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
0.15 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2), DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
1 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at ((DryWetRatio -> DryWetRatio)
 -> (DryWetRatio, DryWetRatio)
 -> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
1.4 (DryWetRatio -> DryWetRatio)
-> (DryWetRatio -> DryWetRatio) -> DryWetRatio -> DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> DryWetRatio -> DryWetRatio
saturator DryWetRatio
0.75))]

-- | Padsynth instrument with piano-like amplitude envelope.
xpsLargePianoSharc :: ReleaseTime -> SharcInstr -> Patch2
xpsLargePianoSharc :: D -> SharcInstr -> Patch2
xpsLargePianoSharc = PadSharcSpec -> D -> SharcInstr -> Patch2
xpsLargePianoSharc' PadSharcSpec
forall a. Default a => a
def

-- | High resolution Padsynth instrument with piano-like amplitude envelope.
xpsLargePianoSharcHifi :: ReleaseTime -> SharcInstr -> Patch2
xpsLargePianoSharcHifi :: D -> SharcInstr -> Patch2
xpsLargePianoSharcHifi = PadSharcSpec -> D -> SharcInstr -> Patch2
xpsLargePianoSharc' PadSharcSpec
hiDef

-- | Padsynth instrument with piano-like amplitude envelope. We can specify aux parameters.
xpsLargePianoSharc' :: PadSharcSpec -> ReleaseTime -> SharcInstr -> Patch2
xpsLargePianoSharc' :: PadSharcSpec -> D -> SharcInstr -> Patch2
xpsLargePianoSharc' PadSharcSpec
spec D
releaseTime SharcInstr
sh = Patch2 -> Patch2
fxs (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ \CsdNote D
ampCps -> DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
0.75 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> CsdNote D -> DryWetRatio
C.xpianoEnv D
releaseTime CsdNote D
ampCps) (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ (D -> SE (DryWetRatio, DryWetRatio))
-> CsdNote D
-> SE (CpsInstrOut (D -> SE (DryWetRatio, DryWetRatio)))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps (PadSharcSpec -> SharcInstr -> D -> SE (DryWetRatio, DryWetRatio)
C.padsynthSharcOsc2' PadSharcSpec
spec SharcInstr
sh) CsdNote D
ampCps
    where fxs :: Patch2 -> Patch2
fxs = [GenFxSpec (DryWetRatio, DryWetRatio)] -> Patch2 -> Patch2
forall a. [GenFxSpec a] -> Patch a -> Patch a
FxChain [DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
0.15 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2), DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
1 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at ((DryWetRatio -> DryWetRatio)
 -> (DryWetRatio, DryWetRatio)
 -> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
1.4 (DryWetRatio -> DryWetRatio)
-> (DryWetRatio -> DryWetRatio) -> DryWetRatio -> DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> DryWetRatio -> DryWetRatio
saturator DryWetRatio
0.75))]

psPadFilterBy :: Sig -> Sig -> (Sig -> Sig -> Sig -> Sig) -> (D, D) -> Sig -> Sig
psPadFilterBy :: DryWetRatio
-> DryWetRatio
-> ResonFilter
-> CsdNote D
-> DryWetRatio
-> DryWetRatio
psPadFilterBy DryWetRatio
rippleLevel DryWetRatio
q ResonFilter
resonFilter CsdNote D
ampCps = ResonFilter
resonFilter (DryWetRatio
0.3 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* (D -> DryWetRatio
sig (D -> DryWetRatio) -> D -> DryWetRatio
forall a b. (a -> b) -> a -> b
$ CsdNote D -> D
forall a b. (a, b) -> b
snd CsdNote D
ampCps) DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
+ DryWetRatio
2500 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
+ DryWetRatio
2000 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> D -> DryWetRatio
fades D
0.15 (D
0.6 D -> D -> D
forall a. Num a => a -> a -> a
+ CsdNote D -> D
forall {a}. Fractional a => (a, a) -> a
rel CsdNote D
ampCps) DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
+ DryWetRatio
rippleLevel DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> D -> DryWetRatio
slope D
0.75 D
0.5 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio -> DryWetRatio
osc DryWetRatio
8) DryWetRatio
q
  where rel :: (a, a) -> a
rel (a
amp, a
cps) = a
amp a -> a -> a
forall a. Num a => a -> a -> a
- a
cps a -> a -> a
forall a. Fractional a => a -> a -> a
/ a
3500

psPadFilter :: ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio
psPadFilter ResonFilter
filter = DryWetRatio
-> DryWetRatio
-> ResonFilter
-> CsdNote D
-> DryWetRatio
-> DryWetRatio
psPadFilterBy DryWetRatio
75 DryWetRatio
15 ResonFilter
filter
psSoftPadFilter :: ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio
psSoftPadFilter ResonFilter
filter = DryWetRatio
-> DryWetRatio
-> ResonFilter
-> CsdNote D
-> DryWetRatio
-> DryWetRatio
psPadFilterBy DryWetRatio
350 DryWetRatio
0.15 ResonFilter
filter

deepOsc :: (Num a, SigSpace a) => (D -> a) -> (D -> a)
deepOsc :: forall a. (Num a, SigSpace a) => (D -> a) -> D -> a
deepOsc D -> a
f D
x = DryWetRatio -> a -> a
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.5 (D -> a
f D
x a -> a -> a
forall a. Num a => a -> a -> a
+ D -> a
f (D
x D -> D -> D
forall a. Fractional a => a -> a -> a
/ D
2))

psOsc :: PadSharcSpec -> SharcInstr -> D -> SE (DryWetRatio, DryWetRatio)
psOsc PadSharcSpec
spec SharcInstr
sh D
x = PadSharcSpec -> SharcInstr -> D -> SE (DryWetRatio, DryWetRatio)
C.padsynthSharcOsc2' PadSharcSpec
spec SharcInstr
sh D
x
psDeepOsc :: PadSharcSpec -> SharcInstr -> D -> SE (DryWetRatio, DryWetRatio)
psDeepOsc PadSharcSpec
spec SharcInstr
sh = (D -> SE (DryWetRatio, DryWetRatio))
-> D -> SE (DryWetRatio, DryWetRatio)
forall a. (Num a, SigSpace a) => (D -> a) -> D -> a
deepOsc (PadSharcSpec -> SharcInstr -> D -> SE (DryWetRatio, DryWetRatio)
C.padsynthSharcOsc2' PadSharcSpec
spec SharcInstr
sh)

psOscCfd :: DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> D
-> SE (DryWetRatio, DryWetRatio)
psOscCfd DryWetRatio
koeff (PadSharcSpec
spec1, SharcInstr
sh1) (PadSharcSpec
spec2, SharcInstr
sh2) D
x = DryWetRatio
-> SE (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall a. (Num a, SigSpace a) => DryWetRatio -> a -> a -> a
cfd DryWetRatio
koeff (PadSharcSpec -> SharcInstr -> D -> SE (DryWetRatio, DryWetRatio)
C.padsynthSharcOsc2' PadSharcSpec
spec1 SharcInstr
sh1 D
x) (PadSharcSpec -> SharcInstr -> D -> SE (DryWetRatio, DryWetRatio)
C.padsynthSharcOsc2' PadSharcSpec
spec2 SharcInstr
sh2 D
x)
psOscCfd4 :: DryWetRatio
-> DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> D
-> SE (DryWetRatio, DryWetRatio)
psOscCfd4 DryWetRatio
koeffX DryWetRatio
koeffY (PadSharcSpec
spec1, SharcInstr
sh1) (PadSharcSpec
spec2, SharcInstr
sh2) (PadSharcSpec
spec3, SharcInstr
sh3) (PadSharcSpec
spec4, SharcInstr
sh4) D
x = DryWetRatio
-> DryWetRatio
-> SE (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall a.
(Num a, SigSpace a) =>
DryWetRatio -> DryWetRatio -> a -> a -> a -> a -> a
cfd4 DryWetRatio
koeffX DryWetRatio
koeffY (PadSharcSpec -> SharcInstr -> D -> SE (DryWetRatio, DryWetRatio)
C.padsynthSharcOsc2' PadSharcSpec
spec1 SharcInstr
sh1 D
x) (PadSharcSpec -> SharcInstr -> D -> SE (DryWetRatio, DryWetRatio)
C.padsynthSharcOsc2' PadSharcSpec
spec2 SharcInstr
sh2 D
x) (PadSharcSpec -> SharcInstr -> D -> SE (DryWetRatio, DryWetRatio)
C.padsynthSharcOsc2' PadSharcSpec
spec3 SharcInstr
sh3 D
x) (PadSharcSpec -> SharcInstr -> D -> SE (DryWetRatio, DryWetRatio)
C.padsynthSharcOsc2' PadSharcSpec
spec4 SharcInstr
sh4 D
x)

psDeepOscCfd :: DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> D
-> SE (DryWetRatio, DryWetRatio)
psDeepOscCfd DryWetRatio
koeff (PadSharcSpec
spec1, SharcInstr
sh1) (PadSharcSpec
spec2, SharcInstr
sh2) = (D -> SE (DryWetRatio, DryWetRatio))
-> D -> SE (DryWetRatio, DryWetRatio)
forall a. (Num a, SigSpace a) => (D -> a) -> D -> a
deepOsc (DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> D
-> SE (DryWetRatio, DryWetRatio)
psOscCfd DryWetRatio
koeff (PadSharcSpec
spec1, SharcInstr
sh1) (PadSharcSpec
spec2, SharcInstr
sh2))
psDeepOscCfd4 :: DryWetRatio
-> DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> D
-> SE (DryWetRatio, DryWetRatio)
psDeepOscCfd4 DryWetRatio
koeffX DryWetRatio
koeffY (PadSharcSpec
spec1, SharcInstr
sh1) (PadSharcSpec
spec2, SharcInstr
sh2) (PadSharcSpec
spec3, SharcInstr
sh3) (PadSharcSpec
spec4, SharcInstr
sh4) = (D -> SE (DryWetRatio, DryWetRatio))
-> D -> SE (DryWetRatio, DryWetRatio)
forall a. (Num a, SigSpace a) => (D -> a) -> D -> a
deepOsc (DryWetRatio
-> DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> D
-> SE (DryWetRatio, DryWetRatio)
psOscCfd4 DryWetRatio
koeffX DryWetRatio
koeffY (PadSharcSpec
spec1, SharcInstr
sh1) (PadSharcSpec
spec2, SharcInstr
sh2) (PadSharcSpec
spec3, SharcInstr
sh3) (PadSharcSpec
spec4, SharcInstr
sh4))

genPsPad :: (Sig2 -> Sig2) -> (ResonFilter -> (D, D) -> Sig -> Sig) -> (D -> SE Sig2) -> Patch2
genPsPad :: ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio)
-> (D -> SE (DryWetRatio, DryWetRatio))
-> Patch2
genPsPad (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
effect ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio
mkFilter D -> SE (DryWetRatio, DryWetRatio)
wave =
  Patch2 -> Patch2
fxs (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a. (ResonFilter -> Instr D a) -> Patch a
polySyntFilter ((ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2)
-> (ResonFilter -> Instr D (DryWetRatio, DryWetRatio)) -> Patch2
forall a b. (a -> b) -> a -> b
$ \ResonFilter
filter CsdNote D
ampCps -> DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul (DryWetRatio
1.2 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* D -> D -> DryWetRatio
fades D
0.5 (D
0.6 D -> D -> D
forall a. Num a => a -> a -> a
+ CsdNote D -> D
forall {a}. Fractional a => (a, a) -> a
rel CsdNote D
ampCps)) (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ (D -> SE (DryWetRatio, DryWetRatio))
-> CsdNote D
-> SE (CpsInstrOut (D -> SE (DryWetRatio, DryWetRatio)))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps ((DryWetRatio -> DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (SE (DryWetRatio, DryWetRatio))
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at (ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio
mkFilter ResonFilter
filter CsdNote D
ampCps) (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> (D -> SE (DryWetRatio, DryWetRatio))
-> D
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> SE (DryWetRatio, DryWetRatio)
wave) CsdNote D
ampCps
  where
        fxs :: Patch2 -> Patch2
fxs = [GenFxSpec (DryWetRatio, DryWetRatio)] -> Patch2 -> Patch2
forall a. [GenFxSpec a] -> Patch a -> Patch a
FxChain [DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
0.25 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
effect), DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
0.5 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at ((DryWetRatio -> DryWetRatio)
 -> (DryWetRatio, DryWetRatio)
 -> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
2.1 (DryWetRatio -> DryWetRatio)
-> (DryWetRatio -> DryWetRatio) -> DryWetRatio -> DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> DryWetRatio -> DryWetRatio
saturator DryWetRatio
0.75)), DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
0.3 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at ((DryWetRatio -> DryWetRatio)
 -> (DryWetRatio, DryWetRatio)
 -> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ D -> DryWetRatio -> DryWetRatio -> DryWetRatio
echo D
0.125 DryWetRatio
0.65))]
        rel :: (a, a) -> a
rel (a
amp, a
cps) = a
amp a -> a -> a
forall a. Num a => a -> a -> a
- a
cps a -> a -> a
forall a. Fractional a => a -> a -> a
/ a
3500

-- | Padsynth instrument with pad-like amplitude envelope.
psPadSharc :: SharcInstr -> Patch2
psPadSharc :: SharcInstr -> Patch2
psPadSharc = PadSharcSpec -> SharcInstr -> Patch2
psPadSharc' PadSharcSpec
forall a. Default a => a
def

-- | High resolution Padsynth instrument with pad-like amplitude envelope.
psPadSharcHifi :: SharcInstr -> Patch2
psPadSharcHifi :: SharcInstr -> Patch2
psPadSharcHifi = PadSharcSpec -> SharcInstr -> Patch2
psPadSharc' PadSharcSpec
hiDef

-- | Padsynth instrument with pad-like amplitude envelope.
psPadSharc' :: PadSharcSpec -> SharcInstr -> Patch2
psPadSharc' :: PadSharcSpec -> SharcInstr -> Patch2
psPadSharc' PadSharcSpec
spec SharcInstr
sh = ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio)
-> (D -> SE (DryWetRatio, DryWetRatio))
-> Patch2
genPsPad (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2 ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio
psPadFilter (PadSharcSpec -> SharcInstr -> D -> SE (DryWetRatio, DryWetRatio)
psOsc PadSharcSpec
spec SharcInstr
sh)

-- | Padsynth instrument with pad-like amplitude envelope. Plays a note and one octave below it.
psDeepPadSharc :: SharcInstr -> Patch2
psDeepPadSharc :: SharcInstr -> Patch2
psDeepPadSharc = PadSharcSpec -> SharcInstr -> Patch2
psDeepPadSharc' PadSharcSpec
forall a. Default a => a
def

psDeepPadSharc' :: PadSharcSpec -> SharcInstr -> Patch2
psDeepPadSharc' :: PadSharcSpec -> SharcInstr -> Patch2
psDeepPadSharc' PadSharcSpec
spec SharcInstr
sh = ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio)
-> (D -> SE (DryWetRatio, DryWetRatio))
-> Patch2
genPsPad (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2 ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio
psPadFilter (PadSharcSpec -> SharcInstr -> D -> SE (DryWetRatio, DryWetRatio)
psDeepOsc PadSharcSpec
spec SharcInstr
sh)

psPadSharcCfd :: Sig -> SharcInstr -> SharcInstr -> Patch2
psPadSharcCfd :: DryWetRatio -> SharcInstr -> SharcInstr -> Patch2
psPadSharcCfd DryWetRatio
k SharcInstr
sh1 SharcInstr
sh2 = DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> Patch2
psPadSharcCfd' DryWetRatio
k (PadSharcSpec
forall a. Default a => a
def, SharcInstr
sh1) (PadSharcSpec
forall a. Default a => a
def, SharcInstr
sh2)

-- | Crossfade between timbres.
psPadSharcCfd' :: Sig -> (PadSharcSpec, SharcInstr) -> (PadSharcSpec, SharcInstr) -> Patch2
psPadSharcCfd' :: DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> Patch2
psPadSharcCfd' DryWetRatio
k (PadSharcSpec, SharcInstr)
spec1 (PadSharcSpec, SharcInstr)
spec2 = ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio)
-> (D -> SE (DryWetRatio, DryWetRatio))
-> Patch2
genPsPad (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2 ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio
psPadFilter (DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> D
-> SE (DryWetRatio, DryWetRatio)
psOscCfd DryWetRatio
k (PadSharcSpec, SharcInstr)
spec1 (PadSharcSpec, SharcInstr)
spec2)

psPadSharcCfd4 :: Sig -> Sig -> SharcInstr -> SharcInstr -> SharcInstr -> SharcInstr -> Patch2
psPadSharcCfd4 :: DryWetRatio
-> DryWetRatio
-> SharcInstr
-> SharcInstr
-> SharcInstr
-> SharcInstr
-> Patch2
psPadSharcCfd4 DryWetRatio
k1 DryWetRatio
k2 SharcInstr
sh1 SharcInstr
sh2 SharcInstr
sh3 SharcInstr
sh4 = DryWetRatio
-> DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> Patch2
psPadSharcCfd4' DryWetRatio
k1 DryWetRatio
k2 (PadSharcSpec
forall a. Default a => a
def, SharcInstr
sh1) (PadSharcSpec
forall a. Default a => a
def, SharcInstr
sh2) (PadSharcSpec
forall a. Default a => a
def, SharcInstr
sh3) (PadSharcSpec
forall a. Default a => a
def, SharcInstr
sh4)

-- | Crossfade between timbres.
psPadSharcCfd4' :: Sig -> Sig -> (PadSharcSpec, SharcInstr) -> (PadSharcSpec, SharcInstr) -> (PadSharcSpec, SharcInstr) -> (PadSharcSpec, SharcInstr) -> Patch2
psPadSharcCfd4' :: DryWetRatio
-> DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> Patch2
psPadSharcCfd4' DryWetRatio
k1 DryWetRatio
k2  (PadSharcSpec, SharcInstr)
spec1 (PadSharcSpec, SharcInstr)
spec2 (PadSharcSpec, SharcInstr)
spec3 (PadSharcSpec, SharcInstr)
spec4 = ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio)
-> (D -> SE (DryWetRatio, DryWetRatio))
-> Patch2
genPsPad (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2 ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio
psPadFilter (DryWetRatio
-> DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> D
-> SE (DryWetRatio, DryWetRatio)
psOscCfd4 DryWetRatio
k1 DryWetRatio
k2 (PadSharcSpec, SharcInstr)
spec1 (PadSharcSpec, SharcInstr)
spec2 (PadSharcSpec, SharcInstr)
spec3 (PadSharcSpec, SharcInstr)
spec4)

psDeepPadSharcCfd :: Sig -> SharcInstr -> SharcInstr -> Patch2
psDeepPadSharcCfd :: DryWetRatio -> SharcInstr -> SharcInstr -> Patch2
psDeepPadSharcCfd DryWetRatio
k SharcInstr
sh1 SharcInstr
sh2 = DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> Patch2
psDeepPadSharcCfd' DryWetRatio
k (PadSharcSpec
forall a. Default a => a
def, SharcInstr
sh1) (PadSharcSpec
forall a. Default a => a
def, SharcInstr
sh2)

-- | Crossfade between timbres.
psDeepPadSharcCfd' :: Sig -> (PadSharcSpec, SharcInstr) -> (PadSharcSpec, SharcInstr) -> Patch2
psDeepPadSharcCfd' :: DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> Patch2
psDeepPadSharcCfd' DryWetRatio
k (PadSharcSpec, SharcInstr)
spec1 (PadSharcSpec, SharcInstr)
spec2 = ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio)
-> (D -> SE (DryWetRatio, DryWetRatio))
-> Patch2
genPsPad (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2 ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio
psPadFilter (DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> D
-> SE (DryWetRatio, DryWetRatio)
psDeepOscCfd DryWetRatio
k (PadSharcSpec, SharcInstr)
spec1 (PadSharcSpec, SharcInstr)
spec2)

psDeepPadSharcCfd4 :: Sig -> Sig -> SharcInstr -> SharcInstr -> SharcInstr -> SharcInstr -> Patch2
psDeepPadSharcCfd4 :: DryWetRatio
-> DryWetRatio
-> SharcInstr
-> SharcInstr
-> SharcInstr
-> SharcInstr
-> Patch2
psDeepPadSharcCfd4 DryWetRatio
k1 DryWetRatio
k2 SharcInstr
sh1 SharcInstr
sh2 SharcInstr
sh3 SharcInstr
sh4 = DryWetRatio
-> DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> Patch2
psDeepPadSharcCfd4' DryWetRatio
k1 DryWetRatio
k2 (PadSharcSpec
forall a. Default a => a
def, SharcInstr
sh1) (PadSharcSpec
forall a. Default a => a
def, SharcInstr
sh2) (PadSharcSpec
forall a. Default a => a
def, SharcInstr
sh3) (PadSharcSpec
forall a. Default a => a
def, SharcInstr
sh4)

-- | Crossfade between timbres.
psDeepPadSharcCfd4' :: Sig -> Sig -> (PadSharcSpec, SharcInstr) -> (PadSharcSpec, SharcInstr) -> (PadSharcSpec, SharcInstr) -> (PadSharcSpec, SharcInstr) -> Patch2
psDeepPadSharcCfd4' :: DryWetRatio
-> DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> Patch2
psDeepPadSharcCfd4' DryWetRatio
k1 DryWetRatio
k2  (PadSharcSpec, SharcInstr)
spec1 (PadSharcSpec, SharcInstr)
spec2 (PadSharcSpec, SharcInstr)
spec3 (PadSharcSpec, SharcInstr)
spec4 = ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio)
-> (D -> SE (DryWetRatio, DryWetRatio))
-> Patch2
genPsPad (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2 ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio
psPadFilter (DryWetRatio
-> DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> D
-> SE (DryWetRatio, DryWetRatio)
psDeepOscCfd4 DryWetRatio
k1 DryWetRatio
k2 (PadSharcSpec, SharcInstr)
spec1 (PadSharcSpec, SharcInstr)
spec2 (PadSharcSpec, SharcInstr)
spec3 (PadSharcSpec, SharcInstr)
spec4)


-- | Padsynth instrument with pad-like amplitude envelope and moog filter.
psSoftPadSharc :: SharcInstr -> Patch2
psSoftPadSharc :: SharcInstr -> Patch2
psSoftPadSharc = PadSharcSpec -> SharcInstr -> Patch2
psSoftPadSharc' PadSharcSpec
forall a. Default a => a
def

-- | High resolution Padsynth instrument with pad-like amplitude envelope and moog filter (resource hungry).
psSoftPadSharcHifi :: SharcInstr -> Patch2
psSoftPadSharcHifi :: SharcInstr -> Patch2
psSoftPadSharcHifi = PadSharcSpec -> SharcInstr -> Patch2
psSoftPadSharc' PadSharcSpec
hiDef

-- | Padsynth instrument with pad-like amplitude envelope and moog filter.
-- We can specify aux parameters.
psSoftPadSharc' :: PadSharcSpec -> SharcInstr -> Patch2
psSoftPadSharc' :: PadSharcSpec -> SharcInstr -> Patch2
psSoftPadSharc' PadSharcSpec
spec SharcInstr
sh = ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio)
-> (D -> SE (DryWetRatio, DryWetRatio))
-> Patch2
genPsPad (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2 ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio
psSoftPadFilter (PadSharcSpec -> SharcInstr -> D -> SE (DryWetRatio, DryWetRatio)
psOsc PadSharcSpec
spec SharcInstr
sh)

-- | Padsynth instrument with pad-like amplitude envelope and moog filter. Plays a note and one octave below it.
psDeepSoftPadSharc :: SharcInstr -> Patch2
psDeepSoftPadSharc :: SharcInstr -> Patch2
psDeepSoftPadSharc = PadSharcSpec -> SharcInstr -> Patch2
psDeepSoftPadSharc' PadSharcSpec
forall a. Default a => a
def

psDeepSoftPadSharc' :: PadSharcSpec -> SharcInstr -> Patch2
psDeepSoftPadSharc' :: PadSharcSpec -> SharcInstr -> Patch2
psDeepSoftPadSharc' PadSharcSpec
spec SharcInstr
sh = ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio)
-> (D -> SE (DryWetRatio, DryWetRatio))
-> Patch2
genPsPad (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2 ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio
psSoftPadFilter (PadSharcSpec -> SharcInstr -> D -> SE (DryWetRatio, DryWetRatio)
psDeepOsc PadSharcSpec
spec SharcInstr
sh)


psSoftPadSharcCfd :: Sig -> SharcInstr -> SharcInstr -> Patch2
psSoftPadSharcCfd :: DryWetRatio -> SharcInstr -> SharcInstr -> Patch2
psSoftPadSharcCfd DryWetRatio
k SharcInstr
sh1 SharcInstr
sh2 = DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> Patch2
psSoftPadSharcCfd' DryWetRatio
k (PadSharcSpec
forall a. Default a => a
def, SharcInstr
sh1) (PadSharcSpec
forall a. Default a => a
def, SharcInstr
sh2)

-- | Crossfade between timbres.
psSoftPadSharcCfd' :: Sig -> (PadSharcSpec, SharcInstr) -> (PadSharcSpec, SharcInstr) -> Patch2
psSoftPadSharcCfd' :: DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> Patch2
psSoftPadSharcCfd' DryWetRatio
k (PadSharcSpec, SharcInstr)
spec1 (PadSharcSpec, SharcInstr)
spec2 = ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio)
-> (D -> SE (DryWetRatio, DryWetRatio))
-> Patch2
genPsPad (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2 ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio
psSoftPadFilter (DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> D
-> SE (DryWetRatio, DryWetRatio)
psOscCfd DryWetRatio
k (PadSharcSpec, SharcInstr)
spec1 (PadSharcSpec, SharcInstr)
spec2)

psSoftPadSharcCfd4 :: Sig -> Sig -> SharcInstr -> SharcInstr -> SharcInstr -> SharcInstr -> Patch2
psSoftPadSharcCfd4 :: DryWetRatio
-> DryWetRatio
-> SharcInstr
-> SharcInstr
-> SharcInstr
-> SharcInstr
-> Patch2
psSoftPadSharcCfd4 DryWetRatio
k1 DryWetRatio
k2 SharcInstr
sh1 SharcInstr
sh2 SharcInstr
sh3 SharcInstr
sh4 = DryWetRatio
-> DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> Patch2
psSoftPadSharcCfd4' DryWetRatio
k1 DryWetRatio
k2 (PadSharcSpec
forall a. Default a => a
def, SharcInstr
sh1) (PadSharcSpec
forall a. Default a => a
def, SharcInstr
sh2) (PadSharcSpec
forall a. Default a => a
def, SharcInstr
sh3) (PadSharcSpec
forall a. Default a => a
def, SharcInstr
sh4)

-- | Crossfade between timbres.
psSoftPadSharcCfd4' :: Sig -> Sig -> (PadSharcSpec, SharcInstr) -> (PadSharcSpec, SharcInstr) -> (PadSharcSpec, SharcInstr) -> (PadSharcSpec, SharcInstr) -> Patch2
psSoftPadSharcCfd4' :: DryWetRatio
-> DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> Patch2
psSoftPadSharcCfd4' DryWetRatio
k1 DryWetRatio
k2  (PadSharcSpec, SharcInstr)
spec1 (PadSharcSpec, SharcInstr)
spec2 (PadSharcSpec, SharcInstr)
spec3 (PadSharcSpec, SharcInstr)
spec4 = ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio)
-> (D -> SE (DryWetRatio, DryWetRatio))
-> Patch2
genPsPad (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2 ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio
psSoftPadFilter (DryWetRatio
-> DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> D
-> SE (DryWetRatio, DryWetRatio)
psOscCfd4 DryWetRatio
k1 DryWetRatio
k2 (PadSharcSpec, SharcInstr)
spec1 (PadSharcSpec, SharcInstr)
spec2 (PadSharcSpec, SharcInstr)
spec3 (PadSharcSpec, SharcInstr)
spec4)

psDeepSoftPadSharcCfd :: Sig -> SharcInstr -> SharcInstr -> Patch2
psDeepSoftPadSharcCfd :: DryWetRatio -> SharcInstr -> SharcInstr -> Patch2
psDeepSoftPadSharcCfd DryWetRatio
k SharcInstr
sh1 SharcInstr
sh2 = DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> Patch2
psDeepSoftPadSharcCfd' DryWetRatio
k (PadSharcSpec
forall a. Default a => a
def, SharcInstr
sh1) (PadSharcSpec
forall a. Default a => a
def, SharcInstr
sh2)

-- | Crossfade between timbres.
psDeepSoftPadSharcCfd' :: Sig -> (PadSharcSpec, SharcInstr) -> (PadSharcSpec, SharcInstr) -> Patch2
psDeepSoftPadSharcCfd' :: DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> Patch2
psDeepSoftPadSharcCfd' DryWetRatio
k (PadSharcSpec, SharcInstr)
spec1 (PadSharcSpec, SharcInstr)
spec2 = ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio)
-> (D -> SE (DryWetRatio, DryWetRatio))
-> Patch2
genPsPad (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2 ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio
psSoftPadFilter (DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> D
-> SE (DryWetRatio, DryWetRatio)
psDeepOscCfd DryWetRatio
k (PadSharcSpec, SharcInstr)
spec1 (PadSharcSpec, SharcInstr)
spec2)

psDeepSoftPadSharcCfd4 :: Sig -> Sig -> SharcInstr -> SharcInstr -> SharcInstr -> SharcInstr -> Patch2
psDeepSoftPadSharcCfd4 :: DryWetRatio
-> DryWetRatio
-> SharcInstr
-> SharcInstr
-> SharcInstr
-> SharcInstr
-> Patch2
psDeepSoftPadSharcCfd4 DryWetRatio
k1 DryWetRatio
k2 SharcInstr
sh1 SharcInstr
sh2 SharcInstr
sh3 SharcInstr
sh4 = DryWetRatio
-> DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> Patch2
psDeepSoftPadSharcCfd4' DryWetRatio
k1 DryWetRatio
k2 (PadSharcSpec
forall a. Default a => a
def, SharcInstr
sh1) (PadSharcSpec
forall a. Default a => a
def, SharcInstr
sh2) (PadSharcSpec
forall a. Default a => a
def, SharcInstr
sh3) (PadSharcSpec
forall a. Default a => a
def, SharcInstr
sh4)

-- | Crossfade between timbres.
psDeepSoftPadSharcCfd4' :: Sig -> Sig -> (PadSharcSpec, SharcInstr) -> (PadSharcSpec, SharcInstr) -> (PadSharcSpec, SharcInstr) -> (PadSharcSpec, SharcInstr) -> Patch2
psDeepSoftPadSharcCfd4' :: DryWetRatio
-> DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> Patch2
psDeepSoftPadSharcCfd4' DryWetRatio
k1 DryWetRatio
k2  (PadSharcSpec, SharcInstr)
spec1 (PadSharcSpec, SharcInstr)
spec2 (PadSharcSpec, SharcInstr)
spec3 (PadSharcSpec, SharcInstr)
spec4 = ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio)
-> (D -> SE (DryWetRatio, DryWetRatio))
-> Patch2
genPsPad (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2 ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio
psSoftPadFilter (DryWetRatio
-> DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> D
-> SE (DryWetRatio, DryWetRatio)
psDeepOscCfd4 DryWetRatio
k1 DryWetRatio
k2 (PadSharcSpec, SharcInstr)
spec1 (PadSharcSpec, SharcInstr)
spec2 (PadSharcSpec, SharcInstr)
spec3 (PadSharcSpec, SharcInstr)
spec4)


-- | Padsynth instrument with pad-like amplitude envelope and @magicCave2@ reverb.
psMagicPadSharc :: SharcInstr -> Patch2
psMagicPadSharc :: SharcInstr -> Patch2
psMagicPadSharc = PadSharcSpec -> SharcInstr -> Patch2
psMagicPadSharc' PadSharcSpec
forall a. Default a => a
def

-- | High resolution Padsynth instrument with pad-like amplitude envelope and @magicCave2@ reverb.
psMagicPadSharcHifi :: SharcInstr -> Patch2
psMagicPadSharcHifi :: SharcInstr -> Patch2
psMagicPadSharcHifi = PadSharcSpec -> SharcInstr -> Patch2
psMagicPadSharc' PadSharcSpec
hiDef

-- | Padsynth instrument with pad-like amplitude envelope and @magicCave2@ reverb.
psMagicPadSharc' :: PadSharcSpec -> SharcInstr -> Patch2
psMagicPadSharc' :: PadSharcSpec -> SharcInstr -> Patch2
psMagicPadSharc' PadSharcSpec
spec SharcInstr
sh = ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio)
-> (D -> SE (DryWetRatio, DryWetRatio))
-> Patch2
genPsPad (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
magicCave2 ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio
psPadFilter (PadSharcSpec -> SharcInstr -> D -> SE (DryWetRatio, DryWetRatio)
psOsc PadSharcSpec
spec SharcInstr
sh)

-- | Padsynth instrument with pad-like amplitude envelope and @magicCave2@ reverb. Plays a note and one octave below it.
psDeepMagicPadSharc :: SharcInstr -> Patch2
psDeepMagicPadSharc :: SharcInstr -> Patch2
psDeepMagicPadSharc = PadSharcSpec -> SharcInstr -> Patch2
psDeepMagicPadSharc' PadSharcSpec
forall a. Default a => a
def

-- | Padsynth instrument with pad-like amplitude envelope and @magicCave2@ reverb. Plays a note and one octave below it.
psDeepMagicPadSharc' :: PadSharcSpec -> SharcInstr -> Patch2
psDeepMagicPadSharc' :: PadSharcSpec -> SharcInstr -> Patch2
psDeepMagicPadSharc' PadSharcSpec
spec SharcInstr
sh = ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio)
-> (D -> SE (DryWetRatio, DryWetRatio))
-> Patch2
genPsPad (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
magicCave2 ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio
psPadFilter (PadSharcSpec -> SharcInstr -> D -> SE (DryWetRatio, DryWetRatio)
psDeepOsc PadSharcSpec
spec SharcInstr
sh)

-- | Padsynth instrument with pad-like amplitude envelope and moog filter and @magicCave2@ reverb (resource hungry).
psMagicSoftPadSharc :: SharcInstr -> Patch2
psMagicSoftPadSharc :: SharcInstr -> Patch2
psMagicSoftPadSharc = PadSharcSpec -> SharcInstr -> Patch2
psMagicSoftPadSharc' PadSharcSpec
forall a. Default a => a
def

-- | High resolution Padsynth instrument with pad-like amplitude envelope and moog filter and @magicCave2@ reverb (resource hungry).
psMagicSoftPadSharcHifi :: SharcInstr -> Patch2
psMagicSoftPadSharcHifi :: SharcInstr -> Patch2
psMagicSoftPadSharcHifi = PadSharcSpec -> SharcInstr -> Patch2
psMagicSoftPadSharc' PadSharcSpec
hiDef

-- | Padsynth instrument with pad-like amplitude envelope and moog filter and @magicCave2@ reverb (resource hungry).
-- We can specify aux parameters.
psMagicSoftPadSharc' :: PadSharcSpec -> SharcInstr -> Patch2
psMagicSoftPadSharc' :: PadSharcSpec -> SharcInstr -> Patch2
psMagicSoftPadSharc' PadSharcSpec
spec SharcInstr
sh = ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio)
-> (D -> SE (DryWetRatio, DryWetRatio))
-> Patch2
genPsPad (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
magicCave2 ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio
psSoftPadFilter (PadSharcSpec -> SharcInstr -> D -> SE (DryWetRatio, DryWetRatio)
psOsc PadSharcSpec
spec SharcInstr
sh)


-- | Padsynth instrument with pad-like amplitude envelope and moog filter and @magicCave2@ reverb (resource hungry).
psDeepMagicSoftPadSharc :: SharcInstr -> Patch2
psDeepMagicSoftPadSharc :: SharcInstr -> Patch2
psDeepMagicSoftPadSharc = PadSharcSpec -> SharcInstr -> Patch2
psDeepMagicSoftPadSharc' PadSharcSpec
forall a. Default a => a
def

-- | Padsynth instrument with pad-like amplitude envelope and moog filter and @magicCave2@ reverb (resource hungry).
-- We can specify aux parameters.
psDeepMagicSoftPadSharc' :: PadSharcSpec -> SharcInstr -> Patch2
psDeepMagicSoftPadSharc' :: PadSharcSpec -> SharcInstr -> Patch2
psDeepMagicSoftPadSharc' PadSharcSpec
spec SharcInstr
sh = ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio)
-> (D -> SE (DryWetRatio, DryWetRatio))
-> Patch2
genPsPad (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
magicCave2 ResonFilter -> CsdNote D -> DryWetRatio -> DryWetRatio
psSoftPadFilter (PadSharcSpec -> SharcInstr -> D -> SE (DryWetRatio, DryWetRatio)
psDeepOsc PadSharcSpec
spec SharcInstr
sh)

-- | Deep spiritual drones.
--
-- > vedicPad sharcInstrument bandwidth
--
-- Good values for bandwidth lies in the interval [0, 120]
vedicPad :: SharcInstr -> PadsynthBandwidth -> Patch2
vedicPad :: SharcInstr -> PadsynthBandwidth -> Patch2
vedicPad SharcInstr
instr PadsynthBandwidth
bandwidth = DryWetRatio -> Patch2 -> Patch2
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.8 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$
  DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> SE a) -> Patch a -> Patch a
addPreFx DryWetRatio
0.45 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio
-> DryWetRatio
-> DryWetRatio
-> (DryWetRatio, DryWetRatio)
-> (DryWetRatio, DryWetRatio)
pingPong DryWetRatio
0.25 DryWetRatio
0.65 DryWetRatio
0.5) (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$
  PadSharcSpec -> SharcInstr -> Patch2
psDeepSoftPadSharc' (PadSharcSpec
forall a. Default a => a
def { padSharcBandwidth = bandwidth, padSharcSize = 15 })  SharcInstr
instr

-- | Deep spiritual drones. Crossfade between two instruments.
--
-- > vedicPadCfd cfdLevel sharcInstrument1 sharcInstrument2 bandwidth
--
-- Good values for bandwidth lies in the interval [0, 120]
vedicPadCfd :: Sig -> SharcInstr -> SharcInstr -> PadsynthBandwidth -> Patch2
vedicPadCfd :: DryWetRatio
-> SharcInstr -> SharcInstr -> PadsynthBandwidth -> Patch2
vedicPadCfd DryWetRatio
k SharcInstr
instr1 SharcInstr
instr2 PadsynthBandwidth
bandwidth = DryWetRatio -> Patch2 -> Patch2
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.8 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$
  DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> SE a) -> Patch a -> Patch a
addPreFx DryWetRatio
0.45 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio
-> DryWetRatio
-> DryWetRatio
-> (DryWetRatio, DryWetRatio)
-> (DryWetRatio, DryWetRatio)
pingPong DryWetRatio
0.25 DryWetRatio
0.65 DryWetRatio
0.5) (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$
  DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> Patch2
psDeepSoftPadSharcCfd' DryWetRatio
k (PadSharcSpec
forall a. Default a => a
def { padSharcBandwidth = bandwidth, padSharcSize = 15 },  SharcInstr
instr1) (PadSharcSpec
forall a. Default a => a
def { padSharcBandwidth = bandwidth, padSharcSize = 15 },  SharcInstr
instr2)

-- | Deep spiritual drones. Crossfade between four instruments.
--
-- > vedicPadCfd4 cfdLevelX cfdLevelY sharcInstrument1 sharcInstrument2 sharcInstrument3 sharcInstrument4 bandwidth
--
-- Good values for bandwidth lies in the interval [0, 120]
vedicPadCfd4 :: Sig -> Sig -> SharcInstr -> SharcInstr -> SharcInstr -> SharcInstr -> PadsynthBandwidth -> Patch2
vedicPadCfd4 :: DryWetRatio
-> DryWetRatio
-> SharcInstr
-> SharcInstr
-> SharcInstr
-> SharcInstr
-> PadsynthBandwidth
-> Patch2
vedicPadCfd4 DryWetRatio
kX DryWetRatio
kY SharcInstr
instr1 SharcInstr
instr2 SharcInstr
instr3 SharcInstr
instr4 PadsynthBandwidth
bandwidth = DryWetRatio -> Patch2 -> Patch2
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.8 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$
  DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> SE a) -> Patch a -> Patch a
addPreFx DryWetRatio
0.45 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.  DryWetRatio
-> DryWetRatio
-> DryWetRatio
-> (DryWetRatio, DryWetRatio)
-> (DryWetRatio, DryWetRatio)
pingPong DryWetRatio
0.25 DryWetRatio
0.65 DryWetRatio
0.5) (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$
  DryWetRatio
-> DryWetRatio
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> (PadSharcSpec, SharcInstr)
-> Patch2
psDeepSoftPadSharcCfd4' DryWetRatio
kX DryWetRatio
kY
    (PadSharcSpec
forall a. Default a => a
def { padSharcBandwidth = bandwidth, padSharcSize = 15 },  SharcInstr
instr1) (PadSharcSpec
forall a. Default a => a
def { padSharcBandwidth = bandwidth, padSharcSize = 15 },  SharcInstr
instr2)
    (PadSharcSpec
forall a. Default a => a
def { padSharcBandwidth = bandwidth, padSharcSize = 15 },  SharcInstr
instr3) (PadSharcSpec
forall a. Default a => a
def { padSharcBandwidth = bandwidth, padSharcSize = 15 },  SharcInstr
instr4)


-- | Deep spiritual drones. Contains twice as many ftables as for simple @vedicPad@.
--
-- > vedicPad sharcInstrument bandwidth
--
-- Good values for bandwidth lies in the interval [0, 120]
vedicPadHifi :: SharcInstr -> PadsynthBandwidth -> Patch2
vedicPadHifi :: SharcInstr -> PadsynthBandwidth -> Patch2
vedicPadHifi SharcInstr
instr PadsynthBandwidth
bandwidth = DryWetRatio -> Patch2 -> Patch2
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.8 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$
  DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> SE a) -> Patch a -> Patch a
addPreFx DryWetRatio
0.45 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio
-> DryWetRatio
-> DryWetRatio
-> (DryWetRatio, DryWetRatio)
-> (DryWetRatio, DryWetRatio)
pingPong DryWetRatio
0.25 DryWetRatio
0.65 DryWetRatio
0.5) (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$
  Patch2 -> Patch2
forall b. (SigSpace b, Sigs b) => Patch b -> Patch b
deepPad (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$
  PadSharcSpec -> SharcInstr -> Patch2
psSoftPadSharc' (PadSharcSpec
forall a. Default a => a
def { padSharcBandwidth = bandwidth, padSharcSize = 32 })  SharcInstr
instr

-- | Deep spiritual drones. Contains only quater of ftables as for simple @vedicPad@.
--
-- > vedicPad sharcInstrument bandwidth
--
-- Good values for bandwidth lies in the interval [0, 120]
vedicPadLofi :: SharcInstr -> PadsynthBandwidth -> Patch2
vedicPadLofi :: SharcInstr -> PadsynthBandwidth -> Patch2
vedicPadLofi SharcInstr
instr PadsynthBandwidth
bandwidth = DryWetRatio -> Patch2 -> Patch2
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.8 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$
  DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Patch2
-> Patch2
forall a. DryWetRatio -> (a -> SE a) -> Patch a -> Patch a
addPreFx DryWetRatio
0.45 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio
-> DryWetRatio
-> DryWetRatio
-> (DryWetRatio, DryWetRatio)
-> (DryWetRatio, DryWetRatio)
pingPong DryWetRatio
0.25 DryWetRatio
0.65 DryWetRatio
0.5) (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$
  Patch2 -> Patch2
forall b. (SigSpace b, Sigs b) => Patch b -> Patch b
deepPad (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$
  PadSharcSpec -> SharcInstr -> Patch2
psSoftPadSharc' (PadSharcSpec
forall a. Default a => a
def { padSharcBandwidth = bandwidth, padSharcSize = 4 })  SharcInstr
instr

-- | Eminent
vibhu :: PadsynthBandwidth -> Patch2
vibhu :: PadsynthBandwidth -> Patch2
vibhu = SharcInstr -> PadsynthBandwidth -> Patch2
vedicPad SharcInstr
shVibhu

shVibhu :: SharcInstr
shVibhu = SharcInstr
shAltoFlute

-- | Wise
rishi :: PadsynthBandwidth -> Patch2
rishi :: PadsynthBandwidth -> Patch2
rishi = SharcInstr -> PadsynthBandwidth -> Patch2
vedicPad SharcInstr
shRishi

shRishi :: SharcInstr
shRishi = SharcInstr
shFlute

-- | Fire
agni :: PadsynthBandwidth -> Patch2
agni :: PadsynthBandwidth -> Patch2
agni  =  SharcInstr -> PadsynthBandwidth -> Patch2
vedicPad SharcInstr
shAgni

shAgni :: SharcInstr
shAgni = SharcInstr
shCello

-- | Material nature
prakriti :: PadsynthBandwidth -> Patch2
prakriti :: PadsynthBandwidth -> Patch2
prakriti = SharcInstr -> PadsynthBandwidth -> Patch2
vedicPad SharcInstr
shPrakriti

shPrakriti :: SharcInstr
shPrakriti = SharcInstr
shClarinet

-- | Desire
rajas :: PadsynthBandwidth -> Patch2
rajas :: PadsynthBandwidth -> Patch2
rajas = SharcInstr -> PadsynthBandwidth -> Patch2
vedicPad SharcInstr
shRajas

shRajas :: SharcInstr
shRajas = SharcInstr
shViolin

-- | the hero
avatara :: PadsynthBandwidth -> Patch2
avatara :: PadsynthBandwidth -> Patch2
avatara = SharcInstr -> PadsynthBandwidth -> Patch2
vedicPad SharcInstr
shAvatara

shAvatara :: SharcInstr
shAvatara = SharcInstr
shFrenchHorn

-- | Earth
bhumi :: PadsynthBandwidth -> Patch2
bhumi :: PadsynthBandwidth -> Patch2
bhumi = SharcInstr -> PadsynthBandwidth -> Patch2
vedicPad SharcInstr
shBhumi

shBhumi :: SharcInstr
shBhumi = SharcInstr
shViolinsEnsemble

-- | Eminent
vibhuHifi :: PadsynthBandwidth -> Patch2
vibhuHifi :: PadsynthBandwidth -> Patch2
vibhuHifi = SharcInstr -> PadsynthBandwidth -> Patch2
vedicPadHifi SharcInstr
shAltoFlute

-- | Wise
rishiHifi :: PadsynthBandwidth -> Patch2
rishiHifi :: PadsynthBandwidth -> Patch2
rishiHifi = SharcInstr -> PadsynthBandwidth -> Patch2
vedicPadHifi SharcInstr
shFlute

-- | Fire
agniHifi :: PadsynthBandwidth -> Patch2
agniHifi :: PadsynthBandwidth -> Patch2
agniHifi  =  SharcInstr -> PadsynthBandwidth -> Patch2
vedicPadHifi SharcInstr
shCello

-- | Material nature
prakritiHifi :: PadsynthBandwidth -> Patch2
prakritiHifi :: PadsynthBandwidth -> Patch2
prakritiHifi = SharcInstr -> PadsynthBandwidth -> Patch2
vedicPadHifi SharcInstr
shClarinet

-- | Desire
rajasHifi :: PadsynthBandwidth -> Patch2
rajasHifi :: PadsynthBandwidth -> Patch2
rajasHifi = SharcInstr -> PadsynthBandwidth -> Patch2
vedicPadHifi SharcInstr
shViolin

-- | the hero
avataraHifi :: PadsynthBandwidth -> Patch2
avataraHifi :: PadsynthBandwidth -> Patch2
avataraHifi = SharcInstr -> PadsynthBandwidth -> Patch2
vedicPadHifi SharcInstr
shFrenchHorn

-- | Earth
bhumiHifi :: PadsynthBandwidth -> Patch2
bhumiHifi :: PadsynthBandwidth -> Patch2
bhumiHifi = SharcInstr -> PadsynthBandwidth -> Patch2
vedicPadHifi SharcInstr
shViolinsEnsemble


-- | Eminent
vibhuLofi :: PadsynthBandwidth -> Patch2
vibhuLofi :: PadsynthBandwidth -> Patch2
vibhuLofi = SharcInstr -> PadsynthBandwidth -> Patch2
vedicPadLofi SharcInstr
shAltoFlute

-- | Wise
rishiLofi :: PadsynthBandwidth -> Patch2
rishiLofi :: PadsynthBandwidth -> Patch2
rishiLofi = SharcInstr -> PadsynthBandwidth -> Patch2
vedicPadLofi SharcInstr
shFlute

-- | Fire
agniLofi :: PadsynthBandwidth -> Patch2
agniLofi :: PadsynthBandwidth -> Patch2
agniLofi  =  SharcInstr -> PadsynthBandwidth -> Patch2
vedicPadLofi SharcInstr
shCello

-- | Material nature
prakritiLofi :: PadsynthBandwidth -> Patch2
prakritiLofi :: PadsynthBandwidth -> Patch2
prakritiLofi = SharcInstr -> PadsynthBandwidth -> Patch2
vedicPadLofi SharcInstr
shClarinet

-- | Desire
rajasLofi :: PadsynthBandwidth -> Patch2
rajasLofi :: PadsynthBandwidth -> Patch2
rajasLofi = SharcInstr -> PadsynthBandwidth -> Patch2
vedicPadLofi SharcInstr
shViolin

-- | the hero
avataraLofi :: PadsynthBandwidth -> Patch2
avataraLofi :: PadsynthBandwidth -> Patch2
avataraLofi = SharcInstr -> PadsynthBandwidth -> Patch2
vedicPadLofi SharcInstr
shFrenchHorn

-- | Earth
bhumiLofi :: PadsynthBandwidth -> Patch2
bhumiLofi :: PadsynthBandwidth -> Patch2
bhumiLofi = SharcInstr -> PadsynthBandwidth -> Patch2
vedicPadLofi SharcInstr
shViolinsEnsemble

-----------------------------
-- crossfade pads

vedicCfd :: SharcInstr -> SharcInstr -> PadsynthBandwidth -> Sig -> Patch2
vedicCfd :: SharcInstr
-> SharcInstr -> PadsynthBandwidth -> DryWetRatio -> Patch2
vedicCfd SharcInstr
inst1 SharcInstr
instr2 PadsynthBandwidth
bandwidth DryWetRatio
cfdLevel = DryWetRatio
-> SharcInstr -> SharcInstr -> PadsynthBandwidth -> Patch2
vedicPadCfd DryWetRatio
cfdLevel SharcInstr
inst1 SharcInstr
instr2 PadsynthBandwidth
bandwidth

vibhuRishi :: PadsynthBandwidth -> Sig  -> Patch2
vibhuRishi :: PadsynthBandwidth -> DryWetRatio -> Patch2
vibhuRishi = SharcInstr
-> SharcInstr -> PadsynthBandwidth -> DryWetRatio -> Patch2
vedicCfd SharcInstr
shVibhu SharcInstr
shRishi

vibhuAgni :: PadsynthBandwidth -> Sig  -> Patch2
vibhuAgni :: PadsynthBandwidth -> DryWetRatio -> Patch2
vibhuAgni = SharcInstr
-> SharcInstr -> PadsynthBandwidth -> DryWetRatio -> Patch2
vedicCfd SharcInstr
shVibhu SharcInstr
shAgni

vibhuPrakriti :: PadsynthBandwidth -> Sig  -> Patch2
vibhuPrakriti :: PadsynthBandwidth -> DryWetRatio -> Patch2
vibhuPrakriti = SharcInstr
-> SharcInstr -> PadsynthBandwidth -> DryWetRatio -> Patch2
vedicCfd SharcInstr
shVibhu SharcInstr
shPrakriti

vibhuRajas :: PadsynthBandwidth -> Sig  -> Patch2
vibhuRajas :: PadsynthBandwidth -> DryWetRatio -> Patch2
vibhuRajas = SharcInstr
-> SharcInstr -> PadsynthBandwidth -> DryWetRatio -> Patch2
vedicCfd SharcInstr
shVibhu SharcInstr
shRajas

vibhuAvatara :: PadsynthBandwidth -> Sig  -> Patch2
vibhuAvatara :: PadsynthBandwidth -> DryWetRatio -> Patch2
vibhuAvatara = SharcInstr
-> SharcInstr -> PadsynthBandwidth -> DryWetRatio -> Patch2
vedicCfd SharcInstr
shVibhu SharcInstr
shAvatara

vibhuBhumi :: PadsynthBandwidth -> Sig -> Patch2
vibhuBhumi :: PadsynthBandwidth -> DryWetRatio -> Patch2
vibhuBhumi = SharcInstr
-> SharcInstr -> PadsynthBandwidth -> DryWetRatio -> Patch2
vedicCfd SharcInstr
shVibhu SharcInstr
shBhumi

rishiAgni :: PadsynthBandwidth -> Sig -> Patch2
rishiAgni :: PadsynthBandwidth -> DryWetRatio -> Patch2
rishiAgni = SharcInstr
-> SharcInstr -> PadsynthBandwidth -> DryWetRatio -> Patch2
vedicCfd SharcInstr
shRishi SharcInstr
shAgni

rishiPrakriti :: PadsynthBandwidth -> Sig -> Patch2
rishiPrakriti :: PadsynthBandwidth -> DryWetRatio -> Patch2
rishiPrakriti = SharcInstr
-> SharcInstr -> PadsynthBandwidth -> DryWetRatio -> Patch2
vedicCfd SharcInstr
shRishi SharcInstr
shPrakriti

rishiRajas :: PadsynthBandwidth -> Sig -> Patch2
rishiRajas :: PadsynthBandwidth -> DryWetRatio -> Patch2
rishiRajas = SharcInstr
-> SharcInstr -> PadsynthBandwidth -> DryWetRatio -> Patch2
vedicCfd SharcInstr
shRishi SharcInstr
shRajas

rishiAvatara :: PadsynthBandwidth -> Sig -> Patch2
rishiAvatara :: PadsynthBandwidth -> DryWetRatio -> Patch2
rishiAvatara = SharcInstr
-> SharcInstr -> PadsynthBandwidth -> DryWetRatio -> Patch2
vedicCfd SharcInstr
shRishi SharcInstr
shAvatara

rishiBhumi :: PadsynthBandwidth -> Sig -> Patch2
rishiBhumi :: PadsynthBandwidth -> DryWetRatio -> Patch2
rishiBhumi = SharcInstr
-> SharcInstr -> PadsynthBandwidth -> DryWetRatio -> Patch2
vedicCfd SharcInstr
shRishi SharcInstr
shRajas

agniPrakriti :: PadsynthBandwidth -> Sig -> Patch2
agniPrakriti :: PadsynthBandwidth -> DryWetRatio -> Patch2
agniPrakriti = SharcInstr
-> SharcInstr -> PadsynthBandwidth -> DryWetRatio -> Patch2
vedicCfd SharcInstr
shAgni SharcInstr
shPrakriti

agniRajas :: PadsynthBandwidth -> Sig -> Patch2
agniRajas :: PadsynthBandwidth -> DryWetRatio -> Patch2
agniRajas = SharcInstr
-> SharcInstr -> PadsynthBandwidth -> DryWetRatio -> Patch2
vedicCfd SharcInstr
shAgni SharcInstr
shRajas

agniAvatara :: PadsynthBandwidth -> Sig -> Patch2
agniAvatara :: PadsynthBandwidth -> DryWetRatio -> Patch2
agniAvatara = SharcInstr
-> SharcInstr -> PadsynthBandwidth -> DryWetRatio -> Patch2
vedicCfd SharcInstr
shAgni SharcInstr
shAvatara

agniBhumi :: PadsynthBandwidth -> Sig -> Patch2
agniBhumi :: PadsynthBandwidth -> DryWetRatio -> Patch2
agniBhumi = SharcInstr
-> SharcInstr -> PadsynthBandwidth -> DryWetRatio -> Patch2
vedicCfd SharcInstr
shAgni SharcInstr
shBhumi

prakritiRajas :: PadsynthBandwidth -> Sig -> Patch2
prakritiRajas :: PadsynthBandwidth -> DryWetRatio -> Patch2
prakritiRajas = SharcInstr
-> SharcInstr -> PadsynthBandwidth -> DryWetRatio -> Patch2
vedicCfd SharcInstr
shPrakriti SharcInstr
shRajas

prakritiAvatara :: PadsynthBandwidth -> Sig -> Patch2
prakritiAvatara :: PadsynthBandwidth -> DryWetRatio -> Patch2
prakritiAvatara = SharcInstr
-> SharcInstr -> PadsynthBandwidth -> DryWetRatio -> Patch2
vedicCfd SharcInstr
shPrakriti SharcInstr
shAvatara

prakritiBhumi :: PadsynthBandwidth -> Sig -> Patch2
prakritiBhumi :: PadsynthBandwidth -> DryWetRatio -> Patch2
prakritiBhumi = SharcInstr
-> SharcInstr -> PadsynthBandwidth -> DryWetRatio -> Patch2
vedicCfd SharcInstr
shPrakriti SharcInstr
shBhumi

rajasAvatara :: PadsynthBandwidth -> Sig -> Patch2
rajasAvatara :: PadsynthBandwidth -> DryWetRatio -> Patch2
rajasAvatara = SharcInstr
-> SharcInstr -> PadsynthBandwidth -> DryWetRatio -> Patch2
vedicCfd SharcInstr
shRajas SharcInstr
shAvatara

rajasBhumi :: PadsynthBandwidth -> Sig -> Patch2
rajasBhumi :: PadsynthBandwidth -> DryWetRatio -> Patch2
rajasBhumi = SharcInstr
-> SharcInstr -> PadsynthBandwidth -> DryWetRatio -> Patch2
vedicCfd SharcInstr
shRajas SharcInstr
shBhumi

avataraBhumi :: PadsynthBandwidth -> Sig -> Patch2
avataraBhumi :: PadsynthBandwidth -> DryWetRatio -> Patch2
avataraBhumi = SharcInstr
-> SharcInstr -> PadsynthBandwidth -> DryWetRatio -> Patch2
vedicCfd SharcInstr
shAvatara SharcInstr
shBhumi

----------------------------------------
-- noisy padsynth pads

noisyRise :: Patch2
noisyRise :: Patch2
noisyRise = Patch2 -> Patch2
fxs (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> CsdNote D
-> SE (CpsInstrOut (DryWetRatio -> SE (DryWetRatio, DryWetRatio)))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps ((DryWetRatio -> SE (DryWetRatio, DryWetRatio))
 -> CsdNote D
 -> SE (CpsInstrOut (DryWetRatio -> SE (DryWetRatio, DryWetRatio))))
-> (DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> CsdNote D
-> SE (CpsInstrOut (DryWetRatio -> SE (DryWetRatio, DryWetRatio)))
forall a b. (a -> b) -> a -> b
$ \DryWetRatio
cps -> DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.24 (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ DryWetRatio -> SE (DryWetRatio, DryWetRatio)
wave DryWetRatio
cps
  where
    fxs :: Patch2 -> Patch2
fxs = [GenFxSpec (DryWetRatio, DryWetRatio)] -> Patch2 -> Patch2
forall a. [GenFxSpec a] -> Patch a -> Patch a
FxChain [DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
0.35 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
largeHall2), DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
0.5 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at ((DryWetRatio -> DryWetRatio)
 -> (DryWetRatio, DryWetRatio)
 -> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ D -> DryWetRatio -> DryWetRatio -> DryWetRatio
echo D
0.25 DryWetRatio
0.85))]
    wave :: DryWetRatio -> SE (DryWetRatio, DryWetRatio)
wave DryWetRatio
x  = DryWetRatio -> SE (DryWetRatio, DryWetRatio)
noisy DryWetRatio
x SE (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. Num a => a -> a -> a
+ DryWetRatio -> SE (DryWetRatio, DryWetRatio)
pad DryWetRatio
x
    noisy :: DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
noisy DryWetRatio
x = (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at (DryWetRatio
-> (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.3 ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> DryWetRatio
-> (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> DryWetRatio)
-> DryWetRatio
-> (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> DryWetRatio)
-> DryWetRatio -> AtOut DryWetRatio DryWetRatio DryWetRatio
forall a b.
At DryWetRatio a b =>
(DryWetRatio -> a) -> b -> AtOut DryWetRatio a b
bat (ResonFilter
bp (DryWetRatio
x DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio
5) DryWetRatio
23) (DryWetRatio -> DryWetRatio)
-> (DryWetRatio -> DryWetRatio) -> DryWetRatio -> DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ResonFilter
lp (DryWetRatio
300 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
+ DryWetRatio
2500 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* [D] -> DryWetRatio
linseg [D
0, D
0.73, D
0, D
8, D
3]) DryWetRatio
14) SE DryWetRatio
white
    pad :: DryWetRatio -> SE (DryWetRatio, DryWetRatio)
pad DryWetRatio
x = SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall {a}. SigSpace a => a -> a
envelope (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
filter DryWetRatio
x (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ PadsynthSpec -> DryWetRatio -> SE (DryWetRatio, DryWetRatio)
padsynthOsc2 PadsynthSpec
spec DryWetRatio
x SE (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. Num a => a -> a -> a
+ DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.15 (PadsynthSpec -> DryWetRatio -> SE (DryWetRatio, DryWetRatio)
padsynthOsc2 PadsynthSpec
spec (DryWetRatio
x DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio
5)) SE (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. Num a => a -> a -> a
+ DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.5 (PadsynthSpec -> DryWetRatio -> SE (DryWetRatio, DryWetRatio)
padsynthOsc2 PadsynthSpec
spec (DryWetRatio
x DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Fractional a => a -> a -> a
/ DryWetRatio
2))

    envelope :: a -> a
envelope a
asig = DryWetRatio -> a -> a
forall a. SigSpace a => DryWetRatio -> a -> a
mul (D -> D -> DryWetRatio
fades D
0.5 D
0.7) a
asig
    filter :: DryWetRatio -> c -> AtOut DryWetRatio DryWetRatio c
filter DryWetRatio
cps c
asig = (DryWetRatio -> DryWetRatio)
-> c -> AtOut DryWetRatio DryWetRatio c
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at (DryWetRatio -> DryWetRatio -> DryWetRatio
bhp DryWetRatio
30) (c -> AtOut DryWetRatio DryWetRatio c)
-> c -> AtOut DryWetRatio DryWetRatio c
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> DryWetRatio)
-> c -> AtOut DryWetRatio DryWetRatio c
forall a b.
At DryWetRatio a b =>
(DryWetRatio -> a) -> b -> AtOut DryWetRatio a b
bat (ResonFilter
lp (DryWetRatio
200 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
+ (DryWetRatio
cps DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
+ DryWetRatio
3000)) DryWetRatio
45) (c -> AtOut DryWetRatio DryWetRatio c)
-> c -> AtOut DryWetRatio DryWetRatio c
forall a b. (a -> b) -> a -> b
$ c
asig

    spec :: PadsynthSpec
spec = PadsynthSpec
noisySpec

noisySpiral :: Patch2
noisySpiral :: Patch2
noisySpiral = D -> Patch2
noisySpiral' D
8

-- | Oscillating noise:
--
-- > noisySpiral' finalSpeedOfOscillation
noisySpiral' :: D -> Patch2
noisySpiral' :: D -> Patch2
noisySpiral' D
spiralSpeed = Patch2 -> Patch2
fxs (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> CsdNote D
-> SE (CpsInstrOut (DryWetRatio -> SE (DryWetRatio, DryWetRatio)))
forall a. CpsInstr a => a -> CsdNote D -> SE (CpsInstrOut a)
onCps ((DryWetRatio -> SE (DryWetRatio, DryWetRatio))
 -> CsdNote D
 -> SE (CpsInstrOut (DryWetRatio -> SE (DryWetRatio, DryWetRatio))))
-> (DryWetRatio -> SE (DryWetRatio, DryWetRatio))
-> CsdNote D
-> SE (CpsInstrOut (DryWetRatio -> SE (DryWetRatio, DryWetRatio)))
forall a b. (a -> b) -> a -> b
$ \DryWetRatio
cps -> DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.24 (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ DryWetRatio -> SE (DryWetRatio, DryWetRatio)
wave DryWetRatio
cps
  where
    fxs :: Patch2 -> Patch2
fxs = [GenFxSpec (DryWetRatio, DryWetRatio)] -> Patch2 -> Patch2
forall a. [GenFxSpec a] -> Patch a -> Patch a
FxChain [DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
0.15 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
magicCave2), DryWetRatio
-> ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> GenFxSpec (DryWetRatio, DryWetRatio)
forall a. DryWetRatio -> Fx a -> GenFxSpec a
fxSpec DryWetRatio
0.43 ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at ((DryWetRatio -> DryWetRatio)
 -> (DryWetRatio, DryWetRatio)
 -> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ D -> DryWetRatio -> DryWetRatio -> DryWetRatio
echo D
0.35 DryWetRatio
0.85))]

    wave :: DryWetRatio -> SE (DryWetRatio, DryWetRatio)
wave DryWetRatio
x  = DryWetRatio -> SE (DryWetRatio, DryWetRatio)
noisy DryWetRatio
x SE (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. Num a => a -> a -> a
+ DryWetRatio -> SE (DryWetRatio, DryWetRatio)
pad DryWetRatio
x
    noisy :: DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
noisy DryWetRatio
x = (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at (DryWetRatio
-> (DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.3 ((DryWetRatio, DryWetRatio) -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> DryWetRatio
-> (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> (DryWetRatio -> DryWetRatio)
-> DryWetRatio
-> (DryWetRatio, DryWetRatio)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DryWetRatio -> DryWetRatio)
-> DryWetRatio -> AtOut DryWetRatio DryWetRatio DryWetRatio
forall a b.
At DryWetRatio a b =>
(DryWetRatio -> a) -> b -> AtOut DryWetRatio a b
bat (ResonFilter
bp (DryWetRatio
x DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio
5) DryWetRatio
23) (DryWetRatio -> DryWetRatio)
-> (DryWetRatio -> DryWetRatio) -> DryWetRatio -> DryWetRatio
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ResonFilter
lp (DryWetRatio
300 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
+ DryWetRatio
2500 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* [D] -> DryWetRatio
linseg [D
0, D
0.73, D
0, D
8, D
3] DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio -> DryWetRatio
uosc ([D] -> DryWetRatio
expseg [D
0.25, D
5, D
spiralSpeed])) DryWetRatio
14) SE DryWetRatio
white
    pad :: DryWetRatio -> SE (DryWetRatio, DryWetRatio)
pad DryWetRatio
x = SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall {a}. SigSpace a => a -> a
envelope (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
filter DryWetRatio
x (SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ PadsynthSpec -> DryWetRatio -> SE (DryWetRatio, DryWetRatio)
padsynthOsc2 PadsynthSpec
spec DryWetRatio
x SE (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. Num a => a -> a -> a
+ DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.15 (PadsynthSpec -> DryWetRatio -> SE (DryWetRatio, DryWetRatio)
padsynthOsc2 PadsynthSpec
spec (DryWetRatio
x DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio
5)) SE (DryWetRatio, DryWetRatio)
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. Num a => a -> a -> a
+ DryWetRatio
-> SE (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. SigSpace a => DryWetRatio -> a -> a
mul DryWetRatio
0.5 (PadsynthSpec -> DryWetRatio -> SE (DryWetRatio, DryWetRatio)
padsynthOsc2 PadsynthSpec
spec (DryWetRatio
x DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Fractional a => a -> a -> a
/ DryWetRatio
2))
    envelope :: a -> a
envelope a
asig = DryWetRatio -> a -> a
forall a. SigSpace a => DryWetRatio -> a -> a
mul (D -> D -> DryWetRatio
fades D
0.5 D
0.7) a
asig
    filter :: DryWetRatio -> c -> AtOut DryWetRatio DryWetRatio c
filter DryWetRatio
cps c
asig = (DryWetRatio -> DryWetRatio)
-> c -> AtOut DryWetRatio DryWetRatio c
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at (DryWetRatio -> DryWetRatio -> DryWetRatio
bhp DryWetRatio
30) (c -> AtOut DryWetRatio DryWetRatio c)
-> c -> AtOut DryWetRatio DryWetRatio c
forall a b. (a -> b) -> a -> b
$ (DryWetRatio -> DryWetRatio)
-> c -> AtOut DryWetRatio DryWetRatio c
forall a b.
At DryWetRatio a b =>
(DryWetRatio -> a) -> b -> AtOut DryWetRatio a b
bat (ResonFilter
lp (DryWetRatio
200 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
+ (DryWetRatio
cps DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
+ DryWetRatio
3000)) DryWetRatio
45) (c -> AtOut DryWetRatio DryWetRatio c)
-> c -> AtOut DryWetRatio DryWetRatio c
forall a b. (a -> b) -> a -> b
$ c
asig

    spec :: PadsynthSpec
spec = PadsynthSpec
noisySpec

noisyHarms :: [PadsynthBandwidth]
noisyHarms = [ PadsynthBandwidth
1,  PadsynthBandwidth
1, PadsynthBandwidth
0.7600046992, PadsynthBandwidth
0.6199994683, PadsynthBandwidth
0.9399998784, PadsynthBandwidth
0.4400023818, PadsynthBandwidth
0.0600003302, PadsynthBandwidth
0.8499968648, PadsynthBandwidth
0.0899999291, PadsynthBandwidth
0.8199964762, PadsynthBandwidth
0.3199984133, PadsynthBandwidth
0.9400014281, PadsynthBandwidth
0.3000001907, PadsynthBandwidth
0.120003365, PadsynthBandwidth
0.1799997687, PadsynthBandwidth
0.5200006366]
noisySpec :: PadsynthSpec
noisySpec  = PadsynthBandwidth -> [PadsynthBandwidth] -> PadsynthSpec
defPadsynthSpec PadsynthBandwidth
82.2 [PadsynthBandwidth]
noisyHarms


-- dac $ mul 0.24 $ at (bhp 30) $ mixAt 0.15 magicCave2 $ mixAt 0.43 (echo 0.35 0.85) $ midi $ onMsg $ (\cps -> (bat (lp (200 + (cps + 3000)) 45) . mul (fades 0.5 0.7) . (\x -> (at (mul 0.3 . fromMono . bat (bp (x * 11) 23) . lp (300 + 2500 * linseg [0, 0.73, 0, 8, 3] * uosc (expseg [0.25, 5, 8])) 14) white) +  padsynthOsc2 spec x + mul 0.15 (padsynthOsc2 spec (x * 5)) + mul 0.5 (padsynthOsc2 spec (x / 2)))) cps)

-- dac $ mul 0.24 $ at (bhp 30) $ mixAt 0.35 largeHall2 $ mixAt 0.5 (echo 0.25 0.85) $ midi $ onMsg $ (\cps -> (bat (lp (200 + (cps + 3000)) 45) . mul (fades 0.5 0.7) . (\x -> (at (mul 0.3 . fromMono . bat (bp (x * 5) 23) . lp (300 + 2500 * linseg [0, 0.73, 0, 8, 3]) 14) white) +  padsynthOsc2 spec x + mul 0.15 (padsynthOsc2 spec (x * 5)) + mul 0.5 (padsynthOsc2 spec (x / 2)))) cps)


----------------------------------

dafunkWave :: DryWetRatio
-> (t -> t -> t -> t -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> AtOut DryWetRatio DryWetRatio DryWetRatio
dafunkWave DryWetRatio
cfq t -> t -> t -> t -> DryWetRatio
adsrFun (DryWetRatio
amp, DryWetRatio
cps) = (DryWetRatio -> DryWetRatio)
-> DryWetRatio -> AtOut DryWetRatio DryWetRatio DryWetRatio
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at (DryWetRatio -> DryWetRatio -> DryWetRatio
bhp DryWetRatio
30) (DryWetRatio -> AtOut DryWetRatio DryWetRatio DryWetRatio)
-> DryWetRatio -> AtOut DryWetRatio DryWetRatio DryWetRatio
forall a b. (a -> b) -> a -> b
$ D -> ResonFilter
diode D
1.2 (DryWetRatio
550 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
+ DryWetRatio
4500 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio
cfq) (DryWetRatio
0.52 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
+ DryWetRatio
0.4 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio
cfq) (DryWetRatio -> DryWetRatio) -> DryWetRatio -> DryWetRatio
forall a b. (a -> b) -> a -> b
$ DryWetRatio
amp DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio
env DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* (\DryWetRatio
x -> DryWetRatio -> DryWetRatio
saw DryWetRatio
x DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
+ DryWetRatio
0.5 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio -> DryWetRatio
saw (DryWetRatio
x DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio
0.503) DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
+ DryWetRatio
0.25 DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* (DryWetRatio -> DryWetRatio
sqr (DryWetRatio
x DryWetRatio -> DryWetRatio -> DryWetRatio
forall a. Num a => a -> a -> a
* DryWetRatio
0.253))) (DryWetRatio -> D -> DryWetRatio
port DryWetRatio
cps D
0.001)
    where
        env :: DryWetRatio
env = t -> t -> t -> t -> DryWetRatio
adsrFun t
0.019 t
8.5 t
0.2 t
0.07

dafunkLead :: Patch2
dafunkLead = (MonoAdsr
 -> (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> Patch2
forall a. (MonoAdsr -> Instr DryWetRatio a) -> Patch a
adsrMono (\MonoAdsr
env (DryWetRatio
amp, DryWetRatio
cps) -> (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a. a -> SE a
forall (m :: * -> *) a. Monad m => a -> m a
return ((DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio))
-> (DryWetRatio, DryWetRatio) -> SE (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> DryWetRatio -> (DryWetRatio, DryWetRatio)
forall a b. (a -> b) -> a -> b
$ DryWetRatio
-> MonoAdsr -> (DryWetRatio, DryWetRatio) -> DryWetRatio
forall {t} {t} {t} {t}.
(Fractional t, Fractional t, Fractional t, Fractional t) =>
DryWetRatio
-> (t -> t -> t -> t -> DryWetRatio)
-> (DryWetRatio, DryWetRatio)
-> DryWetRatio
dafunkWave DryWetRatio
cfq MonoAdsr
env (DryWetRatio
amp, DryWetRatio
cps))
    where cfq :: DryWetRatio
cfq = Tab -> DryWetRatio -> DryWetRatio
uoscBy ([PadsynthBandwidth] -> Tab
sines [PadsynthBandwidth
1, PadsynthBandwidth
0, PadsynthBandwidth
0, PadsynthBandwidth
0, PadsynthBandwidth
0.05]) DryWetRatio
0.5


celloSynt :: Patch2
celloSynt :: Patch2
celloSynt = DryWetRatio -> Patch2 -> Patch2
withSmallHall' DryWetRatio
0.25 (Patch2 -> Patch2) -> Patch2 -> Patch2
forall a b. (a -> b) -> a -> b
$ Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a. Instr D a -> Patch a
polySynt (Instr D (DryWetRatio, DryWetRatio) -> Patch2)
-> Instr D (DryWetRatio, DryWetRatio) -> Patch2
forall a b. (a -> b) -> a -> b
$ \(D
amp, D
cps) -> (DryWetRatio -> (DryWetRatio, DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b c. At a b c => (a -> b) -> c -> AtOut a b c
at DryWetRatio -> (DryWetRatio, DryWetRatio)
fromMono (SE DryWetRatio
 -> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio))
-> SE DryWetRatio
-> AtOut DryWetRatio (DryWetRatio, DryWetRatio) (SE DryWetRatio)
forall a b. (a -> b) -> a -> b
$ (D, DryWetRatio) -> SE DryWetRatio
C.celloWave (D
amp, D -> DryWetRatio
sig D
cps)