packages feed

csound-catalog 0.7.1 → 0.7.2

raw patch · 6 files changed

+255/−255 lines, 6 filesdep ~csound-expressiondep ~csound-samplerPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: csound-expression, csound-sampler

API changes (from Hackage documentation)

- Csound.Catalog.Wave: amFlavio :: t -> Sig -> Sig
+ Csound.Catalog.Wave: amFlavio :: () => p -> Sig -> Sig
- Csound.Catalog.Wave: razorPad :: (Fractional (SE b), Fractional t, SigSpace b) => (Sig -> t -> Sig -> b) -> Sig -> Sig -> Sig -> SE b
+ Csound.Catalog.Wave: razorPad :: (Fractional t, SigSpace SE b, Fractional SE b) => (Sig -> t -> Sig -> b) -> Sig -> Sig -> Sig -> SE b

Files

csound-catalog.cabal view
@@ -1,5 +1,5 @@ Name:          csound-catalog-Version:       0.7.1+Version:       0.7.2 Cabal-Version: >= 1.6 License:       BSD3 License-file:  LICENSE@@ -27,7 +27,7 @@ Library   Ghc-Options:    -Wall   Build-Depends:-        base >= 4, base < 5, transformers >= 0.3, csound-expression >= 5.2.2, csound-sampler >=0.0.8.1, sharc-timbre+        base >= 4, base < 5, transformers >= 0.3, csound-expression >= 5.3.2, csound-sampler >=0.0.9.0, sharc-timbre   Hs-Source-Dirs:      src/   Exposed-Modules:         Csound.Catalog
src/Csound/Catalog/Drum/Hm.hs view
@@ -3,15 +3,15 @@     -- * Subtractive     dumb, dumbBass, pluckSnare, sortaKnockSweep, metalBoink, -    -- * Fullkit    +    -- * Fullkit      -- ** Non-pitched drums-    snare, openHihat, closedHihat,  +    snare, openHihat, closedHihat,      -- ** Pitched drums     --     -- The instrument turns a pitch (in Hz) to the signal.-    bassDrum, crash, handClap, +    bassDrum, crash, handClap,     bassDrum', crash', handClap',      -- * Sampler@@ -21,7 +21,7 @@ import Csound.Base import Csound.Sam --- subtractive +-- subtractive  bpb :: Sig -> Sig -> Sig -> Sig bpb cfq q asig = balance (bp cfq q asig) asig@@ -44,9 +44,9 @@ dumbBass :: SE Sig dumbBass = (toDrum =<<) $ fmap (bpb kfreqenv (kfreqenv / 8)) $ rand $ expseg [0.0001, 0.01, 1, 0.08, 0.01]     where kfreqenv = expseg [50, 0.01, 200, 0.08, 50]-    -pluckSnare :: SE Sig -pluckSnare = toDrum $ pluck kampenv4 kptchenv 50 (elins [1, 1]) 4 `withDs` [0.8, 3] ++pluckSnare :: SE Sig+pluckSnare = toDrum $ pluck kampenv4 kptchenv 50 (elins [1, 1]) 4 `withDs` [0.8, 3]     where         kampenv4 = linseg [0, 0.001, 1, xdur - 0.21, 1, 0.02, 0]         kptchenv = linseg [100, 0.01, 300, 0.2, 200, 0.01, 200]@@ -57,16 +57,16 @@ sortaKnockSweep = (toDrum =<<) $     fmap (resonsBy bpb             [ (kfreqenv41, kfreqenv41 / 8)-            , (kfreqenv42, kfreqenv42 / 4) +            , (kfreqenv42, kfreqenv42 / 4)             ]          ) $ rand kampenv4     where         kfreqenv41  = expseg [ 50, 0.01, 200, 0.08, 50]-        kfreqenv42  = linseg [ 150, 0.01, 1000, 0.08, 250] -        kampenv4	= linseg [ 0, 0.01, 1, 0.08, 0, 0.01, 0] +        kfreqenv42  = linseg [ 150, 0.01, 1000, 0.08, 250]+        kampenv4	= linseg [ 0, 0.01, 1, 0.08, 0, 0.01, 0]  metalBoink :: SE Sig-metalBoink = toDrum $ foscil kampenv61 30 1 6.726 kampenv62 sine +metalBoink = toDrum $ foscil kampenv61 30 1 6.726 kampenv62 sine     where         kampenv61   = expseg [ 0.01, 0.01, 1, 0.2, 0.1, 0.1, 0.001 ]         kampenv62   = linseg [ 1, 0.1, 10, 0.1, 0.5, 0.01, 1 ]@@ -78,7 +78,7 @@ bassDrum' :: D -> SE Sig bassDrum' cps = toDrum $ env * osc (sig cps * kgliss * 0.5)     where env = linseg [0, 0.00245, 1, 0.1225, 0]-          kgliss = expseg [10, 0.625, 1, 0.25, 1]  +          kgliss = expseg [10, 0.625, 1, 0.25, 1]   openHihat :: SE Sig@@ -100,9 +100,9 @@     asound <- rand 1     let as1 = butbp asound 210 55     return $ kenv2 * (as1 * 0.9 + asound * 0.8 * kenv1)-    where +    where         kenv1 = linseg [0, 0.00176, 1, 0.1232, 0]-        kenv2 = expseg [0.01, 0.0002, 1, 0.0297, 0.01, 0.09, 0.01]  +        kenv2 = expseg [0.01, 0.0002, 1, 0.0297, 0.01, 0.09, 0.01]  crash = crash' $ cpspch 13.05 @@ -115,7 +115,7 @@         kenv2 = expseg [0.001, 0.0466, 1, 3.95, 0.001]          resonator asig = 0.7 * a1 + 0.6 * kenv18 * a2-            where +            where                 flt a = butbp asig (sig $ a * cps) (sig $ 0.5 * cps)                 a1 = sum $ fmap flt [1, 2.1, 2.8]                 a2 = comb a1 0.5 (0.5 / cps)@@ -125,7 +125,7 @@          aall = sum $ zipWith3 harm weights envelopes harmonics -        harmonics = +        harmonics =             [ [1, 0.89, 1.12341]             , [2.24, 2.4 * 0.98, 2.14 * 1.02]             , [3.312, 3.513312*0.89, 3.123312*1.11]@@ -138,7 +138,7 @@          weights = replicate 7 0.2 ++ [0.1] -        envelopes = fmap (\(a, b) -> expseg [0.01, a, 1, b, 0.01]) +        envelopes = fmap (\(a, b) -> expseg [0.01, a, 1, b, 0.01])             [ (0.0274, 3.972)             , (0.0264, 3.973)             , (0.0209, 3.979)@@ -158,15 +158,15 @@         kenv2 = expseg [0.001, 0.005, 1, 0.35, 0.001]          onNoise asig = aout-            where +            where                 anoise1 = kenv1 * asig                 anoise2 = kenv2 * asig                  adel1   = anoise1-                adel2   = delaySig 0.01 anoise1 -                adel3   = delaySig 0.02 anoise1 -                adel4   = delaySig 0.03 anoise2 -            +                adel2   = delaySig 0.01 anoise1+                adel3   = delaySig 0.02 anoise1+                adel4   = delaySig 0.03 anoise2+                 aout    = mean                     [ rz adel1 2                     , rz adel2 3@@ -179,7 +179,7 @@ -------------------------------------------------- -- sampler -mkSam = limSam 1+mkSam = limSam 4  bd1 = mkSam dumb bd2 = mkSam dumbBass@@ -194,4 +194,4 @@  bd3 = mkSam bassDrum cr  = mkSam crash-clap = mkSam handClap +clap = mkSam handClap
src/Csound/Catalog/Drum/MiniPops.hs view
@@ -2,26 +2,26 @@ module Csound.Catalog.Drum.MiniPops( 	MpSpec(..), -	bass, snare1, snare2, rimShot, cymbal1, cymbal2, bongo1, bongo2, bongo3, +	bass, snare1, snare2, rimShot, cymbal1, cymbal2, bongo1, bongo2, bongo3, 	claves, cowbell, guiro, maracas, quijada, tamb,  	-- * Generic-	bass', bdSpec, snare1', snSpec1, snare2', snSpec2, rimShot', rimSpec, -	cymbal1', cymSpec1, cymbal2', cymSpec2, bongo1', bonSpec1, bongo2', bonSpec2, bongo3', bonSpec3, +	bass', bdSpec, snare1', snSpec1, snare2', snSpec2, rimShot', rimSpec,+	cymbal1', cymSpec1, cymbal2', cymSpec2, bongo1', bonSpec1, bongo2', bonSpec2, bongo3', bonSpec3, 	claves', clSpec, cowbell', cowSpec, guiro', groSpec, maracas', marSpec, quijada', qjSpec, tamb', tamSpec,  	-- * Sample-	bd, sn1, sn2, rim, cym1, cym2, bon1, bon2, bon3, cl, cow, gro, mar, qj, tam, +	bd, sn1, sn2, rim, cym1, cym2, bon1, bon2, bon3, cl, cow, gro, mar, qj, tam,  	-- ** Generic 	bd', sn1', sn2', rim', cym1', cym2', bon1', bon2', bon3', cl', cow', gro', mar', qj', tam' ) where -import Csound.Base hiding (guiro) +import Csound.Base hiding (guiro) import Csound.Sam  data MpSpec = MpSpec {-	  mpDur 	:: D	+	  mpDur 	:: D 	, mpCps 	:: D 	, mpRnd     :: Maybe D } @@ -37,14 +37,14 @@ toDrum :: Sig -> SE Sig toDrum a = rndAmp =<< addDur a -defSpec dur cps = MpSpec +defSpec dur cps = MpSpec 	{ mpDur   = dur-	, mpCps   = cps +	, mpCps   = cps 	, mpRnd   = Just 0.085 }  rndVal :: D -> D -> D -> SE D rndVal total amount x = do-	k <- birnd amount +	k <- birnd amount 	return $ x  + k * total  rndDur amt x = rndVal x amt x@@ -52,13 +52,13 @@  rndSpec :: MpSpec -> SE MpSpec rndSpec spec = do-	dur  <- rndDur'	+	dur  <- rndDur' 	cps  <- rndCps'-	return $ spec -		{ mpDur  = dur 		+	return $ spec+		{ mpDur  = dur 		, mpCps  = cps }-	where -		rndDur'  = (maybe return rndDur $ (mpRnd spec)) $ mpDur spec		+	where+		rndDur'  = (maybe return rndDur $ (mpRnd spec)) $ mpDur spec 		rndCps'  = (maybe return rndCps $ (mpRnd spec)) $ mpCps spec  rezz cps bw = reson (mpulse 1 0) cps (cps * bw) `withD` 2@@ -97,7 +97,7 @@ 		aenv   = transeg [1, dur ,-5 , 0] 		asig1  = at (bhp 3000) $ mul aenv asig -		xdur   = 0.006		+		xdur   = 0.006 		astrike = osc (transeg [cps,xdur,-4,60]) 		aenv2 = transeg	[1,xdur,-2,0] 		astrike1 = aenv2 * astrike@@ -118,9 +118,9 @@ 		anoise = pink 		asig   = fmap (\x -> butbp x 5200 5200 `withD` 1) anoise 		aenv   = transeg [1, dur ,-8 , 0]-		asig1  = at (bhp 3000) $ mul aenv asig	+		asig1  = at (bhp 3000) $ mul aenv asig -		xdur   = 0.005		+		xdur   = 0.005 		astrike = osc (transeg [cps,xdur,-4,cps / 4]) 		aenv2 = transeg	[1,xdur,-2,0] 		astrike1 = aenv2 * astrike@@ -141,7 +141,7 @@ 		dur = mpDur spec 		cps = sig $ mpCps spec -		aenv = expon 1 dur 0.0001		+		aenv = expon 1 dur 0.0001 		asig1 = osc' 0.2 cps 		asig2 = reson asig1 cps 1500 `withD` 2 		asig  = bhp 500 (asig1 + asig2 * 0.4 * 0.3)@@ -159,7 +159,7 @@ 	let asig1 = blp 14000 $ reson	(anoise*aenv) icf (icf*0.7) `withD` 1 	    asig2 = bhp 6000 $ (asig1 + anoise * 0.001) 	return $ 0.25 * aenv * asig2-	where	+	where 		dur = mpDur spec 		cps = sig $ mpCps spec @@ -242,7 +242,7 @@  clSpec = defSpec 0.186 400 -claves' spec = pureClaves' =<< rndSpec spec +claves' spec = pureClaves' =<< rndSpec spec  pureClaves' spec = toDrum aout 	where@@ -251,14 +251,14 @@  		aenv = linseg [1, dur, 0] 		asig1 = rezz cps 0.025-		asig2 = rezz (cps * 5.45) 0.03 +		asig2 = rezz (cps * 5.45) 0.03 		aout  = mul (3.2 * aenv * fadeOut dur) $ asig1 + 1.3 * asig2  cowbell = cowbell' cowSpec  cowSpec = defSpec 0.3 850 -cowbell' spec = pureCowbell' =<< rndSpec spec +cowbell' spec = pureCowbell' =<< rndSpec spec  pureCowbell' spec = toDrum asig 	where@@ -274,7 +274,7 @@  groSpec = defSpec 0.256 66 -guiro' spec = pureGuiro' =<< rndSpec spec +guiro' spec = pureGuiro' =<< rndSpec spec  pureGuiro' spec = toDrum asig 	where@@ -289,7 +289,7 @@  marSpec = defSpec 0.05 5000 -maracas' spec = pureMaracas' =<< rndSpec spec +maracas' spec = pureMaracas' =<< rndSpec spec  pureMaracas' spec = toDrum =<< do 	asig <- noise 1 0.04@@ -299,20 +299,20 @@ 		cps = sig $ mpCps spec  		aenv =	transeg	[1,dur,-4,0]-	 + quijada = quijada' qjSpec  qjSpec = defSpec 0.817 550 -quijada' spec = pureQuijada' =<< rndSpec spec +quijada' spec = pureQuijada' =<< rndSpec spec  pureQuijada' spec = toDrum $ bhp cps $ mul (6 * fadeOut dur) $ phi dur (1/22.7272) + phi (dur * 0.39) (1/13.1579) 	where 		dur = mpDur spec 		cps = sig $ mpCps spec -		phi dt freq = mul kenv $ reson (mpulse	1 freq) 2727 400 `withD` 1	+		phi dt freq = mul kenv $ reson (mpulse	1 freq) 2727 400 `withD` 1 			where kenv = transeg	[0.8,0.05,1, 1,dt-0.05,-6,0]  @@ -320,13 +320,13 @@  tamSpec = defSpec 0.271 7000 -tamb' spec = pureTamb' =<< rndSpec spec +tamb' spec = pureTamb' =<< rndSpec spec  pureTamb' spec = toDrum =<< do 	anoise <- noise 1 0-	return $ mul (1.5 * aenv * fadeOut dur) +	return $ mul (1.5 * aenv * fadeOut dur) 		$ reson (bhp cps $ (+ (anoise * 0.1 * aenv)) $ reson (anoise * aenv) 4600 100 `withD` 2) 9000 3000 `withD` 1-	where +	where 		dur = mpDur spec 		cps = sig $ mpCps spec 		aenv = transeg	[1,dur,-8,0]@@ -334,7 +334,7 @@ ------------------------------------------------------- -- Sampler -mkSam = limSam 1+mkSam = limSam 4  -- | Bass drum bd :: Sam@@ -346,11 +346,11 @@  -- | Snare 2 sn2 :: Sam-sn2 = mkSam snare2+sn2 = limSam 2 snare2  -- | Rim shot rim :: Sam-rim = mkSam rimShot+rim = limSam 1 rimShot  -- | Cymbal 1 cym1 :: Sam
src/Csound/Catalog/Drum/Tr808.hs view
@@ -2,7 +2,7 @@ module Csound.Catalog.Drum.Tr808( 	TrSpec(..), -	bass, bass2, snare, openHiHat, closedHiHat, +	bass, bass2, snare, openHiHat, closedHiHat, 	lowTom, midTom, highTom, cymbal, claves, rimShot, 	maraca, highConga, midConga, lowConga, @@ -38,16 +38,16 @@ 	, trRnd     :: Maybe D 	} -cpsSpec cps = TrSpec +cpsSpec cps = TrSpec 	{ trDur   = 0.8 	, trTune  = 0-	, trCps   = cps +	, trCps   = cps 	, trRnd   = Just 0.085 }   rndVal :: D -> D -> D -> SE D rndVal total amount x = do-	k <- birnd amount +	k <- birnd amount 	return $ x  + k * total  rndDur amt x = rndVal x amt x@@ -59,19 +59,19 @@ 	dur  <- rndDur' 	tune <- rndTune' 	cps  <- rndCps'-	return $ spec -		{ trDur  = dur +	return $ spec+		{ trDur  = dur 		, trTune = tune 		, trCps  = cps }-	where +	where 		rndDur'  = (maybe return rndDur $ (trRnd spec)) $ trDur spec 		rndTune' = (maybe return rndTune $ (trRnd spec)) $ trTune spec 		rndCps'  = (maybe return rndCps $ (trRnd spec)) $ trCps spec -bdSpec = TrSpec +bdSpec = TrSpec 	{ trDur   = 0.95 	, trTune  = 1-	, trCps   = 55 +	, trCps   = 55 	, trRnd   = Just 0.05 }  addDur' dt x = xtratim dt >> return x@@ -99,7 +99,7 @@ 		aimp  = oscili  aenv1 acps sine 		amix  = asig1 * 0.7 +  aimp * 0.25 -bdSpec2 = TrSpec +bdSpec2 = TrSpec 	{ trDur   = 1.3 	, trTune  = 1 	, trCps   = 57@@ -110,24 +110,24 @@ bass2' spec = pureBass2' =<< rndSpec spec  pureBass2' :: TrSpec -> SE Sig-pureBass2' spec = (rndAmp <=< addDur) $ compr $ mul (expsegr [1, 0.6 * dur, 0.1, 0.4 * dur, 0.001] (0.4 * dur) 0.001) $ +pureBass2' spec = (rndAmp <=< addDur) $ compr $ mul (expsegr [1, 0.6 * dur, 0.1, 0.4 * dur, 0.001] (0.4 * dur) 0.001) $     fosc 1 2 (0.5 * xeg 0.01 0.1 0.2 0.5) (cps * semitone (expseg [12, 0.01, 27, 0.3, 0.001]))-    where +    where     	compr x = dam x 0.65 2.4 2.3 0.05 0.1     	dur = trDur spec-    	cps = sig $ trCps spec +    	cps = sig $ trCps spec   snSpec = cpsSpec 342-	+ snare = snare' snSpec  snare' spec = pureSnare' =<< rndSpec spec --- sound consists of two sine tones, an octave apart and a noise signal		+-- sound consists of two sine tones, an octave apart and a noise signal pureSnare' :: TrSpec -> SE Sig pureSnare' spec = rndAmp =<< addDur =<< (apitch + anoise)-	where	+	where 		dur 	= trDur  spec 		tune    = trTune spec 		cps     = trCps  spec@@ -141,7 +141,7 @@ 		apitch2 = rndOsc (0.5 * sig cps) 		apitch  = mul (0.75 * aenv1) (apitch1 + apitch2) -		-- noise component		+		-- noise component 		aenv2	= expon 1 iNseDur 0.0005 		kcf 	= expsegr [5000, 0.1, 3000] iNseDur 0.0001 		anoise	= mul aenv2 $ do@@ -166,20 +166,20 @@ -- cps = 296 genHiHat :: Sig -> TrSpec -> SE Sig genHiHat pitchedEnv spec = rndAmp =<< addDur =<< (amix1 + anoise)-	where 	+	where 		dur 	= trDur  spec 		tune    = trTune spec 		cps     = trCps  spec -		halfDur = dur * 0.5		+		halfDur = dur * 0.5  		-- pitched element-		harmonics = [1.0, 0.962, 1.233, 1.175,1.419, 2.821]		+		harmonics = [1.0, 0.962, 1.233, 1.175,1.419, 2.821] 		amix 	= mul 0.5 $ fmap sum $ mapM (rndPw 0.25 . sig . (* (cps * octave tune))) harmonics 		amix1   = mul pitchedEnv $ at (\asig -> bhp 5000 $ bhp 5000 $ reson asig (5000 * octave (sig tune)) 5000 `withD` 1) amix  		-- noise element-		kcf		= expseg [20000, 0.7, 9000, halfDur-0.1, 9000] +		kcf		= expseg [20000, 0.7, 9000, halfDur-0.1, 9000] 		anoise 	= mul pitchedEnv $ do 			x <- noise 0.8 0 			return $ bhp 8000 $ blp kcf x@@ -190,7 +190,7 @@  lowTom = lowTom' ltSpec midTom = midTom' mtSpec-highTom = highTom' htSpec +highTom = highTom' htSpec  -- cps = 200 highTom' :: TrSpec -> SE Sig@@ -206,7 +206,7 @@  genTom :: D -> (Sig, Sig, Sig) -> TrSpec -> SE Sig genTom durDt (resonCf, hpCf, lpCf) spec = rndAmp =<< addDur =<< (asig + anoise)-	where	+	where 		dur 	= trDur  spec 		tune    = trTune spec 		cps     = trCps  spec@@ -215,14 +215,14 @@ 		halfDur = durDt * dur  		-- sine tone signal-		aAmpEnv	= transeg [1, halfDur, -10, 0.001]+		aAmpEnv	= fadeIn 0.04 * transeg [1, halfDur, -10, 0.001] 		afmod	= expsega  [5, 0.125/ifrq, 1] 		asig  	= mul (-aAmpEnv) $ rndOsc (sig ifrq * afmod)  		-- noise signal 		aEnvNse = transeg [1, halfDur, -6 , 0.001] 		otune = sig $ octave tune-		anoise  = mul aEnvNse $ do +		anoise  = mul aEnvNse $ do 			x <- noise 1 0.4 			return $ blp (lpCf * otune) $ bhp (hpCf * otune) $ reson x (resonCf * otune) 800 `withD` 1 @@ -234,7 +234,7 @@ -- cps = 296 cymbal' :: TrSpec -> SE Sig cymbal' spec = rndAmp =<< addDur =<< (fmap (amix1 + ) anoise)-	where +	where 		dur 	= trDur  spec 		tune    = trTune spec 		cps     = trCps  spec@@ -249,7 +249,7 @@  		-- noise element 		aenv2   = expsega [1,0.3,0.07,fullDur-0.1,0.00001]-		kcf		= expseg [14000, 0.7, 7000, fullDur-0.1, 5000] +		kcf		= expseg [14000, 0.7, 7000, fullDur-0.1, 5000] 		anoise 	= mul aenv2 $ do 			x <- noise 0.8 0 			return $ bhp 8000 $ blp kcf x@@ -290,7 +290,7 @@  		-- ring 		aenv1 =	expsega	[1,fullDur,0.001]-		ifrq1 =	sig $ cps * octave tune		+		ifrq1 =	sig $ cps * octave tune 		aring = mul (0.5 * (aenv1 - 0.001)) $ at (bbp ifrq1 (ifrq1 * 8)) $ rndOscBy tabTR808RimShot ifrq1  		-- noise@@ -325,13 +325,13 @@ 		kcf		= expseg [12000,0.07,iLPF2,1,iLPF2] 		alpf    = at (blp kcf) amix 		abpf    = at (\x -> reson x ifrq2 25) amix-		ares    = mul (0.08 * kenv) $ at dcblock2 $ mul (0.06 * kenv1) abpf + mul 0.5 alpf + mul 0.9 amix +		ares    = mul (0.08 * kenv) $ at dcblock2 $ mul (0.06 * kenv1) abpf + mul 0.5 alpf + mul 0.9 amix  -- TODO clap  {- instr	112	;CLAP-	krelease	release				;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO)   +	krelease	release				;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO) 	chnset	1-krelease,"Act12"              	;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS 	iTimGap	=	0.01				;GAP BETWEEN EVENTS DURING ATTACK PORTION OF CLAP 	idur1  	=	0.02				;DURING OF THE THREE INITIAL 'CLAPS'@@ -347,7 +347,7 @@ 	 event_i	"i", p1+0.1, iTimGap*3,  idur2, p4 	else 	 kenv	transeg	1,p3,-25,0				;AMPLITUDE ENVELOPE-	 iamp	random	0.7,1					;SLIGHT RANDOMISATION OF AMPLITUDE	+	 iamp	random	0.7,1					;SLIGHT RANDOMISATION OF AMPLITUDE 	 anoise	pinkish	kenv*iamp 	 iBPF   	=	1100*octave(i(gktune12))	;FREQUENCY OF THE BANDPASS FILTER 	 ibw    	=	2000*octave(i(gktune12))	;BANDWIDTH OF THE BANDPASS FILTER@@ -396,7 +396,7 @@  highConga = highConga' hcSpec midConga  = midConga'  mcSpec-lowConga  = lowConga'  lcSpec +lowConga  = lowConga'  lcSpec  -- high conga -- cps = 420@@ -428,7 +428,7 @@ ----------------------------------------------------- -- sampler -mkSam = limSam 1+mkSam = limSam 4  -- | Bass drum bd :: Sam@@ -443,11 +443,11 @@  -- | Open hi-hat ohh :: Sam-ohh = mkSam openHiHat+ohh = limSam 8 openHiHat  -- | Closed hi-hat chh :: Sam-chh = mkSam closedHiHat +chh = mkSam closedHiHat  -- | High tom htom :: Sam@@ -463,7 +463,7 @@  -- | Cymbal cym :: Sam-cym = mkSam cymbal+cym = limSam 8 cymbal  -- | Claves cl :: Sam
src/Csound/Catalog/Wave/Sean.hs view
@@ -1,7 +1,7 @@ {-# Language FlexibleContexts #-} module Csound.Catalog.Wave.Sean( 	RissetBellSpec(..), rissetBell, timpani, timpaniSpec, noiseBell, noiseBellSpec,-	snowCrackle, +	snowCrackle, 	fmDrone, fmDrones, 	tenorOsc, sopranoOsc ) where@@ -15,7 +15,7 @@ 	{ rissetBellRands 		:: [D] 	, rissetBellRandShifts	:: [D] 	, rissetBellDurs 		:: [D]-	, rissetBellAmps		:: [Sig]	+	, rissetBellAmps		:: [Sig] 	, rissetBellFreqs       :: [Sig] 	, rissetBellFreqShifts	:: [Sig] 	}@@ -37,10 +37,10 @@ 		env = expsegr [1, dur, 0.001] dur 0.001 		ares = mul 0.75 $ fmap sum $ zipWithM (\(iamp, ifreq, ifreqDt) (idur, irand, irandDt) -> partial iamp ifreq ifreqDt idur irand irandDt) (zip3 iamps ifreqs ifreqDt) (zip3 idurs irands irandDt) -timpaniSpec = RissetBellSpec +timpaniSpec = RissetBellSpec 	{	rissetBellDurs       = [0.087, 0.5, 0.804, 0.065, 0.325, 0.54, 1,    0.195, 0.108, 0.89, 0.075] 	,	rissetBellFreqs      = [0.8,  1.00,  1.5,  1.65,  1.97,  2,    2.44, 2.86,  2.71,  2.91,  3.27]-	,	rissetBellFreqShifts = [0,    0,    0,     0,     0,     0,    0,    0,    0,      0,     0] +	,	rissetBellFreqShifts = [0,    0,    0,     0,     0,     0,    0,    0,    0,      0,     0] 	,	rissetBellAmps       = [1,    2.52,  1.83, 0.55,  1.47,  1.67, 0.62, 0.5,  0.52,   0.55,  0.33] 	,	rissetBellRands      = [0.56, 0.56, 0.92,  0.92,  1.19,  1.7,  2,    2.74, 3,      3.75,  4.07] 	,	rissetBellRandShifts = [0,    1,    0,     1.7,   0,     0,    0,    0,    0,      0,     0] }@@ -50,7 +50,7 @@ 	where env = expsegr [1, dur, 0.001] dur 0.001  -noiseBellSpec = RissetBellSpec +noiseBellSpec = RissetBellSpec 	{ rissetBellDurs  			=[1,    0.9,  0.65, 0.55, 0.325, 0.35, 0.25, 0.2,  0.15,  0.1, 0.075] 	, rissetBellFreqs 			= [0.56, 0.56, 0.92, 0.92, 1.19,  1.7,  3,    2.74, 3,     3.75, 4.07] 	, rissetBellFreqShifts 		= [0,    1,    0,     1.7,    0,   0,   0,    0,    0,      0,      0]@@ -72,13 +72,13 @@ snowCrackle speed = mlp 1200 0.1 $ mouseDrum speed (3 + 2 * uosc 0.1)  (160 + 100 * uosc 0.13) 	where 		mouseDrum :: Sig -> Sig -> Sig -> Sig-		mouseDrum freq index cps = -			sched instr $ withDur dur $ fmap (\[a, b] -> (a, b)) $ randList 2 $ dust freq-			where +		mouseDrum freq index cps =+			sched instr $ withDur (sig dur) $ fmap (\[a, b] -> (a, b)) $ randList 2 $ dust freq+			where 				dur = 0.049 				instr (rndCps, rndIndex) = return $-					mouseDrumGrain dur -						(cps + 10 * sig (2 * rndCps - 1)) +					mouseDrumGrain dur+						(cps + 10 * sig (2 * rndCps - 1)) 						(index + 0.01 * sig (2 * rndIndex - 1))  		mouseDrumGrain dur icarfreq index = aosc@@ -100,8 +100,8 @@ 		aosc4 = osc (a4 + aosc1 + amod') 		ares  = 0.5 * kamp1 * sum [aosc2, aosc3, aosc4] -scDrone = fmDrone 3 -scDrones = fmDrones 3 +scDrone = fmDrone 3+scDrones = fmDrones 3  pulseIndex ns speed = 1 + 7 * seqSqr [seqDesc ns] speed @@ -112,9 +112,9 @@ fmDrone index (iatt, irel) cps = (aout1, aout2)  	where  		ifreq1 = cps- 		iamp = 0.39 		+ 		iamp = 0.39  		idev = index * ifreq1- 		kamp1 = leg iatt 0 1 irel 		+ 		kamp1 = leg iatt 0 1 irel   		f a1 a2 a3 a4 = iamp * fmDronePartial 0 index idev kamp1 ifreq1 (a1, a2, a3, a4) @@ -123,12 +123,12 @@  fmDrones index amps harms (iatt, irel) cps = aout 	where-		iamp = 0.39 			 		-	 	kamp1 = leg iatt 0 1 irel +		iamp = 0.39+	 	kamp1 = leg iatt 0 1 irel  		f amp h = do 			let ifreq1 = h * cps-	 		    idev = index * ifreq1 	 	    +	 		    idev = index * ifreq1  			a1 <- randomSig 1     0.03 			a2 <- randomSig 0.998 0.025@@ -152,24 +152,24 @@ gaussSig val dev = fmap ((+ val)) $ gauss val  randiDev :: Sig -> Sig -> Sig -> SE Sig-randiDev val dev cps = fmap (+ val) $ randi dev cps +randiDev val dev cps = fmap (+ val) $ randi dev cps  randhDev :: Sig -> Sig -> Sig -> SE Sig-randhDev val dev cps = fmap (+ val) $ randh dev cps +randhDev val dev cps = fmap (+ val) $ randh dev cps  ------------------------------------------------------------------------ -- choir -tenorOsc   = voiceOsc 0.9 -sopranoOsc = voiceOsc 0.8 +tenorOsc   = voiceOsc 0.9+sopranoOsc = voiceOsc 0.8  linVibr2 (v1, v2) (vtime1, vtime2) = linseg [v1, vtime1, v1, vtime2, v2]  voiceOsc :: Sig -> (Sig -> Sig) -> Sig -> Sig -> SE Sig voiceOsc mulHarm formantFilter kvib cps = at formantFilter $ voiceAnimator (RndDev 0.05 0.75)  kvib $ asig * kenv-	where		+	where 		iharms = sig getSampleRate * 0.4 / cps-		asig = gbuzz 1 cps iharms 1 mulHarm (sines3 [(1, 1, 0.25)]) +		asig = gbuzz 1 cps iharms 1 mulHarm (sines3 [(1, 1, 0.25)]) 		kenv = leg 0.1 0 1 0.1  data RndDev = RndDev@@ -190,13 +190,13 @@ 	return $ ain * (1 + xDt)  -data Formant = Formant +data Formant = Formant 	{ formantWeight :: Sig 	, formantCenter :: Sig-	, formantWidth  :: Sig	+	, formantWidth  :: Sig 	}  --------------------------------------------------------------------------- +--  
src/Csound/Patch.hs view
@@ -11,15 +11,15 @@ module Csound.Patch(  	-- * Electric piano-	Epiano1(..), epiano1, epiano1', +	Epiano1(..), epiano1, epiano1', 	MutedPiano(..), mutedPiano, mutedPiano',-	amPiano, fmPiano, +	amPiano, fmPiano, 	epiano2, epianoHeavy, epianoBright, 	vibraphonePiano1, vibraphonePiano2, 	addHammer,  	-- * Organ-	cathedralOrgan, toneWheelOrgan, +	cathedralOrgan, toneWheelOrgan, 	HammondOrgan(..), hammondOrgan, hammondOrgan', 	sawOrgan, triOrgan, sqrOrgan, pwOrgan, waveOrgan, @@ -45,13 +45,13 @@  	-- ** Pad Monosynth 	pwPadm, triPadm, nightPadm, overtonePadm, caveOvertonePadm, choruselm,-	pwEnsemblem, fmDroneSlowm, fmDroneMediumm, fmDroneFastm, +	pwEnsemblem, fmDroneSlowm, fmDroneMediumm, fmDroneFastm, 	razorPadSlowm, razorPadFastm, razorPadTremolom, razorPadm, razorPadm', 	dreamPadm, dreamPadBym, underwaterPadm, lightIsTooBrightPadm, whaleSongPadm, dreamPadm', underwaterPadm', dreamPadBym', 	lightIsTooBrightPadm', whaleSongPadm',  	-- * Lead-	polySynth, +	polySynth, 	phasingLead, RazorLead(..), razorLeadSlow, razorLeadFast, razorLeadTremolo, 	razorLead, razorLead', 	overtoneLead,@@ -67,7 +67,7 @@ 	celloSynt,  	-- * Plucked-	guitar, harpsichord,	+	guitar, harpsichord,  	-- * Strikeh @@ -75,20 +75,20 @@ 	smallBanyan,banyan, largeBanyan, magicBanyan, 	smallXylophone, xylophone, largeXylophone, magicXylophone, 	smallTibetanBowl180, tibetanBowl180, largeTibetanBowl180, magicTibetanBowl180,-	smallSpinelSphere, spinelSphere, largeSpinelSphere, magicSpinelSphere, +	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, +	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, +	smallWineGlass, wineGlass, largeWineGlass, magicWineGlass, 	smallHandbell, handbell, largeHandbell, magicHandbell, 	smallAlbertClockBellBelfast, albertClockBellBelfast, largeAlbertClockBellBelfast, magicAlbertClockBellBelfast, 	smallWoodBlock, woodBlock, largeWoodBlock, magicWoodBlock,@@ -97,7 +97,7 @@ 	scrapeDahina, scrapeBanyan, scrapeXylophone, scrapeTibetanBowl180, scrapeSpinelSphere, scrapePotLid, scrapeRedCedarWoodPlate, 	scrapeTubularBell, scrapeRedwoodPlate, scrapeDouglasFirWoodPlate, scrapeUniformWoodenBar, scrapeUniformAluminumBar, 	scrapeVibraphone1, scrapeVibraphone2, scrapeChalandiPlates, scrapeTibetanBowl152, scrapeTibetanBowl140, scrapeWineGlass,-	scrapeSmallHandbell, scrapeAlbertClockBellBelfast, scrapeWoodBlock, +	scrapeSmallHandbell, scrapeAlbertClockBellBelfast, scrapeWoodBlock,  	scrapeFastDahina, scrapeFastBanyan, scrapeFastXylophone, scrapeFastTibetanBowl180, scrapeFastSpinelSphere, scrapeFastPotLid, 	scrapeFastRedCedarWoodPlate, scrapeFastTubularBell, scrapeFastRedwoodPlate, scrapeFastDouglasFirWoodPlate, scrapeFastUniformWoodenBar,@@ -111,11 +111,11 @@   	-- ** Scrape monosynth-	-- | Unfortunately they don't work with @atMonoMidi@. Though @atNote@ works fine. +	-- | 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, +	scrapeSmallHandbellm, scrapeAlbertClockBellBelfastm, scrapeWoodBlockm,  	scrapePadDahinam, scrapePadBanyanm, scrapePadXylophonem, scrapePadTibetanBowl180m, scrapePadSpinelSpherem, scrapePadPotLidm, 	scrapePadRedCedarWoodPlatem, scrapePadTubularBellm, scrapePadRedwoodPlatem, scrapePadDouglasFirWoodPlatem, scrapePadUniformWoodenBarm,@@ -126,28 +126,28 @@  	Wind(..), woodWind', -	fluteSpec, shortFluteSpec, -	flute, shortFlute, fluteVibrato, mutedFlute, brightFlute, +	fluteSpec, shortFluteSpec,+	flute, shortFlute, fluteVibrato, mutedFlute, brightFlute,  	bassClarinetSpec, shortBassClarinetSpec, 	bassClarinet, shortBassClarinet, bassClarinetVibrato, mutedBassClarinet, brightBassClarinet, -	frenchHornSpec, shortFrenchHornSpec, -	frenchHorn, shortFrenchHorn, frenchHornVibrato, mutedFrenchHorn, brightFrenchHorn, +	frenchHornSpec, shortFrenchHornSpec,+	frenchHorn, shortFrenchHorn, frenchHornVibrato, mutedFrenchHorn, brightFrenchHorn,  	shengSpec, shortShengSpec, 	sheng, shortSheng, shengVibrato, mutedSheng, brightSheng, -	hulusiSpec, shortHulusiSpec, +	hulusiSpec, shortHulusiSpec, 	hulusi, shortHulusi, hulusiVibrato, mutedHulusi, brightHulusi, -	diziSpec, shortDiziSpec, +	diziSpec, shortDiziSpec, 	dizi, shortDizi, diziVibrato, mutedDizi, brightDizi,  	-- * SHARC instruments-	SharcInstr, -	soloSharc, orcSharc, padSharc, purePadSharc, -	dreamSharc, lightIsTooBrightSharc, whaleSongSharc, +	SharcInstr,+	soloSharc, orcSharc, padSharc, purePadSharc,+	dreamSharc, lightIsTooBrightSharc, whaleSongSharc, 	sharcOrgan,  	-- ** Padsynth instruments@@ -166,7 +166,7 @@ 	psDeepMagicPadSharc, psDeepMagicPadSharc', psDeepMagicSoftPadSharc, psDeepMagicSoftPadSharc',  	--- *** Crossfades-	psPadSharcCfd, psPadSharcCfd', psPadSharcCfd4, psPadSharcCfd4', psDeepPadSharcCfd, psDeepPadSharcCfd', +	psPadSharcCfd, psPadSharcCfd', psPadSharcCfd4, psPadSharcCfd4', psDeepPadSharcCfd, psDeepPadSharcCfd', 	psDeepPadSharcCfd4, psDeepPadSharcCfd4', psSoftPadSharcCfd, psSoftPadSharcCfd', psSoftPadSharcCfd4, psSoftPadSharcCfd4', 	psDeepSoftPadSharcCfd, psDeepSoftPadSharcCfd', psDeepSoftPadSharcCfd4, psDeepSoftPadSharcCfd4', @@ -179,7 +179,7 @@ 	psSoftPadSharcHifi, 	psMagicPadSharcHifi, 	psMagicSoftPadSharcHifi,-	psLargePianoSharcHifi,	+	psLargePianoSharcHifi, 	xpsLargePianoSharcHifi,  	-- *** Vedic pads@@ -220,14 +220,14 @@ 	-- * Nature 	windWall, mildWind, wind, snowCrackle, -	-- * Misc -	-- limRel, +	-- * Misc+	-- limRel, 	singleFx, singleFx' ) where  import Control.Monad -import Csound.Base +import Csound.Base  import qualified Csound.Catalog.Wave as C import qualified Csound.Catalog.Reson as C@@ -252,7 +252,7 @@  monoSig1 :: SigSpace a => (Sig -> a) -> (MonoArg -> a) monoSig1 f arg = mul env $ f cps-	where +	where 		env = amp * monoAdsr arg 0.35 0.5 1 0.5 		amp = port (monoAmp arg) 0.01 		cps = portk (monoCps arg) (delay1 gate * 0.01)@@ -273,7 +273,7 @@ singleFx = fx1  singleFxFilter :: Sig -> (ResonFilter -> a -> a) -> Patch a -> Patch a-singleFxFilter dw f = FxChain [fxSpecFilter dw (\filter x -> return $ f filter x)] +singleFxFilter dw f = FxChain [fxSpecFilter dw (\filter x -> return $ f filter x)]  -- | Creates a simple FX-xhain, that contains a single effect. -- The first argument is the dry/wet-value.@@ -287,17 +287,17 @@ ---------------------------------------------- -- electric pianos -data Epiano1 = Epiano1 +data Epiano1 = Epiano1 	{ epiano1Rel :: D }  instance Default Epiano1 where-	def = Epiano1 5	+	def = Epiano1 5  epiano1 = epiano1' def  epiano1' (Epiano1 rel) = withLargeHall $ polySynt $ \a -> mul 0.4 $ C.simpleFading rel a -data MutedPiano = MutedPiano +data MutedPiano = MutedPiano 	{ mutedPianoMute :: Sig 	, mutedPianoRel  :: D } @@ -306,23 +306,23 @@  mutedPiano = mutedPiano' def -mutedPiano' (MutedPiano mute rel) = fx1 0.25 (largeHall2 . at (mlp3 (250 + 7000 * mute) 0.2)) $ -	polySynt $ \a -> mul 0.7 $ C.simpleSust rel a	+mutedPiano' (MutedPiano mute rel) = fx1 0.25 (largeHall2 . at (mlp3 (250 + 7000 * mute) 0.2)) $+	polySynt $ \a -> mul 0.7 $ C.simpleSust rel a  amPiano = fx1 0.25 id $ polySyntFilter $ \filter -> mul 1.4 . onCps (C.amPianoBy filter) -fmPiano = withSmallHall $ polySynt $ at fromMono . mul 0.75 . onCps (C.fmFlavio 6 3)	+fmPiano = withSmallHall $ polySynt $ at fromMono . mul 0.75 . onCps (C.fmFlavio 6 3)  epianoReleaseTime :: ReleaseTime epianoReleaseTime = 0.25 -epiano2 = addHammer 0.15 $ fx1 0.25 smallHall2 $ -	polySyntFilter $ \filter -> mul 1.125 . at fromMono . (onCps $ C.epianoBy filter epianoReleaseTime [C.EpianoOsc 4 5 1 1, C.EpianoOsc 8 10 2.01 1])	+epiano2 = addHammer 0.15 $ fx1 0.25 smallHall2 $+	polySyntFilter $ \filter -> mul 1.125 . at fromMono . (onCps $ C.epianoBy filter epianoReleaseTime [C.EpianoOsc 4 5 1 1, C.EpianoOsc 8 10 2.01 1]) -epianoHeavy = addHammer 0.15 $ fx1 0.2 smallHall2 $ -	polySyntFilter $ \filter -> mul 1.125 . at fromMono . (onCps $ C.epianoBy filter epianoReleaseTime [C.EpianoOsc 4 5 1 1, C.EpianoOsc 8 10 2.01 1, C.EpianoOsc 8 15 0.5 0.5])	+epianoHeavy = addHammer 0.15 $ fx1 0.2 smallHall2 $+	polySyntFilter $ \filter -> mul 1.125 . at fromMono . (onCps $ C.epianoBy filter epianoReleaseTime [C.EpianoOsc 4 5 1 1, C.EpianoOsc 8 10 2.01 1, C.EpianoOsc 8 15 0.5 0.5]) -epianoBright = addHammer 0.15 $ fx1 0.2 smallHall2 $ +epianoBright = addHammer 0.15 $ fx1 0.2 smallHall2 $ 	polySyntFilter $ \filter -> mul 1.12 . at fromMono . (onCps $ C.epianoBy filter epianoReleaseTime [C.EpianoOsc 4 5 1 1, C.EpianoOsc 8 10 3.01 1, C.EpianoOsc 8 15 5 0.5, C.EpianoOsc 8 4 7 0.3])  vibraphonePiano1 = vibraphoneToPiano smallVibraphone1@@ -337,10 +337,10 @@ ---------------------------------------------- -- organs -cathedralOrgan = withLargeHall $ polySynt $ at fromMono . mul 0.7 . onCps C.cathedralOrgan	+cathedralOrgan = withLargeHall $ polySynt $ at fromMono . mul 0.7 . onCps C.cathedralOrgan  -- [0, 30]-data HammondOrgan = HammondOrgan +data HammondOrgan = HammondOrgan 	{ hammondOrganDetune :: Sig }  instance Default HammondOrgan where@@ -354,7 +354,7 @@  hammondOrganm' (HammondOrgan detune) = fx1 0.15 smallRoom2 $ monoSynt $ mul 0.4 . at fromMono . monoSig1 (C.hammondOrgan detune) -toneWheelOrgan = withSmallHall $ polySynt $ at fromMono  . mul (0.6 * fadeOut 0.05) . onCps C.toneWheel	+toneWheelOrgan = withSmallHall $ polySynt $ at fromMono  . mul (0.6 * fadeOut 0.05) . onCps C.toneWheel  sawOrgan  = mul 0.45 $ waveOrgan rndSaw triOrgan  = mul 0.5  $ waveOrgan rndTri@@ -369,13 +369,13 @@ organFx :: Patch2 -> Patch2 organFx = withSmallHall . singleFxFilter 1 (\filter -> at $ filter 3500 0.1) -waveOrgan :: (Sig -> SE Sig) -> Patch2 +waveOrgan :: (Sig -> SE Sig) -> Patch2 waveOrgan wave = organFx $ polySynt $ onCps $ at fromMono . mul (fades 0.01 0.01) . wave -waveOrganm :: (Sig -> SE Sig) -> Patch2 +waveOrganm :: (Sig -> SE Sig) -> Patch2 waveOrganm wave = organFx $ monoSynt $ monoSig1 $ at fromMono . mul (fades 0.01 0.01) . wave -waveOrganWithKey :: (D -> Sig -> SE Sig) -> Patch2 +waveOrganWithKey :: (D -> Sig -> SE Sig) -> Patch2 waveOrganWithKey wave = organFx $ polySynt $ onCps $ \cps -> (at fromMono . mul (fades 0.01 0.01) . wave cps) (sig cps)  ----------------------------------------------@@ -414,7 +414,7 @@ choirE' = choir' singE choirU' = choir' singU -data NoisyChoir = NoisyChoir +data NoisyChoir = NoisyChoir 	{ noisyChoirFilterNum :: Int 	, noisyChoirBw        :: Sig 	}@@ -431,7 +431,7 @@ dryNoisyChoir (NoisyChoir n bw) = polySynt $ at fromMono . mul 0.45 . onCps (C.noisyChoir n bw)  longNoisyChoir' ch = fx1 0.15 magicCave2 $ dryNoisyChoir ch-	+ noisyChoir' ch = fx1 0.15 largeHall2 $ dryNoisyChoir ch  -- modes (wth delay or not delay)@@ -529,7 +529,7 @@  -- | The first argument is brightness (0 to 1) dreamPadm' :: Sig -> Patch2-dreamPadm' bright = dreamPadFx $ monoSyntFilter $ \filter -> fmap fromMono . monoSig1 (C.dreamPad filter bright)    +dreamPadm' bright = dreamPadFx $ monoSyntFilter $ \filter -> fmap fromMono . monoSig1 (C.dreamPad filter bright)  -- | The first argument is brightness (0 to 1). The second argument is a wave function. dreamPadBym' :: Sig -> (Sig -> SE Sig) -> Patch2@@ -537,28 +537,28 @@  -- | The first argument is brightness (0 to 1) underwaterPad' :: Sig -> Patch2-underwaterPad' bright = dreamPadFx $ polySyntFilter $ \filter ->  fmap fromMono . onCps (C.underwaterPad filter bright)    +underwaterPad' bright = dreamPadFx $ polySyntFilter $ \filter ->  fmap fromMono . onCps (C.underwaterPad filter bright)  -- | The first argument is brightness (0 to 1) underwaterPadm' :: Sig -> Patch2-underwaterPadm' bright = dreamPadFx $ monoSyntFilter $ \filter -> fmap fromMono . monoSig1 (C.underwaterPad filter bright)    +underwaterPadm' bright = dreamPadFx $ monoSyntFilter $ \filter -> fmap fromMono . monoSig1 (C.underwaterPad filter bright)  -- | The first argument is brightness (0 to 1) lightIsTooBrightPad' :: Sig -> Patch2-lightIsTooBrightPad' bright = dreamPadFx $ polySyntFilter $ \filter ->  fmap fromMono . onCps (C.lightIsTooBrightPad filter bright)    +lightIsTooBrightPad' bright = dreamPadFx $ polySyntFilter $ \filter ->  fmap fromMono . onCps (C.lightIsTooBrightPad filter bright)  lightIsTooBrightPadm' :: Sig -> Patch2-lightIsTooBrightPadm' bright = dreamPadFx $ monoSyntFilter $ \filter -> fmap fromMono . monoSig1 (C.lightIsTooBrightPad filter bright)    +lightIsTooBrightPadm' bright = dreamPadFx $ monoSyntFilter $ \filter -> fmap fromMono . monoSig1 (C.lightIsTooBrightPad filter bright)  lightIsTooBrightPadWithKey :: Sig -> (D -> Sig -> SE Sig) -> Patch2 lightIsTooBrightPadWithKey brightness wave = dreamPadFx $ polySyntFilter $ genDreamPadNote C.lightIsTooBrightPadBy wave brightness  -- | The first argument is brightness (0 to 1) whaleSongPad' :: Sig -> Patch2-whaleSongPad' bright = dreamPadFx $ polySyntFilter $ \filter -> fmap fromMono . onCps (C.whaleSongPad filter bright)    +whaleSongPad' bright = dreamPadFx $ polySyntFilter $ \filter -> fmap fromMono . onCps (C.whaleSongPad filter bright)  whaleSongPadm' :: Sig -> Patch2-whaleSongPadm' bright = dreamPadFx $ monoSyntFilter $ \filter -> fmap fromMono . monoSig1 (C.whaleSongPad filter bright)    +whaleSongPadm' bright = dreamPadFx $ monoSyntFilter $ \filter -> fmap fromMono . monoSig1 (C.whaleSongPad filter bright)  whaleSongPadWithKey :: Sig -> (D -> Sig -> SE Sig) -> Patch2 whaleSongPadWithKey brightness wave = dreamPadFx $ polySyntFilter $ genDreamPadNote C.whaleSongPadBy wave brightness@@ -568,13 +568,13 @@  polySynthFxChain = FxChain [fxSpec 0.25 (return . largeHall2), fxSpec 0.25 (return . (at $ echo 0.25 0.65)), fxSpec 0.25 (at $ chorus 0.07 1.25 1), fxSpecFilter 1 $ \filter -> return . at (filter 5500 0.12 . filt 2 br 18000 0.3)] -polySynth  = polySynthFxChain $ polySynt $ fmap fromMono . onCps C.polySynth 	-polySynthm = polySynthFxChain $ monoSynt $ fmap fromMono . monoSig1 C.polySynth 	-	+polySynth  = polySynthFxChain $ polySynt $ fmap fromMono . onCps C.polySynth+polySynthm = polySynthFxChain $ monoSynt $ fmap fromMono . monoSig1 C.polySynth+ phasingLead = withSmallHall $ polySynt $ at fromMono . mul (0.7 * fadeOut 0.05) . onCps (uncurry C.phasingSynth) -data RazorLead = RazorLead -	{ razorLeadBright :: Sig +data RazorLead = RazorLead+	{ razorLeadBright :: Sig 	, razorLeadSpeed  :: Sig }  instance Default RazorLead where@@ -629,10 +629,10 @@ strikeRelease (amp, cps) spec = (0.85 * strikeRel spec * amp) * amp + (strikeRel spec) - (cps / 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 +data Strike = Strike 	{ strikeRel :: D 	, strikeHasDelay ::	Bool-	, strikeReverb :: Sig2 -> Sig2		+	, strikeReverb :: Sig2 -> Sig2 	}  instance Default Strike where@@ -657,10 +657,10 @@ 	Huge -> Large  toStrikeSpec :: Size -> Size -> Strike-toStrikeSpec revSpec restSpec = Strike +toStrikeSpec revSpec restSpec = Strike 	{ strikeReverb  = toReverb revSpec 	, strikeRel = toRel restSpec-	, strikeHasDelay = toHasDelay restSpec } +	, strikeHasDelay = toHasDelay restSpec }  toReverb :: Size -> (Sig2  -> Sig2) toReverb x = case x of@@ -835,12 +835,12 @@ --------------------------------------------------------------- -- scrape --- scrapePatch +-- scrapePatch  names = ["dahina","banyan","xylophone","tibetanBowl180","spinelSphere","potLid","redCedarWoodPlate","tubularBell","redwoodPlate","douglasFirWoodPlate","uniformWoodenBar","uniformAluminumBar","vibraphone1","vibraphone2","chalandiPlates","tibetanBowl152","tibetanBowl140","wineGlass","smallHandbell","albertClockBellBelfast","woodBlock"] toUpperName (x:xs) = toUpper x : xs --- scrapePatch +-- scrapePatch  scrapeRelease :: (D, D) -> D -> D scrapeRelease (amp, cps) rel = (0.85 * rel * amp) * amp + rel - (cps / 10000)@@ -991,29 +991,29 @@ ------------------------------------ -- woodwind -data Wind = Wind +data Wind = Wind 	{ windAtt :: D 	, windDec :: D-	, windSus :: D	-	, windVib :: D	+	, windSus :: D+	, windVib :: D 	, windBright :: D } -woodWind' spec instr = withSmallHall $ polySynt $ \(amp, cps) -> mul 1.3 $ do +woodWind' spec instr = withSmallHall $ polySynt $ \(amp, cps) -> mul 1.3 $ do 		seed <- rnd 1 		vibDisp <- rnd (0.1 * amp)-		let dispVib vib = vib * (0.9 + vibDisp)		+		let dispVib vib = vib * (0.9 + vibDisp) 		return $ fromMono $ mul (0.8 * sig amp * fadeOut (windDec spec)) $ instr seed (dispVib $ windVib spec) (windAtt spec) (windSus spec) (windDec spec) (0.4 + 0.75 * windBright spec * amp) cps  -- flute -fluteSpec bright vib = Wind +fluteSpec bright vib = Wind 	{ windAtt = 0.08 	, windDec = 0.1 	, windSus = 20 	, windVib = vib 	, windBright = bright } -shortFluteSpec bright vib = Wind +shortFluteSpec bright vib = Wind 	{ windAtt = 0.03 	, windDec = 0.05 	, windSus = 20@@ -1021,40 +1021,40 @@ 	, windBright = bright }  flute = woodWind' (fluteSpec br vib) C.flute-	where +	where 		br = 0.7 		vib = 0.015  shortFlute = woodWind' (shortFluteSpec br vib) C.flute-	where +	where 		br = 0.7 		vib = 0.015  fluteVibrato = woodWind' (fluteSpec br vib) C.flute-	where +	where 		br = 0.7 		vib = 0.04  mutedFlute = woodWind' (fluteSpec br vib) C.flute-	where +	where 		br = 0.25 		vib = 0.015  brightFlute = woodWind' (fluteSpec br vib) C.flute-	where +	where 		br = 1.2 		vib = 0.015  -- bass clarinet -bassClarinetSpec bright vib = Wind +bassClarinetSpec bright vib = Wind 	{ windAtt = 0.06 	, windDec = 0.15 	, windSus = 20 	, windVib = vib 	, windBright = bright } -shortBassClarinetSpec bright vib = Wind +shortBassClarinetSpec bright vib = Wind 	{ windAtt = 0.03 	, windDec = 0.04 	, windSus = 20@@ -1062,40 +1062,40 @@ 	, windBright = bright }  bassClarinet = woodWind' (bassClarinetSpec br vib) C.bassClarinet-	where +	where 		br = 0.7 		vib = 0.01  shortBassClarinet = woodWind' (shortBassClarinetSpec br vib) C.bassClarinet-	where +	where 		br = 0.7 		vib = 0.01  bassClarinetVibrato = woodWind' (bassClarinetSpec br vib) C.bassClarinet-	where +	where 		br = 0.7 		vib = 0.035  mutedBassClarinet = woodWind' (bassClarinetSpec br vib) C.bassClarinet-	where +	where 		br = 0.25 		vib = 0.01  brightBassClarinet = woodWind' (bassClarinetSpec br vib) C.bassClarinet-	where +	where 		br = 1.2 		vib = 0.01  -- french horn -frenchHornSpec bright vib = Wind +frenchHornSpec bright vib = Wind 	{ windAtt = 0.08 	, windDec = 0.25 	, windSus = 20 	, windVib = vib 	, windBright = bright } -shortFrenchHornSpec bright vib = Wind +shortFrenchHornSpec bright vib = Wind 	{ windAtt = 0.03 	, windDec = 0.04 	, windSus = 20@@ -1103,40 +1103,40 @@ 	, windBright = bright }  frenchHorn = woodWind' (frenchHornSpec br vib) C.frenchHorn-	where +	where 		br = 0.7 		vib = 0.01  shortFrenchHorn = woodWind' (shortFrenchHornSpec br vib) C.frenchHorn-	where +	where 		br = 0.7 		vib = 0.01  frenchHornVibrato = woodWind' (frenchHornSpec br vib) C.frenchHorn-	where +	where 		br = 0.7 		vib = 0.035  mutedFrenchHorn = woodWind' (frenchHornSpec br vib) C.frenchHorn-	where +	where 		br = 0.25 		vib = 0.01  brightFrenchHorn = woodWind' (frenchHornSpec br vib) C.frenchHorn-	where +	where 		br = 1.2 		vib = 0.01  -- sheng -shengSpec bright vib = Wind +shengSpec bright vib = Wind 	{ windAtt = 0.1 	, windDec = 0.2 	, windSus = 20 	, windVib = vib 	, windBright = bright } -shortShengSpec bright vib = Wind +shortShengSpec bright vib = Wind 	{ windAtt = 0.03 	, windDec = 0.04 	, windSus = 20@@ -1144,40 +1144,40 @@ 	, windBright = bright }  sheng = woodWind' (shengSpec br vib) C.sheng-	where +	where 		br = 0.7 		vib = 0.01  shortSheng = woodWind' (shortShengSpec br vib) C.sheng-	where +	where 		br = 0.7 		vib = 0.01  shengVibrato = woodWind' (shengSpec br vib) C.sheng-	where +	where 		br = 0.7 		vib = 0.025  mutedSheng = woodWind' (shengSpec br vib) C.sheng-	where +	where 		br = 0.25 		vib = 0.01  brightSheng = woodWind' (shortShengSpec br vib) C.sheng-	where +	where 		br = 1.2 		vib = 0.01  -- hulusi -hulusiSpec bright vib = Wind +hulusiSpec bright vib = Wind 	{ windAtt = 0.12 	, windDec = 0.14 	, windSus = 20 	, windVib = vib 	, windBright = bright } -shortHulusiSpec bright vib = Wind +shortHulusiSpec bright vib = Wind 	{ windAtt = 0.03 	, windDec = 0.04 	, windSus = 20@@ -1185,41 +1185,41 @@ 	, windBright = bright }  hulusi = woodWind' (hulusiSpec br vib) C.hulusi-	where +	where 		br = 0.7 		vib = 0.015  shortHulusi = woodWind' (shortHulusiSpec br vib) C.hulusi-	where +	where 		br = 0.7 		vib = 0.015  hulusiVibrato = woodWind' (hulusiSpec br vib) C.hulusi-	where +	where 		br = 0.7 		vib = 0.035  mutedHulusi = woodWind' (hulusiSpec br vib) C.hulusi-	where +	where 		br = 0.25 		vib = 0.015  brightHulusi = woodWind' (shortHulusiSpec br vib) C.hulusi-	where +	where 		br = 1.2 		vib = 0.015   -- dizi -diziSpec bright vib = Wind +diziSpec bright vib = Wind 	{ windAtt = 0.03 	, windDec = 0.2 	, windSus = 20 	, windVib = vib 	, windBright = bright } -shortDiziSpec bright vib = Wind +shortDiziSpec bright vib = Wind 	{ windAtt = 0.1 	, windDec = 0.04 	, windSus = 20@@ -1227,27 +1227,27 @@ 	, windBright = bright }  dizi = woodWind' (diziSpec br vib) C.dizi-	where +	where 		br = 0.7 		vib = 0.01  shortDizi = woodWind' (shortDiziSpec br vib) C.dizi-	where +	where 		br = 0.7 		vib = 0.01  diziVibrato = woodWind' (diziSpec br vib) C.dizi-	where +	where 		br = 0.7 		vib = 0.035  mutedDizi = woodWind' (diziSpec br vib) C.dizi-	where +	where 		br = 0.25 		vib = 0.01  brightDizi = woodWind' (shortDiziSpec br vib) C.dizi-	where +	where 		br = 1.2 		vib = 0.01 @@ -1267,7 +1267,7 @@ black = fx1 0.25 smallHall2 $ polySynt $ at fromMono . mul (2 * fades 0.01 0.5). onCps (\cps -> C.black 3 (cps / 2) (cps * 2) 12 (sig cps))  simpleMarimba = fx1 0.25 smallHall2 $ polySynt $ at fromMono . mul (0.8 * fades 0.01 0.5). onCps (C.simpleMarimba 5)-	+ impulseMarimba1 = fx1 0.3 smallHall2 $ polySynt $ at fromMono . mul (0.8 * fadeOut 0.75). onCps C.impulseMarimba1  impulseMarimba2 = fx1 0.3 smallHall2 $ polySynt $ at fromMono . mul (0.8 * fadeOut 0.75). onCps C.impulseMarimba2@@ -1277,7 +1277,7 @@ snowCrackle = polySynt $ \(amp, cps) -> (return . fromMono . mul (0.8 * sig amp * fades 0.001 0.001) . (C.snowCrackle . (/ 25))) (sig cps)  noiseBell = fx1 0.25 smallHall2 $ polySynt $ at fromMono . mul 0.75 . onCps (C.noiseBell (31, 125) 2.3 0.2 . ( * 8))-	+ ------------------------------------ -- vowels @@ -1370,7 +1370,7 @@ -- | High resolution Padsynth instrument with piano-like amplitude envelope. psPianoSharcHifi :: ReleaseTime -> SharcInstr -> Patch2 psPianoSharcHifi = psPianoSharc' hiDef- + -- | Padsynth instrument with piano-like amplitude envelope. We can specify aux parameters. psPianoSharc' :: PadSharcSpec -> ReleaseTime -> SharcInstr -> Patch2 psPianoSharc' spec releaseTime sh = fxs $ polySynt $ \ampCps -> mul (0.75 * C.pianoEnv releaseTime ampCps) $ onCps (C.padsynthSharcOsc2' spec sh) ampCps@@ -1420,7 +1420,7 @@ 	where rel (amp, cps) = amp - cps / 3500  psPadFilter filter = psPadFilterBy 75 15 filter-psSoftPadFilter filter = psPadFilterBy 350 0.15 filter +psSoftPadFilter filter = psPadFilterBy 350 0.15 filter  deepOsc :: (Num a, SigSpace a) => (D -> a) -> (D -> a) deepOsc f x = mul 0.5 (f x + f (x / 2))@@ -1436,7 +1436,7 @@  genPsPad :: (Sig2 -> Sig2) -> (ResonFilter -> (D, D) -> Sig -> Sig) -> (D -> SE Sig2) -> Patch2 genPsPad effect mkFilter wave = fxs $ polySyntFilter $ \filter ampCps -> mul (1.2 * fades 0.5 (0.6 + rel ampCps)) $ onCps (at (mkFilter filter ampCps) . wave) ampCps-	where +	where         fxs = FxChain [fxSpec 0.25 (return . effect), fxSpec 0.5 (return . (at $ mul 2.1 . saturator 0.75)), fxSpec 0.3 (return . (at $ echo 0.125 0.65))]         rel (amp, cps) = amp - cps / 3500 @@ -1591,8 +1591,8 @@ -- -- Good values for bandwidth lies in the interval [0, 120] vedicPad :: SharcInstr -> PadsynthBandwidth -> Patch2-vedicPad instr bandwidth = mul 0.8 $ -	addPreFx 0.45 (return . pingPong 0.25 0.65 0.5) $ +vedicPad instr bandwidth = mul 0.8 $+	addPreFx 0.45 (return . pingPong 0.25 0.65 0.5) $ 	psDeepSoftPadSharc' (def { padSharcBandwidth = bandwidth, padSharcSize = 15 })  instr  -- | Deep spiritual drones. Crossfade between two instruments.@@ -1601,8 +1601,8 @@ -- -- Good values for bandwidth lies in the interval [0, 120] vedicPadCfd :: Sig -> SharcInstr -> SharcInstr -> PadsynthBandwidth -> Patch2-vedicPadCfd k instr1 instr2 bandwidth = mul 0.8 $ -	addPreFx 0.45 (return . pingPong 0.25 0.65 0.5) $ +vedicPadCfd k instr1 instr2 bandwidth = mul 0.8 $+	addPreFx 0.45 (return . pingPong 0.25 0.65 0.5) $ 	psDeepSoftPadSharcCfd' k (def { padSharcBandwidth = bandwidth, padSharcSize = 15 },  instr1) (def { padSharcBandwidth = bandwidth, padSharcSize = 15 },  instr2)  -- | Deep spiritual drones. Crossfade between four instruments.@@ -1611,9 +1611,9 @@ -- -- Good values for bandwidth lies in the interval [0, 120] vedicPadCfd4 :: Sig -> Sig -> SharcInstr -> SharcInstr -> SharcInstr -> SharcInstr -> PadsynthBandwidth -> Patch2-vedicPadCfd4 kX kY instr1 instr2 instr3 instr4 bandwidth = mul 0.8 $ -	addPreFx 0.45 (return .  pingPong 0.25 0.65 0.5) $ -	psDeepSoftPadSharcCfd4' kX kY +vedicPadCfd4 kX kY instr1 instr2 instr3 instr4 bandwidth = mul 0.8 $+	addPreFx 0.45 (return .  pingPong 0.25 0.65 0.5) $+	psDeepSoftPadSharcCfd4' kX kY 		(def { padSharcBandwidth = bandwidth, padSharcSize = 15 },  instr1) (def { padSharcBandwidth = bandwidth, padSharcSize = 15 },  instr2) 		(def { padSharcBandwidth = bandwidth, padSharcSize = 15 },  instr3) (def { padSharcBandwidth = bandwidth, padSharcSize = 15 },  instr4) @@ -1624,9 +1624,9 @@ -- -- Good values for bandwidth lies in the interval [0, 120] vedicPadHifi :: SharcInstr -> PadsynthBandwidth -> Patch2-vedicPadHifi instr bandwidth = mul 0.8 $ -	addPreFx 0.45 (return . pingPong 0.25 0.65 0.5) $ -	deepPad $ +vedicPadHifi instr bandwidth = mul 0.8 $+	addPreFx 0.45 (return . pingPong 0.25 0.65 0.5) $+	deepPad $ 	psSoftPadSharc' (def { padSharcBandwidth = bandwidth, padSharcSize = 32 })  instr  -- | Deep spiritual drones. Contains only quater of ftables as for simple @vedicPad@.@@ -1635,9 +1635,9 @@ -- -- Good values for bandwidth lies in the interval [0, 120] vedicPadLofi :: SharcInstr -> PadsynthBandwidth -> Patch2-vedicPadLofi instr bandwidth = mul 0.8 $ -	addPreFx 0.45 (return . pingPong 0.25 0.65 0.5) $ -	deepPad $ +vedicPadLofi instr bandwidth = mul 0.8 $+	addPreFx 0.45 (return . pingPong 0.25 0.65 0.5) $+	deepPad $ 	psSoftPadSharc' (def { padSharcBandwidth = bandwidth, padSharcSize = 4 })  instr  -- | Eminent@@ -1814,7 +1814,7 @@ noisyRise :: Patch2 noisyRise = fxs $ polySynt $ onCps $ \cps -> mul 0.24 $ wave cps 	where-		fxs = FxChain [fxSpec 0.35 (return . largeHall2), fxSpec 0.5 (return . (at $ echo 0.25 0.85))]		+		fxs = FxChain [fxSpec 0.35 (return . largeHall2), fxSpec 0.5 (return . (at $ echo 0.25 0.85))] 		wave x  = noisy x + pad x 		noisy x = at (mul 0.3 . fromMono . bat (bp (x * 5) 23) . lp (300 + 2500 * linseg [0, 0.73, 0, 8, 3]) 14) white 		pad x = envelope $ filter x $ padsynthOsc2 spec x + mul 0.15 (padsynthOsc2 spec (x * 5)) + mul 0.5 (padsynthOsc2 spec (x / 2))@@ -1833,7 +1833,7 @@ noisySpiral' :: D -> Patch2 noisySpiral' spiralSpeed = fxs $ polySynt $ onCps $ \cps -> mul 0.24 $ wave cps 	where-		fxs = FxChain [fxSpec 0.15 (return . magicCave2), fxSpec 0.43 (return . (at $ echo 0.35 0.85))]	+		fxs = FxChain [fxSpec 0.15 (return . magicCave2), fxSpec 0.43 (return . (at $ echo 0.35 0.85))]  		wave x  = noisy x + pad x 		noisy x = at (mul 0.3 . fromMono . bat (bp (x * 5) 23) . lp (300 + 2500 * linseg [0, 0.73, 0, 8, 3] * uosc (expseg [0.25, 5, spiralSpeed])) 14) white@@ -1854,8 +1854,8 @@  ---------------------------------- -dafunkWave cfq adsrFun (amp, cps) = at (bhp 30) $ diode (0.95 + 0.2 * cfq) (550 + 4500 * cfq) (0.52 + 0.4 * cfq) $ amp * env * (\x -> saw x + 0.5 * saw (x * 0.503) + 0.25 * (sqr (x * 0.253))) (port cps 0.001)-    where         +dafunkWave cfq adsrFun (amp, cps) = at (bhp 30) $ diode 1.2 (550 + 4500 * cfq) (0.52 + 0.4 * cfq) $ amp * env * (\x -> saw x + 0.5 * saw (x * 0.503) + 0.25 * (sqr (x * 0.253))) (port cps 0.001)+    where         env = adsrFun 0.019 8.5 0.2 0.07  dafunkLead = adsrMono (\env (amp, cps) -> return $ fromMono $ dafunkWave cfq env (amp, cps))