hsc3-graphs 0.9 → 0.11
raw patch · 333 files changed
+7397/−3656 lines, 333 filesdep +MonadRandomdep +containersdep +directorydep ~hoscdep ~hsc3dep ~hsc3-sfnew-component:exe:hsc3-acid-otophilianew-component:exe:hsc3-after-goeyvaertsnew-component:exe:hsc3-alien-froggiesnew-component:exe:hsc3-alien-meadownew-component:exe:hsc3-ambient1new-component:exe:hsc3-arpeggionew-component:exe:hsc3-black-atlantic-currentsnew-component:exe:hsc3-bohlen-pierce-140new-component:exe:hsc3-bs-070705new-component:exe:hsc3-cds-070701new-component:exe:hsc3-choipnew-component:exe:hsc3-chrd-mnew-component:exe:hsc3-chrd-tnew-component:exe:hsc3-clustered-sinesnew-component:exe:hsc3-comb-delay-sweepsnew-component:exe:hsc3-contamination-zonenew-component:exe:hsc3-coolantnew-component:exe:hsc3-cymbalism-accelerandonew-component:exe:hsc3-dark-sea-hornsnew-component:exe:hsc3-data-spacenew-component:exe:hsc3-deep-tripnew-component:exe:hsc3-discretion-mnew-component:exe:hsc3-dopplernew-component:exe:hsc3-e-lamell-pnew-component:exe:hsc3-early-space-music-lp-side-twonew-component:exe:hsc3-eggcrate-mnew-component:exe:hsc3-ellipse-based-synthesisnew-component:exe:hsc3-fb-090531new-component:exe:hsc3-fm-kltr-pnew-component:exe:hsc3-harmonic-swimming-mnew-component:exe:hsc3-hell-is-busynew-component:exe:hsc3-jl-1-Znew-component:exe:hsc3-k-ppr-mnew-component:exe:hsc3-kabelscahdennew-component:exe:hsc3-lso-061101new-component:exe:hsc3-microhelixnew-component:exe:hsc3-mridangamnew-component:exe:hsc3-nharm-pnew-component:exe:hsc3-noise-modulated-sinesnew-component:exe:hsc3-nv-tw-1new-component:exe:hsc3-nv-tw-41new-component:exe:hsc3-nv-tw-54new-component:exe:hsc3-pebble-beachnew-component:exe:hsc3-pulsing-bottles-mnew-component:exe:hsc3-railsnew-component:exe:hsc3-rain-thundernew-component:exe:hsc3-random-panning-sinesnew-component:exe:hsc3-random-panning-sines-mnew-component:exe:hsc3-random-pulsationsnew-component:exe:hsc3-random-sine-wavesnew-component:exe:hsc3-resonant-dustnew-component:exe:hsc3-ring-modulated-klanknew-component:exe:hsc3-rzblpnew-component:exe:hsc3-sam-i-amnew-component:exe:hsc3-saucer-basenew-component:exe:hsc3-sawed-cymbalsnew-component:exe:hsc3-scritto-mnew-component:exe:hsc3-seqrnew-component:exe:hsc3-sidereal-timenew-component:exe:hsc3-slow-beating-harmonic-sinesnew-component:exe:hsc3-slow-beating-sinesnew-component:exe:hsc3-spe-mnew-component:exe:hsc3-spe-pnew-component:exe:hsc3-string-wander-clusternew-component:exe:hsc3-tank-mnew-component:exe:hsc3-tremulatenew-component:exe:hsc3-tremulate-mnew-component:exe:hsc3-trmlonew-component:exe:hsc3-uplinknew-component:exe:hsc3-vla-addtnnew-component:exe:hsc3-vla-addtn-sharcnew-component:exe:hsc3-voscilnew-component:exe:hsc3-why-supercollider
Dependencies added: MonadRandom, containers, directory, filepath, hls, hps, hsc3-lang, hsc3-unsafe, hsharc, primes, random-shuffle, split
Dependency ranges changed: hosc, hsc3, hsc3-sf
Files
- README +1/−1
- hsc3-graphs.cabal +492/−205
- src/acid-otophilia.hs +235/−0
- src/adso.hs +50/−0
- src/adso.lhs +0/−34
- src/after-goeyvaerts.hs +366/−0
- src/aleatoric-quartet-m.hs +33/−0
- src/aleatoric-quartet.lhs +0/−52
- src/aleatoric-quartet.scd +22/−0
- src/alien-froggies.hs +13/−0
- src/alien-froggies.scd +5/−0
- src/alien-meadow.hs +16/−0
- src/ambient1.hs +97/−0
- src/analog-bubbles.hs +13/−0
- src/analog-bubbles.lhs +0/−14
- src/analog-bubbles.scd +4/−0
- src/arpeggio.hs +84/−0
- src/babbling-brook-m.hs +18/−0
- src/babbling-brook.lhs +0/−23
- src/babbling-brook.scd +7/−0
- src/birds-m.hs +34/−0
- src/birds.lhs +0/−28
- src/bit-reduction.hs +25/−0
- src/bit-reduction.lhs +0/−37
- src/bit-reduction.scd +14/−0
- src/black-atlantic-currents.hs +108/−0
- src/bohlen-pierce-140.hs +22/−0
- src/bohlen-pierce-140.scd +5/−0
- src/bottle-m.hs +28/−0
- src/bottle.lhs +0/−23
- src/bowed-string-m.hs +26/−0
- src/bowed-string.lhs +0/−38
- src/bowed-string.scd +13/−0
- src/bs-070705.hs +87/−0
- src/ccomb.hs +21/−0
- src/ccomb.lhs +0/−28
- src/ccomb.scd +11/−0
- src/cds-070701.hs +110/−0
- src/chain-saw.hs +50/−0
- src/chain-saw.lhs +0/−56
- src/chain-saw.scd +21/−0
- src/choip.hs +27/−0
- src/choip.scd +9/−0
- src/chrd-m.hs +25/−0
- src/chrd-t.hs +36/−0
- src/chrd.lhs +0/−36
- src/chrd.scd +16/−0
- src/clustered-sines.hs +21/−0
- src/comb-delay-sweeps.hs +32/−0
- src/contamination-zone.hs +31/−0
- src/coolant.hs +21/−0
- src/cricket.hs +22/−0
- src/cricket.lhs +0/−22
- src/cricket.scd +8/−0
- src/crotale-sine.hs +133/−0
- src/crotale-sine.lhs +0/−170
- src/crotale.hs +176/−0
- src/crotale.lhs +0/−333
- src/crotale.scd +164/−0
- src/cut-outs.hs +19/−0
- src/cut-outs.lhs +0/−30
- src/cut-outs.scd +11/−0
- src/cymbalism-accelerando.hs +24/−0
- src/cymbalism.hs +26/−0
- src/cymbalism.lhs +0/−30
- src/cymbalism.scd +11/−0
- src/dark-sea-horns.hs +20/−0
- src/dark-sea-horns.scd +13/−0
- src/data-space.hs +25/−0
- src/deep-sea.hs +37/−0
- src/deep-sea.lhs +0/−37
- src/deep-sea.scd +15/−0
- src/deep-trip.hs +19/−0
- src/default.hs +24/−0
- src/default.lhs +0/−36
- src/default.scd +8/−0
- src/demanding-studies.hs +19/−0
- src/demanding-studies.lhs +0/−27
- src/demanding-studies.scd +10/−0
- src/dial-history.hs +35/−0
- src/dial-history.lhs +0/−54
- src/dial-history.scd +22/−0
- src/diffraction.hs +28/−0
- src/diffraction.lhs +0/−47
- src/diffraction.scd +17/−0
- src/discretion-m.hs +23/−0
- src/discretion.hs +23/−0
- src/discretion.lhs +0/−15
- src/doppler.hs +32/−0
- src/drummer.hs +18/−0
- src/drummer.lhs +0/−24
- src/drummer.scd +9/−0
- src/e-lamell-p.hs +43/−0
- src/e-lamell.hs +66/−0
- src/e-lamell.lhs +0/−54
- src/early-space-music-lp-side-two.hs +78/−0
- src/eggcrate-m.hs +19/−0
- src/eggcrate.hs +22/−0
- src/eggcrate.lhs +0/−27
- src/eggcrate.scd +11/−0
- src/ellipse-based-synthesis.hs +40/−0
- src/f-lets.hs +30/−0
- src/f-lets.lhs +0/−26
- src/fb-090531.hs +47/−0
- src/fbl-fbf.hs +36/−0
- src/fbl-fbf.lhs +0/−27
- src/feedr.lhs +0/−25
- src/fm-iter.hs +21/−0
- src/fm-iter.lhs +0/−17
- src/fm-kltr-p.hs +38/−0
- src/fm-kltr.hs +62/−0
- src/fm-kltr.lhs +0/−49
- src/forest-sounds.hs +17/−0
- src/forest-sounds.lhs +0/−18
- src/forest-sounds.scd +5/−0
- src/fwalk.hs +39/−0
- src/fwalk.lhs +0/−28
- src/h-chatter.hs +32/−0
- src/h-chatter.lhs +0/−45
- src/h-chatter.scd +18/−0
- src/half-life.hs +14/−0
- src/half-life.lhs +0/−18
- src/half-life.scd +6/−0
- src/harmonic-swimming-m.hs +15/−0
- src/harmonic-swimming.hs +18/−0
- src/harmonic-swimming.lhs +0/−25
- src/harmonic-swimming.scd +10/−0
- src/harmonic-tumbling.hs +17/−0
- src/harmonic-tumbling.lhs +0/−23
- src/harmonic-tumbling.scd +9/−0
- src/hell-is-busy.hs +13/−0
- src/hell-is-busy.scd +2/−0
- src/hh-808.hs +30/−0
- src/hh-808.lhs +0/−25
- src/implosion.hs +36/−0
- src/implosion.lhs +0/−22
- src/insects.hs +21/−0
- src/insects.lhs +0/−15
- src/jl-1-Z.hs +20/−0
- src/jl-1-Z.scd +16/−0
- src/k-ppr-m.hs +29/−0
- src/k-ppr.hs +28/−0
- src/k-ppr.lhs +0/−39
- src/k-ppr.scd +14/−0
- src/kabelscahden.hs +18/−0
- src/karplus-strong.hs +47/−0
- src/karplus-strong.lhs +0/−40
- src/klink.hs +19/−0
- src/klink.lhs +0/−28
- src/klink.scd +10/−0
- src/lf-pulses.hs +16/−0
- src/lf-pulses.lhs +0/−20
- src/lf-pulses.scd +6/−0
- src/lfo-modulation.hs +10/−0
- src/lfo-modulation.lhs +0/−14
- src/lfo-modulation.scd +4/−0
- src/lg-timed.hs +24/−0
- src/lg-timed.lhs +0/−39
- src/lg-timed.scd +19/−0
- src/lin-sosc.hs +93/−0
- src/lin-sosc.lhs +0/−59
- src/lso-061101.hs +112/−0
- src/lucier.hs +1/−30
- src/lucier.scd +28/−0
- src/microhelix.hs +58/−0
- src/modal-space.hs +29/−0
- src/modal-space.lhs +0/−37
- src/modal-space.scd +17/−0
- src/moto-rev.hs +12/−0
- src/moto-rev.lhs +0/−12
- src/moto-rev.scd +3/−0
- src/mouse-clatter-m.hs +32/−0
- src/mouse-clatter.lhs +0/−55
- src/mouse-clatter.scd +14/−0
- src/mouse-clatter.scm +17/−0
- src/mridangam.hs +60/−0
- src/nharm-p.hs +37/−0
- src/nharm.hs +38/−0
- src/nharm.lhs +0/−26
- src/noise-burst-sweep.hs +20/−0
- src/noise-burst-sweep.lhs +0/−18
- src/noise-burst-sweep.scd +6/−0
- src/noise-modulated-sines.hs +17/−0
- src/non-real-time.hs +6/−9
- src/nv-tw-1.hs +16/−0
- src/nv-tw-1.scd +6/−0
- src/nv-tw-41.hs +17/−0
- src/nv-tw-41.scd +7/−0
- src/nv-tw-54.hs +29/−0
- src/nv-tw-54.scd +7/−0
- src/one-line.hs +14/−0
- src/one-line.lhs +0/−14
- src/one-line.scd +4/−0
- src/oscillator-cluster.hs +34/−0
- src/oscillator-cluster.lhs +0/−46
- src/oscillator-cluster.scd +23/−0
- src/overlap-add.hs +22/−0
- src/overlap-add.lhs +0/−41
- src/pattern-buffer.hs +59/−0
- src/pattern-buffer.lhs +0/−27
- src/pebble-beach.hs +41/−0
- src/plucked-strings.hs +27/−0
- src/plucked-strings.lhs +0/−23
- src/police-state.hs +24/−0
- src/police-state.lhs +0/−35
- src/police-state.scd +14/−0
- src/pond-life.scd +3/−0
- src/pulsing-bottles-m.hs +21/−0
- src/pulsing-bottles.hs +23/−0
- src/pulsing-bottles.lhs +0/−16
- src/pwm-crossfade.scd +5/−0
- src/rails.hs +27/−0
- src/rails.scd +9/−0
- src/rain-thunder.hs +24/−0
- src/rain-thunder.scd +9/−0
- src/random-panning-sines-m.hs +22/−0
- src/random-panning-sines.hs +20/−0
- src/random-pulsations.hs +14/−0
- src/random-sine-waves.hs +13/−0
- src/random-sine-waves.scd +3/−0
- src/record-scratcher.hs +25/−0
- src/record-scratcher.lhs +0/−30
- src/record-scratcher.scd +13/−0
- src/red-frik.hs +24/−0
- src/red-frik.lhs +0/−32
- src/red-frik.scd +13/−0
- src/resonant-dust.hs +15/−0
- src/reverberated-sine-percussion.hs +26/−0
- src/reverberated-sine-percussion.lhs +0/−38
- src/reverberated-sine-percussion.scd +15/−0
- src/ring-modulated-klank.hs +21/−0
- src/rm-octaver.lhs +0/−10
- src/rzblp.hs +27/−0
- src/s-chirp.hs +31/−0
- src/s-chirp.lhs +0/−26
- src/sam-i-am.hs +53/−0
- src/sample-and-hold-liquidities.hs +17/−0
- src/sample-and-hold-liquidities.lhs +0/−22
- src/sample-and-hold-liquidities.scd +8/−0
- src/saucer-base.hs +17/−0
- src/sawed-cymbals.hs +18/−0
- src/scratchy-m.hs +12/−0
- src/scratchy-m.lhs +0/−12
- src/scratchy.hs +12/−0
- src/scratchy.lhs +0/−12
- src/scratchy.scd +3/−0
- src/scritto-m.hs +28/−0
- src/scritto.hs +47/−0
- src/scritto.lhs +0/−126
- src/seqr.hs +27/−0
- src/shepard-tones.hs +39/−0
- src/shepard-tones.lhs +0/−42
- src/shepard-tones.scd +13/−0
- src/shifting-pulses.hs +19/−0
- src/shifting-pulses.lhs +0/−23
- src/shifting-pulses.scd +9/−0
- src/sidereal-time.hs +24/−0
- src/sidereal-time.scd +9/−0
- src/slow-beating-harmonic-sines.hs +44/−0
- src/slow-beating-sines.hs +41/−0
- src/snare-909.hs +31/−0
- src/snare-909.lhs +0/−46
- src/snare-909.scd +21/−0
- src/sosc-lp.lhs +0/−34
- src/spe-m.hs +26/−0
- src/spe-p.hs +30/−0
- src/spe.lhs +0/−23
- src/sprinkler-m.hs +13/−0
- src/sprinkler-m.lhs +0/−13
- src/sprinkler.hs +13/−0
- src/sprinkler.lhs +0/−13
- src/sprinkler.scd +3/−0
- src/string-wander-cluster.hs +23/−0
- src/strummable-guitar.hs +19/−0
- src/strummable-guitar.lhs +0/−27
- src/strummable-guitar.scd +11/−0
- src/sweepy-noise.hs +15/−0
- src/sweepy-noise.lhs +0/−17
- src/sweepy-noise.scd +5/−0
- src/synthetic-piano-m.hs +26/−0
- src/synthetic-piano.lhs +0/−33
- src/synthetic-piano.scd +14/−0
- src/tank-m.hs +58/−0
- src/tank.hs +51/−0
- src/tank.lhs +0/−64
- src/tank.scd +28/−0
- src/tgb.hs +40/−0
- src/tgb.lhs +0/−33
- src/tgr-rpr.hs +65/−0
- src/tgr-rpr.lhs +0/−42
- src/tgrn.hs +24/−0
- src/tgrn.lhs +0/−20
- src/theremin.hs +18/−0
- src/theremin.lhs +0/−22
- src/theremin.scd +8/−0
- src/three-cpsw.hs +18/−0
- src/three-cpsw.lhs +0/−24
- src/three-cpsw.scd +9/−0
- src/thx.hs +47/−0
- src/thx.lhs +0/−38
- src/tipnso.hs +19/−0
- src/tipnso.lhs +0/−17
- src/tr-out.hs +32/−0
- src/tr-out.lhs +0/−23
- src/train.hs +34/−0
- src/train.lhs +0/−25
- src/tremulate-m.hs +27/−0
- src/tremulate.hs +24/−0
- src/tremulate.scd +7/−0
- src/trkl.lhs +0/−27
- src/trmlo.hs +52/−0
- src/tsort.lhs +4/−3
- src/uplink.hs +22/−0
- src/vla-addtn-sharc.hs +76/−0
- src/vla-addtn.hs +146/−0
- src/vlc-distrtn.lhs +0/−133
- src/voscil.hs +38/−0
- src/waveset.hs +9/−9
- src/what-was-i-thinking.hs +24/−0
- src/what-was-i-thinking.lhs +0/−34
- src/what-was-i-thinking.scd +14/−0
- src/why-supercollider.hs +21/−0
- src/why-supercollider.scd +8/−0
- src/wial.hs +26/−0
- src/wial.lhs +0/−22
- src/wind-metals-m.hs +26/−0
- src/wind-metals.lhs +0/−29
- src/wind-metals.scd +11/−0
- src/xy-interference-m.hs +16/−0
- src/xy-interference-m.lhs +0/−20
- src/xy-interference.hs +16/−0
- src/xy-interference.lhs +0/−20
- src/xy-interference.scd +7/−0
@@ -1,6 +1,6 @@ hsc3-graphs - haskell supercollider graphs -hsc3-graphs provides a collection of illustrative +hsc3-graphs provides a collection of illustrative unit generator graphs for hsc3. http://slavepianos.org/rd/?t=hsc3-graphs
@@ -1,7 +1,7 @@ Name: hsc3-graphs-Version: 0.9+Version: 0.11 Synopsis: Haskell SuperCollider Graphs-Description: hsc3-graphs provides a collection of illustrative +Description: hsc3-graphs provides a collection of illustrative unit generator graphs for hsc3. License: GPL Category: Sound@@ -10,411 +10,698 @@ Maintainer: rd@slavepianos.org Stability: Experimental Homepage: http://slavepianos.org/rd/?t=hsc3-graphs-Tested-With: GHC == 6.12.1+Tested-With: GHC == 7.0.4 Build-Type: Simple-Cabal-Version: >= 1.6+Cabal-Version: >= 1.8 Data-files: README+ src/*.scd+ src/*.scm +Executable hsc3-acid-otophilia+ main-is: src/acid-otophilia.hs+ build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.*, random+ Executable hsc3-adso- main-is: src/adso.lhs- build-depends: base==4.*, hosc==0.9, hsc3==0.9, random+ main-is: src/adso.hs+ build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.*, random +Executable hsc3-after-goeyvaerts+ main-is: src/after-goeyvaerts.hs+ build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.*, hsc3-lang==0.11.*,+ containers, random, split+ Executable hsc3-aleatoric-quartet- main-is: src/aleatoric-quartet.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/aleatoric-quartet-m.hs+ build-depends: base==4.*, hsc3==0.11.* +Executable hsc3-alien-froggies+ main-is: src/alien-froggies.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*++Executable hsc3-alien-meadow+ main-is: src/alien-meadow.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*++Executable hsc3-ambient1+ main-is: src/ambient1.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*+ Executable hsc3-analog-bubbles- main-is: src/analog-bubbles.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/analog-bubbles.hs+ build-depends: base==4.*, hsc3==0.11.* +Executable hsc3-arpeggio+ main-is: src/arpeggio.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*+ Executable hsc3-babbling-brook- main-is: src/babbling-brook.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/babbling-brook-m.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-birds- main-is: src/birds.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/birds-m.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-bit-reduction- main-is: src/bit-reduction.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/bit-reduction.hs+ build-depends: base==4.*, hsc3==0.11.* +Executable hsc3-black-atlantic-currents+ main-is: src/black-atlantic-currents.hs+ build-depends: base==4.*, hsc3==0.11.*, primes, random, random-shuffle++Executable hsc3-bohlen-pierce-140+ main-is: src/bohlen-pierce-140.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*+ Executable hsc3-bottle- main-is: src/bottle.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/bottle-m.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.* Executable hsc3-bowed-string- main-is: src/bowed-string.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/bowed-string-m.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*, random +Executable hsc3-bs-070705+ main-is: src/bs-070705.hs+ build-depends: base==4.*, hsc3==0.11.*, hosc==0.11.*, random+ Executable hsc3-ccomb- main-is: src/ccomb.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/ccomb.hs+ build-depends: base==4.*, hsc3==0.11.* +Executable hsc3-cds-070701+ main-is: src/cds-070701.hs+ build-depends: base==4.*, hsc3==0.11.*, hosc==0.11.*+ Executable hsc3-chain-saw- main-is: src/chain-saw.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/chain-saw.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*, random -Executable hsc3-chrd- main-is: src/chrd.lhs- build-depends: base==4.*, hsc3==0.9+Executable hsc3-choip+ main-is: src/choip.hs+ build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.*, hsc3-lang==0.11.* +Executable hsc3-chrd-m+ main-is: src/chrd-m.hs+ build-depends: base==4.*, hsc3==0.11.*++Executable hsc3-chrd-t+ main-is: src/chrd-t.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*, MonadRandom++Executable hsc3-clustered-sines+ main-is: src/clustered-sines.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*++Executable hsc3-comb-delay-sweeps+ main-is: src/comb-delay-sweeps.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*, random++Executable hsc3-coolant+ main-is: src/coolant.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*++Executable hsc3-contamination-zone+ main-is: src/contamination-zone.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*+ Executable hsc3-cricket- main-is: src/cricket.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/cricket.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.* Executable hsc3-crotale- main-is: src/crotale.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/crotale.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.* Executable hsc3-crotale-sine- main-is: src/crotale-sine.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/crotale-sine.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.* Executable hsc3-cut-outs- main-is: src/cut-outs.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/cut-outs.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-cymbalism- main-is: src/cymbalism.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/cymbalism.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.* +Executable hsc3-cymbalism-accelerando+ main-is: src/cymbalism-accelerando.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*++Executable hsc3-dark-sea-horns+ main-is: src/dark-sea-horns.hs+ build-depends: base==4.*, hsc3==0.11.*++Executable hsc3-data-space+ main-is: src/data-space.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*+ Executable hsc3-deep-sea- main-is: src/deep-sea.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/deep-sea.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*, random +Executable hsc3-deep-trip+ main-is: src/deep-trip.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*+ Executable hsc3-default- main-is: src/default.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/default.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.* Executable hsc3-demanding-studies- main-is: src/demanding-studies.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/demanding-studies.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-dial-history- main-is: src/dial-history.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/dial-history.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-diffraction- main-is: src/diffraction.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/diffraction.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-discretion- main-is: src/discretion.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/discretion.hs+ build-depends: base==4.*, hsc3==0.11.* +Executable hsc3-discretion-m+ main-is: src/discretion-m.hs+ build-depends: base==4.*, hsc3==0.11.*++Executable hsc3-doppler+ main-is: src/doppler.hs+ build-depends: base==4.*, hsc3==0.11.*, hosc==0.11.*+ Executable hsc3-drummer- main-is: src/drummer.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/drummer.hs+ build-depends: base==4.*, hsc3==0.11.* +Executable hsc3-early-space-music-lp-side-two+ main-is: src/early-space-music-lp-side-two.hs+ build-depends: base==4.*,hosc==0.11.*,hsc3==0.11.*,hsc3-lang==0.11.*,random+ Executable hsc3-eggcrate- main-is: src/eggcrate.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/eggcrate.hs+ build-depends: base==4.*, hsc3==0.11.* +Executable hsc3-eggcrate-m+ main-is: src/eggcrate-m.hs+ build-depends: base==4.*, hsc3==0.11.*+ Executable hsc3-e-lamell- main-is: src/e-lamell.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/e-lamell.hs+ build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.*, hsc3-lang==0.11.* +Executable hsc3-e-lamell-p+ main-is: src/e-lamell-p.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*++Executable hsc3-ellipse-based-synthesis+ main-is: src/ellipse-based-synthesis.hs+ build-depends: base==4.*, hsc3==0.11.*+ Executable hsc3-fbl-fbf- main-is: src/fbl-fbf.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/fbl-fbf.hs+ build-depends: base==4.*, hsc3==0.11.* -Executable hsc3-feedr- main-is: src/feedr.lhs- build-depends: base==4.*, hsc3==0.9+Executable hsc3-fb-090531+ main-is: src/fb-090531.hs+ build-depends: base==4.*, hsc3==0.11.*, hosc==0.11.*, random +--Executable hsc3-feedr+-- main-is: src/feedr.hs+-- build-depends: base==4.*, hsc3==0.11.*+ Executable hsc3-f-lets- main-is: src/f-lets.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/f-lets.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-fm-iter- main-is: src/fm-iter.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/fm-iter.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-fm-kltr- main-is: src/fm-kltr.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/fm-kltr.hs+ build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.*, random +Executable hsc3-fm-kltr-p+ main-is: src/fm-kltr-p.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*+ Executable hsc3-forest-sounds- main-is: src/forest-sounds.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/forest-sounds.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-fwalk- main-is: src/fwalk.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/fwalk.hs+ build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.* Executable hsc3-half-life- main-is: src/half-life.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/half-life.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-hansm main-is: src/hansm.hs- build-depends: base==4.*, hosc==0.9, hsc3==0.9+ build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.* Executable hsc3-harmonic-swimming- main-is: src/harmonic-swimming.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/harmonic-swimming.hs+ build-depends: base==4.*, hsc3==0.11.* +Executable hsc3-harmonic-swimming-m+ main-is: src/harmonic-swimming-m.hs+ build-depends: base==4.*, hsc3==0.11.*+ Executable hsc3-harmonic-tumbling- main-is: src/harmonic-tumbling.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/harmonic-tumbling.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-h-chatter- main-is: src/h-chatter.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/h-chatter.hs+ build-depends: base==4.*, hsc3==0.11.* +Executable hsc3-hell-is-busy+ main-is: src/hell-is-busy.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*+ Executable hsc3-hh-808- main-is: src/hh-808.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/hh-808.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-implosion- main-is: src/implosion.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/implosion.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-insects- main-is: src/insects.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/insects.hs+ build-depends: base==4.*, hsc3==0.11.* +Executable hsc3-jl-1-Z+ main-is: src/jl-1-Z.hs+ build-depends: base==4.*, hsc3==0.11.*++Executable hsc3-kabelscahden+ main-is: src/kabelscahden.hs+ build-depends: base==4.*, hsc3==0.11.*+ Executable hsc3-karplus-strong- main-is: src/karplus-strong.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/karplus-strong.hs+ build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.* Executable hsc3-klink- main-is: src/klink.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/klink.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-k-ppr- main-is: src/k-ppr.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/k-ppr.hs+ build-depends: base==4.*, hsc3==0.11.* +Executable hsc3-k-ppr-m+ main-is: src/k-ppr-m.hs+ build-depends: base==4.*, hsc3==0.11.*+ Executable hsc3-lfo-modulation- main-is: src/lfo-modulation.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/lfo-modulation.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-lf-pulses- main-is: src/lf-pulses.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/lf-pulses.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-lg-timed- main-is: src/lg-timed.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/lg-timed.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.* Executable hsc3-lin-sosc- main-is: src/lin-sosc.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/lin-sosc.hs+ build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.*, hsc3-lang==0.11.* +Executable hsc3-lso-061101+ main-is: src/lso-061101.hs+ build-depends: base==4.*, directory, filepath, hls, hosc==0.11.*, hps, hsc3==0.11.*, hsc3-sf, random+ Executable hsc3-lucier main-is: src/lucier.hs- build-depends: base==4.*, hsc3==0.9+ build-depends: base==4.*, hsc3==0.11.* +Executable hsc3-microhelix+ main-is: src/microhelix.hs+ build-depends: base==4.*, hsc3==0.11.*++Executable hsc3-mridangam+ main-is: src/mridangam.hs+ build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.*, hsc3-lang==0.11.*+ Executable hsc3-modal-space- main-is: src/modal-space.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/modal-space.hs+ build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.* Executable hsc3-moto-rev- main-is: src/moto-rev.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/moto-rev.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-mouse-clatter- main-is: src/mouse-clatter.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/mouse-clatter-m.hs+ build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.* Executable hsc3-nharm- main-is: src/nharm.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/nharm.hs+ build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.*, random +Executable hsc3-nharm-p+ main-is: src/nharm-p.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*+ Executable hsc3-noise-burst-sweep- main-is: src/noise-burst-sweep.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/noise-burst-sweep.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.* +Executable hsc3-noise-modulated-sines+ main-is: src/noise-modulated-sines.hs+ build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.*, hsc3-lang==0.11.*+ Executable hsc3-non-real-time main-is: src/non-real-time.hs- build-depends: base==4.*, hosc==0.9, hsc3==0.9, process+ build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.*, process +Executable hsc3-nv-tw-1+ main-is: src/nv-tw-1.hs+ build-depends: base==4.*, hsc3==0.11.*++Executable hsc3-nv-tw-41+ main-is: src/nv-tw-41.hs+ build-depends: base==4.*, hsc3==0.11.*++Executable hsc3-nv-tw-54+ main-is: src/nv-tw-54.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*+ Executable hsc3-one-line- main-is: src/one-line.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/one-line.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-oscillator-cluster- main-is: src/oscillator-cluster.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/oscillator-cluster.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.* Executable hsc3-overlap-add- main-is: src/overlap-add.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/overlap-add.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.* Executable hsc3-pattern-buffer- main-is: src/pattern-buffer.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/pattern-buffer.hs+ build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.*, random +Executable hsc3-pebble-beach+ main-is: src/pebble-beach.hs+ build-depends: base==4.*, hsc3==0.11.*+ Executable hsc3-plucked-strings- main-is: src/plucked-strings.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/plucked-strings.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-police-state- main-is: src/police-state.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/police-state.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-pulsing-bottles- main-is: src/pulsing-bottles.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/pulsing-bottles.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.* +Executable hsc3-pulsing-bottles-m+ main-is: src/pulsing-bottles-m.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*++Executable hsc3-rails+ main-is: src/rails.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*++Executable hsc3-rain-thunder+ main-is: src/rain-thunder.hs+ build-depends: base==4.*, hsc3==0.11.*++Executable hsc3-random-panning-sines+ main-is: src/random-panning-sines.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*++Executable hsc3-random-panning-sines-m+ main-is: src/random-panning-sines-m.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*++Executable hsc3-random-pulsations+ main-is: src/random-pulsations.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*++Executable hsc3-random-sine-waves+ main-is: src/random-sine-waves.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*+ Executable hsc3-record-scratcher- main-is: src/record-scratcher.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/record-scratcher.hs+ build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.* Executable hsc3-red-frik- main-is: src/red-frik.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/red-frik.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-reset main-is: src/reset.hs- build-depends: base==4.*, hsc3==0.9+ build-depends: base==4.*, hsc3==0.11.* +Executable hsc3-resonant-dust+ main-is: src/resonant-dust.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*+ Executable hsc3-reverberated-sine-percussion- main-is: src/reverberated-sine-percussion.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/reverberated-sine-percussion.hs+ build-depends: base==4.*, hsc3==0.11.* -Executable hsc3-rm-octaver- main-is: src/rm-octaver.lhs- build-depends: base==4.*, hsc3==0.9+Executable hsc3-ring-modulated-klank+ main-is: src/ring-modulated-klank.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.* +--Executable hsc3-rm-octaver+-- main-is: src/rm-octaver.hs+-- build-depends: base==4.*, hsc3==0.11.*++Executable hsc3-rzblp+ main-is: src/rzblp.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-unsafe==0.11.*++Executable hsc3-sam-i-am+ main-is: src/sam-i-am.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*, MonadRandom+ Executable hsc3-sample-and-hold-liquidities- main-is: src/sample-and-hold-liquidities.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/sample-and-hold-liquidities.hs+ build-depends: base==4.*, hsc3==0.11.* +Executable hsc3-saucer-base+ main-is: src/saucer-base.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*++Executable hsc3-sawed-cymbals+ main-is: src/sawed-cymbals.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*+ Executable hsc3-s-chirp- main-is: src/s-chirp.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/s-chirp.hs+ build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.* Executable hsc3-scratchy- main-is: src/scratchy.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/scratchy.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-scratchy-m- main-is: src/scratchy-m.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/scratchy-m.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-scritto- main-is: src/scritto.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/scritto.hs+ build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.*, hsc3-lang==0.11.* +Executable hsc3-scritto-m+ main-is: src/scritto-m.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*++Executable hsc3-seqr+ main-is: src/seqr.hs+ build-depends: base==4.*, hsc3==0.11.*+ Executable hsc3-shepard-tones- main-is: src/shepard-tones.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/shepard-tones.hs+ build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.* Executable hsc3-shifting-pulses- main-is: src/shifting-pulses.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/shifting-pulses.hs+ build-depends: base==4.*, hsc3==0.11.* +Executable hsc3-sidereal-time+ main-is: src/sidereal-time.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*++Executable hsc3-slow-beating-harmonic-sines+ main-is: src/slow-beating-harmonic-sines.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*, MonadRandom++Executable hsc3-slow-beating-sines+ main-is: src/slow-beating-sines.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*, MonadRandom+ Executable hsc3-snare-909- main-is: src/snare-909.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/snare-909.hs+ build-depends: base==4.*, hsc3==0.11.* -Executable hsc3-sosc-lp- main-is: src/sosc-lp.lhs- build-depends: base==4.*, hsc3==0.9+--Executable hsc3-sosc-lp+-- main-is: src/sosc-lp.hs+-- build-depends: base==4.*, hsc3==0.11.* -Executable hsc3-spe- main-is: src/spe.lhs- build-depends: base==4.*, hsc3==0.9+Executable hsc3-spe-m+ main-is: src/spe-m.hs+ build-depends: base==4.*, hsc3==0.11.* +Executable hsc3-spe-p+ main-is: src/spe-p.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*+ Executable hsc3-sprinkler- main-is: src/sprinkler.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/sprinkler.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-sprinkler-m- main-is: src/sprinkler-m.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/sprinkler-m.hs+ build-depends: base==4.*, hsc3==0.11.* +Executable hsc3-string-wander-cluster+ main-is: src/string-wander-cluster.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*, random+ Executable hsc3-strummable-guitar- main-is: src/strummable-guitar.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/strummable-guitar.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-sweepy-noise- main-is: src/sweepy-noise.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/sweepy-noise.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-synthetic-piano- main-is: src/synthetic-piano.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/synthetic-piano-m.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.* Executable hsc3-tank- main-is: src/tank.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/tank.hs+ build-depends: base==4.*, hsc3==0.11.* +Executable hsc3-tank-m+ main-is: src/tank-m.hs+ build-depends: base==4.*, hsc3==0.11.*+ Executable hsc3-tgb- main-is: src/tgb.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/tgb.hs+ build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.*, random Executable hsc3-tgrn- main-is: src/tgrn.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/tgrn.hs+ build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.* Executable hsc3-tgr-rpr- main-is: src/tgr-rpr.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/tgr-rpr.hs+ build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.*, random Executable hsc3-theremin- main-is: src/theremin.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/theremin.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-three-cpsw- main-is: src/three-cpsw.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/three-cpsw.hs+ build-depends: base==4.*, hsc3==0.11.*, random Executable hsc3-thx- main-is: src/thx.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/thx.hs+ build-depends: base==4.*, hsc3==0.11.*, random Executable hsc3-tipnso- main-is: src/tipnso.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/tipnso.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-train- main-is: src/train.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/train.hs+ build-depends: base==4.*, hsc3==0.11.* -Executable hsc3-trkl- main-is: src/trkl.lhs- build-depends: base==4.*, hsc3==0.9+Executable hsc3-tremulate+ main-is: src/tremulate.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.* +Executable hsc3-tremulate-m+ main-is: src/tremulate-m.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*++--Executable hsc3-trkl+-- main-is: src/trkl.hs+-- build-depends: base==4.*, hsc3==0.11.*++Executable hsc3-trmlo+ main-is: src/trmlo.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-unsafe==0.11.*, hsc3-lang==0.11.*+ Executable hsc3-tr-out- main-is: src/tr-out.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/tr-out.hs+ build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.* Executable hsc3-tsort main-is: src/tsort.lhs- build-depends: base==4.*, hsc3==0.9+ build-depends: base==4.*, hsc3==0.11.* -Executable hsc3-vlc-distrtn- main-is: src/vlc-distrtn.lhs- build-depends: base==4.*, hsc3==0.9+Executable hsc3-uplink+ main-is: src/uplink.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.* +Executable hsc3-voscil+ main-is: src/voscil.hs+ build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.*, hsc3-unsafe==0.11.*, random++Executable hsc3-vla-addtn+ main-is: src/vla-addtn.hs+ build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.*, hsc3-lang==0.11.*++Executable hsc3-vla-addtn-sharc+ main-is: src/vla-addtn-sharc.hs+ build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.*, hsc3-lang==0.11.*, hsharc==0.11.*++--Executable hsc3-vlc-distrtn+-- main-is: src/vlc-distrtn.hs+-- build-depends: base==4.*, hosc==0.11.*, hsc3==0.11.*, random+ Executable hsc3-waveset main-is: src/waveset.hs- build-depends: array, base==4.*, hosc==0.9, hsc3==0.9, hsc3-sf==0.9, random+ build-depends: array, base==4.*, hosc==0.11.*, hsc3==0.11.*, hsc3-sf==0.11.*, random Executable hsc3-what-was-i-thinking- main-is: src/what-was-i-thinking.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/what-was-i-thinking.hs+ build-depends: base==4.*, hsc3==0.11.* +Executable hsc3-why-supercollider+ main-is: src/why-supercollider.hs+ build-depends: base==4.*, hsc3==0.11.*+ Executable hsc3-wial- main-is: src/wial.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/wial.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-wind-metals- main-is: src/wind-metals.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/wind-metals-m.hs+ build-depends: base==4.*, hsc3==0.11.*, hsc3-lang==0.11.* Executable hsc3-xy-interference- main-is: src/xy-interference.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/xy-interference.hs+ build-depends: base==4.*, hsc3==0.11.* Executable hsc3-xy-interference-m- main-is: src/xy-interference-m.lhs- build-depends: base==4.*, hsc3==0.9+ main-is: src/xy-interference-m.hs+ build-depends: base==4.*, hsc3==0.11.* Source-Repository head Type: darcs
@@ -0,0 +1,235 @@+-- 08091500Acid309 by_otophilia++import Data.List+import Data.Maybe+import Sound.OpenSoundControl {- hosc -}+import Sound.SC3.ID {- hsc3 -}+import System.Random {- random -}++-- * Instruments++mk_ec :: [UGen] -> [EnvCurve]+mk_ec = map EnvNum++mk_env :: [UGen] -> [UGen] -> [UGen] -> [UGen]+mk_env l t c = env l t (mk_ec c) 0 0++kick :: Synthdef+kick =+ let bus = control KR "outBus" 0+ env0 = let d = mk_env [0.5,1,0.5,0] [0.005,0.06,0.26] [-4,-2,-4]+ in envGen AR 1 1 0 1 RemoveSynth d+ env1 = let d = mk_env [110,59,29] [0.005,0.29] [-4,-5]+ in midiCPS (envGen AR 1 1 0 1 DoNothing d)+ s = let p = lfPulse AR env1 0 0.5 - 0.5+ q = p + mce2 (whiteNoise 'a' AR) (whiteNoise 'b' AR)+ r = lpf q (env1 * 1.5) * env0+ in clip2 (r + sinOsc AR env1 0.5 * env0 * 1.2) 1+ in synthdef "kick" (out bus s)++snare :: Synthdef+snare =+ let bus = control KR "outBus" 0+ amp = control KR "amp" 0.8+ env0 = let d = mk_env [0.5,1,0.5,0] [0.005,0.03,0.10] [-4,-2,-4]+ in envGen AR 1 1 0 1 DoNothing d+ env1 = let d = mk_env [110,60,49] [0.005,0.1] [-4,-5]+ in midiCPS (envGen AR 1 1 0 1 DoNothing d)+ env2 = let d = mk_env [1,0.4,0] [0.05,0.13] [-2,-2]+ in envGen AR 1 1 0 1 RemoveSynth d+ oscs = let p = lfPulse AR env1 0 0.5 - 0.5+ q = lfPulse AR (env1 * 1.6) 0 0.5 * 0.5 - 0.25+ r = lpf (p + q) (env1 * 1.2) * env0+ in r + sinOsc AR env1 0.8 * env0+ noise = let p = mce2 (whiteNoise 'a' AR) (whiteNoise 'b' AR) * 0.2+ q = hpf p 200 * 2+ r = bpf q 6900 0.6 * 3 + p+ in r * env2+ s = clip2 (oscs + noise) 1 * amp+ in synthdef "snare" (out bus s)++clap :: Synthdef+clap =+ let bus = control KR "outBus" 0+ amp = control KR "amp" 0.5+ env1 = let d = mk_env [0,1,0,1,0,1,0,1,0]+ [0.001,0.013,0,0.01,0,0.01,0,0.03]+ [0,-3,0,-3,0,-3,0,-4]+ in envGen AR 1 1 0 1 DoNothing d+ env2 = let d = mk_env [0,1,0] [0.02,0.3] [0,-4]+ in envGen AR 1 1 0 1 RemoveSynth d+ noise1 = let p = mce2 (whiteNoise 'a' AR) (whiteNoise 'a' AR) * env1+ q = hpf p 600+ in bpf q 2000 3+ noise2 = let p = mce2 (whiteNoise 'a' AR) (whiteNoise 'a' AR) * env2+ q = hpf p 1000+ in bpf q 1200 0.7 * 0.7+ s = let p = noise1 + noise2+ in softClip (p * 2) * amp+ in synthdef "clap" (out bus s)++hat :: Synthdef+hat =+ let bus = control KR "outBus" 0+ amp = control KR "amp" 0.3+ env1 = let d = mk_env [0,1.0,0] [0.001,0.2] [0,-12]+ in envGen AR 1 1 0 1 DoNothing d+ env2 = let d = mk_env [0,1.0,0.05,0] [0.002,0.05,0.03] [0,-4,-4]+ in envGen AR 1 1 0 1 RemoveSynth d+ (r0:r1:r2:_) = randomRs (-4.0,4.0) (mkStdGen 5)+ oscs1 = let n1 = 5+ f i = let f0 = midiCPS (linLin i 0 (n1-1) 42 75 + r0)+ f1 = midiCPS (linLin i 0 (n1-1) 78 80 + r1)+ in sinOsc AR f0 (sinOsc AR f1 0 * 12) * (1/n1)+ p = sum (map f [0..n1-1])+ in bHiPass p 1000 2 * env1+ noise = let n2 = 8+ p = whiteNoise 'a' AR+ f i = let t = 1 / midiCPS (linLin i 0 (n2-1) 40 50 + r2)+ in combN p 0.05 t 0.1+ q = sum (map f [0..n2-1]) * (1/n2) + p+ r = bpf q 6000 0.9 * 0.5 + q+ in bHiPass (bLowShelf r 3000 0.5 (-6)) 1000 1.5 * env2+ s = softClip (noise + oscs1) * amp+ in synthdef "hat" (out bus s)++acid :: Synthdef+acid =+ let bus = control KR "outBus" 0+ gate' = control KR "gate" 1+ pitch' = control KR "pitch" 50+ amp = control KR "amp" 0.3+ pitch'' = lag pitch' 0.12 * (1 - trig gate' 0.001) * gate'+ env1 = let d = env [0,1,0,0] [0.001,2,0.04] (mk_ec [0,-4,-4]) 2 0+ in envGen AR gate' amp 0 1 DoNothing d+ env2 = let d = envADSR 0.001 0.8 0 0.8 70 (EnvNum (-4)) 0+ in envGen AR gate' 1 0 1 DoNothing d+ s = let p = lfPulse AR (midiCPS pitch'') 0.0 0.51 * 2 - 1+ q = rlpf p (midiCPS (pitch'' + env2)) 0.3+ in q * env1+ in synthdef "acid" (out bus (mce2 s s))++fx :: Synthdef+fx =+ let bus = control KR "outBus" 0+ gate' = control KR "gate" 0+ i = in' 2 AR bus+ e = let d = env [0.02,0.3,0.02] [0.4,0.01] (mk_ec [3,-4]) 1 0+ in envGen KR (1 - trig gate' 0.01) 1 0 1 DoNothing d+ r = let MCE [i0,i1] = i+ in freeVerb2 (bpf i0 3500 1.5) (bpf i1 3500 1.5) 1 0.95 0.15 * e+ s = limiter (hpf ((i + r) * 1.2) 40) 1 0.02+ in synthdef "fx" (replaceOut bus s)++-- * Sequences++type D = [Int]++dr_seq :: Num a => [[[a]]]+dr_seq =+ let s = [[[1,0,0,0, 0,0,0,0, 1,0,0,1, 0,0,1,0]+ ,[0,0,0,0, 0,0,0,2, 0,2,1,0, 4,3,3,3]+ ,[0,0,0,0, 4,0,0,0, 0,0,0,0, 4,0,0,0]+ ,[1,2,4,0, 1,0,4,0, 1,2,4,2, 1,0,4,2]+ ,[1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]]+ ,[[0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]+ ,[0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]+ ,[0,0,0,0, 4,0,0,0, 0,0,0,0, 4,0,0,0]+ ,[1,2,4,0, 1,0,4,0, 1,2,4,2, 1,0,4,2]+ ,[1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]]+ ,[[1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]+ ,[0,0,0,0, 0,0,0,2, 0,0,0,0, 0,0,0,0]+ ,[0,0,0,0, 4,0,0,0, 0,0,0,0, 4,0,0,0]+ ,[1,2,4,0, 1,0,4,0, 1,2,4,2, 1,0,4,2]+ ,[1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]]+ ,[[1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]+ ,[0,0,0,0, 4,0,0,2, 0,0,0,0, 4,0,0,0]+ ,[0,0,0,0, 0,0,0,0, 0,0,0,0, 4,0,0,0]+ ,[1,2,4,0, 1,0,4,0, 1,2,4,2, 1,0,4,2]+ ,[1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]]]+ in map transpose s++dr_msg :: Int -> (Int,Int) -> Maybe OSC+dr_msg fx_id (i,x) =+ let m nm pr = Just (s_new nm (-1) AddToHead 1 pr)+ x' = fromIntegral x+ sq n = n * n+ in case i of+ 0 -> if x > 0 then m "kick" [] else Nothing+ 1 -> if x > 0 then m "snare" [("amp",sq (x'/4) * 0.7)] else Nothing+ 2 -> if x > 0 then m "clap" [("amp",sq (x'/4) * 0.5)] else Nothing+ 3 -> if x > 0 then m "hat" [("amp",sq (x'/4) * 0.32)] else Nothing+ 4 -> Just (n_set fx_id [("gate",x')])+ _ -> error "dr_seq_msg"++dr_seq_msg :: Int -> Double -> D -> OSC+dr_seq_msg fx_id t =+ Bundle (UTCr t) .+ mapMaybe (dr_msg fx_id) .+ zip [0..]++b_seq :: Num a => [[a]]+b_seq =+ let s = [[1,1,1,1, 1,1,1,1, 0,1,0,1, 1,1,1,0]+ ,[1,1,0,2, 1,1,0,0, 2,0,2,0, 1,2,0,4]+ ,map (+ 38) [-24,-12,0,-12, 0,-12,10,12, 0,7,-7,0, -11,1,13,15]]+ in transpose s++type B = (Int,Double,Double)++b_form :: [Int] -> B+b_form xs =+ let i = fromIntegral+ in case xs of+ [b1,b2,b3] -> (b1,i b2,i b3)+ _ -> error "b_form"++b_seq_msg :: Int -> Double -> Double -> B -> [OSC]+b_seq_msg acid_id dt t (b0,b1,b2) =+ let on = let p = n_set acid_id [("pitch",b2)]+ m = if b0 == 1+ then [p,n_set acid_id [("gate",1)]]+ else [p]+ in Bundle (UTCr t) m+ off = let end_t = t + (dt * b1 * 0.25 * 0.99)+ in Bundle (UTCr end_t) [n_set acid_id [("gate",0)]]+ in if b1 > 0 then [on,off] else [on]++-- * Runtime++ao_init :: Transport t => t -> IO (Int,Int)+ao_init fd = do+ let i = [kick,snare,clap,hat,acid,fx]+ _ <- async fd (Bundle immediately (map d_recv i))+ let acid_id = 10+ fx_id = 11+ send fd (s_new "acid" acid_id AddToHead 1 [("gate",0)])+ send fd (s_new "fx" fx_id AddToTail 1 [])+ return (acid_id,fx_id)++dt_seq :: Double -> [Double]+dt_seq bpm =+ let shf = 0.16+ n = 60 / bpm+ dt i = if i `mod` 2 == 0 then 0.25 * (1 + shf) else 0.25 * (1 - shf)+ in map ((* n) . dt) ([0..]::[Int])++ao_run_seq :: Transport t => t -> (Int,Int) -> [D] -> [B] -> IO ()+ao_run_seq fd (acid_id,fx_id) d_sq b_sq = do+ init_t <- utcr+ let dt_seq' = dt_seq 130+ t_seq = scanl1 (+) (init_t : dt_seq')+ act (t,dt,d,b) =+ do send fd (dr_seq_msg fx_id t d)+ mapM_ (send fd) (b_seq_msg acid_id dt t b)+ pauseThreadUntil t+ mapM_ act (zip4 t_seq dt_seq' d_sq b_sq)++main :: IO ()+main =+ let act fd = do+ let d_sq = cycle (concat dr_seq)+ b_sq = map b_form (cycle b_seq)+ ids <- ao_init fd+ ao_run_seq fd ids d_sq b_sq+ in withSC3 act
@@ -0,0 +1,50 @@+-- adso (rd)++import Sound.OpenSoundControl+import Sound.SC3+import System.Random++getb :: Real a => UGen -> a -> UGen+getb b j =+ let k = mce [0 .. constant j - 1]+ in bufRdN 1 KR b k NoLoop++adso :: Real a => a -> UGen+adso n =+ let m = sinOsc KR (getb 3 n) 0+ f = midiCPS (getb 0 n) * (m * getb 4 n + 1)+ l = getb 2 n+ g = getb 1 n+ in mix (pan2 (sinOsc AR f 0) l g)++rrand :: Random a => a -> a -> IO a+rrand l r = getStdRandom (randomR (l, r))++rrand_l :: Random a => Int -> a -> a -> IO [a]+rrand_l j l r = sequence (replicate j (rrand l r))++pattern :: Transport t => t -> Int -> Double -> IO ()+pattern fd n t = do+ z <- do l <- rrand 22 48+ r <- rrand 54 122+ sequence (replicate n (rrand l r))+ send fd (b_setn1 0 0 z)+ let rn i l r = do d <- rrand_l n l r+ send fd (b_setn1 i 0 d)+ rn 1 0 0.1+ rn 2 (-1) 1+ rn 3 2 12+ rn 4 0.001 0.0075+ rn 5 1 24+ rn 6 0.05 2.4+ pauseThread t++run :: Transport t => Int -> t -> IO ()+run n fd = do+ mapM_ (\i -> async fd (b_alloc i n 1)) [0..6]+ _ <- play fd (out 0 (adso n))+ mapM_ (pattern fd n) =<< rrand_l 32 0.025 0.75+ reset fd++main :: IO ()+main = withSC3 (run 24)
@@ -1,34 +0,0 @@-adso (rd)--> import Sound.OpenSoundControl-> import Sound.SC3-> import System.Random--> main =-> let { rrand l r = getStdRandom (randomR (l, r))-> ; rrand_l j l r = sequence (replicate j (rrand l r))-> ; n = 24-> ; adso = let { get b j = let k = mce [0 .. constant j - 1]-> in bufRdN 1 kr b k NoLoop-> ; m = sinOsc kr (get 3 n) 0-> ; f = midiCPS (get 0 n) * (m * get 4 n + 1)-> ; l = get 2 n-> ; g = get 1 n }-> in out 0 (mix (pan2 (sinOsc ar f 0) l g))-> ; pattern fd t = do { z <- do { l <- rrand 22 48-> ; r <- rrand 54 122-> ; sequence (replicate n (rrand l r)) }-> ; send fd (b_setn1 0 0 z)-> ; let rn i l r = do { d <- rrand_l n l r-> ; send fd (b_setn1 i 0 d) }-> in do { rn 1 0 0.1-> ; rn 2 (-1) 1-> ; rn 3 2 12-> ; rn 4 0.001 0.0075-> ; rn 5 1 24-> ; rn 6 0.05 2.4 }-> ; pauseThread t } }-> in withSC3 (\fd -> do { mapM_ (\i -> async fd (b_alloc i n 1)) [0..6]-> ; play fd adso-> ; mapM_ (pattern fd) =<< rrand_l 32 0.025 0.75-> ; reset fd })
@@ -0,0 +1,366 @@+-- after goeyvaerts, nick collins, 2007++import Control.Concurrent.MVar+import Data.List+import Data.List.Split+import qualified Data.Map as M {- containers -}+import Sound.OpenSoundControl {- hosc -}+import Sound.SC3.ID {- hsc3 -}+import qualified Sound.SC3.Lang.Collection as C {- hsc3-lang -}+import qualified Sound.SC3.Lang.Random.Gen as R+import System.Random {- random -}++-- * SCHEMA++-- | infinite monadic recursion+mrec :: Monad m => (a -> m a) -> a -> m a+mrec f i = f i >>= mrec f++-- | monadic recursion with counter+mrec_n :: Monad m => Int -> (a -> m a) -> a -> m a+mrec_n n f i =+ if n == 0+ then return i+ else f i >>= mrec_n (n - 1) f++-- | recursion function useful for random processes (g = random state)+r_chain :: (g -> (a,g)) -> g -> [a]+r_chain f g =+ let (r,g') = f g+ in r : r_chain f g'++r_chain_fb :: ((a,g) -> (a,g)) -> a -> g -> [a]+r_chain_fb f r_ g_ =+ let go (r,g) = let (r',g') = f (r,g) in r' : go (r',g')+ in r_ : go (r_,g_)++-- | an action that steps through a stored sequence+l_step :: MVar [a] -> IO a+l_step r =+ let f [] = undefined+ f (x:xs) = (xs,x)+ in modifyMVar r (return . f)++-- | generate a stepper action from a list+l_stepper :: [a] -> IO (IO a)+l_stepper l = do+ r <- newMVar (cycle l)+ return (l_step r)++l_stepper_scramble :: [a] -> IO (IO a)+l_stepper_scramble l = scrambleIO l >>= l_stepper++{-+a <- l_stepper [1..5]+sequence (replicate 10 a)+-}++type SEL a b g = (a,g) -> (b,g)++-- | a recursion schema where s chooses between a and b at each step+sel_seq :: RandomGen g => SEL a Bool g->SEL a a g->SEL a a g->a->g->[a]+sel_seq s a b j =+ let step (i,g) =+ let (r,g') = s (i,g)+ in if r then a (i,g') else b (i,g')+ in r_chain_fb step j++-- | variant where s is a (coin' c) and a is (rrand'c r)+sel_seq_c_rng :: (RandomGen g,Random a) => R -> (a,a) -> a -> g -> [a]+sel_seq_c_rng c r i g =+ let s = coin c . snd+ a = rrandc r . snd+ in sel_seq s a id i g++-- | monadic if+ifM :: Monad m => m Bool -> m b -> m b -> m b+ifM i j k = do+ i' <- i+ if i' then j else k++-- | coin at R+coin :: (RandomGen g) => R -> g -> (Bool,g)+coin = R.coin++-- | 'coin' at R+coinIO :: R -> IO Bool+coinIO = getStdRandom . coin++-- | 'R.wchoose' at 'R'+wchoose :: RandomGen g => [a] -> [R] -> g -> (a,g)+wchoose = R.wchoose++-- | wchoose at R+wchooseIO :: [a] -> [R] -> IO a+wchooseIO l= getStdRandom . wchoose l++-- | rrand with duple range+rrandc :: (RandomGen g,Random n) => (n,n) -> g -> (n,g)+rrandc = uncurry R.rrand++scrambleIO :: [t] -> IO [t]+scrambleIO = getStdRandom . R.scramble++-- | set precision+set_prec :: Int -> Double -> Double+set_prec n x =+ let n' = 10 ^ n+ x' = round (x * n') :: Integer+ in fromIntegral x' / n'++-- * AFTER GOEYVAERTS++nd :: UGen+nd =+ let freq = control KR "freq" 440+ amp = control KR "amp" 0.1+ sustain = control KR "sustain" 0.1+ pan = control KR "pan" 0+ s = let p = mix (lfPar AR (freq * mce [0.999,1.001]) 0 * amp)+ l = [10000,2000,4000,1000]+ t = [0.005,rand 'a' 0.009 0.05,0.005]+ d = env l t (replicate 3 EnvLin) 0 0+ in lpf (distort p) (envGen KR 1 1 0 1 DoNothing d)+ e = let l = [0,1,0.4,0.7,0]+ t = [rand 'b' 0.001 0.005,0.005,0.005,sustain]+ d = env l t (replicate 4 EnvLin) 0 0+ in envGen KR 1 1 0 1 RemoveSynth d+ in out 0 (pan2 (s * e) pan 1)++fx :: UGen+fx = replaceOut 0 (freeVerb (in' 2 AR 0) 0.33 1.5 0.5)++ag_init :: Transport t => t -> IO ()+ag_init fd = do+ _ <- async fd (Bundle immediately [d_recv (synthdef "nd" nd)+ ,d_recv (synthdef "fx" fx)])+ send fd (s_new "fx" (-1) AddToHead 1 [])+ return ()++nd_msg :: Double -> Double -> Double -> Double -> OSC+nd_msg f a s p =+ let nd_arg = [("freq",f),("amp",a),("sustain",s),("pan",p)]+ in s_new "nd" (-1) AddToHead 1 nd_arg++type R = Double+type P = M.Map Int R+type S = M.Map Int Int+data AG = AG {note_row :: [Int]+ ,amp_row :: IO R+ ,sus_row :: IO R+ ,pan_row :: IO R+ ,ioi_row :: IO R+ ,ioi_mult_seq :: IO R+ ,base_note_seq :: IO Int+ ,octaves_seq :: IO Int+ ,selections :: S+ ,probabilities :: P}++selections' :: S+selections' = M.fromList (map (\i -> (i,0)) [0..11])++selections_incr :: Int -> S -> S+selections_incr = M.adjust (+ 1)++selections_step' :: RandomGen g => S -> g -> (S,g)+selections_step' s g =+ let (r,g') = coin 0.03 g+ in (if r then selections' else s,g')++selections_step :: S -> IO S+selections_step s = ifM (coinIO 0.03) (return selections') (return s)++note_set :: [Int]+note_set = [0 .. 11]++note_step' :: RandomGen g => [Int] -> P -> g -> (Int,g)+note_step' n p = R.wchoose n (C.normalizeSum (M.elems p))++note_step :: [Int] -> P -> IO Int+note_step n = getStdRandom . note_step' n++chord_n' :: RandomGen g => g -> [Int]+chord_n' = r_chain (wchoose [1,2,3,4,5] [0.5,0.35,0.1,0.025,0.025])++chord_n :: IO [Int]+chord_n = fmap chord_n' newStdGen++chord' :: RandomGen g => P -> S -> Int -> [Int] -> g -> (([P],[S],[Int]),g)+chord' p_ s_ =+ let go (pl,sl,zl) p s n nr g =+ if n == 0+ then ((reverse pl,reverse sl,reverse zl),g)+ else let (z,g') = note_step' nr p g+ p' = probabilities_decr z p+ s' = selections_incr z s+ in go (p':pl,s':sl,z:zl) p' s' (n - 1) nr g'+ in go ([p_],[s_],[]) p_ s_++chord :: P -> S -> Int -> [Int] -> IO ([P],[S],[Int])+chord p s n = getStdRandom . chord' p s n++amp_set :: [R]+amp_set = map (dbAmp . negate) [1,3 .. 36]++sus_set :: [R]+sus_set = map ((/ exp 1) . exp . (/ 37)) [1 .. 37]++pan_set :: [R]+pan_set = map ((+ (-1)) . (* 2) . (/ 31)) [1 .. 31]++ioi_set :: [R]+ioi_set = map ((12 **) . (/ 12)) [1..12]++ioi_mult_set :: [R]+ioi_mult_set = [0.01,0.025,0.05,0.1,0.2]++ioi_mult_seq' :: RandomGen g => R -> g -> [R]+ioi_mult_seq' i g =+ let s = uncurry coin+ a = R.choose ioi_mult_set . snd+ in sel_seq s a id i g++--ioi_mult_seq_ = getStdRandom . ioi_mult_seq++octaves_rng :: (Int,Int)+octaves_rng = (2,5)++octaves_seq' :: RandomGen g => g -> [Int]+octaves_seq' = sel_seq_c_rng 0.02 octaves_rng 4++base_note_rng :: (Int,Int)+base_note_rng = (35,47)++base_note_seq' :: RandomGen g => g -> [Int]+base_note_seq' = sel_seq_c_rng 0.01 base_note_rng 36++probabilities' :: P+probabilities' = M.fromList (map (\x -> (x,1)) [0..11])++probabilities_incr :: P -> P+probabilities_incr = M.map (\x -> if x < 0.9999 then x + 0.1 else x)++probabilities_decr :: Int -> P -> P+probabilities_decr z = M.insert z 0.1++ag :: IO AG+ag = do+ a <- l_stepper_scramble amp_set+ s <- l_stepper_scramble sus_set+ p <- l_stepper_scramble pan_set+ i <- l_stepper_scramble ioi_set+ g <- newStdGen+ m <- l_stepper (ioi_mult_seq' 0.1 g)+ o <- l_stepper (octaves_seq' g)+ b <- l_stepper (base_note_seq' g)+ n <- scrambleIO note_set+ return AG {note_row = n+ ,amp_row = a+ ,sus_row = s+ ,pan_row = p+ ,ioi_row = i+ ,ioi_mult_seq = m+ ,base_note_seq = b+ ,octaves_seq = o+ ,selections = selections'+ ,probabilities = probabilities'}++ag_note :: S -> Int -> Int -> Int -> Int+ag_note s' z o b = ((s' M.! z) `mod` o) * 12 + b + z++-- o,b,a,su,pn,i,im are lists+-- p,s,z are nested lists+ag_psz' :: RandomGen g => [Int] -> [Int] -> P -> S -> g -> [([P],[S],[Int])]+ag_psz' nr cn p s g =+ let (n:ns) = cn+ ((p',s',c),g') = chord' p s n nr g+ p'' = probabilities_incr (last p')+ (s'',g'') = selections_step' (last s') g'+ in (p',s',c) : ag_psz' nr ns p'' s'' g''++ag_psz :: [Int] -> [Int] -> P -> S -> IO [([P], [S], [Int])]+ag_psz nr cn p s = do+ g <- newStdGen+ return (ag_psz' nr cn p s g)++{-+let g = mkStdGen 0+let cn = chord_n' g+let t3_3 (_,_,x) = x+take 12$ map t3_3$ ag_psz note_set cn probabilities' selections' g+-}++scramble_c :: [t] -> IO [t]+scramble_c x = fmap cycle (scrambleIO x)++type Score = ([([Int],[Int],[R],[R],[R],([P],[S],[Int]))],[R],[R])++ag_score :: IO Score+ag_score = do+ a <- scramble_c amp_set+ su <- scramble_c sus_set+ pn <- scramble_c pan_set+ i <- scramble_c ioi_set+ g <- newStdGen+ let m = ioi_mult_seq' 0.1 g+ o = octaves_seq' g+ b = base_note_seq' g+ nr <- scrambleIO note_set+ cn <- chord_n+ let gr = splitPlaces (map (+ 1) cn)+ psz <- ag_psz nr cn probabilities' selections'+ return (zip6 (gr o) (gr b) (gr a) (gr su) (gr pn) psz,i,m)++---ag_run_score (a,s,p,o,b,psz,i,m) =++ag_run_note :: Transport t => t->Int->Int->R->R->R->(P,S,Int)->IO()+ag_run_note fd o b a su pn (p,s,z) = do+ let mn = ag_note s z o b+ print ('o',o,'b',b)+ print ('p',map (set_prec 2) (M.elems p))+ print ('s',M.elems s)+ send fd (nd_msg (midiCPS (fromIntegral mn)) a su pn)++ag_step :: Transport t => t -> AG -> IO AG+ag_step fd r = do+ let act (p,s,z) = do+ o <- octaves_seq r+ b <- base_note_seq r+ a <- amp_row r+ su <- sus_row r+ pn <- pan_row r+ ag_run_note fd o b a su pn (p,s,z)+ (p',s') <- do let p = probabilities_incr (probabilities r)+ s <- selections_step (selections r)+ n <- wchooseIO [1,2,3,4,5] [0.5,0.35,0.1,0.025,0.025]+ (p',s',c) <- chord p s n (note_row r)+ mapM_ act (zip3 p' s' c)+ return (last p',last s')+ dt <- ioi_row r+ i <- ioi_mult_seq r+ pauseThread (dt * i)+ return (r {probabilities = p',selections = s'})++ag_run :: Transport t => t -> Maybe Int -> IO ()+ag_run fd i = do+ r <- ag+ ag_init fd+ _ <- case i of+ Just n -> mrec_n n (ag_step fd) r+ Nothing -> mrec (ag_step fd) r+ return ()++main :: IO ()+main = do+ i <- randomRIO (256,512)+ withSC3 (\fd -> ag_run fd (Just i) >> pauseThread 9 >> reset fd)++{-+withSC3 ag_init+withSC3 (\fd -> send fd (nd_msg 660 0.45 0.65 0))+r <- ag+withSC3 (\fd -> ag_step fd r)+withSC3 (\fd -> ag_run fd (Just 32))+withSC3 (\fd -> ag_run fd Nothing)+withSC3 reset+-}
@@ -0,0 +1,33 @@+-- aleatoric quartet (jmcc)++import Sound.SC3.Monadic++aleatoric_quartet :: (Functor m,UId m) => m UGen+aleatoric_quartet = do+ let base_mn = control KR "note" 66+ amp = control KR "ampl" 0.07+ density = mouseX' KR 0.01 1 Linear 0.1+ dmul = recip density * 0.5 * amp+ dadd = amp - dmul+ (>=>) f g x = f x >>= g+ chain n f = foldl (>=>) return (replicate n f)+ rapf i = do r <- clone 2 (rand 0 0.05)+ return (allpassN i 0.05 r 1)+ mk_f = do i0 <- iRand 0 2+ let r0 = select i0 (mce [1, 0.5, 0.25])+ r1 <- rand (-30) 30+ n0 <- lfNoise0 KR r0+ let m = n0 * 7 + base_mn + r1+ m' = lag (roundTo m 1) 0.2+ return (midiCPS m')+ mk_s = do f <- fmap recip mk_f+ r <- rand (-1) 1+ x <- do n0 <- pinkNoise AR+ n1 <- lfNoise1 KR 8+ return (n0 * max 0 (n1 * dmul + dadd))+ return (pan2 (combL x 0.02 f 3) r 1)+ g <- chain 5 rapf =<< fmap sum (sequence (replicate 4 mk_s))+ return (leakDC g 0.995)++main :: IO ()+main = audition . out 0 =<< aleatoric_quartet
@@ -1,52 +0,0 @@-aleatoric quartet (jmcc)--> import Sound.SC3.Monadic--> main = -> let { base_mn = control KR "note" 66-> ; amp = control KR "ampl" 0.07-> ; density = mouseX kr 0.01 1 Linear 0.1-> ; dmul = recip density * 0.5 * amp-> ; dadd = amp - dmul-> ; (>=>) f g = \x -> f x >>= g-> ; chain n f = foldl (>=>) return (replicate n f)-> ; rapf i = do { r <- clone 2 (rand 0 0.05)-> ; return (allpassN i 0.05 r 1) }-> ; mk_f = do { i0 <- iRand 0 2-> ; let r0 = select i0 (mce [1, 0.5, 0.25])-> in do { r1 <- rand (-30) 30-> ; n0 <- lfNoise0 kr r0-> ; let { m = n0 * 7 + base_mn + r1-> ; m' = lag (roundE m 1) 0.2 }-> in return (midiCPS m') } }-> ; mk_s = do { f <- fmap recip mk_f-> ; r <- rand (-1) 1-> ; x <- do { n0 <- pinkNoise ar-> ; n1 <- lfNoise1 kr 8-> ; return (n0 * max 0 (n1 * dmul + dadd)) }-> ; return (pan2 (combL x 0.02 f 3) r 1) } }-> in do { g <- chain 5 rapf =<< fmap sum (sequence (replicate 4 mk_s))-> ; audition (out 0 (leakDC g 0.995)) }--{ var amp = 0.07-; var density = MouseX.kr(0.01, 1, 'linear', 0.1)-; var dmul = density.reciprocal * 0.5 * amp-; var dadd = amp - dmul-; var rapf = { arg i- ; var r = Array.fill(2, { Rand(0, 0.05) })- ; AllpassN.ar(i, 0.05, r, 1) }-; var mk_f = { var i0 = IRand.new(0, 2)- ; var r0 = Select.kr(i0, [1, 0.5, 0.25])- ; var r1 = Rand.new(-30, 30)- ; var n0 = LFNoise0.kr(r0)- ; var m = Lag.kr((n0 * 7 + 66 + r1).round(1), 0.2)- ; m.midicps }-; var mk_s = { var f = mk_f.value.reciprocal- ; var r = Rand.new(-1, 1)- ; var n0 = PinkNoise.ar()- ; var n1 = LFNoise1.kr(8)- ; var x = n0 * 0.max(n1 * dmul + dadd)- ; Pan2.ar(CombL.ar(x, 0.02, f, 3), r, 1) }-; var g = Mix.fill(4, mk_s)-; 5.do({ g = rapf.value(g) })-; Out.ar(0, LeakDC.ar(g, 0.995)) }.play
@@ -0,0 +1,22 @@+{ var amp = 0.07+; var density = MouseX.kr(0.01, 1, 'linear', 0.1)+; var dmul = density.reciprocal * 0.5 * amp+; var dadd = amp - dmul+; var rapf = { arg i+ ; var r = Array.fill(2, { Rand(0, 0.05) })+ ; AllpassN.ar(i, 0.05, r, 1) }+; var mk_f = { var i0 = IRand.new(0, 2)+ ; var r0 = Select.kr(i0, [1, 0.5, 0.25])+ ; var r1 = Rand.new(-30, 30)+ ; var n0 = LFNoise0.kr(r0)+ ; var m = Lag.kr((n0 * 7 + 66 + r1).round(1), 0.2)+ ; m.midicps }+; var mk_s = { var f = mk_f.value.reciprocal+ ; var r = Rand.new(-1, 1)+ ; var n0 = PinkNoise.ar()+ ; var n1 = LFNoise1.kr(8)+ ; var x = n0 * 0.max(n1 * dmul + dadd)+ ; Pan2.ar(CombL.ar(x, 0.02, f, 3), r, 1) }+; var g = Mix.fill(4, mk_s)+; 5.do({ g = rapf.value(g) })+; Out.ar(0, LeakDC.ar(g, 0.995)) }.play
@@ -0,0 +1,13 @@+-- alien froggies (jmcc)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.OverlapTexture++alien_froggies :: UGen -> (UGen,UGen)+alien_froggies r =+ let r' = fold (r * exp (linRand 'a' (-0.2) 0.2 0)) 1 30+ o = formant AR r' (expRand 'b' 200 3000) (rand 'c' 0 9 * r' + r')+ in (o * 0.05,r')++main :: IO ()+main = overlapTextureS (0.5,0.25,5,maxBound) alien_froggies 11
@@ -0,0 +1,5 @@+var rate = 11.0;+play({OverlapTexture.ar({+rate = (rate * (0.2.bilinrand.exp)).fold(1.0,30.0);+var o = Formant.ar(rate,exprand(200,3000.0),9.0.rand * rate + rate,0.05)},+0.5,0.25,5,1)})
@@ -0,0 +1,16 @@+-- alien meadow (jmcc)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.OverlapTexture++alien_meadow :: UGen+alien_meadow =+ let a = rand 'a' 0 20+ b = rand 'b' 0 5000+ c = rand 'c' 0 20+ p = rand 'd' (-1) 1+ f = sinOsc AR a 0 * b * 0.1 + b+ in pan2 (sinOsc AR f 0) p (sinOsc AR c 0 * 0.05 + 0.05)++main :: IO ()+main = overlapTextureU (6,2,6,maxBound) alien_meadow
@@ -0,0 +1,97 @@+-- ambient1 (http://sccode.org/1-1y)+-- some edits......++import Control.Applicative+import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Control.Event {- hsc3-lang -}+import Sound.SC3.Lang.Control.Instrument+import Sound.SC3.Lang.Pattern.ID++chain :: a -> [a -> a] -> a+chain n ff =+ case ff of+ [] -> n+ f:ff' -> chain (f n) ff'++chain0 :: Num a => [a -> a] -> a+chain0 = chain 0++pulse_u :: UGen+pulse_u =+ let k = control KR+ f = k "freq" 440+ a = k "amp" 0.1+ aT = k "attackTime" 0.01+ dT = k "delayTime" 10+ e = envGen KR 1 1 0 1 RemoveSynth (envPerc aT 10)+ z = sinOsc AR f 0 * 0.7+ o = let l = sinOsc KR 3 0+ in pan2 (toggleFF (tDelay z dT) * sinOsc AR f 0) l 0.6+ s = clip2 ((pan2 z (sinOsc KR 5 pi) 0.7 + o) * e) 1+ in out 0 (freeVerb s 0.7 1.0 0.4 * a)++drone_u :: UGen+drone_u =+ let k = control KR+ f = k "freq" 440+ a = k "amp" 0.1+ ph = k "phase" 0+ e = envGen KR 1 1 0 1 RemoveSynth (envSine 10 1)+ s = chain0 [\_ -> lfPulse AR f 0 0.15+ ,\o -> rlpf o (sinOsc KR 0.3 0 * 200 + 1500) 0.1+ ,\o -> freeVerb o 0.5 0.5 0.5 * e+ ,\o -> pan2 o (sinOsc KR (1/10) ph) a]+ in out 0 s++bass_u :: UGen+bass_u =+ let k = control KR+ f = k "freq" 96+ a = k "amp" 0.1+ e = envGen KR 1 1 0 1 RemoveSynth (envPerc' 0.5 1 1 (EnvLin,EnvLin))+ s = sinOsc AR f 0 * a * e+ in out 0 (pan2 s 0 1)++{-+audition pulse_u+audition drone_u+audition bass_u+-}++pulse_i :: Instrument+pulse_i = InstrumentDef (synthdef "pulse" pulse_u)++drone_i :: Instrument+drone_i = InstrumentDef (synthdef "drone" drone_u)++bass_i :: Instrument+bass_i = InstrumentDef (synthdef "bass" bass_u)++dur_p :: Fractional a => P a+dur_p = prand 'β' [3,0.7,1,0.5] inf++pulse_p :: P Event+pulse_p = pbind [("dur",dur_p * 10)+ ,("midinote",prand 'α' [59,72,76,79,81,88,90] inf)+ ,("amp",pwhite 'β' 0.2 0.27 inf)+ ,("attackTime",pwhite 'γ' 0 7 inf)+ ,("delayTime",0.02)]++drone_p :: P Event+drone_p = pbind [("dur",dur_p)+ ,("midinote",prand 'α' [31,40,45,64,68,69] inf)+ ,("amp",pwhite 'β' 0.03 0.08 inf * 0.7)+ ,("phase",pwrand 'γ' [0,4.7123] [0.5,0.5] inf)]++bass_p :: P Event+bass_p = pbind [("dur",dur_p)+ ,("midinote",31)+ ,("amp",0.3)]++ambient1_p :: P Event+ambient1_p = ppar [pinstr (pure pulse_i) pulse_p+ ,pinstr (pure drone_i) drone_p+ ,pinstr (pure bass_i) bass_p]++main :: IO ()+main = audition ambient1_p
@@ -0,0 +1,13 @@+-- analog bubbles (jmcc)++import Sound.SC3++analog_bubbles :: UGen+analog_bubbles =+ let o = lfSaw KR (mce2 8 7.23) 0 * 3 + 80+ f = lfSaw KR 0.4 0 * 24 + o+ s = sinOsc AR (midiCPS f) 0 * 0.04+ in combN s 0.2 0.2 4++main :: IO ()+main = audition (out 0 analog_bubbles)
@@ -1,14 +0,0 @@-analog bubbles (jmcc)--> import Sound.SC3--> main =-> let { o = lfSaw kr (mce2 8 7.23) 0 * 3 + 80-> ; f = lfSaw kr 0.4 0 * 24 + o-> ; s = sinOsc ar (midiCPS f) 0 * 0.04 }-> in audition (out 0 (combN s 0.2 0.2 4))--{ var o = LFSaw.kr([8, 7.23], 0, 3, 80)-; var f = LFSaw.kr(0.4, 0, 24, o)-; var s = SinOsc.ar(f.midicps, 0, 0.04)-; Out.ar(0, CombN.ar(s, 0.2, 0.2, 4, 0.1)) }.play
@@ -0,0 +1,4 @@+{var o = LFSaw.kr([87.23]0380)+;var f = LFSaw.kr(0.4024o)+;var s = SinOsc.ar(f.midicps00.04)+;Out.ar(0CombN.ar(s0.20.240.1))}.play
@@ -0,0 +1,84 @@+-- arpeggio (nc)+-- http://www.listarc.bham.ac.uk/lists/sc-users/msg07473.html++import Control.Monad+import Sound.SC3+import Sound.SC3.Lang.Control.Event+import Sound.SC3.Lang.Pattern.ID++analogarpeggio :: Synthdef+analogarpeggio =+ let k = control KR+ o = k "out" 0+ p = k "pan" 0+ g = k "gate" 1+ f = k "freq" 440+ a = k "amp" 0.1+ c = k "cutoffmult" 3+ r = k "res" 0.1+ e = let d = envADSR 0.01 0.3 0.5 1 1 (EnvNum (-4)) 0+ in envGen AR g 1 0 1 RemoveSynth d+ i = mix (saw AR (f * mce [0.497,0.999,1.0,2.03]))+ s = bLowPass i (c * f) r * 0.25+ in synthdef "analogarpeggio" (out o (pan2 (e * s * a) p 0.25))++{-+audition (analogarpeggio+ ,(pbind [("dur",pwrand 'a' [0.1,0.25] [2/3,1/2] inf)+ ,("freq",pwhite 'b' 440.0 1600.0 inf)+ ,("pan",pwhite 'c' (-1.0) 1.0 inf)+ ,("amp",pwhite 'd' 0.0 0.5 inf)+ ,("cutoffmult",pwhite 'e' 4.0 5.0 inf)+ ,("res",pwhite 'f' 0.0 1.0 inf)]))+-}++pinterp :: (Fractional a) => Int -> a -> a -> P a+pinterp n s e = pseries s ((e - s) / fromIntegral n) n++pinterp' :: (Fractional a) => P Int -> P a -> P a -> P a+pinterp' n s e = join (pzipWith3 pinterp n s e)++arpeggio :: [(Key,P Double)]+arpeggio =+ [("dur"+ ,let d = pwrand 'n' [0.25,0.125,0.0625] [0.4875,0.4875,0.025] inf+ in pstutter 32 d)+ ,("cutoffmult"+ ,let n = prand 'a' [8,16,24,32] inf+ s = pwhite 'b' 2.5 5.0 inf+ e = pwhite 'c' 1.5 7.0 inf+ in pinterp' n s e)+ ,("res"+ ,let n = prand 'd' [8,16,24,32] inf+ s = pexprand 'e' 0.02 0.5 inf+ e = pexprand 'f' 0.02 1.0 inf+ in pinterp' n s e)+ ,("pan"+ ,let n = prand 'g' [8,16] inf+ s = pwhite 'h' (-1.0) 1.0 inf+ s' = fmap (< 0) s+ e = pif s' (pwhite 'i' 0.0 1.0 inf) (pwhite 'i' (-1.0) 0.0 inf)+ in pinterp' n s e)+ ,("amp"+ ,let n = prand 'j' [8,16,24,32] inf+ s = prand 'k' [0.25,0.05,0.5] inf+ e = prand 'l' [0.25,0.05,0.5,0.01] inf+ in pinterp' n s e)+ ,("note"+ ,let f x = pn (fromList x) 8+ in pseq (map f [[10,6,1,-2]+ ,[-3,1,6,9]+ ,[9,6,1,-3]+ ,[-2,1,6,10]+ ,[8,6,1,-4]+ ,[-3,1,6,9]+ ,[8,6,1,-3]+ ,[-6,1,6,8]]) inf)+ ,("octave"+ ,pstutter 8 (pseq [7,6,5,4,4,5,6,7] inf))]++main :: IO ()+main = do+ let n = 60/157+ p = pedit "dur" (* n) (pbind arpeggio)+ withSC3 (\fd -> play fd (analogarpeggio,p))
@@ -0,0 +1,18 @@+-- babbling brook (jmcc)+-- http://lists.create.ucsb.edu/pipermail/sc-users/2007-April/033239.html++import Sound.SC3.Monadic++babbling_brook :: IO UGen+babbling_brook = do+ let b f m a g = do n1 <- brownNoise AR+ n2 <- brownNoise AR+ let n3 = lpf n2 f * m + a+ n4 = onePole n1 0.99+ return (rhpf n4 n3 0.03 * g)+ x <- clone 2 (b 14 400 500 0.006)+ y <- clone 2 (b 20 800 1000 0.010)+ return (x + y)++main :: IO ()+main = audition . out 0 =<< babbling_brook
@@ -1,23 +0,0 @@-babbling brook (jmcc)--> import Sound.SC3.Monadic--> main = -> let b f m a g = do { n1 <- brownNoise ar-> ; n2 <- brownNoise ar-> ; let { n3 = lpf n2 f * m + a-> ; n4 = onePole n1 0.99 }-> in return (rhpf n4 n3 0.03 * g) }-> in do { x <- clone 2 (b 14 400 500 0.006)-> ; y <- clone 2 (b 20 800 1000 0.010)-> ; audition (out 0 (x + y)) }--{ var b = { arg f, m, a, g - ; { var n1 = OnePole.ar(BrownNoise.ar, 0.99)- ; var n2 = LPF.ar(BrownNoise.ar, f) - ; RHPF.ar(n1, n2 * m + a, 0.03, g) } }-; var x = b.value(14, 400, 500, 0.006) ! 2-; var y = b.value(20, 800, 1000, 0.010) ! 2-; Out.ar(0, x + y) }.play--http://lists.create.ucsb.edu/pipermail/sc-users/2007-April/033239.html
@@ -0,0 +1,7 @@+{ var b = { arg f, m, a, g+ ; { var n1 = OnePole.ar(BrownNoise.ar, 0.99)+ ; var n2 = LPF.ar(BrownNoise.ar, f)+ ; RHPF.ar(n1, n2 * m + a, 0.03, g) } }+; var x = b.value(14, 400, 500, 0.006) ! 2+; var y = b.value(20, 800, 1000, 0.010) ! 2+; Out.ar(0, x + y) }.play
@@ -0,0 +1,34 @@+-- birds (jmcc)+-- http://lists.create.ucsb.edu/pipermail/sc-users/2007-April/033239.html++import Sound.SC3.Monadic++composeM :: Monad m => [a -> m a] -> a -> m a+composeM fs i = foldr (=<<) (return i) fs++chainM :: Monad m => Int -> (a -> m a) -> a -> m a+chainM n f = composeM (replicate n f)++birds :: UId m => m UGen+birds = do+ let node = do r1 <- rand 94.0 102.0+ r2 <- rand (-1.5) 1.5+ r3 <- rand 0.0 1.0+ r4 <- rand 11.0 15.0+ r5 <- rand 0.0 1.0+ r6 <- rand 12.0 15.6+ r7 <- rand 0.0 1.0+ r8 <- rand (-1.0) 1.0+ let f = r1 + lag (lfSaw AR (7 + r2) r3 * r4) 0.1+ a = lfPulse KR (1.0 / r6) r7 0.16 * 0.05+ b = sinOsc AR (midiCPS f) r5 * a+ return (rotate2 b (silent 1) r8)+ apf i = do r1 <- rand 0.0 0.06+ r2 <- rand 0.7 2.0+ return (allpassL i 0.07 r1 r2)+ d <- return . sum =<< sequence (replicate 6 node)+ w <- chainM 12 apf d+ return (d * 0.7 + w * 0.3)++main :: IO ()+main = audition . out 0 =<< birds
@@ -1,28 +0,0 @@-birds (jmcc)--> import Sound.SC3.Monadic--> main =-> let { node = do { r1 <- rand 94.0 102.0-> ; r2 <- rand (-1.5) 1.5-> ; r3 <- rand 0.0 1.0-> ; r4 <- rand 11.0 15.0-> ; r5 <- rand 0.0 1.0-> ; r6 <- rand 12.0 15.6-> ; r7 <- rand 0.0 1.0-> ; r8 <- rand (-1.0) 1.0-> ; let { f = r1 + lag (lfSaw AR (7 + r2) r3 * r4) 0.1-> ; a = lfPulse KR (1.0 / r6) r7 0.16 * 0.05-> ; b = sinOsc AR (midiCPS f) r5 * a } -> in return (rotate2 b (silent 1) r8) }-> ; apf i = do { r1 <- rand 0.0 0.06-> ; r2 <- rand 0.7 2.0-> ; return (allpassL i 0.07 r1 r2) }-> ; composeM [] i = return i-> ; composeM (f:fs) i = f =<< composeM fs i-> ; chainM n f = composeM (replicate n f) }-> in do { d <- return . sum =<< sequence (replicate 6 node)-> ; w <- chainM 12 apf d-> ; audition (out 0 (d * 0.7 + w * 0.3)) }--http://lists.create.ucsb.edu/pipermail/sc-users/2007-April/033239.html
@@ -0,0 +1,25 @@+-- bit reduction (adc)++import Sound.SC3.ID++sample_rate_decrease :: UGen+sample_rate_decrease =+ let f = lfNoise2 'a' KR 8+ nh = lfNoise2 'a' KR 3+ src = blip AR (f * 200 + 300) (nh * 10 + 20)+ sr = mouseX' KR 1000 (sampleRate * 0.1) Exponential 0.2+ in latch src (impulse AR sr 0)++bit_rate_decrease :: UGen+bit_rate_decrease =+ let f = lfNoise2 'a' KR 8+ nh = lfNoise2 'a' KR 3+ src = blip AR (f * 200 + 300) (nh * 10 + 20)+ sr = mouseX' KR 1000 (sampleRate * 0.1) Exponential 0.2+ bit_sz = mouseY' KR 1 24 Exponential 0.2+ down_sample = latch src (impulse AR sr 0)+ bit_redux = roundTo down_sample (0.5 ** bit_sz)+ in mce2 down_sample bit_redux++main :: IO ()+main = audition (out 0 (sample_rate_decrease + bit_rate_decrease))
@@ -1,37 +0,0 @@-bit reduction (adc)--> import Sound.SC3.Monadic--> sample_rate_decrease =-> do { f <- lfNoise2 kr 8-> ; nh <- lfNoise2 kr 3-> ; let { src = blip ar (f * 200 + 300) (nh * 10 + 20)-> ; sr = mouseX kr 1000 (sampleRate * 0.1) Exponential 0.2 }-> in audition (out 0 (latch src (impulse ar sr 0))) }--{ var f = LFNoise2.kr(8)-; var nh = LFNoise2.kr(3)-; var src = Blip.ar(f * 200 + 300, nh * 10 + 20)-; var sr = MouseX.kr(1000, s.sampleRate * 0.1, 'exponential', 0.2)-; Out.ar(0, Latch.ar(src, Impulse.ar(sr, 0))) }.play--> bit_rate_decrease =-> do { f <- lfNoise2 kr 8-> ; nh <- lfNoise2 kr 3-> ; let { src = blip ar (f * 200 + 300) (nh * 10 + 20)-> ; sr = mouseX kr 1000 (sampleRate * 0.1) Exponential 0.2-> ; bit_sz = mouseY kr 1 24 Exponential 0.2-> ; down_sample = latch src (impulse ar sr 0)-> ; bit_redux = roundE down_sample (0.5 ** bit_sz) }-> in audition (out 0 (mce2 down_sample bit_redux)) }--{ var f = LFNoise2.kr(8)-; var nh = LFNoise2.kr(3)-; var src = Blip.ar(f * 200 + 300, nh * 10 + 20)-; var sr = MouseX.kr(1000, s.sampleRate * 0.1, 'exponential', 0.2)-; var bit_sz = MouseY.kr(1, 24, 'exponential', 0.2) -; var down_sample = Latch.ar(src, Impulse.ar(sr, 0))-; var bit_redux = down_sample.round(0.5 ** bit_sz)-; Out.ar(0, [down_sample, bit_redux]) }.play--> main = bit_rate_decrease
@@ -0,0 +1,14 @@+{ var f = LFNoise2.kr(8)+; var nh = LFNoise2.kr(3)+; var src = Blip.ar(f * 200 + 300, nh * 10 + 20)+; var sr = MouseX.kr(1000, s.sampleRate * 0.1, 'exponential', 0.2)+; Out.ar(0, Latch.ar(src, Impulse.ar(sr, 0))) }.play++{ var f = LFNoise2.kr(8)+; var nh = LFNoise2.kr(3)+; var src = Blip.ar(f * 200 + 300, nh * 10 + 20)+; var sr = MouseX.kr(1000, s.sampleRate * 0.1, 'exponential', 0.2)+; var bit_sz = MouseY.kr(1, 24, 'exponential', 0.2)+; var down_sample = Latch.ar(src, Impulse.ar(sr, 0))+; var bit_redux = down_sample.round(0.5 ** bit_sz)+; Out.ar(0, [down_sample, bit_redux]) }.play
@@ -0,0 +1,108 @@+-- black atlantic currents (jr)+-- http://www.listarc.bham.ac.uk/lists/sc-users/msg08240.html++import Data.Numbers.Primes {- primes -}+import Sound.SC3.ID {- hsc3 -}+import System.Random {- random -}+import System.Random.Shuffle {- random-shuffle -}++nth_prime :: Integral a => Int -> a+nth_prime j = primes !! j++chain :: Int -> (t -> t) -> t -> t+chain j f x = if j == 0 then x else chain (j - 1) f (f x)++xn,yn,zn :: Num a => a+xn = 64+yn = 65+zn = 66++type NF t a = a -> Rate -> t -> UGen++n :: NF t a -> t -> [a] -> UGen+n g f = mce . map (\k -> g k KR f)++n' :: NF t a -> [t] -> [a] -> UGen+n' g f = mce . map (\(f',k) -> g k KR f') . zip f++i :: UGen -> UGen+i = inFeedback 2++c :: Int -> UGen+c = Constant . fromIntegral++bac :: UGen+bac =+ let x = let ph = i yn * uclone 'a' 2 (lfdNoise3 'a' KR 1)+ in out xn (mceReverse (sinOsc AR (60 * 2) ph))+ y = let ph = i xn * uclone 'a' 2 (lfdNoise3 'a' KR 0.3) * 4+ in out yn (sinOsc AR (50 * 2) ph)+ in mrg [inFeedback 2 xn,y,x]++bac' :: UGen+bac' =+ let x = let f = c (nth_prime 23)+ ph = i yn * uclone 'a' 2 (lfdNoise3 'a' KR (sqrt 2))+ in out xn (mceReverse (sinOsc AR f ph))+ y = let f = c (chain 3 nth_prime 1)+ ph = i xn * uclone 'a' 2 (lfdNoise3 'a' KR (sqrt pi)) * pi+ in out yn (tanh (sinOsc AR f ph))+ in mrg [inFeedback 2 xn,y,x]++bac'' :: UGen+bac'' =+ let x = let f = c (nth_prime 23)+ ph = i yn * n' lfdNoise3 (map sqrt [1,2]) "ab"+ in out xn (mceReverse (sinOsc AR f ph))+ y = let f = c (chain 3 nth_prime 1)+ ph = i xn * n lfdNoise1 (sqrt pi) "cd" * pi+ in out yn (tanh (sinOsc AR f ph))+ z = let f = c (chain 3 nth_prime 2)+ ph = i yn * n lfdNoise0 (sqrt (sqrt pi)) "ef" * 42 * pi+ in out zn (tanh (sinOsc AR f ph) * exp (-0.5 * pi))+ in mrg [inFeedback 2 xn,y,x,z]++bac''' :: UGen+bac''' =+ let x = let j = range 1 30 (lfNoise0 's' KR (log 2 / 2))+ f = select j (mce (map (c . nth_prime) [1..30]))+ ph = i zn * n' lfdNoise3 (map sqrt [1,2]) "ab"+ in out xn (mceReverse (sinOsc AR f ph))+ y = let f = c (chain 3 nth_prime 1)+ ph = i xn * n lfdNoise1 (sqrt pi) "cd" * pi+ in out yn (tanh (sinOsc AR f ph) * exp 1)+ z = let f = c (chain 3 nth_prime 2)+ ph = i yn * n lfdNoise0 (sqrt (sqrt pi)) "ef" * 42 * pi+ in out zn (tanh (sinOsc AR f ph) * exp (-0.5 * pi))+ in mrg [inFeedback 2 xn,y,x,z]++scramble :: Enum a => a -> [t] -> [t]+scramble j k =+ let g = mkStdGen (fromEnum j)+ in shuffle' k (length k) g++bac'''' :: UGen+bac'''' =+ let x = let j = range 1 30 (lfNoise2 's' KR (log 2 / 2))+ ph = i zn * n' lfdNoise3 (map sqrt [1,2]) "ab"+ f' = map (c . nth_prime) (scramble 'p' [1,3..61])+ o = map (\f -> mceReverse (sinOsc AR f ph)) f'+ in out xn (mceChannel 1 (selectX j (mce o)))+ y = let f = c (chain 3 nth_prime 1)+ ph = i xn * n lfdNoise1 (sqrt pi) "cd" * pi+ in out yn (tanh (sinOsc AR f ph) * exp 1)+ z = let f = c (chain 3 nth_prime 2)+ ph = i yn * n lfdNoise0 (sqrt (sqrt pi)) "ef" * 42 * pi+ in out zn (tanh (sinOsc AR f ph) * exp (-0.5 * pi))+ in mrg [inFeedback 2 xn,y,x,z]++{-+audition (out 0 bac)+audition (out 0 bac')+audition (out 0 bac'')+audition (out 0 bac''')+audition (out 0 bac'''')+-}++main :: IO ()+main = audition (out 0 bac)
@@ -0,0 +1,22 @@+-- bohlen-pierce-140 (jj)+-- http://sccode.org/1-W++import Sound.SC3.ID+import Sound.SC3.Lang.Pattern.ID++bp140u :: UGen+bp140u =+ let f z n = n * (3 ** (rand z 0 17 / 13))+ e = envGen AR 1 0.3 0 1 RemoveSynth (envPerc 0.01 1)+ o = pmOsc AR (f 'a' (mce2 438 442)) (f 'b' 880) (f 'c' e) 0+ in o * e++bp140 :: Synthdef+bp140 = synthdef "bp140" (out 0 bp140u)++main :: IO ()+main = audition (bp140,pbind [("dur",prand 'a' [1/6,1/3] inf)])++{-+Sound.SC3.UGen.Dot.draw bp140u+-}
@@ -0,0 +1,5 @@+fork{loop{play{+f=_*3.pow(17.rand/13);+e=EnvGen.ar(Env.perc,1,0.3,0,1,2);+PMOsc.ar(f.([438,442]),f.(880),f.(e))*e+};[1/6,1/3].choose.wait}}
@@ -0,0 +1,28 @@+-- bottle (sc)++import Sound.SC3.Lang.Control.OverlapTexture+import Sound.SC3.Monadic++bottle :: UId m => m UGen+bottle = do+ freq <- rand 220 880+ wn <- whiteNoise AR+ pn <- pinkNoise AR+ let (>=>) f g x = f x >>= g+ chain n f = foldl (>=>) return (replicate n f)+ perc = envPerc 0.1 0.6+ ex = envGen KR 1 1 0 1 DoNothing perc * wn * 0.02+ flute = ringz ex freq 0.3+ r = resonz pn (5 + (freq / 2)) 0.1+ breath = envGen KR 1 1 0 1 DoNothing perc * r+ rapf i = do x <- linRand 0.001 0.1 (-1)+ return (i + allpassN i 0.1 x 1.0 * 0.5)+ cls i = let en = let c = EnvNum (-4) in (c,c,c)+ l = envLinen' 0.01 3.0 1.0 1 en+ z = (breath + i) * envGen KR 1 1 0 1 RemoveSynth l+ in mce2 z z+ f <- chain 2 rapf flute+ return (cls f)++main :: IO ()+main = overlapTextureU (0,2,2,maxBound) =<< bottle
@@ -1,23 +0,0 @@-bottle (sc)--> import Sound.SC3.Monadic--> main =-> do { freq <- rand 220 880-> ; wn <- whiteNoise ar-> ; pn <- pinkNoise ar-> ; let { (>=>) f g = \x -> f x >>= g-> ; chain n f = foldl (>=>) return (replicate n f)-> ; perc = envPerc 0.1 0.6-> ; ex = envGen kr 1 1 0 1 DoNothing perc * wn * 0.02-> ; flute = ringz ex freq 0.3-> ; r = resonz pn (5 + (freq / 2)) 0.1-> ; breath = envGen kr 1 1 0 1 DoNothing perc * r-> ; rapf i = do { x <- linRand 0.001 0.1 (-1)-> ; return (i + allpassN i 0.1 x 1.0 * 0.5) }-> ; cls i = let { en = let c = EnvNum (-4) in (c,c,c)-> ; l = envLinen' 0.01 3.0 1.0 1 en-> ; z = (breath + i) * envGen kr 1 1 0 1 RemoveSynth l }-> in mce2 z z }-> in do { f <- (chain 2 rapf) flute-> ; audition (out 0 (cls f)) } }
@@ -0,0 +1,26 @@+-- bowed string (jmcc)++import Control.Monad+import Sound.SC3.Lang.Control.OverlapTexture+import Sound.SC3.Monadic++bowed_string :: UId m => m UGen+bowed_string = do+ let root = 5+ scale = map (+ root) [0,2,4,5,7,9,11]+ oct = [24,36,48,60,72,84]+ n0 <- clone 2 (brownNoise AR)+ r0 <- expRand 0.125 0.5+ r1 <- rand 0.7 0.9+ r2 <- sequence (replicate 12 (rand 1.0 3.0))+ f <- liftM midiCPS (liftM2 (+) (iChoose' scale) (iChoose' oct))+ n1 <- lfNoise1 KR r0+ let x = n0 * 0.007 * max 0 (n1 * 0.6 + 0.4)+ geom n i z = take n (iterate (* z) i)+ iota n i z = take n (iterate (+ z) i)+ d = klankSpec (iota 12 f f) (geom 12 1 r1) r2+ k = klank x 1 0 1 d+ return (softClip (k * 0.1))++main :: IO ()+main = overlapTextureU (2,5,12,maxBound) =<< bowed_string
@@ -1,38 +0,0 @@-bowed string (jmcc)--> import Control.Monad-> import Sound.SC3.Monadic-> import System.Random--> main =-> let { rrand l r = getStdRandom (randomR (l, r))-> ; choose l = fmap (l !!) (rrand 0 (length l - 1))-> ; root = 5-> ; scale = map (+ root) [0, 2, 4, 5, 7, 9, 11]-> ; oct = [24, 36, 48, 60, 72, 84] }-> in do { n0 <- clone 2 (brownNoise ar)-> ; r0 <- expRand 0.125 0.5-> ; r1 <- rand 0.7 0.9-> ; r2 <- sequence (replicate 12 (rand 1.0 3.0))-> ; f <- fmap midiCPS (liftM2 (+) (choose scale) (choose oct))-> ; n1 <- lfNoise1 kr r0-> ; let { x = n0 * 0.007 * max 0 (n1 * 0.6 + 0.4)-> ; geom n i z = take n (iterate (* z) i)-> ; iota n i z = take n (iterate (+ z) i)-> ; d = klankSpec (iota 12 f f) (geom 12 1 r1) r2-> ; k = klank x 1 0 1 d }-> in audition (out 0 (softClip (k * 0.1))) }--{ var root = 5-; var scale = #[0, 2, 4, 5, 7, 9, 11] + root-; var oct = #[24, 36, 48, 60, 72, 84]-; var f = (scale.choose + oct.choose).midicps-; var n0 = BrownNoise.ar().dup-; var r0 = ExpRand.new(0.125, 0.5)-; var n1 = LFNoise1.kr(r0)-; var r1 = Rand.new(0.7,0.9)-; var r2 = Array.fill(12, { Rand.new(1.0, 3.0) })-; var x = n0 * 0.007 * max(0, n1 * 0.6 + 0.4)-; var d = `[Array.series(12, f, f), Array.geom(12, 1, r1), r2]-; var k = Klank.ar(d, x)-; Out.ar(0, (k * 0.1).softclip) }.play
@@ -0,0 +1,13 @@+{ var root = 5+; var scale = #[0,2,4,5,7,9,11] + root+; var oct = #[24,36,48,60,72,84]+; var f = (scale.choose + oct.choose).midicps+; var n0 = BrownNoise.ar().dup+; var r0 = ExpRand.new(0.125,0.5)+; var n1 = LFNoise1.kr(r0)+; var r1 = Rand.new(0.7,0.9)+; var r2 = Array.fill(12,{ Rand.new(1.0,3.0) })+; var x = n0 * 0.007 * max(0,n1 * 0.6 + 0.4)+; var d = `[Array.series(12,f,f),Array.geom(12,1,r1),r2]+; var k = Klank.ar(d,x)+; Out.ar(0,(k * 0.1).softclip) }.play
@@ -0,0 +1,87 @@+-- bs-070705 (rd)++import Control.Monad+import Sound.SC3.Monadic+import Sound.OpenSoundControl+import System.Random++-- | One step in a bubble sort with specified /greater than/ function.+bubble_p :: (a -> a -> Bool) -> [a] -> [a]+bubble_p gt l =+ case l of+ e:f:g -> if e `gt` f+ then f : bubble_p gt (e : g)+ else e : bubble_p gt (f : g)+ _ -> l++-- | 'bubble_p' '>'.+bubble :: (Ord a) => [a] -> [a]+bubble = bubble_p (>)++-- | One step in /odd even/ sorting, a bubble sort variant.+odd_even :: (Ord a) => [a] -> [a]+odd_even = reverse . bubble_p (<) . reverse . bubble_p (>)++-- | Allocate required buffers to /n/ places.+alloc_data :: Int -> IO ()+alloc_data n = do+ let alloc fd m b = async fd (b_alloc b m 1)+ withSC3 (\fd -> mapM_ (alloc fd n) [10, 11, 12])++-- | Simple synthesis renderer, r is the impulse frequency (trigger rate).+play_data :: UGen -> IO ()+play_data r = do+ let inf_sc = 9e8+ phase <- dseries inf_sc 0 1+ f' <- dbufrd 10 phase Loop+ a' <- dbufrd 11 phase Loop+ p' <- dbufrd 12 phase Loop+ let tr = impulse AR r 0+ f'' = demand tr 0 f'+ a'' = demand tr 0 a'+ p'' = demand tr 0 p'+ audition (out 0 (pan2 (ringz tr (midiCPS f'') 0.2) p'' a''))++-- | Randomize initial data of /n/ places, /s/ sort for+-- /m/ steps, pause for i seconds between each step.+run_data :: ([Double] -> [Double]) -> Int -> Int -> Double -> IO ()+run_data s n m i = do+ f <- rrandl n 32 96+ a <- rrandl n 0.25 1+ p <- rrandl n (-1) 1+ let prepare l' = take m (iterate s l')+ f' = prepare f+ a' = prepare a+ p' = prepare p+ l fd i' (f'', a'', p'') = do+ send fd (b_setn 10 [(0, f'')])+ send fd (b_setn 11 [(0, a'')])+ send fd (b_setn 12 [(0, p'')])+ pauseThread i'+ c fd = mapM_ (l fd i) (zip3 f' a' p')+ withSC3 c++-- | A random number.+rrand :: Double -> Double -> IO Double+rrand l r = getStdRandom (randomR (l,r))++-- | A list of random numbers.+rrandl :: Int -> Double -> Double -> IO [Double]+rrandl n l r = replicateM n (rrand l r)++-- | Run 'odd_even' for 32 iterations at 1 second intervals.+main :: IO ()+main = do+ alloc_data 96+ play_data 24+ run_data odd_even 96 32 1++{--+alloc_data 96+play_data 24 >> run_data odd_even 96 96 0.35+play_data 24 >> run_data bubble 96 64 0.75+play_data 24 >> run_data bubble 96 64 0.25+play_data 24 >> run_data bubble 96 32 0.25+play_data 24 >> run_data odd_even 96 16 0.25+--}+
@@ -0,0 +1,21 @@+-- ccomb (rd)++import Sound.SC3.Monadic++ccomb :: (Functor m,UId m) => m UGen+ccomb = do+ let rng l r i = linLin i (-1) 1 l r+ lwr = 48+ flwr = midiCPS lwr+ spart t = do n <- fmap (rng lwr 72.0) (lfNoise2 KR 0.1)+ e <- fmap (decay2 t 0.01) (tRand 0.05 0.75 t)+ x <- fmap (* e) (whiteNoise AR)+ m <- lfNoise2 KR 0.1+ let f = lag (midiCPS n) 0.25+ m' = rng 1 8 m+ return (combC x (recip flwr) (recip f) m')+ t <- dust KR (mce2 0.75 0.35)+ return . (* 0.1) . sum =<< sequence (replicate 12 (spart t))++main :: IO ()+main = audition . out 0 =<< ccomb
@@ -1,28 +0,0 @@-ccomb (rd)--> import Sound.SC3.Monadic--> main =-> let { rng l r i = linLin i (-1) 1 l r-> ; lwr = 48-> ; flwr = midiCPS lwr-> ; spart t = do { n <- fmap (rng lwr 72.0) (lfNoise2 kr 0.1)-> ; e <- fmap (decay2 t 0.01) (tRand 0.05 0.75 t)-> ; x <- fmap (* e) (whiteNoise ar)-> ; m <- lfNoise2 kr 0.1-> ; let f = lag (midiCPS n) 0.25-> in return (combC x (recip flwr) (recip f) (rng 1 8 m)) } }-> in do { t <- dust kr (mce2 0.75 0.35)-> ; audition . (out 0) . (* 0.1) . sum =<< sequence (replicate 12 (spart t)) }--{ var lwr = 48-; var flwr = lwr.midicps-; var spart = { arg t- ; { var n = LFNoise2.kr(0.1).range(lwr, 72.0)- ; var e = Decay2.kr(t, 0.01, TRand.kr(0.05, 0.75, t))- ; var x = WhiteNoise.ar() * e- ; var m = LFNoise2.kr(0.1)- ; var f = Lag.kr(n.midicps, 0.25)- ; CombC.ar(x, flwr.reciprocal, f.reciprocal, m.range(1, 8)) } }-; var t = Dust.kr([0.75, 0.35])-; Out.ar(0, Mix.fill(12, spart.value(t)) * 0.1) }.play
@@ -0,0 +1,11 @@+{var lwr = 48+;var flwr = lwr.midicps+;var spart = {arg t+ ;{var n = LFNoise2.kr(0.1).range(lwr,72.0)+ ;var e = Decay2.kr(t,0.01,TRand.kr(0.05,0.75,t))+ ;var x = WhiteNoise.ar() * e+ ;var m = LFNoise2.kr(0.1)+ ;var f = Lag.kr(n.midicps,0.25)+ ;CombC.ar(x,flwr.reciprocal,f.reciprocal,m.range(1,8))}}+;var t = Dust.kr([0.75,0.35])+;Out.ar(0,Mix.fill(12,spart.value(t)) * 0.1)}.play
@@ -0,0 +1,110 @@+-- | cds-070701 (rd)+--+-- The 'source' data are breakpoint sets normalized over the time+-- interval (0,1). There are a fixed number of 'locations' per cycle.+-- The data sets are sampled at these locations and loaded into+-- buffers. The buffers are read using dbufrd. One of the data sets+-- gives the time interval to step forward.+import Sound.OpenSoundControl+import Sound.SC3.Monadic++-- | Real+type R = Double++-- | Point+type P = (R,R)++-- | Data set+type D = [P]++-- | Points that bracket a time.+pts :: D -> R -> (P,P)+pts d n =+ case d of+ p0:p1:r -> let (t,_) = p1+ in if n <= t+ then (p0,p1)+ else pts (p1:r) n+ _ -> error "pts"++-- | Linear interpolation.+--+-- > lerp 0.5 (0,0) (1,1) == (0.5,0.5)+-- > lerp 0.25 (0,0) (0.5,1) == (0.25,0.5)+lerp :: R -> P -> P -> P+lerp n (t0,d0) (t1,d1) =+ let n' = (n - t0) / (t1 - t0)+ f i = d0 + ((d1 - d0) * i)+ in (n,f n')++-- | Linear interpolating lookup.+fetch :: D -> R -> P+fetch t n =+ let (p0,p1) = pts t n+ in lerp n p0 p1++-- | Linearize in time (ie. /t/ is in equal steps).+rescale :: D -> Int -> D+rescale t n = map (fetch t) [0,1 / fromIntegral n .. 1]++-- | Allocate data buffers for linearized envelopes.+alloc_data :: Int -> IO ()+alloc_data n = do+ let alloc fd b = async fd (b_alloc b n 1)+ withSC3 (\fd -> mapM_ (alloc fd) [10,11,12,13])++-- | Data can be loaded while nodes are running, ie. edited online.+load_data :: Int -> (D,D,D,D) -> IO ()+load_data n (t,f,a,p) = do+ let setup d = map snd (rescale d n)+ withSC3 (\fd -> do send fd (b_setn 10 [(0,setup t)])+ send fd (b_setn 11 [(0,setup f)])+ send fd (b_setn 12 [(0,setup a)])+ send fd (b_setn 13 [(0,setup p)]))++-- | Simple synthesis of data.+play_data :: IO ()+play_data = do+ let inf_sc = 9e8+ phase <- dseries inf_sc 0 1+ t' <- dbufrd 10 phase Loop+ f' <- dbufrd 11 phase Loop+ a' <- dbufrd 12 phase Loop+ p' <- dbufrd 13 phase Loop+ let tr = tDuty AR t' 0 DoNothing 1 0+ f'' = demand tr 0 f'+ a'' = demand tr 0 a'+ p'' = demand tr 0 p'+ audition (out 0 (pan2 (ringz tr f'' 0.2) p'' a''))++-- | Sample data sets, load using 'load_data'.+data_1 :: (D,D,D,D)+data_1 = ([(0,0.1),(0.65,0.025),(1,0.1)]+ ,[(0,200),(0.35,8900),(1,200)]+ ,[(0,0.35),(0.65,0.65),(1,0.35)]+ ,[(0,-1),(0.3,1),(1,-1)])++data_2 :: (D,D,D,D)+data_2 = ([(0,0.1),(0.5,0.005),(1,0.1)]+ ,[(0,100),(0.5,13900),(1,200)]+ ,[(0,0.75),(0.5,0.25),(1,0.75)]+ ,[(0,1),(0.5,-1),(1,1)])++data_3 :: (D,D,D,D)+data_3 = ([(0,0.01),(0.5,0.25),(1,0.01)]+ ,[(0,770),(0.5,77),(1,770)]+ ,[(0,0.9),(0.5,0.6),(1,0.9)]+ ,[(0,0),(0.5,1),(1,0)])++-- | Switch between data sets at /dd/ at time interval /t/.+data_switch :: [(D,D,D,D)] -> R -> IO ()+data_switch dd t =+ let w d = load_data 64 d >> pauseThread t+ in mapM_ w dd >> data_switch dd t++main :: IO ()+main = do+ alloc_data 64+ load_data 64 data_1+ play_data+ data_switch [data_1,data_2,data_3] 4
@@ -0,0 +1,50 @@+-- chain saw (jrhb)++{- this graph generates long chains of unit generators and may require+increasing the stack limit of the haskell run time system -}++import Control.Monad+import qualified Sound.SC3.Lang.Random.IO as R+import Sound.SC3.Monadic++coinIf :: Double -> a -> a -> IO a+coinIf n a b = do+ r <- R.coin n+ return (if r then a else b)++exprange :: UGen -> UGen -> UGen -> UGen+exprange s = linExp s (-1) 1++chain :: Monad m => Int -> (b -> m b) -> b -> m b+chain n fn = foldr (<=<) return (replicate n fn)++mceProduct :: UGen -> UGen+mceProduct = mceEdit (\l -> [product l])++clipu :: BinaryOp a => a -> a+clipu s = clip2 s 1++dup :: UGen -> UGen+dup a = mce2 a a++chain_saw :: IO UGen+chain_saw = do+ let f s1 = do xr <- fmap dup (expRand 0.1 2)+ n1 <- lfNoise1 KR xr+ n2 <- lfNoise1 KR xr+ n3 <- lfNoise1 KR xr+ f1 <- coinIf 0.6 (exprange n1 0.01 10) (exprange n2 10 50)+ s2 <- coinIf 0.5 (1 - s1) (mceReverse s1)+ let f2 = linExp s1 (-1) 1 f1 (f1 * exprange n3 2 10)+ u1 = lfSaw KR f2 0+ u2 = lfSaw KR (f1 * 0.1) 0 * 0.1 + 1+ return . clipu =<< coinIf 0.5 (u1 * s2) (u1 * u2)+ inp = lfSaw KR (0.2 * mce2 1 1.1) 0+ b_freq = mce [70, 800, 9000, 5242]+ ff <- chain 8 f inp+ let c_saw = mceProduct (saw AR (exprange ff 6 11000))+ b_saw = dup (mix (bpf c_saw b_freq 0.2))+ return (b_saw * 0.3)++main :: IO ()+main = audition . out 0 =<< chain_saw
@@ -1,56 +0,0 @@-chain saw (jrhb)--[this graph generates long chains of unit generators and may require-increasing the stack limit of the haskell run time system]--> import Control.Monad-> import Sound.SC3.Monadic-> import System.Random--> main =-> let { rrand l r = getStdRandom (randomR (l, r)) :: IO Double-> ; coin n a b = do { m <- rrand 0.0 1.0-> ; return (if m > n then a else b) }-> ; exprange s l r = linExp s (-1) 1 l r-> ; chain n fn = foldr (<=<) return (replicate n fn)-> ; mceProduct = mceEdit (\l -> [product l])-> ; clipu s = clip2 s 1-> ; dup a = mce2 a a-> ; f s1 = do { xr <- fmap dup (expRand 0.1 2)-> ; n1 <- lfNoise1 kr xr-> ; n2 <- lfNoise1 kr xr-> ; n3 <- lfNoise1 kr xr-> ; f1 <- coin 0.6 (exprange n1 0.01 10) (exprange n2 10 50)-> ; s2 <- coin 0.5 (1 - s1) (mceReverse s1)-> ; let { f2 = linExp s1 (-1) 1 f1 (f1 * exprange n3 2 10)-> ; u1 = lfSaw kr f2 0-> ; u2 = lfSaw kr (f1 * 0.1) 0 * 0.1 + 1 }-> in return . clipu =<< coin 0.5 (u1 * s2) (u1 * u2) }-> ; inp = lfSaw kr (0.2 * mce2 1 1.1) 0-> ; b_freq = mce [70, 800, 9000, 5242] }-> in do { ff <- chain 8 f inp-> ; let { c_saw = mceProduct (saw ar (exprange ff 6 11000))-> ; b_saw = dup (mix (bpf c_saw b_freq 0.2)) }-> in audition (out 0 (b_saw * 0.3)) }--{ var f = { arg s1- ; var rate = ExpRand.new(0.1, 2).dup- ; var n1 = { LFNoise1.kr(rate).exprange(0.01, 10) }- ; var n2 = { LFNoise1.kr(rate).exprange(10, 50) }- ; var n3 = LFNoise1.kr(rate).exprange(2, 10)- ; var f1 = if(0.6.coin) { n1.value } { n2.value }- ; var s2 = [1 - s1, s1.reverse].choose- ; var f2 = LinExp.kr(s1, -1, 1, f1, f1 * n3)- ; var u1 = LFSaw.kr(f2, 0)- ; var u2 = LFSaw.kr(f1 * 0.1, 0, 0.1, 1)- ; var u3 = if(0.5.coin) { u1 * s2 } { u1 * u2 }- ; u3.clip2(1) }-; var g = { arg func, n- ; n.do { func = func <> func }- ; func }-; var inp = LFSaw.kr(0.2 * [1, 1.1], 0)-; var b_freq = [70, 800, 9000, 5242]-; var ff = g.(f, 4).value(inp)-; var c_saw = Saw.ar(ff.exprange(6, 11000)).product-; var b_saw = BPF.ar(c_saw, b_freq, 0.2).sum.dup-; Out.ar(0, b_saw * 0.3) }.play
@@ -0,0 +1,21 @@+{ var f = { arg s1+ ; var rate = ExpRand.new(0.1, 2).dup+ ; var n1 = { LFNoise1.kr(rate).exprange(0.01, 10) }+ ; var n2 = { LFNoise1.kr(rate).exprange(10, 50) }+ ; var n3 = LFNoise1.kr(rate).exprange(2, 10)+ ; var f1 = if(0.6.coin) { n1.value } { n2.value }+ ; var s2 = [1 - s1, s1.reverse].choose+ ; var f2 = LinExp.kr(s1, -1, 1, f1, f1 * n3)+ ; var u1 = LFSaw.kr(f2, 0)+ ; var u2 = LFSaw.kr(f1 * 0.1, 0, 0.1, 1)+ ; var u3 = if(0.5.coin) { u1 * s2 } { u1 * u2 }+ ; u3.clip2(1) }+; var g = { arg func, n+ ; n.do { func = func <> func }+ ; func }+; var inp = LFSaw.kr(0.2 * [1, 1.1], 0)+; var b_freq = [70, 800, 9000, 5242]+; var ff = g.(f, 4).value(inp)+; var c_saw = Saw.ar(ff.exprange(6, 11000)).product+; var b_saw = BPF.ar(c_saw, b_freq, 0.2).sum.dup+; Out.ar(0, b_saw * 0.3) }.play
@@ -0,0 +1,27 @@+-- choip (jmcc)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.OverlapTexture++xl :: ID a => a -> a -> UGen -> UGen -> UGen -> UGen+xl e0 e1 l r t = xLine KR (expRand e0 l r) (expRand e1 l r) t DoNothing++r2 :: ID a => a -> UGen -> UGen+r2 e n = rand e (-n) n++choip :: UGen+choip =+ let t = 12+ i = impulse AR (xl 'a' 'b' 1 30 t) 0+ f = xl 'c' 'd' 600 8000 t+ a = sinOsc AR (decay2 i 0.05 0.5 * (-0.9 * f) + f) 0+ l = line KR (r2 'e' 1) (r2 'f' 1) t DoNothing+ in pan2 (decay2 (i * xl 'g' 'h' 0.01 0.5 t) 0.01 0.2 * a) l 1++choip_pp :: UGen -> UGen+choip_pp =+ let f x = allpassN x 0.1 (udup 2 (rand 'a' 0 0.05)) 4+ in useq 'a' 4 f++main :: IO ()+main = overlapTextureU_pp (10,1,8,maxBound) choip 2 choip_pp
@@ -0,0 +1,9 @@+var t = 12;+var z = OverlapTexture.ar({+ var i = Impulse.ar(XLine.kr(exprand(1,30),exprand(1,30),t));+ var f = XLine.kr(exprand(600.0,8000.0),exprand(600.0,8000.0),t);+ var a = SinOsc.ar(Decay2.ar(impulses,0.05,0.5,-0.9*f,f));+ var l = Line.kr(1.0.rand2,1.0.rand2,t);+ var j = XLine.kr(exprand(0.01,0.5),exprand(0.01,0.5),t);+ Pan2.ar(Decay2.ar(i * j,0.01,0.2,a),l)},t-2,1,8,2);+4.do({z = AllpassN.ar(z,0.1,[0.05.rand,0.05.rand],4)});
@@ -0,0 +1,25 @@+-- chrd (rd)++import Sound.SC3.Monadic++chrd :: IO UGen+chrd = do+ r0 <- rand 0.05 0.5+ [r1, r2] <- sequence (replicate 2 (rand (-1) 1))+ r3 <- rand 0.15 0.35+ r4 <- rand 0.005 0.01+ let m = mce [60, 65, 72, 77, 79, 84]+ ds = 3+ d = mce (map (* ds) [5, 4, 5, 7, 4, 5])+ f = midiCPS (xLine KR m (m + r0) d DoNothing)+ z = envTrapezoid 0 r3 d r4+ e = envGen KR 1 1 0 1 DoNothing z+ p = xLine KR r1 r2 d DoNothing+ o = fSinOsc AR f 0+ return (mix (pan2 o p e))++chrd9 :: IO UGen+chrd9 = return . mix =<< clone 9 chrd++main :: IO ()+main = audition . out 0 =<< chrd9
@@ -0,0 +1,36 @@+-- chrd-t (rd)++import Control.Monad+import Control.Monad.Random {- MonadRandom -}+import Sound.SC3+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import Sound.SC3.Lang.Random.Monad++chrd :: RandomGen g => [Int] -> Double -> Rand g UGen+chrd ch ds = do+ r0 <- rrand 0.05 0.5+ r1 <- rrand (-1) 1+ r2 <- rrand (-1) 1+ r3 <- rrand 0.15 0.35+ r4 <- rrand 0.005 0.01+ let m = mce (map fromIntegral ch)+ d = mce (map (* constant ds) [5, 4, 5, 7, 4, 5])+ f = midiCPS (xLine KR m (m + r0) d DoNothing)+ z = envTrapezoid 0 r3 d r4+ e = envGen KR 1 1 0 1 DoNothing z+ p = xLine KR r1 r2 d DoNothing+ o = fSinOsc AR f 0+ return (mix (pan2 o p e))++chrdN :: RandomGen g => Int -> Int -> Double -> Rand g UGen+chrdN i j ds = do+ let scale = [0,2,4,5,7,9,11]+ octaves = [4,5,6,7]+ ch <- nchoose i [n + (o * 12) | n <- scale, o <- octaves]+ c <- replicateM j (chrd ch ds)+ return (sum c)++main :: IO ()+main = do+ g <- getStdGen+ overlapTextureS (0,21,3,maxBound) (runRand (chrdN 6 9 3)) g
@@ -1,36 +0,0 @@-chrd (rd)--> import Sound.SC3.Monadic--> main =-> let chrd = do { r0 <- rand 0.05 0.5-> ; [r1, r2] <- sequence (replicate 2 (rand (-1) 1))-> ; r3 <- rand 0.15 0.35-> ; r4 <- rand 0.005 0.01-> ; let { m = mce [60, 65, 72, 77, 79, 84]-> ; ds = 3-> ; d = mce (map (* ds) [5, 4, 5, 7, 4, 5])-> ; f = midiCPS (xLine kr m (m + r0) d DoNothing)-> ; z = envTrapezoid 0 r3 d r4-> ; e = envGen kr 1 1 0 1 DoNothing z-> ; p = xLine kr r1 r2 d DoNothing-> ; o = fSinOsc ar f 0 }-> in return (mix (pan2 o p e)) }-> in audition . out 0 . mix =<< clone 9 chrd--{ var chrd = { var r0 = Rand.new(0.05, 0.5)- ; var r1 = Rand.new(-1, 1)- ; var r2 = Rand.new(-1, 1)- ; var r3 = Rand.new(0.15, 0.35)- ; var r4 = Rand.new(0.005, 0.01)- ; var m = [60, 65, 72, 77, 79, 84]- ; var ds = 3- ; var d = [5, 4, 5, 7, 4, 5] * ds- ; var f = XLine.kr(m, m + r0, d).midicps- ; var z_ = Env.linen(r3 * d, 0, (1 - r3) * d, r4)- ; var z = Env.sine(d.maxItem, r4)- ; var e = EnvGen.kr(z, 1, 1, 0, 1)- ; var p = XLine.kr(r1, r2, d)- ; var o = SinOsc.ar(f, 0)- ; Mix.ar(Pan2.ar(o, p, e)) }-; Out.ar(0, Mix.fill(9, chrd)) }.play
@@ -0,0 +1,16 @@+{ var chrd = { var r0 = Rand.new(0.05, 0.5)+ ; var r1 = Rand.new(-1, 1)+ ; var r2 = Rand.new(-1, 1)+ ; var r3 = Rand.new(0.15, 0.35)+ ; var r4 = Rand.new(0.005, 0.01)+ ; var m = [60, 65, 72, 77, 79, 84]+ ; var ds = 3+ ; var d = [5, 4, 5, 7, 4, 5] * ds+ ; var f = XLine.kr(m, m + r0, d).midicps+ ; var z_ = Env.linen(r3 * d, 0, (1 - r3) * d, r4)+ ; var z = Env.sine(d.maxItem, r4)+ ; var e = EnvGen.kr(z, 1, 1, 0, 1)+ ; var p = XLine.kr(r1, r2, d)+ ; var o = SinOsc.ar(f, 0)+ ; Mix.ar(Pan2.ar(o, p, e)) }+; Out.ar(0, Mix.fill(9, chrd)) }.play
@@ -0,0 +1,21 @@+-- clustered sines (jmcc)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.OverlapTexture++cs :: UGen+cs =+ let n = 80+ f1 = rand 'a' 100 1100+ f2 = 4 * f1+ sp = let y = (udup' n (f1 + rand 'a' 0 f2))+ in klangSpec y (map (f1 /) y) (replicate n 0)+ in uclone 'a' 2 (klang AR 1 0 sp * (0.3 / fromIntegral n))++main :: IO ()+main = xfadeTextureU (4,4,maxBound) cs++{-+audition (out 0 cs)+Control.Concurrent.forkIO (Sound.SC3.UGen.Dot.draw (out 0 cs))+-}
@@ -0,0 +1,32 @@+-- comb delay sweeps (jmcc)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.OverlapTexture+import System.Random++type ST = (Double,Double,StdGen)++wander :: ST -> ST+wander (s,e,g) =+ let (s',g') = randomR (-7,8) g+ (e',g'') = randomR (-7,8) g'+ in (foldToRange 50 120 (s + s')+ ,foldToRange 50 120 (e + e')+ ,g'')++cds :: ST -> (UGen,ST)+cds st =+ let (s,e,g) = wander st+ l = line KR (constant s) (constant e) 4 DoNothing+ w = whiteNoise 'c' AR * 0.005+ d = 1 / midiCPS l+ c = 1 / midiCPS (constant s)+ o = combC w 0.01 d (c * 1000)+ in (pan2 o (rand 'd' (-1) 1) 1,(s,e,g))++main :: IO ()+main = overlapTextureS (4/3,4/3,9,maxBound) cds (60,61,mkStdGen 3567824)++{-+Sound.SC3.UGen.Dot.draw cds+-}
@@ -0,0 +1,31 @@+-- contamination zone (jmcc)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.OverlapTexture++cz :: UGen+cz =+ let f = expRand 'a' 800 8000+ p = let e = lfNoise1 'a' KR (rand 'a' 0 3) * 0.0008 + 0.0022+ in pinkNoise 'a' AR * e+ s = sinOsc KR (linRand 'a' 0 1 0) 0 * (0.7 * f) + f+ k = let sp = klankSpec (udup' 4 (rand 'a' 50 2000))+ [1,1,1,1]+ (udup' 4 (rand 'a' 0.2 4))+ in abs (klank p 1 0 1 sp) * iChoose 'a' (mce [-1,1])+ r = rlpf k s 0.1+ a = lfPulse KR (linRand 'a' 0 150 0) 0 (rand 'a' 0.2 0.4)+ in pan2 r (lfNoise1 'a' KR (rand 'a' 0 1)) a++cz_pp :: UGen -> UGen+cz_pp =+ let f x = allpassN x 0.04 (udup 2 (rand 'a' 0 0.04)) 16+ in useq 'a' 6 f++main :: IO ()+main = overlapTextureU_pp (8,3,4,maxBound) cz 2 cz_pp++{-+audition (out 0 cz)+audition (out 0 (cz_pp cz))+-}
@@ -0,0 +1,21 @@+-- coolant (jmcc)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.OverlapTexture++coolant :: UGen+coolant =+ let p = 20+ s = onePole (udup 2 (brownNoise 'a' AR) * 0.0015) 0.95+ n = replicate p 1+ sp = mce [klankSpec (udup' p (rand 'a' 40 2400)) n n+ ,klankSpec (udup' p (rand 'b' 40 2400)) n n]+ in klank s 1 0 1 (mceTranspose sp)++main :: IO ()+main = xfadeTextureU (4,4,maxBound) coolant++{-+audition (out 0 coolant)+Sound.SC3.UGen.Dot.draw (out 0 coolant)+-}
@@ -0,0 +1,22 @@+-- cricket (rd)++import Sound.SC3.Lang.Control.OverlapTexture+import Sound.SC3.Monadic++cricket :: UId m => m UGen+cricket = do+ r1 <- clone 2 (rand 10 13)+ r2 <- clone 2 (rand 10 13)+ r3 <- clone 2 (rand 4 7)+ let t = impulse KR 0.7 0+ e = decay2 (impulse KR r1 0) 0.001 0.005+ f = sinOsc KR r2 0 * e * r3+ r4 <- clone 2 (tRand 2130 2230 t)+ return (sinOsc AR r4 0 * f * 0.25)++main :: IO ()+main = overlapTextureU (2,7,3,maxBound) =<< cricket++{-+audition . out 0 =<< cricket+-}
@@ -1,22 +0,0 @@-cricket (rd)--> import Sound.SC3.Monadic--> main =-> do { r1 <- clone 2 (rand 10 13)-> ; r2 <- clone 2 (rand 10 13)-> ; r3 <- clone 2 (rand 4 7)-> ; let { t = impulse kr 0.7 0-> ; e = decay2 (impulse kr r1 0) 0.001 0.005-> ; f = sinOsc kr r2 0 * e * r3 }-> in do { r4 <- clone 2 (tRand 2220 2227 t)-> ; audition (out 0 (sinOsc ar r4 0 * f * 0.25)) } }--{ var r1 = Array.fill(2, { Rand.new(10, 13) })-; var r2 = Array.fill(2, { Rand.new(10, 13) })-; var r3 = Array.fill(2, { Rand.new(4, 7) })-; var t = Impulse.kr(0.7, 0)-; var e = Decay2.kr(Impulse.kr(r1, 0), 0.001, 0.005)-; var f = SinOsc.kr(r2, 0) * e * r3-; var r4 = Array.fill(2, { TRand.kr(2220, 2227, t) })-; Out.ar(0, SinOsc.ar(r4, 0) * f * 0.25) }.play
@@ -0,0 +1,8 @@+{ var r1 = Array.fill(2, { Rand.new(10, 13) })+; var r2 = Array.fill(2, { Rand.new(10, 13) })+; var r3 = Array.fill(2, { Rand.new(4, 7) })+; var t = Impulse.kr(0.7, 0)+; var e = Decay2.kr(Impulse.kr(r1, 0), 0.001, 0.005)+; var f = SinOsc.kr(r2, 0) * e * r3+; var r4 = Array.fill(2, { TRand.kr(2220, 2227, t) })+; Out.ar(0, SinOsc.ar(r4, 0) * f * 0.25) }.play
@@ -0,0 +1,133 @@+-- crotale-sine (rd)++import Sound.SC3.ID+import Sound.SC3.Lang.Pattern.ID++crotale_sine :: UGen+crotale_sine =+ let (cf,ca) = crotale_data+ g = control KR "gate" 1+ m = control KR "m" 1+ e = let p = envASR 1 1 1 (EnvNum (-4))+ in envGen KR g 1 0 1 RemoveSynth p+ fn m' f' a' =+ let f = constant f'+ a = constant a'+ r0 = rand (f+0) 0 (2 * pi)+ r1 = rand (f+1) 0.1 0.3+ r2 = rand (f+2) 0.025 0.1+ r3 = rand (f+3) 0 (2 * pi)+ o = sinOsc AR (f * midiRatio (m' - 12)) r0+ e' = e * sinOsc KR r1 0 * a+ in pan2 o (sinOsc KR r2 r3) e'+ in sum (zipWith (fn m) cf ca) * 0.1++main :: IO ()+main = do+ let s = synthdef "crotale-sine" (out 0 crotale_sine)+ audition (s,pbind [("m",pwhitei 'a' 0 12 inf)+ ,("dur",pxrand 'b' [1,2,3] inf)+ ,("sustain",6)])++crotale_data :: ([Double],[Double])+crotale_data =+ ([35.45676040649414+ ,128.59849548339844+ ,346.9721984863281+ ,483.5544128417969+ ,1049.2449951171875+ ,1564.0279541015625+ ,1756.3399658203125+ ,3391.666015625+ ,3451.802001953125+ ,3497.261962890625+ ,3596.89794921875+ ,3696.739013671875+ ,3835.235107421875+ ,3845.955078125+ ,4254.85107421875+ ,4407.533203125+ ,4415.26416015625+ ,4552.865234375+ ,5538.076171875+ ,5637.73681640625+ ,5690.2978515625+ ,5728.0068359375+ ,5764.27685546875+ ,5824.4189453125+ ,6377.60498046875+ ,6544.35009765625+ ,6807.14404296875+ ,6994.97021484375+ ,7026.84619140625+ ,7144.5859375+ ,7269.61279296875+ ,7393.6708984375+ ,7897.259765625+ ,8040.4580078125+ ,8157.77099609375+ ,8225.01953125+ ,9126.150390625+ ,9488.529296875+ ,9916.408203125+ ,10155.599609375+ ,11715.9599609375+ ,12111.830078125+ ,12339.990234375+ ,12417.669921875+ ,12459.2802734375+ ,12618.330078125+ ,13116.490234375+ ,13201.1298828125+ ,13297.830078125+ ,13533.75]+ ,[0.0012827360769733787+ ,0.0008040848188102245+ ,0.017361238598823547+ ,0.004835359752178192+ ,0.004413491114974022+ ,0.004110544919967651+ ,0.0003338181704748422+ ,0.0036140112206339836+ ,0.006919348146766424+ ,0.0003224937245249748+ ,0.0006031467346474528+ ,0.06686479598283768+ ,0.000605064386036247+ ,0.003602313343435526+ ,0.0002835785271599889+ ,0.015243238769471645+ ,0.020536603406071663+ ,0.016677580773830414+ ,0.0009245267719961703+ ,0.20205098390579224+ ,0.0012542791664600372+ ,0.012705927714705467+ ,0.0002523190632928163+ ,0.0004866079252678901+ ,0.0006429700297303498+ ,0.0007763264584355056+ ,0.2081160992383957+ ,0.0024918108247220516+ ,0.00193469924852252+ ,0.005231771152466536+ ,0.0069242212921381+ ,0.001203975174576044+ ,0.2050020843744278+ ,0.04060448706150055+ ,0.0038344631902873516+ ,0.002189427148550749+ ,0.18056060373783112+ ,0.002192433224990964+ ,0.006516554858535528+ ,0.009982921183109283+ ,0.004745401442050934+ ,0.046154771000146866+ ,0.000510294979903847+ ,0.0018905038014054298+ ,0.0019782145973294973+ ,0.006729386281222105+ ,0.0023426134139299393+ ,0.0024002245627343655+ ,0.03515550494194031+ ,0.0014084168942645192])
@@ -1,170 +0,0 @@-crotale-sine (rd)--> import Sound.SC3.ID--> main =-> let { crotale = ( [ 35.45676040649414-> , 128.59849548339844-> , 346.9721984863281-> , 483.5544128417969-> , 1049.2449951171875-> , 1564.0279541015625-> , 1756.3399658203125-> , 3391.666015625-> , 3451.802001953125-> , 3497.261962890625-> , 3596.89794921875-> , 3696.739013671875-> , 3835.235107421875-> , 3845.955078125-> , 4254.85107421875-> , 4407.533203125-> , 4415.26416015625-> , 4552.865234375-> , 5538.076171875-> , 5637.73681640625-> , 5690.2978515625-> , 5728.0068359375-> , 5764.27685546875-> , 5824.4189453125-> , 6377.60498046875-> , 6544.35009765625-> , 6807.14404296875-> , 6994.97021484375-> , 7026.84619140625-> , 7144.5859375-> , 7269.61279296875-> , 7393.6708984375-> , 7897.259765625-> , 8040.4580078125-> , 8157.77099609375-> , 8225.01953125-> , 9126.150390625-> , 9488.529296875-> , 9916.408203125-> , 10155.599609375-> , 11715.9599609375-> , 12111.830078125-> , 12339.990234375-> , 12417.669921875-> , 12459.2802734375-> , 12618.330078125-> , 13116.490234375-> , 13201.1298828125-> , 13297.830078125-> , 13533.75 ]-> , [ 0.0012827360769733787-> , 0.0008040848188102245-> , 0.017361238598823547-> , 0.004835359752178192-> , 0.004413491114974022-> , 0.004110544919967651-> , 0.0003338181704748422-> , 0.0036140112206339836-> , 0.006919348146766424-> , 0.0003224937245249748-> , 0.0006031467346474528-> , 0.06686479598283768-> , 0.000605064386036247-> , 0.003602313343435526-> , 0.0002835785271599889-> , 0.015243238769471645-> , 0.020536603406071663-> , 0.016677580773830414-> , 0.0009245267719961703-> , 0.20205098390579224-> , 0.0012542791664600372-> , 0.012705927714705467-> , 0.0002523190632928163-> , 0.0004866079252678901-> , 0.0006429700297303498-> , 0.0007763264584355056-> , 0.2081160992383957-> , 0.0024918108247220516-> , 0.00193469924852252-> , 0.005231771152466536-> , 0.0069242212921381-> , 0.001203975174576044-> , 0.2050020843744278-> , 0.04060448706150055-> , 0.0038344631902873516-> , 0.002189427148550749-> , 0.18056060373783112-> , 0.002192433224990964-> , 0.006516554858535528-> , 0.009982921183109283-> , 0.004745401442050934-> , 0.046154771000146866-> , 0.000510294979903847-> , 0.0018905038014054298-> , 0.0019782145973294973-> , 0.006729386281222105-> , 0.0023426134139299393-> , 0.0024002245627343655-> , 0.03515550494194031-> , 0.0014084168942645192 ]-> , [ 5.203680992126465-> , 1.7034343481063843-> , 40.16516876220703-> , 27.282501220703125-> , 0.8950523138046265-> , 42.84742736816406-> , 2.6603667736053467-> , 15.7678861618042-> , 6.848367214202881-> , 3.2325007915496826-> , 1.7343382835388184-> , 2.0202419757843018-> , 4.7279052734375-> , 9.400103569030762-> , 0.7102512717247009-> , 37.494625091552734-> , 36.24879455566406-> , 29.172658920288086-> , 3.891019344329834-> , 4.757885456085205-> , 3.851426124572754-> , 20.90781021118164-> , 3.732874870300293-> , 2.3834102153778076-> , 10.443285942077637-> , 8.795611381530762-> , 20.98564338684082-> , 18.01180076599121-> , 25.297883987426758-> , 14.819819450378418-> , 42.39189910888672-> , 2.9485135078430176-> , 11.043763160705566-> , 49.55165100097656-> , 29.882694244384766-> , 10.527188301086426-> , 23.5572452545166-> , 26.55561637878418-> , 45.099605560302734-> , 22.550390243530273-> , 36.46126174926758-> , 11.826201438903809-> , 16.818185806274414-> , 14.903121948242188-> , 32.81113815307617-> , 43.1389045715332-> , 12.289558410644531-> , 11.498942375183105-> , 10.465788841247559-> , 24.93169593811035 ] )-> ; (cf, ca, _) = crotale-> ; fn m f a = let { r0 = rand (f+0) 0 (2 * pi)-> ; r1 = rand (f+1) 0.1 0.3-> ; r2 = rand (f+2) 0.025 0.1-> ; r3 = rand (f+3) 0 (2 * pi)-> ; o = sinOsc AR (f * midiRatio m) r0-> ; a' = a * sinOsc KR r1 0 }-> in pan2 o (sinOsc KR r2 r3) a'-> ; oo = let { x = control KR "m" 1 }-> in out 0 (sum (zipWith (fn x) cf ca) * 0.1)-> }-> in withSC3 (\fd -> do { _ <- async fd (d_recv (synthdef "c" oo))-> ; send fd (s_new "c" (-1) AddToTail 1 [("m",-12)])-> ; send fd (s_new "c" (-1) AddToTail 1 [("m",-9)])-> })
@@ -0,0 +1,176 @@+-- crotale (rd)++import Sound.SC3.ID++crotale :: UGen+crotale =+ let (cf,ca,cd) = crotale_data+ ps = mce [-12,-5,0,2,4,5,7,12]+ n = pinkNoise 'a' AR+ t = dust 'a' KR 3+ fs = select (tIRand 'a' 0 7 t) ps+ g = tRand 'a' 0 1 t+ fo = tRand 'b' 0 1 t+ ds = tRand 'c' 2 7 t+ p = tRand 'd' (-1) 1 t+ s = decay2 t 0.06 0.01 * n * g+ ks = klankSpec' cf ca (map recip cd)+ k = dynKlank s (midiRatio fs) fo ds ks+ in pan2 k p 1++main :: IO ()+main = audition (out 0 crotale)++crotale_data :: ([Double],[Double],[Double])+crotale_data =+ ([35.45676040649414+ ,128.59849548339844+ ,346.9721984863281+ ,483.5544128417969+ ,1049.2449951171875+ ,1564.0279541015625+ ,1756.3399658203125+ ,3391.666015625+ ,3451.802001953125+ ,3497.261962890625+ ,3596.89794921875+ ,3696.739013671875+ ,3835.235107421875+ ,3845.955078125+ ,4254.85107421875+ ,4407.533203125+ ,4415.26416015625+ ,4552.865234375+ ,5538.076171875+ ,5637.73681640625+ ,5690.2978515625+ ,5728.0068359375+ ,5764.27685546875+ ,5824.4189453125+ ,6377.60498046875+ ,6544.35009765625+ ,6807.14404296875+ ,6994.97021484375+ ,7026.84619140625+ ,7144.5859375+ ,7269.61279296875+ ,7393.6708984375+ ,7897.259765625+ ,8040.4580078125+ ,8157.77099609375+ ,8225.01953125+ ,9126.150390625+ ,9488.529296875+ ,9916.408203125+ ,10155.599609375+ ,11715.9599609375+ ,12111.830078125+ ,12339.990234375+ ,12417.669921875+ ,12459.2802734375+ ,12618.330078125+ ,13116.490234375+ ,13201.1298828125+ ,13297.830078125+ ,13533.75]+ ,[0.0012827360769733787+ ,0.0008040848188102245+ ,0.017361238598823547+ ,0.004835359752178192+ ,0.004413491114974022+ ,0.004110544919967651+ ,0.0003338181704748422+ ,0.0036140112206339836+ ,0.006919348146766424+ ,0.0003224937245249748+ ,0.0006031467346474528+ ,0.06686479598283768+ ,0.000605064386036247+ ,0.003602313343435526+ ,0.0002835785271599889+ ,0.015243238769471645+ ,0.020536603406071663+ ,0.016677580773830414+ ,0.0009245267719961703+ ,0.20205098390579224+ ,0.0012542791664600372+ ,0.012705927714705467+ ,0.0002523190632928163+ ,0.0004866079252678901+ ,0.0006429700297303498+ ,0.0007763264584355056+ ,0.2081160992383957+ ,0.0024918108247220516+ ,0.00193469924852252+ ,0.005231771152466536+ ,0.0069242212921381+ ,0.001203975174576044+ ,0.2050020843744278+ ,0.04060448706150055+ ,0.0038344631902873516+ ,0.002189427148550749+ ,0.18056060373783112+ ,0.002192433224990964+ ,0.006516554858535528+ ,0.009982921183109283+ ,0.004745401442050934+ ,0.046154771000146866+ ,0.000510294979903847+ ,0.0018905038014054298+ ,0.0019782145973294973+ ,0.006729386281222105+ ,0.0023426134139299393+ ,0.0024002245627343655+ ,0.03515550494194031+ ,0.0014084168942645192]+ ,[5.203680992126465+ ,1.7034343481063843+ ,40.16516876220703+ ,27.282501220703125+ ,0.8950523138046265+ ,42.84742736816406+ ,2.6603667736053467+ ,15.7678861618042+ ,6.848367214202881+ ,3.2325007915496826+ ,1.7343382835388184+ ,2.0202419757843018+ ,4.7279052734375+ ,9.400103569030762+ ,0.7102512717247009+ ,37.494625091552734+ ,36.24879455566406+ ,29.172658920288086+ ,3.891019344329834+ ,4.757885456085205+ ,3.851426124572754+ ,20.90781021118164+ ,3.732874870300293+ ,2.3834102153778076+ ,10.443285942077637+ ,8.795611381530762+ ,20.98564338684082+ ,18.01180076599121+ ,25.297883987426758+ ,14.819819450378418+ ,42.39189910888672+ ,2.9485135078430176+ ,11.043763160705566+ ,49.55165100097656+ ,29.882694244384766+ ,10.527188301086426+ ,23.5572452545166+ ,26.55561637878418+ ,45.099605560302734+ ,22.550390243530273+ ,36.46126174926758+ ,11.826201438903809+ ,16.818185806274414+ ,14.903121948242188+ ,32.81113815307617+ ,43.1389045715332+ ,12.289558410644531+ ,11.498942375183105+ ,10.465788841247559+ ,24.93169593811035])+
@@ -1,333 +0,0 @@-crotale (rd)--> import Sound.SC3.ID--> main =-> let { crotale = ( [ 35.45676040649414-> , 128.59849548339844-> , 346.9721984863281-> , 483.5544128417969-> , 1049.2449951171875-> , 1564.0279541015625-> , 1756.3399658203125-> , 3391.666015625-> , 3451.802001953125-> , 3497.261962890625-> , 3596.89794921875-> , 3696.739013671875-> , 3835.235107421875-> , 3845.955078125-> , 4254.85107421875-> , 4407.533203125-> , 4415.26416015625-> , 4552.865234375-> , 5538.076171875-> , 5637.73681640625-> , 5690.2978515625-> , 5728.0068359375-> , 5764.27685546875-> , 5824.4189453125-> , 6377.60498046875-> , 6544.35009765625-> , 6807.14404296875-> , 6994.97021484375-> , 7026.84619140625-> , 7144.5859375-> , 7269.61279296875-> , 7393.6708984375-> , 7897.259765625-> , 8040.4580078125-> , 8157.77099609375-> , 8225.01953125-> , 9126.150390625-> , 9488.529296875-> , 9916.408203125-> , 10155.599609375-> , 11715.9599609375-> , 12111.830078125-> , 12339.990234375-> , 12417.669921875-> , 12459.2802734375-> , 12618.330078125-> , 13116.490234375-> , 13201.1298828125-> , 13297.830078125-> , 13533.75 ]-> , [ 0.0012827360769733787-> , 0.0008040848188102245-> , 0.017361238598823547-> , 0.004835359752178192-> , 0.004413491114974022-> , 0.004110544919967651-> , 0.0003338181704748422-> , 0.0036140112206339836-> , 0.006919348146766424-> , 0.0003224937245249748-> , 0.0006031467346474528-> , 0.06686479598283768-> , 0.000605064386036247-> , 0.003602313343435526-> , 0.0002835785271599889-> , 0.015243238769471645-> , 0.020536603406071663-> , 0.016677580773830414-> , 0.0009245267719961703-> , 0.20205098390579224-> , 0.0012542791664600372-> , 0.012705927714705467-> , 0.0002523190632928163-> , 0.0004866079252678901-> , 0.0006429700297303498-> , 0.0007763264584355056-> , 0.2081160992383957-> , 0.0024918108247220516-> , 0.00193469924852252-> , 0.005231771152466536-> , 0.0069242212921381-> , 0.001203975174576044-> , 0.2050020843744278-> , 0.04060448706150055-> , 0.0038344631902873516-> , 0.002189427148550749-> , 0.18056060373783112-> , 0.002192433224990964-> , 0.006516554858535528-> , 0.009982921183109283-> , 0.004745401442050934-> , 0.046154771000146866-> , 0.000510294979903847-> , 0.0018905038014054298-> , 0.0019782145973294973-> , 0.006729386281222105-> , 0.0023426134139299393-> , 0.0024002245627343655-> , 0.03515550494194031-> , 0.0014084168942645192 ]-> , [ 5.203680992126465-> , 1.7034343481063843-> , 40.16516876220703-> , 27.282501220703125-> , 0.8950523138046265-> , 42.84742736816406-> , 2.6603667736053467-> , 15.7678861618042-> , 6.848367214202881-> , 3.2325007915496826-> , 1.7343382835388184-> , 2.0202419757843018-> , 4.7279052734375-> , 9.400103569030762-> , 0.7102512717247009-> , 37.494625091552734-> , 36.24879455566406-> , 29.172658920288086-> , 3.891019344329834-> , 4.757885456085205-> , 3.851426124572754-> , 20.90781021118164-> , 3.732874870300293-> , 2.3834102153778076-> , 10.443285942077637-> , 8.795611381530762-> , 20.98564338684082-> , 18.01180076599121-> , 25.297883987426758-> , 14.819819450378418-> , 42.39189910888672-> , 2.9485135078430176-> , 11.043763160705566-> , 49.55165100097656-> , 29.882694244384766-> , 10.527188301086426-> , 23.5572452545166-> , 26.55561637878418-> , 45.099605560302734-> , 22.550390243530273-> , 36.46126174926758-> , 11.826201438903809-> , 16.818185806274414-> , 14.903121948242188-> , 32.81113815307617-> , 43.1389045715332-> , 12.289558410644531-> , 11.498942375183105-> , 10.465788841247559-> , 24.93169593811035 ] )-> ; (cf, ca, cd) = crotale-> ; ps = mce [-12, -5, 0, 2, 4, 5, 7, 12]-> ; n = pinkNoise 'a' ar-> ; t = dust 'a' kr 3-> ; fs = select (tiRand 'a' 0 7 t) ps-> ; g = tRand 'a' 0 1 t-> ; fo = tRand 'b' 0 1 t-> ; ds = tRand 'c' 2 7 t-> ; p = tRand 'd' (-1) 1 t-> ; s = decay2 t 0.06 0.01 * n * g-> ; ks = klankSpec cf ca (map recip cd)-> ; k = dynKlank s (midiRatio fs) fo ds ks }-> in audition (out 0 (pan2 k p 1))--{ var crotale = [ [ 35.45676040649414- , 128.59849548339844- , 346.9721984863281- , 483.5544128417969- , 1049.2449951171875- , 1564.0279541015625- , 1756.3399658203125- , 3391.666015625- , 3451.802001953125- , 3497.261962890625- , 3596.89794921875- , 3696.739013671875- , 3835.235107421875- , 3845.955078125- , 4254.85107421875- , 4407.533203125- , 4415.26416015625- , 4552.865234375- , 5538.076171875- , 5637.73681640625- , 5690.2978515625- , 5728.0068359375- , 5764.27685546875- , 5824.4189453125- , 6377.60498046875- , 6544.35009765625- , 6807.14404296875- , 6994.97021484375- , 7026.84619140625- , 7144.5859375- , 7269.61279296875- , 7393.6708984375- , 7897.259765625- , 8040.4580078125- , 8157.77099609375- , 8225.01953125- , 9126.150390625- , 9488.529296875- , 9916.408203125- , 10155.599609375- , 11715.9599609375- , 12111.830078125- , 12339.990234375- , 12417.669921875- , 12459.2802734375- , 12618.330078125- , 13116.490234375- , 13201.1298828125- , 13297.830078125- , 13533.75 ]- , [ 0.0012827360769733787- , 0.0008040848188102245- , 0.017361238598823547- , 0.004835359752178192- , 0.004413491114974022- , 0.004110544919967651- , 0.0003338181704748422- , 0.0036140112206339836- , 0.006919348146766424- , 0.0003224937245249748- , 0.0006031467346474528- , 0.06686479598283768- , 0.000605064386036247- , 0.003602313343435526- , 0.0002835785271599889- , 0.015243238769471645- , 0.020536603406071663- , 0.016677580773830414- , 0.0009245267719961703- , 0.20205098390579224- , 0.0012542791664600372- , 0.012705927714705467- , 0.0002523190632928163- , 0.0004866079252678901- , 0.0006429700297303498- , 0.0007763264584355056- , 0.2081160992383957- , 0.0024918108247220516- , 0.00193469924852252- , 0.005231771152466536- , 0.0069242212921381- , 0.001203975174576044- , 0.2050020843744278- , 0.04060448706150055- , 0.0038344631902873516- , 0.002189427148550749- , 0.18056060373783112- , 0.002192433224990964- , 0.006516554858535528- , 0.009982921183109283- , 0.004745401442050934- , 0.046154771000146866- , 0.000510294979903847- , 0.0018905038014054298- , 0.0019782145973294973- , 0.006729386281222105- , 0.0023426134139299393- , 0.0024002245627343655- , 0.03515550494194031- , 0.0014084168942645192 ]- , [ 5.203680992126465- , 1.7034343481063843- , 40.16516876220703- , 27.282501220703125- , 0.8950523138046265- , 42.84742736816406- , 2.6603667736053467- , 15.7678861618042- , 6.848367214202881- , 3.2325007915496826- , 1.7343382835388184- , 2.0202419757843018- , 4.7279052734375- , 9.400103569030762- , 0.7102512717247009- , 37.494625091552734- , 36.24879455566406- , 29.172658920288086- , 3.891019344329834- , 4.757885456085205- , 3.851426124572754- , 20.90781021118164- , 3.732874870300293- , 2.3834102153778076- , 10.443285942077637- , 8.795611381530762- , 20.98564338684082- , 18.01180076599121- , 25.297883987426758- , 14.819819450378418- , 42.39189910888672- , 2.9485135078430176- , 11.043763160705566- , 49.55165100097656- , 29.882694244384766- , 10.527188301086426- , 23.5572452545166- , 26.55561637878418- , 45.099605560302734- , 22.550390243530273- , 36.46126174926758- , 11.826201438903809- , 16.818185806274414- , 14.903121948242188- , 32.81113815307617- , 43.1389045715332- , 12.289558410644531- , 11.498942375183105- , 10.465788841247559- , 24.93169593811035 ] ]-; var cf = crotale[0]-; var ca = crotale[1]-; var cd = crotale[2]-; var ps = [-12, -5, 0, 2, 4, 5, 7, 12]-; var n = PinkNoise.ar()-; var t = Dust.kr(3)-; var fs = Select.kr(TIRand.kr(0, 7, t), ps)-; var g = TRand.kr(0, 1, t)-; var fo = TRand.kr(0, 1, t)-; var ds = TRand.kr(2, 7, t)-; var p = TRand.kr(-1, 1, t)-; var s = Decay2.kr(t, 0.06, 0.01) * n * g-; var k = DynKlank.ar(`[cf, ca, cd.reciprocal], s, fs.midiratio, fo, ds)-; Out.ar(0, Pan2.ar(k, p, 1)) }.play
@@ -0,0 +1,164 @@+{ var crotale = [ [ 35.45676040649414+ , 128.59849548339844+ , 346.9721984863281+ , 483.5544128417969+ , 1049.2449951171875+ , 1564.0279541015625+ , 1756.3399658203125+ , 3391.666015625+ , 3451.802001953125+ , 3497.261962890625+ , 3596.89794921875+ , 3696.739013671875+ , 3835.235107421875+ , 3845.955078125+ , 4254.85107421875+ , 4407.533203125+ , 4415.26416015625+ , 4552.865234375+ , 5538.076171875+ , 5637.73681640625+ , 5690.2978515625+ , 5728.0068359375+ , 5764.27685546875+ , 5824.4189453125+ , 6377.60498046875+ , 6544.35009765625+ , 6807.14404296875+ , 6994.97021484375+ , 7026.84619140625+ , 7144.5859375+ , 7269.61279296875+ , 7393.6708984375+ , 7897.259765625+ , 8040.4580078125+ , 8157.77099609375+ , 8225.01953125+ , 9126.150390625+ , 9488.529296875+ , 9916.408203125+ , 10155.599609375+ , 11715.9599609375+ , 12111.830078125+ , 12339.990234375+ , 12417.669921875+ , 12459.2802734375+ , 12618.330078125+ , 13116.490234375+ , 13201.1298828125+ , 13297.830078125+ , 13533.75 ]+ , [ 0.0012827360769733787+ , 0.0008040848188102245+ , 0.017361238598823547+ , 0.004835359752178192+ , 0.004413491114974022+ , 0.004110544919967651+ , 0.0003338181704748422+ , 0.0036140112206339836+ , 0.006919348146766424+ , 0.0003224937245249748+ , 0.0006031467346474528+ , 0.06686479598283768+ , 0.000605064386036247+ , 0.003602313343435526+ , 0.0002835785271599889+ , 0.015243238769471645+ , 0.020536603406071663+ , 0.016677580773830414+ , 0.0009245267719961703+ , 0.20205098390579224+ , 0.0012542791664600372+ , 0.012705927714705467+ , 0.0002523190632928163+ , 0.0004866079252678901+ , 0.0006429700297303498+ , 0.0007763264584355056+ , 0.2081160992383957+ , 0.0024918108247220516+ , 0.00193469924852252+ , 0.005231771152466536+ , 0.0069242212921381+ , 0.001203975174576044+ , 0.2050020843744278+ , 0.04060448706150055+ , 0.0038344631902873516+ , 0.002189427148550749+ , 0.18056060373783112+ , 0.002192433224990964+ , 0.006516554858535528+ , 0.009982921183109283+ , 0.004745401442050934+ , 0.046154771000146866+ , 0.000510294979903847+ , 0.0018905038014054298+ , 0.0019782145973294973+ , 0.006729386281222105+ , 0.0023426134139299393+ , 0.0024002245627343655+ , 0.03515550494194031+ , 0.0014084168942645192 ]+ , [ 5.203680992126465+ , 1.7034343481063843+ , 40.16516876220703+ , 27.282501220703125+ , 0.8950523138046265+ , 42.84742736816406+ , 2.6603667736053467+ , 15.7678861618042+ , 6.848367214202881+ , 3.2325007915496826+ , 1.7343382835388184+ , 2.0202419757843018+ , 4.7279052734375+ , 9.400103569030762+ , 0.7102512717247009+ , 37.494625091552734+ , 36.24879455566406+ , 29.172658920288086+ , 3.891019344329834+ , 4.757885456085205+ , 3.851426124572754+ , 20.90781021118164+ , 3.732874870300293+ , 2.3834102153778076+ , 10.443285942077637+ , 8.795611381530762+ , 20.98564338684082+ , 18.01180076599121+ , 25.297883987426758+ , 14.819819450378418+ , 42.39189910888672+ , 2.9485135078430176+ , 11.043763160705566+ , 49.55165100097656+ , 29.882694244384766+ , 10.527188301086426+ , 23.5572452545166+ , 26.55561637878418+ , 45.099605560302734+ , 22.550390243530273+ , 36.46126174926758+ , 11.826201438903809+ , 16.818185806274414+ , 14.903121948242188+ , 32.81113815307617+ , 43.1389045715332+ , 12.289558410644531+ , 11.498942375183105+ , 10.465788841247559+ , 24.93169593811035 ] ]+; var cf = crotale[0]+; var ca = crotale[1]+; var cd = crotale[2]+; var ps = [-12, -5, 0, 2, 4, 5, 7, 12]+; var n = PinkNoise.ar()+; var t = Dust.kr(3)+; var fs = Select.kr(TIRand.kr(0, 7, t), ps)+; var g = TRand.kr(0, 1, t)+; var fo = TRand.kr(0, 1, t)+; var ds = TRand.kr(2, 7, t)+; var p = TRand.kr(-1, 1, t)+; var s = Decay2.kr(t, 0.06, 0.01) * n * g+; var k = DynKlank.ar(`[cf, ca, cd.reciprocal], s, fs.midiratio, fo, ds)+; Out.ar(0, Pan2.ar(k, p, 1)) }.play
@@ -0,0 +1,19 @@+-- cut-outs (rd)++import Sound.SC3.Monadic++cut_outs :: (Functor m,UId m) => m UGen+cut_outs = do+ let t = impulse AR 22 0 * (sinOsc KR 0.5 0 + 1)+ x = mouseX' KR 0.005 0.12 Exponential 0.1+ y = mouseY' KR 0.01 0.52 Exponential 0.1+ n = do n1 <- lfNoise0 KR 2+ n2 <- coinGate (0.05 + n1 + y * 0.4 + t * 0.5) (t * 0.5)+ n3 <- tExpRand (mce2 500 900) 1600 t+ return (ringz n2 n3 x)+ s <- fmap sum (sequence (replicate 3 n))+ b <- tRand 0 1 =<< dust KR 8+ return (mrg [clip2 s (in' 1 KR 0) * 0.25,out 0 b])++main :: IO ()+main = audition . out 0 =<< cut_outs
@@ -1,30 +0,0 @@-cut-outs (rd)--> import Sound.SC3.Monadic-> import qualified Sound.SC3.ID as I--> main =-> let { t = impulse ar 22 0 * (sinOsc kr 0.5 0 + 1)-> ; x = linLin (I.lfNoise0 'a' KR 1) (-1) 1 0.005 0.012-> {- ; x = mouseX kr 0.005 0.12 Exponential 0.1 -}-> ; y = linLin (I.lfNoise0 'b' KR 1) (-1) 1 0.01 0.52-> {- ; y = mouseY kr 0.01 0.52 Exponential 0.1 -}-> ; n = do { n1 <- lfNoise0 kr 2-> ; n2 <- coinGate (0.05 + n1 + y * 0.4 + t * 0.5) (t * 0.5)-> ; n3 <- tExpRand (mce2 500 900) 1600 t-> ; return (ringz n2 n3 x) } }-> in do { s <- fmap sum (sequence (replicate 3 n))-> ; b <- tRand 0 1 =<< dust kr 8-> ; audition (mrg [out 0 b, out 0 (clip2 s (in' 1 kr 0) * 0.25)]) }--{ var t = Impulse.ar(22, 0) * (SinOsc.kr(0.5, 0) + 1)-; var x = MouseX.kr(0.005, 0.12, 'exponential', 0.1)-; var y = MouseY.kr(0.01, 0.52, 'exponential', 0.1)-; var n = { var n1 = LFNoise0.kr(2)- ; var n2 = CoinGate.ar(0.05 + n1 + (y * 0.4) + (t * 0.5), t * 0.5)- ; var n3 = TExpRand.ar([500, 900], 1600, t)- ; Ringz.ar(n2, n3, x) }-; var s = Mix.fill(3, n)-; var b = TRand.kr(0, 1, Dust.kr(8))-; Out.kr(0, b)-; Out.ar(0, s.clip2(In.kr(0, 1)) * 0.25) }.play
@@ -0,0 +1,11 @@+{ var t = Impulse.ar(22, 0) * (SinOsc.kr(0.5, 0) + 1)+; var x = MouseX.kr(0.005, 0.12, 'exponential', 0.1)+; var y = MouseY.kr(0.01, 0.52, 'exponential', 0.1)+; var n = { var n1 = LFNoise0.kr(2)+ ; var n2 = CoinGate.ar(0.05 + n1 + (y * 0.4) + (t * 0.5), t * 0.5)+ ; var n3 = TExpRand.ar([500, 900], 1600, t)+ ; Ringz.ar(n2, n3, x) }+; var s = Mix.fill(3, n)+; var b = TRand.kr(0, 1, Dust.kr(8))+; Out.kr(0, b)+; Out.ar(0, s.clip2(In.kr(0, 1)) * 0.25) }.play
@@ -0,0 +1,24 @@+-- cymbalism accellerando (jmcc)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.OverlapTexture++enumFromN :: Enum a => a -> Int -> [Int]+enumFromN e i = let j = fromEnum e in [j .. j + i]++cymbalism_accellerando :: UGen+cymbalism_accellerando =+ let y n = let f1 = rand n 500 2500+ f2 = rand n 0 8000+ f = map (\e -> rand e f1 (f1 + f2)) (enumFromN n 15)+ rt = map (\e -> rand e 1 5) (enumFromN n 15)+ in klankSpec f (replicate 15 1) rt+ z = mce2 (y 'a') (y 'A')+ w = whiteNoise 'α' AR * 0.02+ tf = xLine KR (linRand 'β' 0.5 4.5 0) (rand 'γ' 0.5 35.5) 12 DoNothing+ t = impulse AR tf 0+ s = decay t 0.004 * w+ in klank s 1 0 1 (mceTranspose z)++main :: IO ()+main = overlapTextureU (4,4,4,maxBound) cymbalism_accellerando
@@ -0,0 +1,26 @@+-- cymbalism (jmcc)++import Sound.SC3.Lang.Control.OverlapTexture+import Sound.SC3.Monadic++cymbalism :: (Functor m,UId m) => m UGen+cymbalism = do+ let p = replicate 15+ f1 <- rand 500 2500+ f2 <- rand 0 8000+ let y = do f <- sequence (p (rand f1 (f1 + f2)))+ rt <- sequence (p (rand 1 5))+ return (klankSpec f (p 1) rt)+ z <- clone 2 y+ n <- fmap (* 0.03) (whiteNoise AR)+ tf <- rand 0.5 3.5+ let t = impulse AR tf 0+ s = decay t 0.004 * n+ return (klank s 1 0 1 (mceTranspose z))++main :: IO ()+main = overlapTextureU (3,6,6,maxBound) =<< cymbalism++{-+main = audition . out 0 =<< cymbalism+-}
@@ -1,30 +0,0 @@-cymbalism (jmcc)--> import Sound.SC3.Monadic--> main =-> let p = replicate 15-> in do { f1 <- rand 500 2500-> ; f2 <- rand 0 8000-> ; let y = do { f <- sequence (p (rand f1 (f1 + f2)))-> ; rt <- sequence (p (rand 1 5))-> ; return (klankSpec f (p 1) rt) }-> in do { z <- clone 2 y-> ; n <- fmap (* 0.03) (whiteNoise ar)-> ; tf <- rand 0.5 3.5-> ; let { t = impulse ar tf 0-> ; s = decay t 0.004 * n-> ; k = klank s 1 0 1 (mceTranspose z) }-> in audition (out 0 k) } }--{ var p = 15-; var f1 = Rand.new(500, 2500)-; var f2 = Rand.new(0, 8000)-; var y = { var f = Array.fill(p, { f1 + Rand.new(0, f2) } )- ; var rt = Array.fill(p, { 1 + Rand.new(0, 4) })- ; `[f, nil, rt] }-; var z = Array.fill(2, y)-; var t = Impulse.ar(Rand.new(0, 3) + 0.5, 0)-; var n = WhiteNoise.ar() * 0.03-; var s = Decay.ar(t, 0.004) * n-; Out.ar(0, Klank.ar(z, s)) }.play
@@ -0,0 +1,11 @@+{var p = 15+;var f1 = Rand.new(500,2500)+;var f2 = Rand.new(0,8000)+;var y = {var f = Array.fill(p,{f1 + Rand.new(0,f2)} )+ ;var rt = Array.fill(p,{1 + Rand.new(0,4)})+ ;`[f,nil,rt]}+;var z = Array.fill(2,y)+;var t = Impulse.ar(Rand.new(0,3) + 0.5,0)+;var n = WhiteNoise.ar() * 0.03+;var s = Decay.ar(t,0.004) * n+;Out.ar(0,Klank.ar(z,s))}.play
@@ -0,0 +1,20 @@+-- dark sea horns (jl)+-- http://sccode.org/1-j#c51++import Sound.SC3.ID++dark_sea_horns :: UGen+dark_sea_horns =+ let n = lfNoise1+ x = localIn 2 AR+ a = tanh (sinOsc AR 65 (x * n 'a' AR 0.1 * 3) * (n 'a' AR 3 * 6))+ f i = allpassN i 0.3 (udup 2 (rand 'a' 0.1 0.3)) 5+ o = tanh (useq 'a' 9 f a)+ in mrg2 o (localOut o)++main :: IO ()+main = audition (out 0 dark_sea_horns)++{-+Sound.SC3.UGen.Dot.draw dark_sea_horns+-}
@@ -0,0 +1,13 @@+{n=LFNoise1+;x=LocalIn.ar(2)+;a=SinOsc.ar(65,x*n.ar(0.1,3),n.ar(3,6)).tanh+;9.do{a=AllpassL.ar(a,0.3,{0.2.rand+0.1}!2,5)}+;a=a.tanh+;LocalOut.ar(a)+;a}.play++n=LFNoise1;+Ndef(\x,{+a=SinOsc.ar(65,Ndef(\x).ar*n.ar(0.1,3),n.ar(3,6)).tanh;+9.do{a=AllpassL.ar(a,0.3,{0.2.rand+0.1}!2,5)};+a.tanh}).play
@@ -0,0 +1,25 @@+-- data space (jmcc)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.OverlapTexture++randz :: ID a => a -> UGen -> UGen+randz e = rand e 0++data_space :: UGen+data_space =+ let r = randz+ p0 = lfPulse KR (r 'a' 200) 0 (r 'b' 1)+ p1 = lfPulse KR (r 'c' 40) 0 (r 'd' 1) * r 'e' 8000 + r 'f' 2000+ p2 = lfPulse KR (r 'g' 20) 0 (r 'h' 1)+ p3 = lfPulse KR (r 'i' 4) 0 (r 'j' 1) * r 'k' 8000 + r 'l' 2000+ p4 = lfPulse KR (r 'm' 20) 0 (r 'n' 1)+ p5 = lfPulse KR (r 'o' 4) 0 (r 'p' 1) * r 'q' 8000 + r 'r' 2000+ f = p0 * p1 + p2 * p3 + p4 * p5+ dt = rand 's' 0.15 0.35+ o = lfPulse AR f 0 0.5 * 0.04+ l = lfNoise0 't' KR (r 'u' 3) * 0.8+ in combL (pan2 o l 1) dt dt 3++main :: IO ()+main = overlapTextureU (6,1,4,maxBound) data_space
@@ -0,0 +1,37 @@+-- deep sea (jrhb)++import Sound.SC3.ID+import Sound.SC3.Lang.Pattern.ID++rng :: UGen -> UGen -> UGen -> UGen+rng s l r =+ let m = (r - l) * 0.5+ in mulAdd s m (m + l)++deep_sea :: UGen+deep_sea =+ let amp = 1+ pan = 0+ variation = 0.9+ n = rand 'α' 7 46+ dt1 = 25.0 + rand 'β' (-1.7) 1.7+ dt2 = (dt1 + lfNoise2 'γ' KR 2) * variation * 0.001+ f = 901 + rand 'δ' 0 65+ t = impulse AR (recip dt2) 0 * 100+ count = pulseCount t 0+ mul = count <* n+ u1 = bpf (mul * t) f 1 * 0.1+ f2 = f * ((count `modE` rng (lfNoise1 'ε' KR 1) 2 20) + 1)+ u2 = bpf u1 f2 1 * 0.2+ in mrg [pan2 u2 pan (amp * 10)+ ,detectSilence u2 0.0001 0.2 RemoveSynth]++main :: IO ()+main = do+ let s = synthdef "deep-sea" (out 0 deep_sea)+ audition (s,pbind [("dur",pxrand 'a' [0.25,0.5,1,2] inf)])++{-+Sound.SC3.UGen.Dot.draw (out 0 deep_sea)+audition (out 0 deep_sea)+-}
@@ -1,37 +0,0 @@-deep sea (jrhb)--> import Sound.SC3.ID--> main =-> let { range s l r = let m = (r - l) * 0.5 in mulAdd s m (m + l)-> ; amp = 1-> ; pan = 0-> ; variation = 0.9-> ; n = rand 'α' 7 46-> ; dt1 = 25.0 + rand 'β' (-1.7) 1.7-> ; dt2 = (dt1 + lfNoise2 'γ' kr 2) * variation * 0.001-> ; f = 901 + rand 'δ' 0 65-> ; t = impulse ar (recip dt2) 0 * 100-> ; count = pulseCount t 0-> ; mul = count <* n-> ; u1 = bpf (mul * t) f 1 * 0.1-> ; f2 = f * ((count `modE` range (lfNoise1 'ε' kr 1) 2 20) + 1)-> ; u2 = bpf u1 f2 1 * 0.2 }-> in audition (mrg [ detectSilence u2 0.0001 0.2 RemoveSynth-> , out 0 (pan2 u2 pan (amp * 10)) ])--{ var amp = 1-; var pan = 0-; var variation = 0.9-; var n = Rand.new(7, 46)-; var dt1 = 25.0 + Rand.new(-1.7, 1.7)-; var dt2 = (dt1 + LFNoise2.kr(2)) * variation * 0.001-; var freq = 901 + Rand.new(0, 65)-; var t = Impulse.ar(dt2.reciprocal, 0, 100)-; var count = PulseCount.ar(t, 0)-; var mul = count < n-; var u1 = BPF.ar(mul * t, freq, 1) * 0.1-; var freq2 = freq * ((count % LFNoise1.kr(1).range(2, 20)) + 1)-; var u2 = BPF.ar(u1, freq2, 1) * 0.2-; DetectSilence.ar(u2, 0.0001, 0.2, 2)-; Out.ar(0, Pan2.ar(u2, pan, amp * 10)) }.play
@@ -0,0 +1,15 @@+{ var amp = 1+; var pan = 0+; var variation = 0.9+; var n = Rand.new(7, 46)+; var dt1 = 25.0 + Rand.new(-1.7, 1.7)+; var dt2 = (dt1 + LFNoise2.kr(2)) * variation * 0.001+; var freq = 901 + Rand.new(0, 65)+; var t = Impulse.ar(dt2.reciprocal, 0, 100)+; var count = PulseCount.ar(t, 0)+; var mul = count < n+; var u1 = BPF.ar(mul * t, freq, 1) * 0.1+; var freq2 = freq * ((count % LFNoise1.kr(1).range(2, 20)) + 1)+; var u2 = BPF.ar(u1, freq2, 1) * 0.2+; DetectSilence.ar(u2, 0.0001, 0.2, 2)+; Out.ar(0, Pan2.ar(u2, pan, amp * 10)) }.play
@@ -0,0 +1,19 @@+-- deep trip (jmcc)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.OverlapTexture++deep_trip :: UGen+deep_trip =+ let f = midiCPS (lfNoise1 'a' KR (rand 'a' 0 0.3) * 60 + 70)+ a'' = sinOsc KR (rand 'b' 0 40) 0 * 0.1+ a' = max 0 (lfNoise1 'c' KR (rand 'd' 0 8) * a'')+ a = lfNoise2 'e' AR (f * rand 'f' 0 0.5) * a'+ z = sinOsc AR f 0 * a+ s = pan2 z (lfNoise1 'g' KR (rand 'h' 0 5)) 1+ c0 = combN s 0.5 (mce [rand 'i' 0.3 0.5,rand 'j' 0.3 0.5]) 20+ c1 = combN s 0.5 (mce [rand 'k' 0.3 0.5,rand 'l' 0.3 0.5]) 20+ in s + c0 + c1++main :: IO ()+main = overlapTextureU (12,4,4,maxBound) deep_trip
@@ -0,0 +1,24 @@+-- default (jmcc)++import Sound.SC3.ID+import Sound.SC3.Lang.Pattern.ID++defaultInstrument :: Synthdef+defaultInstrument =+ let f = control KR "freq" 440+ a = control KR "amp" 0.1+ p = control KR "pan" 0+ g = control KR "gate" 1+ e = linen g 0.01 0.7 0.3 RemoveSynth+ f3 = mce [f,f + rand 'a' (-0.4) 0,f + rand 'b' 0 0.4]+ l = xLine KR (rand 'c' 4000 5000) (rand 'd' 2500 3200) 1 DoNothing+ z = lpf (mix (varSaw AR f3 0 0.3 * 0.3)) l * e+ in synthdef "default" (out 0 (pan2 z p a))++main :: IO ()+main = audition (defaultInstrument+ ,pbind [("note",pxrand 'a' [0,1,5,7,9] inf)+ ,("octave",prand 'b' [3,4,5,6] inf)+ ,("dur",pwrand 'c' [0.1,0.2,0.4] [0.5,0.4,0.1] inf)+ ,("amp",pbrown 'd' 0.01 0.2 0.01 inf)+ ,("pan",pbrown 'e' (-1) 1 0.25 inf)])
@@ -1,36 +0,0 @@-default (jmcc)--> import Sound.SC3.Monadic-> import Sound.OpenSoundControl-> import System.Random--> main =-> let { def = do { r0 <- rand (-0.4) 0.0-> ; r1 <- rand 0.0 0.4-> ; r2 <- rand 4000 5000-> ; r3 <- rand 2500 3200-> ; let { f = control KR "freq" 440-> ; a = control KR "amp" 0.1-> ; p = control KR "pan" 0-> ; g = control KR "gate" 1-> ; e = linen g 0.01 (a * 0.7) 0.3 RemoveSynth-> ; f3 = mce [f, f + r0, f + r1]-> ; l = xLine KR r2 r3 1 DoNothing-> ; z = lpf (mix (varSaw AR f3 0 0.3)) l * e }-> in return (pan2 z p 1) }-> ; rrand lr = getStdRandom (randomR lr)-> ; tone fd nid = do { pan <- rrand (-1, 1)-> ; amp <- rrand (0.1, 0.3)-> ; indx <- rrand (0, 7)-> ; let note = [60, 62, 64, 65, 67, 69, 71, 72] !! indx-> in send fd (s_new "default" nid AddToTail 1-> [("freq", midiCPS note)-> ,("pan", pan)-> ,("amp", amp)])-> ; pauseThread 0.075-> ; send fd (n_set nid [("gate", 0)])-> ; pauseThread 0.075 } }-> in withSC3 (\fd -> do { u <- def-> ; async fd (d_recv (synthdef "default" (out 0 u)))-> ; reset fd-> ; mapM_ (tone fd) [1024..1036] })
@@ -0,0 +1,8 @@+SynthDef(\default, {+arg out=0,freq=440,amp=0.1,pan=0,gate=1;+var e = Linen.kr(gate, 0.01, 0.7, 0.3, 2);+var f3 = freq + [0, Rand(-0.4,0.0), Rand(0.0,0.4)];+var l = XLine.kr(Rand(4000,5000), Rand(2500,3200), 1);+var z = LPF.ar(Mix.new(VarSaw.ar(f3, 0, 0.3, 0.3)),l) * e;+OffsetOut.ar(out, Pan2.ar(z, pan, amp));+},[\ir]).add;
@@ -0,0 +1,19 @@+-- demanding studies (jmcc)++import Sound.SC3.ID++demanding_studies :: UGen+demanding_studies =+ let s1 = drand 'a' dinf (mce [72, 75, 79, 82])+ s2 = drand 'b' 1 (mce [82, 84, 86])+ s3 = dseq 'c' dinf (mce [72, 75, 79, s2])+ x = mouseX' KR 5 13 Linear 0.2+ tr = impulse KR x 0+ f = demand tr 0 (mce [midiCPS (s1 - 12), midiCPS s3])+ o1 = sinOsc AR (f + mce2 0 0.7) 0+ o2 = saw AR (f + mce2 0 0.7) * 0.3+ o3 = cubed (distort (log (distort (o1 + o2))))+ in o3 * 0.1++main :: IO ()+main = audition (out 0 demanding_studies)
@@ -1,27 +0,0 @@-demanding studies (jmcc)--> import Sound.SC3.ID--> main =-> let { s1 = drand 'a' dinf (mce [72, 75, 79, 82])-> ; s2 = drand 'b' 1 (mce [82, 84, 86])-> ; s3 = dseq 'c' dinf (mce [72, 75, 79, s2])-> ; x = linLin (lfNoise0 'd' KR 1) (-1) 1 5 13 -> {- ; x = mouseX kr 5 13 Linear 0.2 -}-> ; tr = impulse kr x 0-> ; f = demand tr 0 (mce [midiCPS (s1 - 12), midiCPS s3])-> ; o1 = sinOsc ar (f + mce2 0 0.7) 0-> ; o2 = saw ar (f + mce2 0 0.7) * 0.3-> ; o3 = cubed (distort (log (distort (o1 + o2)))) }-> in audition (out 0 (o3 * 0.1))--{ var s1 = Drand.new([72, 75, 79, 82], inf)-; var s2 = Drand.new([82, 84, 86], 1)-; var s3 = Dseq.new([72, 75, 79, s2], inf)-; var x = MouseX.kr(5, 13, 'linear', 0.2)-; var tr = Impulse.kr(x, 0)-; var f = Demand.kr(tr, 0, [(s1 - 12).midicps, s3.midicps])-; var o1 = SinOsc.ar(f + [0, 0.7], 0)-; var o2 = Saw.ar(f + [0, 0.7]) * 0.3-; var o3 = (o1 + o2).distort.log.distort.cubed-; Out.ar(0, o3 * 0.1) }.play
@@ -0,0 +1,10 @@+{var s1 = Drand.new([72,75,79,82],inf)+;var s2 = Drand.new([82,84,86],1)+;var s3 = Dseq.new([72,75,79,s2],inf)+;var x = MouseX.kr(5,13,'linear',0.2)+;var tr = Impulse.kr(x,0)+;var f = Demand.kr(tr,0,[(s1 - 12).midicps,s3.midicps])+;var o1 = SinOsc.ar(f + [0,0.7],0)+;var o2 = Saw.ar(f + [0,0.7]) * 0.3+;var o3 = (o1 + o2).distort.log.distort.cubed+;Out.ar(0,o3 * 0.1)}.play
@@ -0,0 +1,35 @@+-- dial history (jrhb)++import Data.List+import Sound.SC3.Monadic++rng :: UGen -> UGen -> UGen -> UGen+rng s = linLin s 0 1++dial_history :: UId m => m UGen+dial_history = do+ let mfv = [[697,770,852,941],[1209,1336,1477,1633]]+ numbers = [3,1] : [[a,b] | a <- [0..2],b <- [0..2]]+ mce_r = mce . map mce+ n <- dwhite dinf 7 12+ w <- dwhite 1 2 7+ b <- dbrown n 0.1 0.2 0.01+ rate <- dseq dinf (mce2 w b)+ q <- dseq dinf (mce [1..10])+ g1 <- grayNoise AR+ g2 <- grayNoise AR+ d <- lfdNoise3 KR 0.5+ let tr = trig (tDuty KR rate 0 DoNothing q 1) 0.09+ pat = latch tr tr+ x = mouseX' KR 0 1 Linear 0.2+ h = hasher (pat * x)+ which = trunc (rng h 0 (constant (length numbers))) 1+ both = select which (mce_r numbers)+ dial = select both (mce_r (transpose mfv))+ sig = sinOsc AR dial 0 * 0.05 * tr+ dsig = delayN sig 0.2 (rng d 0 0.01)+ hiss = g1 * 0.01 + hpf (g2 * 0.02) 3000+ return (dsig + hiss)++main :: IO ()+main = audition . out 0 =<< dial_history
@@ -1,54 +0,0 @@-dial history (jrhb)--> import Data.List-> import Sound.SC3.Monadic-> import qualified Sound.SC3.ID as I--> main =-> let { mfv = [[697, 770, 852, 941], [1209, 1336, 1477, 1633]]-> ; numbers = [[3, 1]] ++ [[a, b] | a <- [0..2], b <- [0..2]]-> ; range s l r = linLin s 0 1 l r-> ; mce_r = mce . map mce }-> in do { n <- dwhite dinf 7 12-> ; w <- dwhite 1 2 7-> ; b <- dbrown n 0.1 0.2 0.01-> ; rate <- dseq dinf (mce2 w b)-> ; q <- dseq dinf (mce [1..10])-> ; g1 <- grayNoise ar-> ; g2 <- grayNoise ar-> ; d <- lfdNoise3 kr 0.5-> ; let { tr = trig (tDuty kr rate 0 DoNothing q 1) 0.09-> ; pat = latch tr tr-> ; x = linLin (I.lfNoise0 'a' KR 1) (-1) 1 0 1-> {- ; x = mouseX kr 0 1 Linear 0.2 -}-> ; h = hasher (pat * x)-> ; which = trunc (range h 0 (constant (length numbers))) 1-> ; both = select which (mce_r numbers)-> ; dial = select both (mce_r (transpose mfv))-> ; sig = sinOsc ar dial 0 * 0.05 * tr-> ; dsig = delayN sig 0.2 (range d 0 0.01)-> ; hiss = g1 * 0.01 + hpf (g2 * 0.02) 3000 }-> in audition (out 0 (dsig + hiss)) }--{ var mfv = [[697, 770, 852, 941], [1209, 1336, 1477, 1633]]-; var numbers = [[3, 1]] ++ {: [a, b], a <- (0..2), b <- (0..2) }.all-; var n = Dwhite.new(7, 12, inf)-; var w = Dwhite.new(2, 7, 1)-; var b = Dbrown.new(0.1, 0.2, 0.01, n)-; var rate = Dseq.new([w, b], inf)-; var q = Dseq.new((1..10), inf)-; var trig = Trig.kr(TDuty.kr(rate, 0, q), 0.09)-; var pat = Latch.kr(trig, trig)-; var x = MouseX.kr(0, 1, 'linear', 0.2)-; var h = Hasher.kr(pat * x)-; var which = h.range(0, numbers.size).trunc.(1)-; var both = Select.kr(which, numbers)-; var dial = Select.kr(both, mfv.flop)-; var sig = SinOsc.ar(dial, 0) * 0.05 * trig-; var d = LFDNoise3.kr(0.5)-; var dsig = DelayC.ar(sig, 0.2, d.range(0, 0.01))-; var g1 = GrayNoise.ar-; var g2 = GrayNoise.ar-; var z = Silent.ar(1)-; var hiss = g1 * 0.01 + HPF.ar(g2 * 0.02, 3000)-; Out.ar(0, [z, dsig + hiss]) }.play
@@ -0,0 +1,22 @@+{ var mfv = [[697, 770, 852, 941], [1209, 1336, 1477, 1633]]+; var numbers = [[3, 1]] ++ {: [a, b], a <- (0..2), b <- (0..2) }.all+; var n = Dwhite.new(7, 12, inf)+; var w = Dwhite.new(2, 7, 1)+; var b = Dbrown.new(0.1, 0.2, 0.01, n)+; var rate = Dseq.new([w, b], inf)+; var q = Dseq.new((1..10), inf)+; var trig = Trig.kr(TDuty.kr(rate, 0, q), 0.09)+; var pat = Latch.kr(trig, trig)+; var x = MouseX.kr(0, 1, 'linear', 0.2)+; var h = Hasher.kr(pat * x)+; var which = h.range(0, numbers.size).trunc.(1)+; var both = Select.kr(which, numbers)+; var dial = Select.kr(both, mfv.flop)+; var sig = SinOsc.ar(dial, 0) * 0.05 * trig+; var d = LFDNoise3.kr(0.5)+; var dsig = DelayC.ar(sig, 0.2, d.range(0, 0.01))+; var g1 = GrayNoise.AR+; var g2 = GrayNoise.AR+; var z = Silent.ar(1)+; var hiss = g1 * 0.01 + HPF.ar(g2 * 0.02, 3000)+; Out.ar(0, [z, dsig + hiss]) }.play
@@ -0,0 +1,28 @@+-- diffraction (rd)++import Control.Monad+import Sound.SC3.Monadic++diffraction ::(Functor m, UId m) => m UGen+diffraction = do+ let p = do let x = mouseX' KR 0.001 0.02 Exponential 0.1+ y = mouseY' KR 120 400 Exponential 0.1+ f <- fmap (* mce2 32 64) (lfNoise0 KR 4)+ w <- fmap (* x) (lfNoise0 KR 32)+ z <- fmap (* 0.1) (lfNoise0 KR 2)+ m <- lfNoise0 KR 6+ let s = pulse AR f w+ return (resonz s (y + z) (m * 0.4 + 0.8) * 0.5)+ q = do n <- lfNoise0 KR 128+ s <- p+ return (combN s 0.2 (n * 0.1 + 0.1) 3)+ r = let x = mouseX' KR 0.75 1.25 Exponential 0.1+ y = mouseY' KR 0.25 1 Exponential 0.1+ f _ = do fr <- fmap (* x) (rand 50 59)+ am <- fmap (* y) (rand 0.04 0.16)+ return (sinOsc AR fr 0 * am)+ in liftM2 mce2 (mixFillM 16 f) (mixFillM 12 f)+ return.sum =<< sequence [p, q, r]++main :: IO ()+main = audition . out 0 =<< diffraction
@@ -1,47 +0,0 @@-diffraction (rd)--> import Control.Monad-> import Sound.SC3.Monadic-> import qualified Sound.SC3.ID as I--> main =-> let { p = let { x = linLin (I.lfNoise0 'a' KR 1) (-1) 1 0.001 0.02 -> {- ; x = mouseX kr 0.001 0.02 Exponential 0.1 -}-> ; y = linLin (I.lfNoise0 'b' KR 1) (-1) 1 120 400-> {- ; y = mouseY kr 120 400 Exponential 0.1 -} }-> in do { f <- fmap (* mce2 32 64) (lfNoise0 kr 4)-> ; w <- fmap (* x) (lfNoise0 kr 32)-> ; z <- fmap (* 0.1) (lfNoise0 kr 2)-> ; m <- lfNoise0 kr 6-> ; let s = pulse ar f w-> in return (resonz s (y + z) (m * 0.4 + 0.8) * 0.5) }-> ; q = do { n <- lfNoise0 kr 128-> ; s <- p-> ; return (combN s 0.2 (n * 0.1 + 0.1) 3) }-> ; r = let { x = linLin (I.lfNoise0 'c' KR 1) (-1) 1 0.75 1.25-> {- ; x = mouseX kr 0.75 1.25 Exponential 0.1 -}-> ; y = linLin (I.lfNoise0 'c' KR 1) (-1) 1 0.25 1-> {- ; y = mouseY kr 0.25 1 Exponential 0.1 -}-> ; f _ = do { fr <- fmap (* x) (rand 50 59)-> ; am <- fmap (* y) (rand 0.04 0.16)-> ; return (sinOsc ar fr 0 * am) } }-> in liftM2 mce2 (mixFillM 16 f) (mixFillM 12 f) }-> in audition . (out 0) . sum =<< sequence [p, q, r]--{ var x = MouseX.kr(0.001, 0.02, 'exponential', 0.1)-; var y = MouseY.kr(120, 400, 'exponential', 0.1)-; var p = { var f = LFNoise0.kr(4) * [32, 64]- ; var w = LFNoise0.kr(32) * x- ; var z = LFNoise0.kr(2) * 0.1- ; var m = LFNoise0.kr(6)- ; var s = Pulse.ar(f, w)- ; Resonz.ar(s, y + z, (m * 0.4) + 0.8) * 0.5 }-; var q = { var n = LFNoise0.kr(128)- ; CombN.ar(p.value, 0.2, (n * 0.1) + 0.1, 3) }-; var r = { var x1 = MouseX.kr(0.75, 1.25, 'exponential', 0.1)- ; var y1 = MouseY.kr(0.25, 1, 'exponential', 0.1)- ; var f = { var fr = Rand(50, 59) * x1- ; var am = Rand(0.04, 0.16) * y1- ; SinOsc.ar(fr, 0) * am }- ; [Mix.fill(16, f), Mix.fill(12, f)] }-; Out.ar(0, p.value + q.value + r.value) }.play
@@ -0,0 +1,17 @@+{var x = MouseX.kr(0.001,0.02,'exponential',0.1)+;var y = MouseY.kr(120,400,'exponential',0.1)+;var p = {var f = LFNoise0.kr(4) * [32,64]+ ;var w = LFNoise0.kr(32) * x+ ;var z = LFNoise0.kr(2) * 0.1+ ;var m = LFNoise0.kr(6)+ ;var s = Pulse.ar(f,w)+ ;Resonz.ar(s,y + z,(m * 0.4) + 0.8) * 0.5}+;var q = {var n = LFNoise0.kr(128)+ ;CombN.ar(p.value,0.2,(n * 0.1) + 0.1,3)}+;var r = {var x1 = MouseX.kr(0.75,1.25,'exponential',0.1)+ ;var y1 = MouseY.kr(0.25,1,'exponential',0.1)+ ;var f = {var fr = Rand(50,59) * x1+ ;var am = Rand(0.04,0.16) * y1+ ;SinOsc.ar(fr,0) * am}+ ;[Mix.fill(16,f),Mix.fill(12,f)]}+;Out.ar(0,p.value + q.value + r.value)}.play
@@ -0,0 +1,23 @@+-- discretion-m (rd)++import Sound.SC3.Monadic++discretion :: IO UGen+discretion = do+ let mkls bp t = envGen KR 1 1 0 1 RemoveSynth (envCoord bp t 1 EnvLin)+ part = do f1 <- clone 2 (rand 50 55)+ f2 <- clone 2 (rand 50 65)+ f3 <- clone 2 (rand 50 55)+ a <- clone 2 (rand 0.01 0.035)+ let t = 21+ f_ = mkls [(0,f1),(0.33,f2),(1,f3)] t+ a_ = mkls [(0,0),(0.33,a),(1,0)] t+ return (saw AR f_ * a_)+ fmap mix (clone 8 part)++main :: IO ()+main = audition . out 0 =<< discretion++{-+Sound.SC3.UGen.Dot.draw =<< discretion+-}
@@ -0,0 +1,23 @@+-- discretion (rd)++import Sound.SC3.ID++discretion :: UGen+discretion =+ let mkls bp t = envGen KR 1 1 0 1 RemoveSynth (envCoord bp t 1 EnvLin)+ part = let f1 = udup 2 (rand 'a' 50 55)+ f2 = udup 2 (rand 'c' 50 65)+ f3 = udup 2 (rand 'e' 50 55)+ a = udup 2 (rand 'g' 0.01 0.035)+ t = 21+ f_ = mkls [(0,f1),(0.33,f2),(1,f3)] t+ a_ = mkls [(0,0),(0.33,a),(1,0)] t+ in (saw AR f_ * a_)+ in mix (uclone 'a' 8 part)++main :: IO ()+main = audition (out 0 discretion)++{-+Sound.SC3.UGen.Dot.draw discretion+-}
@@ -1,15 +0,0 @@-discretion (rd)--> import Sound.SC3.Monadic--> main =-> let { mkls bp t = envGen kr 1 1 0 1 RemoveSynth (envCoord bp t 1 EnvLin)-> ; part = do { f1 <- clone 2 (rand 50 55)-> ; f2 <- clone 2 (rand 50 65)-> ; f3 <- clone 2 (rand 50 55)-> ; a <- clone 2 (rand 0.01 0.035)-> ; let { t = 21-> ; f_ = mkls [(0, f1), (0.33, f2), (1, f3)] t-> ; a_ = mkls [(0, 0), (0.33, a), (1, 0)] t }-> in return (saw ar f_ * a_) } }-> in audition . out 0 . mix =<< clone 8 part
@@ -0,0 +1,32 @@+-- doppler (jmcc,rd)++import Sound.OpenSoundControl+import Sound.SC3++-- observer at origin, signal 's' at coordinates ('x','y')+doppler :: (UGen,UGen) -> UGen -> UGen+doppler (x,y) s =+ let d = hypot x y+ a = 40 / squared d+ maxd = 110+ in delayL s (maxd / 344) (d / 344) * a++-- straight line at x axis from (-y,y) over dt seconds+line_x :: UGen -> UGen -> UGen -> (UGen,UGen)+line_x x y dt = (x,line KR (-y) y dt RemoveSynth)++-- ellipse centered at origin and interecting x at +-a and y at +-b.+-- traversal is over dt seconds+ellipse :: UGen -> UGen -> UGen -> (UGen,UGen)+ellipse a b dt =+ let t = line KR (-pi/2) (pi * 3/2) dt RemoveSynth+ in (a * cos t,b * sin t)++main :: IO ()+main = do+ let s = rlpf (fSinOsc AR 200 0 * lfPulse AR 31.3 0 0.4) 400 0.3+ withSC3 (\fd -> do print "line_x"+ play fd (out 0 (doppler (line_x 10 100 6) s))+ pauseThread 8+ print "ellipse"+ play fd (out 0 (doppler (ellipse 10 75 12) s)))
@@ -0,0 +1,18 @@+-- drummer (thor magnusson)++import Sound.SC3.ID++drummer :: UGen+drummer =+ let n = whiteNoise 'α' AR+ tempo = 4+ tr = impulse AR tempo 0+ tr_2 = pulseDivider tr 4 2+ tr_4 = pulseDivider tr 4 0+ snare = n * decay2 tr_2 0.005 0.5+ bass = sinOsc AR 60 0 * decay2 tr_4 0.005 0.5+ hihat = hpf n 10000 * decay2 tr 0.005 0.5+ in pan2 (snare + bass + hihat) 0 0.4++main :: IO ()+main = audition (out 0 drummer)
@@ -1,24 +0,0 @@-drummer (thor magnusson)--> import Sound.SC3.ID--> main =-> let { n = whiteNoise 'α' AR-> ; tempo = 4-> ; tr = impulse AR tempo 0-> ; tr_2 = pulseDivider tr 4 2-> ; tr_4 = pulseDivider tr 4 0-> ; snare = n * decay2 tr_2 0.005 0.5-> ; bass = sinOsc AR 60 0 * decay2 tr_4 0.005 0.5-> ; hihat = hpf n 10000 * decay2 tr 0.005 0.5 }-> in audition (out 0 (pan2 (snare + bass + hihat) 0 0.4))--{ var tempo = 4-; var n = WhiteNoise.ar()-; var tr = Impulse.ar(tempo, 0)-; var tr_2 = PulseDivider.ar(tr, 4, 2)-; var tr_4 = PulseDivider.ar(tr, 4, 0)-; var snare = n * Decay2.ar(tr_2, 0.005, 0.5)-; var bass = SinOsc.ar(60, 0) * Decay2.ar(tr_4, 0.005, 0.5)-; var hihat = HPF.ar(n, 10000) * Decay2.ar(tr, 0.005, 0.5)-; Out.ar(0, Pan2.ar(snare + bass + hihat, 0, 0.4)) }.play
@@ -0,0 +1,9 @@+{ var tempo = 4+; var n = WhiteNoise.ar()+; var tr = Impulse.ar(tempo, 0)+; var tr_2 = PulseDivider.ar(tr, 4, 2)+; var tr_4 = PulseDivider.ar(tr, 4, 0)+; var snare = n * Decay2.ar(tr_2, 0.005, 0.5)+; var bass = SinOsc.ar(60, 0) * Decay2.ar(tr_4, 0.005, 0.5)+; var hihat = HPF.ar(n, 10000) * Decay2.ar(tr, 0.005, 0.5)+; Out.ar(0, Pan2.ar(snare + bass + hihat, 0, 0.4)) }.play
@@ -0,0 +1,43 @@+-- e-lamell-p (rd)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.Event+import Sound.SC3.Lang.Pattern.ID++e_lamell :: UGen+e_lamell =+ let ctl = control KR+ f = ctl "freq" 440+ a = ctl "amp" 1+ d = ctl "d" 0.1+ n = ctl "n" 12+ l = ctl "l" 0+ t = iChoose 'a' (mce2 1 32)+ h = line AR n t d DoNothing+ s = blip AR f h+ e_d = envPerc 0.005 d+ e = envGen AR 1 a 0 1 RemoveSynth e_d+ in pan2 s l e++pattern :: P Event+pattern =+ let p = pbind [("note",prand 'a' [0,2,5,7] inf)+ ,("octave",pwrand 'b' [2,3,4,5] [0.2,0.35,0.35,0.1] inf)+ ,("dur",0.1)+ ,("d",pwhite 'c' 0.01 0.8 inf)+ ,("amp",pwhite 'd' 0 0.75 inf)+ ,("n",pwhite 'e' 2 36 inf)+ ,("l",pwhite 'f' (-1) 1 inf)]+ q = pbind [("note",prand 'g' [0] inf)+ ,("octave",prand 'h' [2,3] inf)+ ,("dur",0.1)+ ,("d",pwhite 'i' 0.01 1.2 inf)+ ,("amp",prand 'j' [0,0.25,0.5,1] inf)+ ,("n",pwhite 'k' 2 36 inf)+ ,("l",pwhite 'l' (-1) 1 inf)]+ in ppar [p,q]++main :: IO ()+main =+ let s = synthdef "e-lamell" (out 0 e_lamell)+ in audition (s,pattern)
@@ -0,0 +1,66 @@+-- e-lamell (rd)++import Control.Monad+import Sound.OpenSoundControl+import Sound.SC3.ID+import qualified Sound.SC3.Lang.Random.IO as R++e_lamell :: UGen+e_lamell =+ let ctl = control KR+ f = ctl "f" 440+ n = ctl "n" 12+ d = ctl "d" 0.1+ l = ctl "l" 0+ a = ctl "a" 1+ t = iChoose 'a' (mce2 1 32)+ h = line AR n t d DoNothing+ s = blip AR f h+ e_d = envPerc 0.005 d+ e = envGen AR 1 a 0 1 RemoveSynth e_d+ in pan2 s l e++now :: Time+now = NTPi 1++sendSynth :: Transport t => t -> String -> UGen -> IO OSC+sendSynth fd n u = async fd (d_recv (synthdef n u))++mk_s_new :: Double -> Double -> Double -> Double -> Double -> OSC+mk_s_new f n d a l =+ let p = [("f",f)+ ,("n",n)+ ,("d",d)+ ,("a",a)+ ,("l",l)]+ in s_new "blip" (-1) AddToTail 1 p++pattern :: Transport t => t -> IO ()+pattern fd = do+ let r_note o p = do oe <- R.choose o+ pe <- R.choose p+ return (oe * 12 + pe)+ l_sel = r_note [2,3] [0]+ h_sel = r_note [2,3,4,5] [0,2,5,7]+ p <- do f <- liftM midiCPS l_sel+ n <- R.rrand 2 36+ d <- R.exprand 0.01 0.8+ a <- R.rrand 0 0.75+ l <- R.rrand (-1) 1+ return (mk_s_new f n d a l)+ q <- do f <- liftM midiCPS h_sel+ n <- R.rrand 2 36+ d <- R.exprand 0.01 1.2+ a <- R.choose [0,0.25,0.5,1]+ l <- R.rrand (-1) 1+ return (mk_s_new f n d a l)+ send fd (Bundle now [p,q])+ pauseThread 0.1++run :: Transport t => t -> IO ()+run fd = do+ _ <- sendSynth fd "blip" (out 0 e_lamell)+ replicateM_ 64 (pattern fd)++main :: IO ()+main = withSC3 run
@@ -1,54 +0,0 @@-e-lamell (rd)--> import Control.Monad-> import Sound.OpenSoundControl-> import Sound.SC3.Monadic-> import System.Random--> main =-> let { now = NTPi 1-> ; rrand l r = getStdRandom (randomR (l, r))-> ; exp_rrand a b = do { n <- rrand 0 1-> ; let r = b / a -> in return ((r ** n) * a) }-> ; choose l = return . (l !!) =<< rrand 0 (length l - 1)-> ; sendSynth fd n u = async fd (d_recv (synthdef n u))-> ; e_lamell = let { ctl s v = control kr s v-> ; f = ctl "f" 440-> ; n = ctl "n" 12-> ; d = ctl "d" 0.1-> ; l = ctl "l" 0-> ; a = ctl "a" 1 }-> in do { t <- tChoose 1 (mce2 1 32)-> ; let { h = line ar n t d DoNothing-> ; s = blip ar f h-> ; e_d = envPerc 0.005 d-> ; e = envGen ar 1 a 0 1 RemoveSynth e_d }-> in return (out 0 (pan2 s l e)) }-> ; r_note o p = do { oe <- choose o-> ; pe <- choose p-> ; return (oe * 12 + pe) }-> ; l_sel = r_note [2, 3] [0]-> ; h_sel = r_note [2, 3, 4] [0]-> ; mk_s_new f n d a l = s_new "blip" (-1) AddToTail 1-> [("f", f)-> ,("n", n)-> ,("d", d)-> ,("a", a)-> ,("l", l)]-> ; pattern fd = do { p <- do { f <- liftM midiCPS l_sel-> ; n <- rrand 2 36-> ; d <- exp_rrand 0.01 0.4-> ; a <- rrand 0 0.75-> ; l <- rrand (-1) 1-> ; return (mk_s_new f n d a l) }-> ; q <- do { f <- liftM midiCPS h_sel-> ; n <- rrand 2 36-> ; d <- exp_rrand 0.01 0.4-> ; a <- choose [0, 0.25, 0.5, 1]-> ; l <- rrand (-1) 1-> ; return (mk_s_new f n d a l) }-> ; send fd (Bundle now [p, q]) -> ; pauseThread 0.1 } }-> in withSC3 (\fd -> do { _ <- sendSynth fd "blip" =<< e_lamell-> ; replicateM_ 64 (pattern fd) })
@@ -0,0 +1,78 @@+-- early space music LP, side 2 (jmcc)++import Sound.SC3.ID+import qualified Sound.SC3.Lang.Random.Gen as R+import Sound.SC3.Lang.Control.OverlapTexture+import qualified System.Random as R++m1 :: UGen+m1 =+ let a = rand 'a' 0 20+ b = rand 'b' 0 5000+ c = rand 'c' 0 20+ p = rand 'd' (-1) 1+ in pan2 (sinOsc AR (sinOsc AR a 0 * 0.1 * b + b) 0 * sinOsc KR c 0 * 0.08 + 0.08) p 1++m2 :: UGen+m2 =+ let a0 = rand 'a' 40 240+ a1 = a0 + rand 'b' (-1) 1+ a = mce2 a0 a1+ b = expRand 'c' 50 2400+ c = mce2 (a0 + rand 'd' (-1) 1) (a1 + rand 'e' (-1) 1)+ in sinOsc AR (sinOsc AR a 0 * rand 'f' 0 1 * b + b) 0 * sinOsc KR c 0 * 0.025 + 0.025++m3 :: UGen+m3 =+ let f = midiCPS (rand 'a' 60 100)+ in fSinOsc AR (mce2 f (f + 0.2)) 0 * lfNoise2 'b' KR (f * mce2 0.15 0.16) * 0.1++m4 :: UGen+m4 =+ let f = midiCPS (rand 'a' 24 96)+ r = xLine KR (expRand 'b' 0.1 20) (expRand 'c' 0.1 20) 25.6 DoNothing+ a = lfPulse KR (expRand 'd' 0.2 1.2) 0 (rand 'e' 0.1 0.2)+ o i = let e = max 0 (sinOsc KR (r * rand 'f' 0.9 1.1) (rand 'g' 0 (2 * pi)) * 0.1 - 0.05)+ s = fSinOsc AR (f * i + f) 0 * e * (1 / (i + 1))+ in pan2 s (rand i (-1) 1) 1+ in sum (uprotect' 'a' (map o [0..11])) * a++m6 :: UGen+m6 =+ let f = midiCPS (lfNoise1 'a' KR (rand 'b' 0 0.3) * 60 + 70)+ a0 = lfNoise2 'c' AR (f * rand 'd' 0 0.5)+ a1 = max 0 (lfNoise1 'e' KR (rand 'f' 0 8) * sinOsc KR (rand 'g' 0 40) 0 * 0.1)+ z = sinOsc AR f 0 * a0 * a1+ in pan2 z (lfNoise1 'h' KR (rand 'i' 0 5)) 1++enumFromN :: Enum a => a -> Int -> [Int]+enumFromN e i = let j = fromEnum e in [j .. j + i]++m7 :: UGen+m7 =+ let p = 15+ z = let y = let fr = map (\e -> expRand e 100 6000) (enumFromN 'a' p)+ rt = map (\e -> rand e 2 6) (enumFromN 'a' p)+ in klankSpec fr (replicate p 1) rt+ in uclone 'a' 2 y+ f = xLine KR (expRand 'α' 40 300) (expRand 'β' 40 300) 12 DoNothing+ t = lfPulse AR f 0 (rand 'γ' 0.1 0.9) * 0.002 * max 0 (lfNoise2 'δ' KR (rand 'ε' 0 8))+ in distort (klank t 1 0 1 (mceTranspose z)) * 0.3++esmlp2 :: R.RandomGen g => g -> (UGen, g)+esmlp2 = R.choose (map (* 0.3) [m1,m2,m3,m4,m6,m7])++esmlp2_pp :: UGen -> UGen+esmlp2_pp i =+ let c = combN i 0.3 (mce2 (rand 'a' 0.1 0.3) (rand 'a' 0.12 0.32)) 8+ in mix (uclone 'a' 5 c) * 0.3++main :: IO ()+main = do+ let g = R.mkStdGen 0+ overlapTextureS_pp (2,4,6,maxBound) esmlp2 g 2 esmlp2_pp++{-+audition (out 0 (m6 * 0.5))+Sound.SC3.UGen.Dot.draw m7+-}
@@ -0,0 +1,19 @@+-- eggcrate-m (rd)++import Sound.SC3.Monadic++eggcrate :: UId m => m UGen+eggcrate = do+ let cosu = cos . (* pi)+ sinu = sin . (* pi)+ eggcrate_f u v = cosu u * sinu v+ p = mce [64,72,96,128,256,6400,7200,8400,9600]+ [x,y] <- sequence (replicate 2 (brownNoise KR))+ t <- dust KR 2.4+ [f0,f1] <- sequence (replicate 2 (tChoose t p))+ let f = linLin (eggcrate_f x y) (-1) 1 f0 f1+ a = linLin x (-1) 1 0 0.1+ return (pan2 (mix (sinOsc AR f 0)) y a)++main :: IO ()+main = audition . out 0 =<< eggcrate
@@ -0,0 +1,22 @@+-- eggcrate (rd)++import Sound.SC3.ID++atp :: (t -> u) -> (t,t) -> (u,u)+atp f (i,j) = (f i,f j)++eggcrate :: UGen+eggcrate =+ let cosu = cos . (* pi)+ sinu = sin . (* pi)+ eggcrate_f u v = cosu u * sinu v+ p = mce [64,72,96,128,256,6400,7200,8400,9600]+ (x,y) = atp (`brownNoise` KR) ('a','b')+ t = dust 'c' KR 2.4+ (f0,f1) = atp (\z -> tChoose z t p) ('a','b')+ f = linLin (eggcrate_f x y) (-1) 1 f0 f1+ a = linLin x (-1) 1 0 0.1+ in pan2 (mix (sinOsc AR f 0)) y a++main :: IO ()+main = audition (out 0 eggcrate)
@@ -1,27 +0,0 @@-eggcrate (rd)--> import Sound.SC3.Monadic--> main =-> let { cosu = cos . (* pi) -> ; sinu = sin . (* pi)-> ; eggcrate u v = cosu u * sinu v-> ; p = mce [64, 72, 96, 128, 256, 6400, 7200, 8400, 9600] }-> in do { [x, y] <- sequence (replicate 2 (brownNoise kr))-> ; t <- dust kr 2.4-> ; [f0, f1] <- sequence (replicate 2 (tChoose t p))-> ; let { f = linLin (eggcrate x y) (-1) 1 f0 f1-> ; a = linLin x (-1) 1 0 0.1 }-> in audition (out 0 (pan2 (mix (sinOsc ar f 0)) y a)) }--{ var eggcrate = { arg u, v- ; (u * pi).cos * (v * pi).sin }-; var p = [64, 72, 96, 128, 256, 6400, 7200, 8400, 9600]-; var x = BrownNoise.kr()-; var y = BrownNoise.kr()-; var t = Dust.kr(2.4)-; var f0 = TChoose.kr(t, p)-; var f1 = TChoose.kr(t, p)-; var f = LinLin.kr(eggcrate.value(x, y), -1, 1, f0, f1)-; var a = LinLin.kr(x, -1, 1, 0, 0.1)-; Out.ar(0, Pan2.ar(Mix.ar(SinOsc.ar(f, 0)), y, a)) }.play
@@ -0,0 +1,11 @@+{var eggcrate = {arg u,v+ ;(u * pi).cos * (v * pi).sin}+;var p = [64,72,96,128,256,6400,7200,8400,9600]+;var x = BrownNoise.kr()+;var y = BrownNoise.kr()+;var t = Dust.kr(2.4)+;var f0 = TChoose.kr(t,p)+;var f1 = TChoose.kr(t,p)+;var f = LinLin.kr(eggcrate.value(x,y),-1,1,f0,f1)+;var a = LinLin.kr(x,-1,1,0,0.1)+;Out.ar(0,Pan2.ar(Mix.ar(SinOsc.ar(f,0)),y,a))}.play
@@ -0,0 +1,40 @@+-- ellipse based synthesis (nc)+-- http://www.listarc.bham.ac.uk/lists/sc-users/msg09524.html++import Sound.SC3++ifU :: Num a => a -> a -> a -> a+ifU t i j = (t * i) + ((1 - t) * j)++ebs_nc :: UGen -> UGen -> UGen -> UGen+ebs_nc wd fr sc =+ let ph = phasor AR 0 (fr * 2 * pi * sampleDur) 0 (2 * pi) 0+ sg = ifU ((ph `modE` (1.5 * pi)) >* (0.5 * pi)) (-1) 1+ in cos (atan (wd + sc * tan ph)) * sg++ebs_jr :: UGen -> UGen -> UGen -> UGen+ebs_jr wd fr sc =+ let ph = range 0 (2 * pi) (lfSaw AR fr 0)+ sg = ifU ((ph `modE` (1.5 * pi)) >* (0.5 * pi)) (-1) 1+ in cos (atan (wd + sc * tan ph)) * sg++ebs_jmcc :: UGen -> UGen -> UGen -> UGen+ebs_jmcc wd fr sc =+ let ph = phasor AR 0 (fr * 2 * pi * sampleDur) 0 (2* pi) 0+ sg = ifU ((ph `modE` (1.5 * pi)) >* (0.5 * pi)) (-1) 1+ in cos (atan(wd + sc * tan ph)) * sg++ctl :: (UGen -> UGen -> UGen -> t) -> t+ctl f =+ let fr = mouseY' KR 4 444 Linear 0.1+ sc = mouseX' KR 0.1 1.0 Linear 0.1+ wd = mouseR 'z' KR 0 2 Linear 0.1+ in f wd fr sc++main :: IO ()+main = audition (out 0 (ctl ebs_jmcc))++{-+audition (out 0 (mce2 (ebs_nc 0 440 0.5) (ebs_jr 0 440 0.5)))+audition (out 0 (mce2 (ebs_nc 0 440 0.5) (ebs_jmcc 0 440 0.5)))+-}
@@ -0,0 +1,30 @@+-- f-lets (rd)++import Sound.SC3.Monadic++f_lets :: (Functor m,UId m) => m UGen+f_lets = do+ let f_let t g j n f = do+ let pd = pulseDivider t j 0+ r0 <- tIRand (mce2 2 1) n pd+ r1 <- tRand 0.01 0.04 pd+ r2 <- tRand 0.05 0.10 pd+ return (formlet pd (f * r0) r1 r2 * g)+ mk_n t = do+ r0 <- tRand 0 1 t+ r1 <- tRand 0 1 t+ r2 <- tRand 0 1 t+ r3 <- tRand 0 1 t+ r4 <- coinGate 0.2 t+ sequence [f_let t 0.15 2 9 (mce2 200 400)+ ,f_let t 0.25 2 9 (mce2 (200 + r0) (400 + r1))+ ,f_let t 0.05 4 5 (mce2 25 50)+ ,f_let t 0.15 4 5 (mce2 (25 + r2) (50 + r3))+ ,let lr = fmap (* latch r4 t)+ in lr (f_let t 0.5 1 16 (mce2 300 600))]+ tr = impulse AR 24 0+ n <- lfNoise0 KR 2+ return . (* (n * 0.25 + 0.25)) . sum =<< mk_n tr++main :: IO ()+main = audition . out 0 =<< f_lets
@@ -1,26 +0,0 @@-f-lets (rd)--> import Sound.SC3.Monadic--> main =-> let { f_let t g j n f = -> let pd = pulseDivider t j 0-> in do { r0 <- tiRand (mce2 2 1) n pd-> ; r1 <- tRand 0.01 0.04 pd-> ; r2 <- tRand 0.05 0.10 pd-> ; return (formlet pd (f * r0) r1 r2 * g) }-> ; mk_n t = do { r0 <- tRand 0 1 t-> ; r1 <- tRand 0 1 t-> ; r2 <- tRand 0 1 t-> ; r3 <- tRand 0 1 t-> ; r4 <- coinGate 0.2 t-> ; sequence-> [ f_let t 0.15 2 9 (mce2 200 400)-> , f_let t 0.25 2 9 (mce2 (200 + r0) (400 + r1))-> , f_let t 0.05 4 5 (mce2 25 50)-> , f_let t 0.15 4 5 (mce2 (25 + r2) (50 + r3))-> , let lr = fmap (* (latch r4 t))-> in lr (f_let t 0.5 1 16 (mce2 300 600)) ] }-> ; tr = impulse ar 24 0 }-> in do { n <- lfNoise0 kr 2-> ; audition . out 0 . (* (n * 0.25 + 0.25)) . sum =<< mk_n tr }
@@ -0,0 +1,47 @@+-- fb-090531 (rd)++import Sound.OpenSoundControl {- hosc -}+import Sound.SC3 {- hsc3 -}+import Control.Monad+import System.Random {- random -}++fb_090531 :: UGen+fb_090531 =+ let k_in n = linLin (in' 1 KR n) (-1) 1+ p = localIn 1 AR+ bt = recip controlRate+ ig_f = k_in 0 1 20+ ig = impulse AR ig_f 0+ f_f = k_in 1 220 880+ f_rq = k_in 2 0.005 0.2+ f = bpf ig f_f f_rq+ d_t = k_in 3 0.1 0.105+ d = delayC (f + p) 1 (d_t - bt)+ in mrg [p,localOut d]++-- | Constant reset.+c_reset :: Transport t => Double -> t -> IO ()+c_reset n fd = send fd (c_setn [(0,replicate 4 n)])++-- | Random reset.+r_reset :: Transport t => t -> IO ()+r_reset fd = do+ cs <- replicateM 4 (randomRIO (-1,1))+ send fd (c_setn [(0,cs)])++-- | Loop random reset.+lr_reset :: Transport t => Double -> t -> IO b+lr_reset t fd = pauseThread t >> r_reset fd >> lr_reset t fd++-- | Start fb_090531 and run lr_reset. Type C-cC-i to interrupt.+main :: IO ()+main = do+ audition (offsetOut 0 fb_090531)+ withSC3 (c_reset 1 >> lr_reset 1)++{-+withSC3 (c_reset 0)+withSC3 (c_reset 1)+withSC3 (c_reset (-1))+withSC3 r_reset+-}
@@ -0,0 +1,36 @@+-- fbl-fbf (rd)++import Sound.SC3.ID++fbl :: UGen -> [UGen] -> [UGen] -> [UGen] -> (UGen, UGen)+fbl l i d g =+ let a0 = l + mce i+ a1 = delayL a0 (maximum d) (mce d)+ in (localOut (a1 * mce g),a1)++fbf :: [UGen] -> [UGen] -> [UGen] -> [UGen] -> (UGen, UGen)+fbf b i d g =+ let a0 = inFeedback 1 (mce b) + mce i+ a1 = delayL a0 (maximum d) (mce d)+ in (offsetOut (mce b) (mce [a1 * mce g]),a1)++fbl_fbf :: UGen+fbl_fbf =+ let n = brownNoise 'a' AR+ e = decay (impulse AR 0.3 0) 0.1 * n * 0.2+ c = 4+ e' = replicate c e+ b0 = [24,26,28,30]+ d0 = [0.1,0.3,0.5,0.7]+ g0 = [0.8,0.6,0.4,0.2]+ b1 = [25,27,29,31]+ d1 = [0.2,0.3,0.6,0.7]+ g1 = [0.8,0.7,0.4,0.3]+ (u0,s0) = fbl (localIn c AR) e' d0 g0+ (u1,s1) = fbf b0 e' d0 g0+ (u2,s2) = fbf b1 (mceChannels s1) d1 g1+ o = mce [mix (s0 + s1),mix s2]+ in mrg [u0,u1,u2,offsetOut 0 o]++main :: IO ()+main = withSC3 (\fd -> reset fd >> audition fbl_fbf)
@@ -1,27 +0,0 @@-fbl-fbf (rd)--> import Sound.SC3.Monadic--> main =-> let { fbl l i d g = let { a0 = l + mce i-> ; a1 = delayL a0 (maximum d) (mce d) }-> in (localOut (a1 * mce g), a1)-> ; fbf b i d g = let { a0 = inFeedback 1 (mce b) + mce i-> ; a1 = delayL a0 (maximum d) (mce d) }-> in (offsetOut (mce b) (mce [a1 * mce g]), a1) }-> in do { withSC3 reset-> ; n <- brownNoise ar-> ; let { e = decay (impulse ar 0.3 0) 0.1 * n * 0.2-> ; c = 4-> ; e' = replicate c e-> ; b0 = [24, 26, 28, 30]-> ; d0 = [0.1, 0.3, 0.5, 0.7]-> ; g0 = [0.8, 0.6, 0.4, 0.2]-> ; b1 = [25, 27, 29, 31]-> ; d1 = [0.2, 0.3, 0.6, 0.7]-> ; g1 = [0.8, 0.7, 0.4, 0.3]-> ; (u0, s0) = fbl (localIn c ar) e' d0 g0-> ; (u1, s1) = fbf b0 e' d0 g0-> ; (u2, s2) = fbf b1 (mceChannels s1) d1 g1-> ; o = mce [mix (s0 + s1), mix s2] }-> in audition (mrg [u0, u1, u2, offsetOut 0 o]) }
@@ -1,25 +0,0 @@-feedr (rd)-warning: input/output feedback loop--> import Sound.SC3.Monadic-> import qualified Sound.SC3.ID as I--> main =-> let { delayWr b i = recordBuf b 0 1 0 1 Loop 0 DoNothing i-> ; tap nc b dt = playBuf nc b 1 0 (dt * (- sampleRate)) Loop DoNothing-> ; dl = 6-> ; feedr n = do { t <- sequence (replicate n (rand 0.0 (constant dl)))-> ; g <- sequence (replicate n (rand 0.4 1.0))-> ; f <- sequence (replicate n (rand 0.9 0.95))-> ; let { d = zipWith (\p q -> tap 2 10 p * q) t g-> {- ; x = mouseX kr 0.02 1.0 Exponential 0.1 -}-> ; x = linLin (I.lfNoise0 'a' KR 1) (-1) 1 0.02 1-> ; s = clip2 (leakDC (hpf (sum d) 20) 0.995) 1-> ; i = soundIn (mce2 0 1)-> ; r = i + sum (map (* x) (zipWith (*) d f)) }-> in return (mrg [out 0 s, delayWr 10 r]) } }-> in withSC3 (\fd -> do { nf <- fmap (* dl) (serverSampleRateActual fd)-> ; send fd (b_alloc 10 (floor nf) 2)-> ; audition =<< feedr 18 })--withSC3 (\fd -> send fd (b_zero 10))
@@ -0,0 +1,21 @@+-- fm-iter (rd)++import Sound.SC3.ID++fm_iter :: UGen+fm_iter =+ let t0 = impulse AR (recip 0.30) 0+ t1 = tDelay t0 0.15+ t = mce2 t0 t1+ k = tRand 'a' 56 57 t+ i = tRand 'a' 40 480 t+ j = tRand 'a' (-1) 1 t+ c = midiCPS k+ m = midiCPS (k + 1 + j)+ s = envPerc 0.01 0.9+ e = envGen AR t 0.1 0 1 RemoveSynth s+ f = sinOsc AR c 0 * i + m+ in sinOsc AR f 0 * e++main :: IO ()+main = audition (out 0 fm_iter)
@@ -1,17 +0,0 @@-fm-iter (rd)--> import Sound.SC3.Monadic--> main =-> let { t0 = impulse ar (recip 0.30) 0-> ; t1 = tDelay t0 0.15-> ; t = mce2 t0 t1 }-> in do { k <- tRand 56 57 t-> ; i <- tRand 40 480 t-> ; j <- tRand (-1) 1 t-> ; let { c = midiCPS k-> ; m = midiCPS (k + 1 + j)-> ; s = envPerc 0.01 0.9-> ; e = envGen ar t 0.1 0 1 RemoveSynth s-> ; f = sinOsc ar c 0 * i + m }-> in audition (out 0 (sinOsc ar f 0 * e)) }
@@ -0,0 +1,38 @@+-- fm-kltr-p (rd)++import Sound.SC3.Lang.Pattern.ID+import Sound.SC3.ID++fm_kltr :: UGen+fm_kltr =+ let r1 = rand 'a' 0.975 1.025+ r2 = rand 'b' 0.5 1.5+ r3 = rand 'c' 0.975 1.025+ r4 = rand 'd' 0.75 1.25+ o = control IR "out" 0+ a = control KR "amp" 0.1+ dt = control KR "sustain" 0.1+ f = control KR "freq" 400.0+ i = control KR "index" 40.0+ p = control KR "pan" 0.0+ f2 = control KR "freq2" 600+ ep = envPerc 0.01 dt+ e = envGen AR 1 a 0 1 RemoveSynth ep+ so = sinOsc AR (xLine KR f (f * r1) dt DoNothing) 0+ xl = xLine KR f2 (f2 * r3) dt DoNothing+ m = so * line KR i (f * r2) dt DoNothing + xl+ l = line KR p (p * r4) dt DoNothing+ in pan2 (sinOsc AR m 0) l e++main :: IO ()+main = do+ let s = synthdef "fm_kltr" (out 0 fm_kltr)+ p = pbind [("freq",fmap midiCPS 53)+ ,("freq2",fmap midiCPS (pwhitei 'a' 48 96 inf ++ pwhite 'b' (-1) 1 inf))+ ,("amp",pwhite 'c' 0.1 0.4 inf)+ ,("dur",pwhite 'd' 0.15 1.25 inf)+ ,("sustain",pwhite 'e' 5 6 inf)+ ,("index",pwhite 'f' 240 1480 inf)+ ,("pan", pwhite 'g' (-1) 1 inf)]+ audition (s,p)
@@ -0,0 +1,62 @@+-- fm-kltr (rd)++import Sound.OpenSoundControl+import Sound.SC3.Monadic+import System.Random++fm_kltr :: UId m => m UGen+fm_kltr = do+ r1 <- rand 0.975 1.025+ r2 <- rand 0.5 1.5+ r3 <- rand 0.975 1.025+ r4 <- rand 0.75 1.25+ let o = control IR "out" 0+ a = control KR "amp" 0.1+ d = control KR "dur" 0.1+ f = control KR "freq" 400.0+ i = control KR "index" 40.0+ p = control KR "pan" 0.0+ f2 = control KR "freq2" 600+ ep = envPerc 0.01 d+ e = envGen AR 1 a 0 1 RemoveSynth ep+ so = sinOsc AR (xLine KR f (f * r1) d DoNothing) 0+ xl = xLine KR f2 (f2 * r3) d DoNothing+ m = so * line KR i (f * r2) d DoNothing + xl+ l = line KR p (p * r4) d DoNothing+ return (out o (pan2 (sinOsc AR m 0) l e))++rrand :: Random a => a -> a -> IO a+rrand l r = getStdRandom (randomR (l, r))++type R = Double++fm :: Transport t => t -> R -> R -> R -> R -> R -> IO ()+fm fd f ff a d i = do+ r1 <- rrand (-1) 1+ r2 <- rrand (-1) 1+ let p = [("freq", midiCPS f)+ ,("freq2", midiCPS ff + r1)+ ,("amp", a)+ ,("dur", d)+ ,("index", i)+ ,("pan", r2)]+ send fd (s_new "fm_kltr" (-1) AddToTail 1 p)++nd :: Transport t => t -> IO ()+nd fd = do+ ff <- rrand 48 96+ a <- rrand 0.1 0.4+ d <- rrand 1.2 7.2+ i <- rrand 240 1480+ t <- rrand 0.15 1.25+ fm fd 53 ff a d i+ pauseThread t++run :: Transport t => t -> IO ()+run fd = do+ u <- fm_kltr+ _ <- async fd (d_recv (synthdef "fm_kltr" u))+ sequence_ (replicate 32 (nd fd))++main :: IO ()+main = withSC3 run
@@ -1,49 +0,0 @@-fm-kltr (rd)--> import Sound.OpenSoundControl-> import Sound.SC3.Monadic-> import System.Random--> main =-> let { rrand l r = getStdRandom (randomR (l, r))-> ; gr =-> do { r1 <- rand 0.975 1.025-> ; r2 <- rand 0.5 1.5-> ; r3 <- rand 0.975 1.025-> ; r4 <- rand 0.75 1.25-> ; let { o = control ir "out" 0-> {- ; t = control kr "trig" 0 {- unused -} -}-> ; a = control kr "amp" 0.1-> ; d = control kr "dur" 0.1-> ; f = control kr "freq" 400.0-> ; i = control kr "index" 40.0-> ; p = control kr "pan" 0.0-> ; f2 = control kr "freq2" 600-> ; ep = envPerc 0.01 d-> ; e = envGen ar 1 a 0 1 RemoveSynth ep-> ; so = sinOsc ar (xLine kr f (f * r1) d DoNothing) 0-> ; xl = xLine kr f2 (f2 * r3) d DoNothing-> ; m = so * line kr i (f * r2) d DoNothing + xl-> ; l = line kr p (p * r4) d DoNothing }-> in return (out o (pan2 (sinOsc ar m 0) l e)) }-> ; fm fd f ff a d i =-> do { r1 <- rrand (-1) 1-> ; r2 <- rrand (-1) 1-> ; send fd (s_new "fm" (-1) AddToTail 1-> [("freq", midiCPS f)-> ,("freq2", midiCPS ff + r1)-> ,("amp", a)-> ,("dur", d)-> ,("index", i)-> ,("pan", r2)]) }-> ; nd fd =-> do { ff <- rrand 48 96-> ; a <- rrand 0.1 0.4-> ; d <- rrand 1.2 7.2-> ; i <- rrand 240 1480-> ; t <- rrand 0.15 1.25-> ; fm fd 53 ff a d i-> ; pauseThread t } }-> in withSC3 (\fd -> do { u <- gr-> ; _ <- async fd (d_recv (synthdef "fm" u))-> ; sequence (replicate 32 (nd fd)) })
@@ -0,0 +1,17 @@+-- forest sounds (paul jones)+-- sc-users, 2007-04-06++import Sound.SC3.Monadic++insects :: UId m => m UGen+insects = do+ n1 <- brownNoise AR+ n2 <- lfNoise2 KR 50+ let o = sinOsc KR (n2 * 50 + 50) 0 * 100 + 2000+ return (bpf n1 o 0.001 * 10)++forest_sounds :: UId m => m UGen+forest_sounds = clone 2 insects++main :: IO ()+main = audition . out 0 =<< forest_sounds
@@ -1,18 +0,0 @@-forest sounds (paul jones)--> import Sound.SC3.Monadic--> main =-> let insects = do { n1 <- brownNoise ar-> ; n2 <- lfNoise2 kr 50-> ; let o = sinOsc kr (n2 * 50 + 50) 0 * 100 + 2000-> in return (bpf n1 o 0.001 * 10) }-> in audition . (out 0) =<< clone 2 insects--{ var insects = { var n1 = BrownNoise.ar- ; var n2 = LFNoise2.kr(50)- ; var o = SinOsc.kr(n2 * 50 + 50, 0) * 100 + 2000- ; BPF.ar(n1, o, 0.001) * 10 }-; Out.ar(0, Array.fill(2, insects)) }.play--sc-users, 2007-04-06
@@ -0,0 +1,5 @@+{ var insects = { var n1 = BrownNoise.ar+ ; var n2 = LFNoise2.kr(50)+ ; var o = SinOsc.kr(n2 * 50 + 50, 0) * 100 + 2000+ ; BPF.ar(n1, o, 0.001) * 10 }+; Out.ar(0, Array.fill(2, insects)) }.play
@@ -0,0 +1,39 @@+-- fwalk (rd)++import Sound.OpenSoundControl+import Sound.SC3.Monadic++fwalk' :: UId m => UGen -> m UGen+fwalk' r = do+ t <- dust KR 3+ r1 <- tIRand 0 6 t+ r2 <- tRand (-0.0001) 0.0001 t+ let f = bufRdL 1 KR (mce2 0 1) r1 NoLoop+ f' = f + r2+ o1 = blip AR (midiCPS (r + f)) 12+ o2 = blip AR (midiCPS (r + f')) 12+ return ((o1 + o2) * decay2 t 0.3 1.2 * 0.1)++fwalk :: UId m => m UGen+fwalk = do+ f1 <- fwalk' 24+ f2 <- fwalk' 36+ return (f1 + f2)++run :: Transport t => t -> IO ()+run fd = do+ let n = [40,47,42,40,50+ ,43,35,43,40,47+ ,45,35,43,42,59+ ,48,40,47,52,45]+ m = [40,40,42,47,50+ ,35,43,43,40,45+ ,42,35,48,47,43+ ,40,59,45,47,52]+ _ <- async fd (b_alloc_setn1 0 0 n)+ _ <- async fd (b_alloc_setn1 1 0 m)+ f <- fwalk+ play fd (out 0 f)++main :: IO ()+main = withSC3 run
@@ -1,28 +0,0 @@-fwalk (rd)--> import Sound.SC3.Monadic--> main =-> let { n = [ 40.0, 47.0, 42.0, 40.0, 50.0-> , 43.0, 35.0, 43.0, 40.0, 47.0-> , 45.0, 35.0, 43.0, 42.0, 59.0-> , 48.0, 40.0, 47.0, 52.0, 45.0 ]-> ; m = [ 40.0, 40.0, 42.0, 47.0, 50.0-> , 35.0, 43.0, 43.0, 40.0, 45.0-> , 42.0, 35.0, 48.0, 47.0, 43.0-> , 40.0, 59.0, 45.0, 47.0, 52.0 ] -> ; a = map (\b -> b_alloc b 20 1) [0, 1]-> ; s = map (\(b, d) -> b_setn1 b 0 d) [(0, n), (1, m)]-> ; fwalk r = do { t <- dust kr 3-> ; r1 <- tiRand 0 6 t-> ; r2 <- tRand (-0.0001) 0.0001 t-> ; let { f = bufRdL 1 kr (mce2 0 1) r1 NoLoop-> ; f' = f + r2-> ; o1 = blip ar (midiCPS (r + f)) 12-> ; o2 = blip ar (midiCPS (r + f')) 12 }-> in return ((o1 + o2) * decay2 t 0.3 1.2 * 0.1) } }-> in withSC3 (\fd -> do { f1 <- fwalk 24-> ; f2 <- fwalk 36-> ; mapM_ (async fd) a-> ; mapM_ (send fd) s-> ; play fd (out 0 (f1 + f2)) })
@@ -0,0 +1,32 @@+-- h-chatter (rd)++import Control.Monad+import Sound.SC3.Monadic++wrp :: UGen -> UGen -> UGen -> UGen+wrp i = linLin i (-1) 1++h_chatter :: UId m => m UGen+h_chatter = do+ let mma m a = return . (+ a) . (* m)+ h0 = do n <- mma 5 5 =<< lfNoise0 KR 1+ a <- mma 0.2 1.2 =<< lfNoise2 KR n+ b <- mma 0.15 0.15 =<< lfNoise2 KR n+ let f = 40+ h = henonN AR (mce2 f (f * 0.5)) a b 0 0+ return (saw AR (h * 3200 + 1600) * 0.35)+ h1 = do n0 <- lfNoise0 KR 32+ n1 <- lfNoise0 KR 2+ let a = mouseX' KR 1.2 1.4 Linear 0.1+ b = mouseY' KR 0.2 0.3 Linear 0.1+ h = wrp n0 1 32+ p = wrp n1 2400 3200+ l = wrp n1 (-0.75) 0.75+ g = wrp n1 0.55 0.85+ f = 40+ o = blip AR (wrp (henonN AR f a b 0 0) p (p * 2)) h+ return (pan2 o l g * 0.35)+ liftM2 (+) h0 h1++main :: IO ()+main = audition . out 0 =<< h_chatter
@@ -1,45 +0,0 @@-h-chatter (rd)--> import Control.Monad-> import Sound.SC3.Monadic--> main =-> let { wrp i l r = linLin i (-1) 1 l r-> ; mma m a = return . (+ a) . (* m)-> ; h0 = do { n <- mma 5 5 =<< lfNoise0 kr 1-> ; a <- mma 0.2 1.2 =<< lfNoise2 kr n-> ; b <- mma 0.15 0.15 =<< lfNoise2 kr n-> ; let { f = 40-> ; h = henonN ar (mce2 f (f * 0.5)) a b 0 0 }-> in return (saw ar (h * 3200 + 1600) * 0.35) }-> ; h1 = do { n0 <- lfNoise0 kr 32-> ; n1 <- lfNoise0 kr 2-> ; let { a = mouseX kr 1.2 1.4 Linear 0.1-> ; b = mouseY kr 0.2 0.3 Linear 0.1-> ; h = wrp n0 1 32-> ; p = wrp n1 2400 3200-> ; l = wrp n1 (-0.75) 0.75-> ; g = wrp n1 0.55 0.85-> ; f = 40-> ; o = blip ar (wrp (henonN ar f a b 0 0) p (p * 2)) h }-> in return (pan2 o l g * 0.35) } }-> in audition . out 0 =<< liftM2 (+) h0 h1--{ var h0 = { var n = LFNoise0.kr(1, 5, 5)- ; var a = LFNoise0.kr(1, 0.2, 1.2)- ; var b = LFNoise0.kr(1, 0.15, 0.15)- ; var f = 40- ; var h = HenonN.ar([f, f * 0.5], a, b, 0, 0)- ; Saw.ar(h * 3200 + 1600) * 0.35 }-; var h1 = { var n0 = LFNoise0.kr(32)- ; var n1 = LFNoise0.kr(2)- ; var a = MouseX.kr(1.2, 1.4, 'linear', 0.1)- ; var b = MouseY.kr(0.2, 0.3, 'linear', 0.1)- ; var h = n0.range(1, 32)- ; var p = n1.range(2400, 3200)- ; var l = n1.range(-0.75, 0.75)- ; var g = n1.range(0.55, 0.85)- ; var f = 40- ; var o = Blip.ar(HenonN.ar(f, a, b, 0, 0).range(p, p * 2), h)- ; Pan2.ar(o, l, g) * 0.35 }-; Out.ar(0, h0.value + h1.value) }.play
@@ -0,0 +1,18 @@+{ var h0 = { var n = LFNoise0.kr(1, 5, 5)+ ; var a = LFNoise0.kr(1, 0.2, 1.2)+ ; var b = LFNoise0.kr(1, 0.15, 0.15)+ ; var f = 40+ ; var h = HenonN.ar([f, f * 0.5], a, b, 0, 0)+ ; Saw.ar(h * 3200 + 1600) * 0.35 }+; var h1 = { var n0 = LFNoise0.kr(32)+ ; var n1 = LFNoise0.kr(2)+ ; var a = MouseX.kr(1.2, 1.4, 'linear', 0.1)+ ; var b = MouseY.kr(0.2, 0.3, 'linear', 0.1)+ ; var h = n0.range(1, 32)+ ; var p = n1.range(2400, 3200)+ ; var l = n1.range(-0.75, 0.75)+ ; var g = n1.range(0.55, 0.85)+ ; var f = 40+ ; var o = Blip.ar(HenonN.ar(f, a, b, 0, 0).range(p, p * 2), h)+ ; Pan2.ar(o, l, g) * 0.35 }+; Out.ar(0, h0.value + h1.value) }.play
@@ -0,0 +1,14 @@+-- half-life (jrhb)++import Sound.SC3.ID++half_life :: UGen+half_life =+ let t_half = 1/3.92+ n_atoms = 1e+5+ n = max 0 (n_atoms - pulseCount (localIn 2 AR) 0)+ activity = dust 'a' AR (n * log 2 * t_half)+ in mrg [activity,localOut activity]++main :: IO ()+main = audition (out 0 half_life)
@@ -1,18 +0,0 @@-half-life (jrhb)--> import Sound.SC3.Monadic--> main =-> let { t_half = 3.92-> ; n_atoms = 1e+5-> ; n = max 0 (n_atoms - pulseCount (localIn 2 ar) 0) }-> in do { activity <- dust ar (n * log 2 / t_half)-> ; audition (mrg [ localOut activity-> , out 0 activity ]) }--{ var t_half = 3.92-; var n_atoms = 1e+5-; var n = max(0, n_atoms - PulseCount.ar(LocalIn.ar(2), 0))-; var activity = Dust.ar(n * 2.log / t_half)-; LocalOut.ar(activity)-; Out.ar(0, activity) }.play
@@ -0,0 +1,6 @@+{ var t_half = 3.92+; var n_atoms = 1e+5+; var n = max(0, n_atoms - PulseCount.ar(LocalIn.ar(2), 0))+; var activity = Dust.ar(n * 2.log / t_half)+; LocalOut.ar(activity)+; Out.ar(0, activity) }.play
@@ -0,0 +1,15 @@+-- harmonic swimming (jmcc)++import Sound.SC3.Monadic++main :: IO ()+main =+ let a = 0.02+ f = 50+ p = 20+ l = line KR 0 (- a) 60 DoNothing+ o h = do r <- clone 2 (rand 2 8)+ n <- lfNoise1 KR r+ let e = max 0 (n * a + l)+ return (fSinOsc AR (f * (h + 1)) 0 * e)+ in audition . out 0 . sum =<< mapM o [0..p]
@@ -0,0 +1,18 @@+-- harmonic swimming (jmcc)++import Sound.SC3.ID++harmonic_swimming :: UGen+harmonic_swimming =+ let a = 0.02+ f = 50+ p = 20+ l = line KR 0 (- a) 60 DoNothing+ o h = let r = udup 2 (rand 'a' 2 8)+ n = lfNoise1 'a' KR r+ e = max 0 (n * a + l)+ in fSinOsc AR (f * (h + 1)) 0 * e+ in sum (uprotect' 'a' (map o [0..p]))++main :: IO ()+main = audition (out 0 harmonic_swimming)
@@ -1,25 +0,0 @@-harmonic swimming (jmcc)--> import Sound.SC3.Monadic--> main =-> let { a = 0.02-> ; f = 50-> ; p = 20-> ; l = line kr 0 (- a) 60 DoNothing -> ; o h = do { r <- clone 2 (rand 2 8)-> ; n <- lfNoise1 kr r-> ; let e = max 0 (n * a + l)-> in return (fSinOsc ar (f * (h + 1)) 0 * e) } }-> in audition . out 0 . sum =<< mapM o [0..p]--{ var a = 0.02-; var f = 50-; var p = 20-; var l = Line.kr(0, a.neg, 60, 0)-; var o = { arg h- ; var r = 6 + [Rand.new(-4, 4), Rand.new(-4, 4)]- ; var n = LFNoise1.kr(r)- ; var e = max(0, n * a + l)- ; FSinOsc.ar(f * (h + 1), 0) * e }-; Out.ar(0, (0..p).collect(o).sum) }.play
@@ -0,0 +1,10 @@+{ var a = 0.02+; var f = 50+; var p = 20+; var l = Line.kr(0, a.neg, 60, 0)+; var o = { arg h+ ; var r = 6 + [Rand.new(-4, 4), Rand.new(-4, 4)]+ ; var n = LFNoise1.kr(r)+ ; var e = max(0, n * a + l)+ ; FSinOsc.ar(f * (h + 1), 0) * e }+; Out.ar(0, (0..p).collect(o).sum) }.play
@@ -0,0 +1,17 @@+-- harmonic tumbling (jmcc)++import Sound.SC3.Monadic++harmonic_tumbling :: UId m => m UGen+harmonic_tumbling = do+ let f = 80+ p = 10+ t = xLine KR (mce2 10 11) 0.1 60 DoNothing+ o h = do n <- dust KR t+ r <- rand 0 0.5+ let e = decay2 (n * 0.02) 0.005 r+ return (fSinOsc AR (f * (h + 1)) 0 * e)+ return.sum =<< mapM o [0..p]++main :: IO ()+main = audition . out 0 =<< harmonic_tumbling
@@ -1,23 +0,0 @@-harmonic tumbling (jmcc)--> import Sound.SC3.Monadic--> main =-> let { f = 80-> ; p = 10-> ; t = xLine kr (mce2 10 11) 0.1 60 DoNothing-> ; o h = do { n <- dust kr t-> ; r <- rand 0 0.5-> ; let e = decay2 (n * 0.02) 0.005 r-> in return (fSinOsc ar (f * (h + 1)) 0 * e) } }-> in audition . out 0 . sum =<< mapM o [0..p]--{ var f = 80-; var p = 10-; var t = XLine.kr([10, 11], 0.1, 60, doneAction: 0)-; var o = { arg h- ; var n = Dust.kr(t)- ; var r = Rand.new(0, 0.5)- ; var e = Decay2.kr(n * 0.02, 0.005, r)- ; FSinOsc.ar(f * (h + 1), 0) * e }-; Out.ar(0, (0..p).collect(o).sum) }.play
@@ -0,0 +1,9 @@+{var f = 80+;var p = 10+;var t = XLine.kr([10,11],0.1,60,doneAction: 0)+;var o = {arg h+ ;var n = Dust.kr(t)+ ;var r = Rand.new(0,0.5)+ ;var e = Decay2.kr(n * 0.02,0.005,r)+ ;FSinOsc.ar(f * (h + 1),0) * e}+;Out.ar(0,(0..p).collect(o).sum)}.play
@@ -0,0 +1,13 @@+-- hell is busy (jmcc)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.OverlapTexture++hib :: UGen+hib =+ let o = fSinOsc AR (400 + rand 'a' 0 2000) 0+ a = lfPulse KR (1 + rand 'b' 0 10.0) (rand 'c' 0 0.7) 0.04+ in pan2 (o * a) (rand 'd' (-1) 1) 1++main :: IO ()+main = overlapTextureU (4,4,8,maxBound) hib
@@ -0,0 +1,2 @@+var o = FSinOsc.ar(400+2000.0.rand,LFPulse.kr(1+10.0.rand,0.7.rand,0.04));+{OverlapTexture.ar({Pan2.ar(o,1.0.rand2)},4,4,8,2)}.play
@@ -0,0 +1,30 @@+-- hh-808 (ryan at wabdo.com)+-- http://www.create.ucsb.edu/pipermail/sc-users/2007-August/036131.html++import Sound.SC3++hh_808 :: UGen+hh_808 =+ let time = 250+ fr = [205.35,304.41,369.64,522.71,540.54,812.21]+ pulseEnv = let e = env [1.0,0.6] [time] [EnvNum (-0.5)] 0 0+ in envGen AR 1 1 0 (1/1000) DoNothing e+ s = mix (lfPulse AR (mce (map (* 4.09) fr)) 0 0.5)+ f = [\a -> ((a ==* 6.0) * 0.6) ++ ((a ==* 2.0) * 0.2) ++ ((a ==* 1.0) * 0.9)+ ,\a -> (a * pulseEnv) + (mix (lfPulse AR (mce fr) 0 0.55)) * 0.9+ ,\a -> rlpf a 7000 0.6+ ,\a -> rhpf a 6800 1.5+ ,\a -> rhpf a 6800 1.5+ ,\a -> rhpf a 1200 1.5+ ,\a -> a + freeVerb a 0.33 0.5 0.5+ ,\a -> let c = map EnvNum [0,-0.5,0,-50]+ e = env [0,1,0.4,0,0] [2,time,50,500] c 0 0+ in a * envGen AR 1 1 0 (1/1000) RemoveSynth e+ ,\a -> mce [a,delayN a 0.005 0.005]]+ in foldl1 (flip (.)) f s * 2++main :: IO ()+main = audition (out 0 hh_808)+
@@ -1,25 +0,0 @@-hh-808 (ryan at wabdo.com)--> import Sound.SC3--> main =-> let { time = 250-> ; freqs = [205.35, 304.41, 369.64, 522.71, 540.54, 812.21]-> ; pulseEnv = let e = env [1.0, 0.6] [time] [EnvNum (-0.5)] 0 0-> in envGen ar 1 1 0 (1/1000) DoNothing e-> ; s = mix (lfPulse ar (mce (map (* 4.09) freqs)) 0 0.5)-> ; f = [ \a -> ((a ==* 6.0) * 0.6) + ((a ==* 2.0) * 0.2) + ((a ==* 1.0) * 0.9)-> , \a -> (a * pulseEnv) + ((mix (lfPulse ar (mce freqs) 0 0.55)) * 0.9)-> , \a -> rlpf a 7000 0.6-> , \a -> rhpf a 6800 1.5-> , \a -> rhpf a 6800 1.5-> , \a -> rhpf a 1200 1.5-> , \a -> a + freeVerb a 0.33 0.5 0.5-> , \a -> let { c = map EnvNum [0, -0.5, 0, -50]-> ; e = env [0, 1, 0.4, 0, 0] [2, time, 50, 500] c 0 0 }-> in a * envGen ar 1 1 0 (1/1000) RemoveSynth e-> , \a -> mce [a, delayN a 0.005 0.005] ]-> ; (>>>) = flip (.) }-> in audition (out 0 (foldl1 (>>>) f s * 2))--http://www.create.ucsb.edu/pipermail/sc-users/2007-August/036131.html
@@ -0,0 +1,36 @@+-- implosion (rd)++import Sound.SC3.Monadic++mkls :: [(UGen,UGen)] -> UGen -> UGen+mkls bp t =+ let e = envCoord bp t 1 EnvLin+ in envGen KR 1 1 0 1 RemoveSynth e++mkrmp :: UGen -> UGen -> UGen -> UGen+mkrmp l r = mkls [(0,l),(1,r)]++wrp :: UGen -> UGen -> UGen -> UGen+wrp i = linLin i (-1) 1++pmr_n :: UId m => Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> m UGen+pmr_n rt l0 l1 r0 r1 d = do+ let le = mkrmp l0 r0 d+ re = mkrmp l1 r1 d+ n <- whiteNoise rt+ return (wrp n le re)++implosion :: IO UGen+implosion = do+ n0 <- rand (-1) 0+ n1 <- rand 0 1+ d <- rand 7.5 13.5+ f0 <- rand 10990 16220+ f1 <- rand 9440 19550+ f <- pmr_n AR 440 f0 f1 f1 d+ l <- pmr_n KR n0 n1 0 0 d+ a <- pmr_n KR 0.1 0.6 0 0 d+ return (pan2 (saw AR f) l a)++main :: IO ()+main = audition . out 0 =<< implosion
@@ -1,22 +0,0 @@-implosion (rd)--> import Sound.SC3.Monadic--> main =-> let { mkls bp t = let e = envCoord bp t 1 EnvLin-> in envGen kr 1 1 0 1 RemoveSynth e-> ; mkrmp l r t = mkls [(0, l), (1, r)] t-> ; wrp i l r = linLin i (-1) 1 l r-> ; pmr_n rt l0 l1 r0 r1 d = let { le = mkrmp l0 r0 d-> ; re = mkrmp l1 r1 d }-> in do { n <- whiteNoise rt-> ; return (wrp n le re) } }-> in do { n0 <- rand (-1) 0-> ; n1 <- rand 0 1-> ; d <- rand 7.5 13.5-> ; f0 <- rand 10990 16220-> ; f1 <- rand 9440 19550-> ; f <- pmr_n ar 440 f0 f1 f1 d-> ; l <- pmr_n kr n0 n1 0 0 d-> ; a <- pmr_n kr 0.1 0.6 0 0 d-> ; audition (out 0 (pan2 (saw ar f) l a)) }
@@ -0,0 +1,21 @@+-- insects (sam pluta)++import Sound.SC3.Monadic++insect :: UId m => m UGen+insect = do+ r1 <- rand 2000 3000+ r2 <- rand 0.05 0.1+ n1 <- lfNoise2 KR (r2 * 50 + 50)+ r4 <- rand 1 10+ r5 <- rand 0.05 0.1+ n2 <- lfNoise2 KR r5+ let a = sinOsc KR r4 0 * 0.5 + 0.5+ o = sinOsc AR (r1 + n1) r2 * 0.005 * a+ return (pan2 o n2 1)++insects :: UId m => m UGen+insects = return.sum =<< sequence (replicate 60 insect)++main :: IO ()+main = audition . out 0 =<< insects
@@ -1,15 +0,0 @@-insects (sam pluta)--> import Sound.SC3.Monadic--> main =-> let insect = do { r1 <- rand 2000 3000-> ; r2 <- rand 0.05 0.1-> ; n1 <- lfNoise2 KR (r2 * 50 + 50)-> ; r4 <- rand 1 10-> ; r5 <- rand 0.05 0.1-> ; n2 <- lfNoise2 KR r5-> ; let { a = sinOsc KR r4 0 * 0.5 + 0.5-> ; o = sinOsc AR (r1 + n1) r2 * 0.005 * a }-> in return (pan2 o n2 1) }-> in audition . (out 0) . sum =<< sequence (replicate 60 insect)
@@ -0,0 +1,20 @@+-- http://sccode.org/1-Z++import Sound.SC3++jl_z_1 :: UGen+jl_z_1 =+ let a = lag (impulse KR 8 0) 0.1+ b = crackle AR (lag (abs (lfSaw KR 3 0)) 0.1 * 1.8)+ c = a * b+ d = lag (impulse KR 2 0 + impulse KR 4 0.5) 0.1+ e = blip AR 4.9 7 * 0.4+ f = d * e+ in tanh (c + gVerb f 1 1 0.5 0.5 15 1 0.7 0.5 300 * 5) * 2++main :: IO ()+main = audition (out 0 jl_z_1)++{-+Sound.SC3.UGen.Dot.draw (out 0 jl_z_1)+-}
@@ -0,0 +1,16 @@+~jl_1_z =+ {var a = Impulse.kr(8,0).lag(0.1)+ ;var b = Crackle.ar(LFSaw.kr(3,0).abs.lag(0.1) * 1.8)+ ;var c = a * b+ ;var d = (Impulse.kr(2,0) + Impulse.kr(4,0.5)).lag(0.1)+ ;var e = Blip.ar(4.9,7) * 0.4+ ;var f = d * e+ ;tanh(c + GVerb.ar(f,1,1,0.5,0.5,15,1,0.7,0.5,300) * 5) * 2}++~jl_1_z.play+~jl_1_z.draw++/*+play{a=Impulse;tanh(a.kr(8).lag*Crackle.ar(LFSaw.kr(3).abs.lag*1.8)++GVerb.ar([a.kr(2)+a.kr(4,0.5)].lag*Blip.ar(4.9,7,0.4)!2,1,1)*5)}+*/
@@ -0,0 +1,29 @@+-- k-ppr-m (rd)++import Control.Monad+import Sound.SC3.Monadic++k_ppr_m :: IO UGen+k_ppr_m = do+ let wrp i = linLin i (-1) 1+ x = mouseX' KR 0.05 0.35 Linear 0.1+ y = mouseY' KR 0.15 0.75 Linear 0.1+ ti = lfTri KR x 0+ tf = wrp ti 100 200+ t = impulse AR tf 0+ stream lf rf ld rd g =+ do r1 <- rand 9 18+ let t' = pulseDivider t r1 0+ r2 <- tRand lf (wrp ti lf rf) t'+ r3 <- tRand ld rd t'+ return (ringz (decay2 t' 0.01 0.5) r2 (r3 * y) * g)+ s1 = stream 3140 6240 0.050 0.005 0.15+ s2 = stream 0400 9000 0.005 0.005 0.15+ liftM2 (+) (clone 2 s1) (clone 2 s2)++main :: IO ()+main = audition . out 0 =<< k_ppr_m++{-+k_ppr_m >>= Sound.SC3.UGen.Dot.draw+-}
@@ -0,0 +1,28 @@+-- k-ppr (rd)++import Sound.SC3.ID++k_ppr :: UGen+k_ppr =+ let wrp i = linLin i (-1) 1+ x = mouseX' KR 0.05 0.35 Linear 0.1+ y = mouseY' KR 0.15 0.75 Linear 0.1+ ti = lfTri KR x 0+ tf = wrp ti 100 200+ t = impulse AR tf 0+ stream e lf rf ld rd g =+ let r1 = rand e 9 18+ t' = pulseDivider t r1 0+ r2 = tRand e lf (wrp ti lf rf) t'+ r3 = tRand e ld rd t'+ in ringz (decay2 t' 0.01 0.5) r2 (r3 * y) * g+ s1 = stream 'a' 3140 6240 0.050 0.005 0.15+ s2 = stream 'a' 0400 9000 0.005 0.005 0.15+ in uclone 'a' 2 s1 + uclone 'b' 2 s2++main :: IO ()+main = audition (out 0 k_ppr)++{-+Sound.SC3.UGen.Dot.draw k_ppr+-}
@@ -1,39 +0,0 @@-k-ppr (rd)--> import Control.Monad-> import Sound.SC3.Monadic-> import qualified Sound.SC3.ID as I--> main =-> let { wrp i l r = linLin i (-1) 1 l r-> ; x = linLin (I.lfNoise0 'a' KR 1) (-1) 1 0.05 0.35-> {- ; x = mouseX kr 0.05 0.35 Linear 0.1 -}-> ; y = linLin (I.lfNoise0 'b' KR 1) (-1) 1 0.15 0.75-> {- ; y = mouseY kr 0.15 0.75 Linear 0.1 -}-> ; ti = lfTri kr x 0-> ; tf = wrp ti 100 200-> ; t = impulse ar tf 0-> ; stream lf rf ld rd g = -> do { r1 <- rand 9 18-> ; let t' = pulseDivider t r1 0-> in do { r2 <- tRand lf (wrp ti lf rf) t'-> ; r3 <- tRand ld rd t'-> ; return (ringz (decay2 t' 0.01 0.5) r2 (r3 * y) * g) } } -> ; s1 = stream 3140 6240 0.050 0.005 0.15 -> ; s2 = stream 0400 9000 0.005 0.005 0.15 }-> in audition . out 0 =<< liftM2 (+) (clone 2 s1) (clone 2 s2)--{ var x = MouseX.kr(0.05, 0.35, 'linear', 0.1)-; var y = MouseY.kr(0.15, 0.75, 'linear', 0.1)-; var ti = LFTri.kr(x, 0)-; var tf = ti.range(100, 200)-; var t = Impulse.ar(tf, 0)-; var stream = { arg lf, rf, ld, rd, g- ; { var r1 = Rand.new(9, 18)- ; var t_ = PulseDivider.ar(t, r1, 0)- ; var r2 = TRand.ar(lf, ti.range(lf, rf), t_)- ; var r3 = TRand.ar(ld, rd, t_)- ; Ringz.ar(Decay2.ar(t_, 0.01, 0.5), r2, r3 * y) * g } }-; var s1 = stream.value(3140, 6240, 0.050, 0.005, 0.15)-; var s2 = stream.value(0400, 9000, 0.005, 0.005, 0.15)-; Out.ar(0, Array.fill(2, s1) + Array.fill(2, s2)) }.play
@@ -0,0 +1,14 @@+{ var x = MouseX.kr(0.05, 0.35, 'linear', 0.1)+; var y = MouseY.kr(0.15, 0.75, 'linear', 0.1)+; var ti = LFTri.kr(x, 0)+; var tf = ti.range(100, 200)+; var t = Impulse.ar(tf, 0)+; var stream = { arg lf, rf, ld, rd, g+ ; { var r1 = Rand.new(9, 18)+ ; var t_ = PulseDivider.ar(t, r1, 0)+ ; var r2 = TRand.ar(lf, ti.range(lf, rf), t_)+ ; var r3 = TRand.ar(ld, rd, t_)+ ; Ringz.ar(Decay2.ar(t_, 0.01, 0.5), r2, r3 * y) * g } }+; var s1 = stream.value(3140, 6240, 0.050, 0.005, 0.15)+; var s2 = stream.value(0400, 9000, 0.005, 0.005, 0.15)+; Out.ar(0, Array.fill(2, s1) + Array.fill(2, s2)) }.play
@@ -0,0 +1,18 @@+-- Kabelscahden+-- Alberto de Campo and Julian Rohrhuber, 3/2003++import Sound.SC3.ID++kabelscahden :: UGen+kabelscahden =+ let t = dust 'a' KR (7 ** lfNoise1 'b' KR 0.3)+ h' = toggleFF (coinGate 'd' 0.4 t)+ h = h' * rlpf (lfPulse AR 50 0 0.5 + (lfNoise1 'e' KR 2 * 0.5 - 0.5)) 6000 0.15+ n = trig t (tRand 'f' 0 0.01 (coinGate 'g' 0.4 t)) * whiteNoise 'h' AR+ m = trig t (tRand 'i' 0 0.01 (coinGate 'j' 0.4 t)) * brownNoise 'k' AR+ k' = trig t (lfNoise1 'l' KR (mce2 4 4.2) * 0.1 + 0.11)+ k = k' * lfClipNoise 'm' AR (lfNoise0 'n' KR 7 * 30 + 40)+ in out 0 (distort (leakDC ((h + n + m + k) * 10) 0.995))++main :: IO ()+main = audition kabelscahden
@@ -0,0 +1,47 @@+-- karplus strong (alex mclean)+-- http://doc.gold.ac.uk/~ma503am/alex/vocable-source-released/++import Sound.OpenSoundControl+import Sound.SC3.ID++karplus_strong :: UGen+karplus_strong =+ let vf i s = let f = in' 5 KR i+ a = in' 5 KR (i + 5)+ b = in' 5 KR (i + 10)+ in mix (resonz s f (b / f) * dbAmp a)+ x = mouseX' KR 0 0.01 Linear 0.1 {- delay -}+ y = mouseY' KR 0.85 1 Linear 0.1 {- blend / gain -}+ ugenIf a b c = (a * b) + ((1 - a) * c)+ n = whiteNoise 'a' AR+ d = dust 'a' KR 4+ n0 = (n * 0.5) + 0.5+ probSwitch i prob = ugenIf (n0 >* prob) i (negate i)+ laggedDelay = lag x 0.01+ o = sinOsc AR 200 0+ a0 = decay d 0.025 * o+ a1 = localIn 1 AR + (a0 * (y - 0.25))+ a2 = delayN a1 0.01 laggedDelay+ a3 = delay1 a2+ a4 = (a2 + a3) * 0.5+ a5 = probSwitch a4 y+ a6 = vf (toggleFF d * 15) a5+ a7 = a6 * 1.5+ in mrg [localOut (a5 * 0.99),out 0 (mce2 a7 a7)]++act :: Transport t => t -> IO ()+act fd = do+ let aA = ("aA"+ ,[800,1150,2800,3500,4950]+ ,[0,-4 ,-20,-36,-60]+ ,[80,90, 120,130,140])+ aU = ("aU"+ ,[325,700,2530,3500,4950]+ ,[0,-12,-30,-40,-64]+ ,[50,60, 170,180,200])+ cs (_,c1,c2,c3) = c1 ++ c2 ++ c3+ send fd (c_setn [(0,cs aA),(15,cs aU)])+ play fd karplus_strong++main :: IO ()+main = withSC3 act
@@ -1,40 +0,0 @@-karplus strong (alex mclean)--> import Sound.SC3.Monadic--> main =-> let { aA = ( "aA" -> , [800, 1150, 2800, 3500, 4950]-> , [0, -4 , -20, -36 , -60]-> , [80, 90, 120, 130, 140] )-> ; aU = ( "aU" -> , [325, 700, 2530, 3500, 4950]-> , [0, -12 , -30, -40, -64]-> , [50, 60, 170, 180, 200] )-> ; cs (_, c1, c2, c3) = c1 ++ c2 ++ c3-> ; vf i s = let { f = in' 5 kr i-> ; a = in' 5 kr (i + 5)-> ; b = in' 5 kr (i + 10) }-> in mix (resonz s f (b / f) * dbAmp a)-> ; ks n d = let { x = mouseX kr 0 0.01 Linear 0.1 {- delay -}-> ; y = mouseY kr 0.85 1 Linear 0.1 {- blend / gain -}-> ; ugenIf a b c = (a * b) + ((1 - a) * c)-> ; n0 = (n / 2) + 0.5-> ; probSwitch i prob = ugenIf (n0 >* prob) i (negate i)-> ; laggedDelay = lag x 0.01-> ; o = sinOsc ar 200 0-> ; a0 = decay d 0.025 * o-> ; a1 = localIn 1 ar + (a0 * (y - 0.25))-> ; a2 = delayN a1 0.01 laggedDelay-> ; a3 = delay1 a2-> ; a4 = (a2 + a3) / 2.0-> ; a5 = probSwitch a4 y-> ; a6 = vf (toggleFF d * 15) a5-> ; a7 = a6 * 1.5 }-> in mrg [localOut (a5 * 0.99), out 0 (mce [a7, a7])] }-> in withSC3 (\fd -> do { send fd (c_setn [(0,cs aA), (15, cs aU)])-> ; n <- whiteNoise ar-> ; d <- dust kr 4-> ; play fd (ks n d) })--Variant on http://doc.gold.ac.uk/~ma503am/alex/vocable-source-released/
@@ -0,0 +1,19 @@+-- klink (rd)++import Sound.SC3.ID++klink :: UGen+klink =+ let n1 = lfNoise0 'a' KR (mce2 0.5 1.5)+ o = sinOsc KR n1 0+ a = abs (slope o) * mce2 2 3+ t = impulse AR a 0+ i = decay2 t 0.01 0.1+ x = mouseX' KR 960 3620 Exponential 0.2+ y = mouseY' KR 0.5 2.0 Linear 0.2+ n2 = tRand 'a' x 3940 t+ n3 = tRand 'a' 0.005 0.275 t+ in ringz i n2 (n3 * y)++main :: IO ()+main = audition (out 0 klink)
@@ -1,28 +0,0 @@-klink (rd)--> import Sound.SC3.Monadic--> main =-> do { n1 <- lfNoise0 kr (mce2 0.5 1.5)-> ; let { o = sinOsc kr n1 0-> ; f = mce2 2 3-> ; a = abs (slope o) * f-> ; t = impulse ar a 0-> ; i = decay2 t 0.01 0.1-> ; x = mouseX kr 960 3620 Exponential 0.2-> ; y = mouseY kr 0.5 2.0 Linear 0.2 }-> in do { n2 <- tRand x 3940 t-> ; n3 <- tRand 0.005 0.275 t-> ; audition (out 0 (ringz i n2 (n3 * y))) } }--{ var n1 = LFNoise0.kr([0.5, 1.5])-; var o = SinOsc.kr(n1, 0)-; var f = [2, 3]-; var a = Slope.kr(o).abs * f-; var t = Impulse.ar(a, 0)-; var i = Decay2.ar(t, 0.01, 0.1)-; var x = MouseX.kr(960, 3620, 'exponential', 0.2)-; var y = MouseY.kr(0.5, 2.0, 'linear', 0.2)-; var n2 = TRand.ar(x, 3940, t)-; var n3 = TRand.ar(0.005, 0.275, t)-; Out.ar(0, Ringz.ar(i, n2, n3 * y)) }.play
@@ -0,0 +1,10 @@+{var n1 = LFNoise0.kr([0.5,1.5])+;var o = SinOsc.kr(n1,0)+;var a = Slope.kr(o).abs * [2,3]+;var t = Impulse.ar(a,0)+;var i = Decay2.ar(t,0.01,0.1)+;var x = MouseX.kr(960,3620,'exponential',0.2)+;var y = MouseY.kr(0.5,2.0,'linear',0.2)+;var n2 = TRand.ar(x,3940,t)+;var n3 = TRand.ar(0.005,0.275,t)+;Out.ar(0,Ringz.ar(i,n2,n3 * y))}.play
@@ -0,0 +1,16 @@+-- lf pulses (rd)++import Sound.SC3.ID++lf_pulses :: UGen+lf_pulses =+ let n0 = lfNoise0 'a' AR (mce2 20 40)+ n1 = lfNoise0 'a' AR (mce2 5 10)+ x = mouseX' KR 0.012 0.19 Exponential 0.1+ f = formlet (blip AR 10 12) (n0 * 43 + 700) 0.005 x+ o = sinOsc AR 40 0 * n1+ in clip2 (leakDC (f + o) 0.995) 0.75++main :: IO ()+main = audition (out 0 lf_pulses)+
@@ -1,20 +0,0 @@-lf pulses (rd)--> import Sound.SC3.Monadic-> import qualified Sound.SC3.ID as I--> main =-> do { n0 <- lfNoise0 AR (mce2 20 40)-> ; n1 <- lfNoise0 AR (mce2 5 10)-> ; let { x = linLin (I.lfNoise0 'a' KR 1) (-1) 1 0.012 0.19-> {- ; x = mouseX KR 0.012 0.19 Exponential 0.1 -}-> ; f = formlet (blip AR 10 12) (n0 * 43 + 700) 0.005 x -> ; o = sinOsc AR 40 0 * n1 }-> in audition (out 0 (clip2 (leakDC (f + o) 0.995) 0.75)) }--{ var n0 = LFNoise0.ar([20, 40])-; var n1 = LFNoise0.ar([5, 10])-; var x = MouseX.kr(0.012, 0.19, 'exponential', 0.1)-; var f = Formlet.ar(Blip.ar(10, 12), n0 * 43 + 700, 0.005, x)-; var o = SinOsc.ar(40, 0) * n1-; Out.ar(0, LeakDC.ar(f + o, 0.995).clip2(0.75)) }.play
@@ -0,0 +1,6 @@+{ var n0 = LFNoise0.ar([20, 40])+; var n1 = LFNoise0.ar([5, 10])+; var x = MouseX.kr(0.012, 0.19, 'exponential', 0.1)+; var f = Formlet.ar(Blip.ar(10, 12), n0 * 43 + 700, 0.005, x)+; var o = SinOsc.ar(40, 0) * n1+; Out.ar(0, LeakDC.ar(f + o, 0.995).clip2(0.75)) }.play
@@ -0,0 +1,10 @@+-- lfo modulation (jmcc)++import Sound.SC3++main :: IO ()+main =+ let o = fSinOsc KR 0.05 0 * 80 + 160+ p = fSinOsc KR (mce2 0.6 0.7) 0 * 3600 + 4000+ s = rlpf (lfPulse AR o 0 0.4 * 0.05) p 0.2+ in audition (out 0 (combL s 0.3 (mce2 0.2 0.25) 2))
@@ -1,14 +0,0 @@-lfo modulation (jmcc)--> import Sound.SC3--> main =-> let { o = fSinOsc kr 0.05 0 * 80 + 160-> ; p = fSinOsc kr (mce2 0.6 0.7) 0 * 3600 + 4000-> ; s = rlpf (lfPulse ar o 0 0.4 * 0.05) p 0.2 }-> in audition (out 0 (combL s 0.3 (mce2 0.2 0.25) 2))--{ var o = FSinOsc.kr(0.05, 0, 80, 160)-; var p = FSinOsc.kr([0.6, 0.7], 0, 3600, 4000)-; var s = RLPF.ar(LFPulse.ar(o, 0, 0.4, 0.05), p, 0.2)-; Out.ar(0, CombL.ar(s, 0.3, [0.2, 0.25], 2)) }.play
@@ -0,0 +1,4 @@+{var o = FSinOsc.kr(0.05,0,80,160)+;var p = FSinOsc.kr([0.6,0.7],0,3600,4000)+;var s = RLPF.ar(LFPulse.ar(o,0,0.4,0.05),p,0.2)+;Out.ar(0,CombL.ar(s,0.3,[0.2,0.25],2))}.play
@@ -0,0 +1,24 @@+-- lg-timed (rd)++import Sound.SC3.Monadic++lg_timed :: UId m => m UGen+lg_timed = do+ let timed r y p =+ do d0 <- dser r p+ d1 <- dcons 0 d0+ d2 <- dser r y+ let t = tDuty AR d1 0 RemoveSynth d2 1+ return (latch t t)+ lg u = return (lag u 0.03)+ n = mce [52,76,66,67,68,69]+ a = mce [0.35,0.15,0.04,0.05,0.16,0.07]+ d = mce [0.1,0.5,0.09,0.08,0.07,0.3]+ x = mouseX' KR 0.5 1.25 Linear 0.2+ tn <- lg =<< timed dinf n (d * x)+ ta <- lg =<< timed dinf a (d * x)+ return (sinOsc AR (midiCPS tn) 0 * ta)++main :: IO ()+main = audition . out 0 =<< lg_timed+
@@ -1,39 +0,0 @@-lg-timed (rd)--> import Sound.SC3.Monadic--> main =-> let { timed r y p =-> do { d0 <- dser r p-> ; d1 <- dcons 0 d0-> ; d2 <- dser r y-> ; let t = tDuty AR d1 0 RemoveSynth d2 1-> in return (latch t t) }-> ; lg u = return (lag u 0.03)-> ; n = mce [52, 76, 66, 67, 68, 69]-> ; a = mce [0.35, 0.15, 0.04, 0.05, 0.16, 0.07]-> ; d = mce [0.1, 0.5, 0.09, 0.08, 0.07, 0.3]-> ; x = mouseX KR 0.5 1.25 Linear 0.2 }-> in do { tn <- lg =<< timed dinf n (d * x)-> ; ta <- lg =<< timed dinf a (d * x)-> ; audition (out 0 (sinOsc AR (midiCPS tn) 0 * ta)) }--{ var dcons = { arg x, xs- ; var i = Dseq.new([0, 1], 1)- ; var a = Dseq.new([x, xs], 1)- ; Dswitch.new(a, i) }-; var timed = { arg r, y, p- ; var d0 = Dser.new(p, r)- ; var d1 = dcons.value(0, d0)- ; var d2 = Dser.new(y, r)- ; var t = TDuty.ar(d1, 0, d2, 2, 1)- ; Latch.ar(t, t) }-; var lg = { arg u- ; Lag.ar(u, 0.03) }-; var n = [52, 76, 66, 67, 68, 69]-; var a = [0.35, 0.15, 0.04, 0.05, 0.16, 0.07]-; var d = [0.1, 0.5, 0.09, 0.08, 0.07, 0.3]-; var x = MouseX.kr(0.5, 1.25, 'linear', 0.2)-; var tn = lg.value(timed.value(inf, n, d * x))-; var ta = lg.value(timed.value(inf, a, d * x))-; Out.ar(0, SinOsc.ar(tn.midicps, 0) * ta) }.play
@@ -0,0 +1,19 @@+{ var dcons = { arg x, xs+ ; var i = Dseq.new([0, 1], 1)+ ; var a = Dseq.new([x, xs], 1)+ ; Dswitch.new(a, i) }+; var timed = { arg r, y, p+ ; var d0 = Dser.new(p, r)+ ; var d1 = dcons.value(0, d0)+ ; var d2 = Dser.new(y, r)+ ; var t = TDuty.ar(d1, 0, d2, 2, 1)+ ; Latch.ar(t, t) }+; var lg = { arg u+ ; Lag.ar(u, 0.03) }+; var n = [52, 76, 66, 67, 68, 69]+; var a = [0.35, 0.15, 0.04, 0.05, 0.16, 0.07]+; var d = [0.1, 0.5, 0.09, 0.08, 0.07, 0.3]+; var x = MouseX.kr(0.5, 1.25, 'linear', 0.2)+; var tn = lg.value(timed.value(inf, n, d * x))+; var ta = lg.value(timed.value(inf, a, d * x))+; Out.ar(0, SinOsc.ar(tn.midicps, 0) * ta) }.play
@@ -0,0 +1,93 @@+-- lin-sosc (rd)++import Control.Concurrent+import Control.Monad+import Sound.OpenSoundControl+import Sound.SC3+import qualified Sound.SC3.Lang.Random.IO as R++iota :: (Num a, Num b) => a -> b -> b -> [b]+iota 0 _ _ = []+iota n l s = l : iota (n - 1) (l + s) s++geom :: (Num a, Num b) => a -> b -> b -> [b]+geom 0 _ _ = []+geom n i f = i : geom (n - 1) (i * f) f++lineTo :: Fractional a => a -> a -> a -> [a]+lineTo n l r = iota n l ((r - l) / n)++xlineTo :: Floating a => a -> a -> a -> [a]+xlineTo n l r = geom n l ((r / l) ** (1.0 / n))++tblM :: UGen -> UGen -> UGen+tblM b x = playBuf 1 AR b (x * bufRateScale KR b) 0 0 Loop DoNothing++tblC :: UGen -> UGen -> UGen+tblC b c = tblM b (in' 1 KR c)++lin_sosc :: UGen+lin_sosc =+ let x = mouseX' KR 0.001 1.0 Linear 0.1+ o = sinOsc AR (tblM 0 x) 0 * tblM 1 x+ in clip2 (pan2 o (tblC 1 0) 0.025) 0.25++twoPi :: Double+twoPi = pi * 2.0++srng :: Fractional a => a -> a -> a -> a+srng l r e =+ let m = (l - r ) / 2+ in m + l + (e * m)++type Lin_Data = ([[Double]], [[Double]], [Double], [Double])++lin_data :: Double -> Lin_Data+lin_data n =+ let f = [lineTo n 440.0 444.0+ ,lineTo n 40.0 16000.0+ ,xlineTo n 40.0 16000.0+ ,map (srng 20 21000 . sin) (lineTo n 0.0 twoPi)+ ,map (srng 20 12000 . cos) (lineTo n 0.0 twoPi)+ ,map (srng 20 22000 . tan) (lineTo n 0.0 twoPi)+ ,map (srng 20 90 . tan) (lineTo n 0.0 twoPi)]+ a = [lineTo n 0.1 1.0+ ,lineTo n 1.0 0.1+ ,lineTo n 0.5 0.01+ ,lineTo n 0.01 0.5+ ,xlineTo n 1.0 0.1+ ,xlineTo n 0.1 1.0+ ,map sin (lineTo n 0.0 twoPi)+ ,map cos (lineTo n 0.0 twoPi)+ ,map ((* 0.001) . tan) (lineTo n 0 twoPi)]+ l = [0.005,0.0075,0.01,0.025,0.05,0.075+ ,0.1,0.25,0.5,0.75+ ,0.8,0.85,1.0,1.005]+ t = [0.01,0.05,0.1,0.15,0.25,0.5,0.75]+ in (f,a,l,t)++update :: Transport t => Lin_Data -> t -> IO ()+update (f,a,l,t) fd = do+ f' <- R.choose f+ a' <- R.choose a+ l' <- R.choose l+ t' <- R.choose t+ send fd (b_setn 0 [(0,f')])+ send fd (b_setn 1 [(0,a')])+ send fd (c_set [(0,l')])+ pauseThread t'++do_update :: Double -> IO ()+do_update n = withSC3 (replicateM_ 128 . update (lin_data n))++run :: Transport t => t -> IO ()+run fd = do+ let n = 1024+ _ <- async fd (b_alloc 0 (floor n) 1)+ _ <- async fd (b_alloc 1 (floor n) 1)+ play fd (out 0 lin_sosc)+ _ <- forkIO (do_update n)+ return ()++main :: IO ()+main = withSC3 run
@@ -1,59 +0,0 @@-lin-sosc (rd)--> import Control.Concurrent-> import Control.Monad-> import Sound.OpenSoundControl-> import Sound.SC3.ID-> import System.Random--> main =-> let { n' = 1024-> ; x = linLin (lfNoise0 'a' KR 1) (-1) 1 0.001 1-> {- ; x = mouseX KR 0.001 1.0 Linear 0.1 -}-> ; tblM b = playBuf 1 b (x * bufRateScale KR b) 0 0 Loop DoNothing-> ; tblC b c = playBuf 1 b (in' 1 KR c * bufRateScale KR b) 0 0 Loop DoNothing-> ; o = sinOsc AR (tblM 0) 0 * tblM 1 -> ; co = clip2 (pan2 o (tblC 1 0) 0.025) 0.25-> ; rrand (a, b) = getStdRandom (randomR (a,b))-> ; choose l = fmap (l !!) (rrand (0, length l - 1))-> ; iota 0 _ _ = []-> ; iota n l s = l : iota (n - 1) (l + s) s-> ; geom 0 _ _ = []-> ; geom n i f = i : geom (n - 1) (i * f) f-> ; lineTo n l r = iota n l ((r - l) / n)-> ; xlineTo n l r = geom n l ((r / l) ** (1.0 / n))-> ; twoPi = pi * 2.0-> ; srng l r e = let m = (l - r ) / 2-> in m + l + (e * m) -> ; freq = [ lineTo n' 440.0 444.0-> , lineTo n' 40.0 16000.0-> , xlineTo n' 40.0 16000.0-> , map (srng 20 21000 . sin) (lineTo n' 0.0 twoPi)-> , map (srng 20 12000 . cos) (lineTo n' 0.0 twoPi)-> , map (srng 20 22000 . tan) (lineTo n' 0.0 twoPi)-> , map (srng 20 90 . tan) (lineTo n' 0.0 twoPi) ]-> ; ampl = [ lineTo n' 0.1 1.0-> , lineTo n' 1.0 0.1-> , lineTo n' 0.5 0.01-> , lineTo n' 0.01 0.5-> , xlineTo n' 1.0 0.1-> , xlineTo n' 0.1 1.0-> , map sin (lineTo n' 0.0 twoPi)-> , map cos (lineTo n' 0.0 twoPi)-> , map (* 0.001) (map tan (lineTo n' 0 twoPi)) ]-> ; sloc = [ 0.005, 0.0075, 0.01, 0.025, 0.05, 0.075-> , 0.1, 0.25, 0.5, 0.75-> , 0.8, 0.85, 1.0, 1.005 ]-> ; paus = [0.01, 0.05, 0.1, 0.15, 0.25, 0.5, 0.75]-> ; update fd = do { f <- choose freq-> ; a <- choose ampl-> ; s <- choose sloc-> ; p <- choose paus-> ; send fd (b_setn 0 [(0, f)])-> ; send fd (b_setn 1 [(0, a)])-> ; send fd (c_set [(0, s)])-> ; pauseThread p } }-> in do { _ <- withSC3 (\fd -> do { _ <- async fd (b_alloc 0 (floor n') 1)-> ; _ <- async fd (b_alloc 1 (floor n') 1)-> ; play fd (out 0 co) })-> ; forkIO (withSC3 (\fd -> replicateM_ 128 (update fd))) }
@@ -0,0 +1,112 @@+-- | L-System oscillator (rd, 2006-11-01)+import Control.Monad+import Graphics.PS.Pt {- hps -}+import Graphics.PS.Unit+import qualified LSystem.LSystem as L {- hls -}+import qualified LSystem.Systems as L+import qualified LSystem.Turtle as L+import qualified Sound.File.NeXT as F {- hsc3-sf -}+import Sound.SC3.Monadic {- hsc3 -}+import System.Directory {- directory -}+import qualified System.FilePath as P {- filepath -}+import System.Random {- random -}++-- | Normalise to lie in (0,1).+--+-- > normalise [1,4,2,5] == [0.2,0.8,0.4,1]+normalise :: (Fractional a,Ord a) => [a] -> [a]+normalise s =+ let n = 1 / maximum (map abs s)+ in map (* n) s++-- | 'L.render' rule.+plain :: [Double] -> Pt -> Pt -> [Double]+plain d (Pt x0 y0) (Pt x1 y1) = [x0,y0,x1,y1] ++ d++-- | Render 'L.LSystem' to 'plain' data.+lsys_run :: (L.LSystem,Double,Double) -> Int -> [Double]+lsys_run (l,ta,ls) i =+ let a = L.Turtle (radians ta) 1 (Pt 0 0) (pi/2) 1 ls []+ in L.render [] plain (L.expand l i) a++-- | 'normalise' '.' 'lsys_run'+--+-- > length (gen_d L.l0d 3)+gen_d :: (L.LSystem,Double,Double) -> Int -> [Double]+gen_d l = normalise . lsys_run l++-- | Write 'gen_d' to 'FilePath' as /NeXT/ sound file.+gen_f :: FilePath -> [Double] -> IO ()+gen_f nm d = F.write nm (F.Header (length d) F.Float 44100 1) [d]++-- | Rendered L-system data sets.+lsys_data :: [[Double]]+lsys_data =+ [gen_d L.l0d 3+ ,gen_d L.l1d 3+ ,gen_d L.l2d 5+ ,gen_d L.l3d 12+ ,gen_d L.l4d 6+ ,gen_d L.l5d 4+ ,gen_d L.l6d 7+ ,gen_d L.l7d 4+ ,gen_d L.l8d 6+ ,gen_d L.l9d 10+ ,gen_d L.lAd 11+ ,gen_d L.lBd 6+ ,gen_d L.lCd 5]++-- | Exceeds UDP limits.+lsys_send :: IO ()+lsys_send = do+ let alloc fd (n,d) = async fd (b_alloc_setn1 n 0 d)+ withSC3 (\fd -> mapM_ (alloc fd) (zip [0..] lsys_data))+++-- | Filename for 'lsys_data'.+lsys_fn :: FilePath -> [FilePath]+lsys_fn d =+ let n = length lsys_data+ nm i = d P.</> show i P.<.> "snd"+ in map nm [0 .. n - 1]++-- | Write 'lsys_data' to 'lsys_fn' using 'gen_f'.+lsys_write :: FilePath -> IO ()+lsys_write d = zipWithM_ gen_f (lsys_fn d) lsys_data++-- | Load 'lsys_fn' at /scsynth/.+lsys_load :: FilePath -> IO ()+lsys_load d = do+ let alloc fd (n,nm) = async fd (b_allocRead n nm 0 0)+ withSC3 (\fd -> mapM_ (alloc fd) (zip [0..] (lsys_fn d)))++-- | Oscillator instrument+oi :: IO UGen+oi = do+ let rrand l r = getStdRandom (randomR (l, r))+ choose l = fmap (l !!) (rrand 0 (length l - 1))+ rng i = linLin i (-1) 1+ exprng i = linExp i (-1) 1+ c <- choose [0.25, 0.55, 0.75, 1.25]+ let t = impulse KR c 0+ b <- tIRand 0 12 t+ let n = bufFrames KR b+ m = n / 4+ i = floorE (rng (lfSaw AR c 0) 0 m) * 4+ tt = impulse AR (m / c) 0+ x0 = bufRdL 1 AR b i NoLoop+ y0 = bufRdL 1 AR b (i + 1) NoLoop+ x1 = bufRdL 1 AR b (i + 2) NoLoop+ y1 = bufRdL 1 AR b (i + 3) NoLoop+ f0 <- choose [16, 32, 64, 128, 256, 512, 8192]+ let f1 = 22000+ o x y = let f = exprng x f0 f1+ in pan2 (blip AR f (rng y 1 64)) y0 (decay tt 0.005)+ return (o x0 y0 + o x1 y1)++main :: IO ()+main = do+ t <- getTemporaryDirectory+ lsys_write t+ lsys_load t+ oi >>= audition . out 0
@@ -56,38 +56,9 @@ outR = pk2_L + pk2_R in audition (out 0 (mrg [mce2 outL outR, drv, source, l_out])) +main :: IO () main = lucier_wire 60 {- lucier_wire 60--{ var blocksize = ControlRate.ir.reciprocal-; var mk_dt = { |f| f.reciprocal - blocksize }-; var string_dt = mk_dt.(60)-; var c = 425-; var len = 40-; var pk1_p = 0.1-; var src_p = 0.3-; var pk2_p = 0.9-; var max_dt = 1-; var mk_dl = { arg i, r- ; LPZ1.ar(DelayC.ar(i, max_dt, r * string_dt)) }-; var mk_ap = { arg i, r, dt- ; LPZ1.ar(AllpassC.ar(i, max_dt, r * string_dt, dt)) }-; var drv = LocalIn.ar(1)-; var r = { Rand(0.001, 0.11) }-; var pk1_R = mk_dl.(drv, src_p - pk1_p, 2 + r.())-; var pk1_L = mk_ap.(pk1_R * -1, pk1_p * 2, r.())-; var pk2_L = mk_dl.(pk1_L, pk2_p - pk1_p, r.()) * 0.99-; var strL = mk_dl.(pk2_L, 1 - pk2_p, r.())-; var pk2_R = mk_ap.(strL * -1, 1 - pk2_p, 2 + r.()) * 0.99-; var strR = mk_dl.(pk2_R, pk2_p - src_p, 2 + r.())-; var src = { var a = Amplitude.kr(drv, mul: 11)- ; p = Pulse.ar(60 + a, mul: 0.1)- ; RLPF.ar((SinOsc.ar(220, 0) * 0.01) + p, 320, 0.05) }-; var src_n = { var a = Amplitude.kr(drv).min(1.0)- ; Normalizer.ar(src, 0.7) * (1.0 - a) }-; LocalOut.ar(src * 0.2 + strR)-; [pk1_L + pk1_R, pk2_L + pk2_R, drv, src] }.play- -}
@@ -0,0 +1,28 @@+{ var blocksize = ControlRate.ir.reciprocal+; var mk_dt = { |f| f.reciprocal - blocksize }+; var string_dt = mk_dt.(60)+; var c = 425+; var len = 40+; var pk1_p = 0.1+; var src_p = 0.3+; var pk2_p = 0.9+; var max_dt = 1+; var mk_dl = { arg i, r+ ; LPZ1.ar(DelayC.ar(i, max_dt, r * string_dt)) }+; var mk_ap = { arg i, r, dt+ ; LPZ1.ar(AllpassC.ar(i, max_dt, r * string_dt, dt)) }+; var drv = LocalIn.ar(1)+; var r = { Rand(0.001, 0.11) }+; var pk1_R = mk_dl.(drv, src_p - pk1_p, 2 + r.())+; var pk1_L = mk_ap.(pk1_R * -1, pk1_p * 2, r.())+; var pk2_L = mk_dl.(pk1_L, pk2_p - pk1_p, r.()) * 0.99+; var strL = mk_dl.(pk2_L, 1 - pk2_p, r.())+; var pk2_R = mk_ap.(strL * -1, 1 - pk2_p, 2 + r.()) * 0.99+; var strR = mk_dl.(pk2_R, pk2_p - src_p, 2 + r.())+; var src = { var a = Amplitude.kr(drv, mul: 11)+ ; p = Pulse.ar(60 + a, mul: 0.1)+ ; RLPF.ar((SinOsc.ar(220, 0) * 0.01) + p, 320, 0.05) }+; var src_n = { var a = Amplitude.kr(drv).min(1.0)+ ; Normalizer.ar(src, 0.7) * (1.0 - a) }+; LocalOut.ar(src * 0.2 + strR)+; [pk1_L + pk1_R, pk2_L + pk2_R, drv, src] }.play
@@ -0,0 +1,58 @@+-- Batuhan Bozkurt 2009 http://www.earslap.com++import Sound.SC3.ID++rng :: UGen -> UGen -> UGen -> UGen+rng l r =+ let m = (r - l) * 0.5+ a = m + l+ in (+ a) . (* m)++offset_id :: Enum a => Int -> a -> Int+offset_id n e = n + fromEnum e++-- mce...........................+microhelix :: UGen+microhelix =+ let rp = replicate+ ctrigs_ z_ =+ let z = offset_id z_+ i = mce (rp 8 (1/8) +++ rp 8 (1/4) +++ [dseq (z 'a') (drand (z 'b') dinf (mce2 1 2)) (mce2 (1/16) (1/16))])+ d = dxrand (z 'c') dinf (mceMap (* 1.25) i)+ in tDuty AR d 0 DoNothing (dwhite (z 'd') dinf 0.5 1) 0+ ctrigs = mce2 (ctrigs_ 0) (ctrigs_ 12)+ clicks =+ let n = pinkNoise 'e' AR * decay ctrigs (0.001 * abs (lfNoise1 'f' AR 4))+ in fold (bpf n 15000 0.9 * (25 * rng 0 1 (lfNoise1 'g' AR 8))) (-1) 1+ snd1 =+ let o = sinOsc AR (midiCPS 44) 0 * 0.5 + sinOsc AR (midiCPS 90) 0 * 0.6+ in lpf o (midiCPS 32) * 2 + hpf (lpf (whiteNoise 'h' AR * 0.008) 12000) 2400+ hiNoise =+ let n = whiteNoise 'i' AR+ e = decay2 (ctrigs * (lfNoise1 'j' AR 8 * 0.5 + 0.5)) 0.02 0.1 * 0.05+ in bpf (n * e) (tRand 'k' 12000 15000 ctrigs) 0.9+ trigMod = roundTo (lfNoise0 'l' AR 8) 1+ bass =+ let t = mceChannel 0 ctrigs * trigMod+ ph = sweep t (2 * pi * mce2 52.8 740) + (pi/3)+ ph' = wrap ph (-pi) pi+ mean u = mceSum u / fromIntegral (mceDegree u)+ o = tanh (mean (sinOsc AR 0 ph' * mce2 2 0.05))+ d = env [0, 0.5, 0.4, 0] [0, 0.2, 0.01] [EnvNum (-5)] 0 0+ e = envGen AR (abs t) 1 0 1 DoNothing d+ in o * e * 0.25+ snd1' =+ let t = mceChannel 0 ctrigs+ d = env [0, 1, 0.6, 0] [0.0001, 0.4, 0.01] [EnvNum (-4)] 0 0+ e = envGen AR (t * lfNoise0 'm' AR 8) 1 0 1 DoNothing d+ in pan2 (snd1 * e) (tRand 'n' (-1) 1 t) 1+ in limiter (midEQ (clicks + snd1' + hiNoise + bass) 14000 0.7 8) 1 0.01++main :: IO ()+main = audition (out 0 microhelix)++{-+Sound.SC3.UGen.Dot.draw microhelix+-}
@@ -0,0 +1,29 @@+-- modal space (jmcc)++import Sound.OpenSoundControl+import Sound.SC3.ID++ms :: UGen -> UGen -> UGen+ms n r =+ let x = mouseX' KR 0 15 Linear 0.1+ k = degreeToKey 0 x 12+ o = sinOsc AR (midiCPS (r + k + n * 0.04)) 0 * 0.1+ t = lfPulse AR (midiCPS (mce2 48 55)) 0.15 0.5+ f = midiCPS (sinOsc KR 0.1 0 * 10 + r)+ d = rlpf t f 0.1 * 0.1+ m = o + d+ in combN m 0.31 0.31 2 + m++modal_space :: UGen+modal_space =+ let n = udup 2 (lfNoise1 'a' KR 3)+ in (ms n 48 + ms n 72) * 0.25++run :: Transport t => t -> IO ()+run fd = do+ let p = [0,2,3.2,5,7,9,10]+ _ <- async fd (b_alloc_setn1 0 0 p)+ play fd (out 0 modal_space)++main :: IO ()+main = withSC3 run
@@ -1,37 +0,0 @@-modal space (jmcc)--> import Sound.SC3.Monadic--> main =-> let { b = 0-> ; p = [0, 2, 3.2, 5, 7, 9, 10] -> ; x = mouseX kr 0 15 Linear 0.1-> ; k = degreeToKey 0 x 12-> ; c n r = let { o = sinOsc ar (midiCPS (r + k + n * 0.04)) 0 * 0.1-> ; t = lfPulse ar (midiCPS (mce2 48 55)) 0.15 0.5-> ; f = midiCPS (sinOsc kr 0.1 0 * 10 + r)-> ; d = rlpf t f 0.1 * 0.1-> ; m = o + d }-> in combN m 0.31 0.31 2 + m }-> in withSC3 (\fd -> do { async fd (b_alloc b (length p) 1)-> ; send fd (b_setn1 b 0 p)-> ; n <- clone 2 (lfNoise1 kr 3)-> ; play fd (out 0 ((c n 48 + c n 72) * 0.25)) })--{ var s = Server.default-; var b = 0-; var p = FloatArray[0, 2, 3.2, 5, 7, 9, 10]-; var x = MouseX.kr(0, 15, 'linear', 0.1)-; var k = DegreeToKey.kr(b, x, 12)-; var c = { arg n, r- ; var o = SinOsc.ar((r + k + (n * 0.04)).midicps, 0) * 0.1- ; var t = LFPulse.ar([48, 55].midicps, 0.15, 0.5)- ; var f = (SinOsc.kr(0.1, 0) * 10 + r).midicps- ; var d = RLPF.ar(t, f, 0.1) * 0.1- ; var m = o + d- ; CombN.ar(m, 0.31, 0.31, 2) + m }-; var n = LFNoise1.kr([3, 3])-; var b_setn1 = { arg b, i, p- ; ["/b_setn", b, i, p.size] ++ p }-; s.sendMsg("/b_alloc", b, p.size, 1, b_setn1.value(b, 0, p).asRawOSC)-; Out.ar(0, (c.value(n, 48) + c.value(n, 72)) * 0.25) }.play
@@ -0,0 +1,17 @@+{var s = Server.default+;var b = 0+;var p = FloatArray[0,2,3.2,5,7,9,10]+;var x = MouseX.kr(0,15,'linear',0.1)+;var k = DegreeToKey.kr(b,x,12)+;var c = {arg n,r+ ;var o = SinOsc.ar((r + k + (n * 0.04)).midicps,0) * 0.1+ ;var t = LFPulse.ar([48,55].midicps,0.15,0.5)+ ;var f = (SinOsc.kr(0.1,0) * 10 + r).midicps+ ;var d = RLPF.ar(t,f,0.1) * 0.1+ ;var m = o + d+ ;CombN.ar(m,0.31,0.31,2) + m}+;var n = LFNoise1.kr([3,3])+;var b_setn1 = {arg b,i,p+ ;["/b_setn",b,i,p.size] ++ p}+;s.sendMsg("/b_alloc",b,p.size,1,b_setn1.value(b,0,p).asRawOSC)+;Out.ar(0,(c.value(n,48) + c.value(n,72)) * 0.25)}.play
@@ -0,0 +1,12 @@+-- moto rev (jmcc)++import Sound.SC3++moto_rev :: UGen+moto_rev =+ let f = sinOsc KR 0.2 0 * 10 + 21+ s = lfPulse AR f (mce2 0 0.1) 0.1+ in clip2 (rlpf s 100 0.1) 0.4++main :: IO ()+main = audition (out 0 moto_rev)
@@ -1,12 +0,0 @@-moto rev (jmcc)--> import Sound.SC3--> main =-> let { f = sinOsc kr 0.2 0 * 10 + 21-> ; s = lfPulse ar f (mce2 0 0.1) 0.1 }-> in audition (out 0 (clip2 (rlpf s 100 0.1) 0.4))--{ var f = SinOsc.kr(0.2, 0) * 10 + 21-; var s = LFPulse.ar(f, [0, 0.1], 0.1)-; Out.ar(0, RLPF.ar(s, 100, 0.1).clip2(0.4)) }.play
@@ -0,0 +1,3 @@+{ var f = SinOsc.kr(0.2, 0) * 10 + 21+; var s = LFPulse.ar(f, [0, 0.1], 0.1)+; Out.ar(0, RLPF.ar(s, 100, 0.1).clip2(0.4)) }.play
@@ -0,0 +1,32 @@+-- mouse clatter (rd)++import Sound.OpenSoundControl+import Sound.SC3.Monadic++mouse_clatter :: UId m => m UGen+mouse_clatter = do+ let x = mouseX' KR 100 12000 Linear 0.1+ y = mouseY' KR 0.01 0.15 Linear 0.1+ n1 <- lfNoise0 KR (mce [3,3.25])+ let t = impulse KR (n1 * 16 + 18) 0+ n2 <- tRand 0.005 y t+ n3 <- whiteNoise AR+ n4 <- tRand 10 x t+ n5 <- tRand 0 1 t+ n6 <- tExpRand 0.15 1 t+ o <- let e = decay2 t 0.01 n2+ in return (bpf (n3 * e) n4 n5)+ n7 <- pv_RandComb (fft' 10 o) n6 t+ return (o * 0.05 + ifft' n7)++run :: Transport t => t -> IO ()+run fd = do+ _ <- async fd (b_alloc 10 2048 1)+ play fd . out 0 =<< mouse_clatter++main :: IO ()+main = withSC3 run++{-+s.sendMsg('b_alloc', 10, 2048, 1);+-}
@@ -1,55 +0,0 @@-mouse clatter (rd)--> import Sound.SC3.Monadic--> main =-> let { x = mouseX kr 100 12000 Linear 0.1-> ; y = mouseY kr 0.01 0.15 Linear 0.1 }-> in do { n1 <- lfNoise0 kr (mce [3, 3.25])-> ; let { t = impulse kr (n1 * 16 + 18) 0-> ; s = do { n2 <- tRand 0.005 y t-> ; n3 <- whiteNoise ar-> ; n4 <- tRand 10 x t-> ; n5 <- tRand 0 1 t-> ; n6 <- tExpRand 0.15 1 t-> ; o <- let e = decay2 t 0.01 n2-> in return (bpf (n3 * e) n4 n5)-> ; n7 <- pv_RandComb (fft' 10 o) n6 t-> ; return (o * 0.05 + ifft' n7) } }-> in withSC3 (\fd -> do { async fd (b_alloc 10 2048 1)-> ; play fd . out 0 =<< s }) }--s.sendMsg('b_alloc', 10, 2048, 1);--{ var x = MouseX.kr(100, 12000, 'linear', 0.1)-; var y = MouseY.kr(0.01, 0.15, 'linear', 0.1)-; var n1 = LFNoise0.kr([3, 3.25])-; var t = Impulse.kr((n1 * 16) + 18, 0)-; var n2 = TRand.kr(0.005, y, t)-; var n3 = WhiteNoise.ar()-; var n4 = TRand.kr(10, x, t)-; var n5 = TRand.kr(0, 1, t)-; var n6 = TExpRand.kr(0.15, 1, t)-; var o = { var e = Decay2.kr(t, 0.01, n2)- ; BPF.ar(n3 * e, n4, n5) }-; var n7 = PV_RandComb(FFT(10, o), n6, t)-; var s = (o * 0.05) + IFFT(n7)-; Out.ar(0, s) }.play--(let* ((x (MouseX kr 100 12000 0 0.1))- (y (MouseY kr 0.01 0.15 0 0.1))- (n1 (LFNoise0 kr (mce2 3 3.25)))- (t (Impulse kr (MulAdd n1 16 18) 0))- (n2 (TRand 0.005 y t))- (n3 (WhiteNoise ar))- (n4 (TRand 10 x t))- (n5 (TRand 0.0 1.0 t))- (n6 (TExpRand 0.15 1.0 t))- (e (Decay2 t 0.01 n2))- (o (BPF (Mul n3 e) n4 n5))- (n7 (PV_RandComb (FFT* 10 o) n6 t))- (s (Add (Mul o 0.05) (IFFT* n7))))- (with-sc3- (lambda (fd)- (async fd (/b_alloc 10 2048 1))- (play fd (Out 0 s)))))
@@ -0,0 +1,14 @@+{var x = MouseX.kr(100,12000,'linear',0.1)+;var y = MouseY.kr(0.01,0.15,'linear',0.1)+;var n1 = LFNoise0.kr([3,3.25])+;var t = Impulse.kr((n1 * 16) + 18,0)+;var n2 = TRand.kr(0.005,y,t)+;var n3 = WhiteNoise.ar()+;var n4 = TRand.kr(10,x,t)+;var n5 = TRand.kr(0,1,t)+;var n6 = TExpRand.kr(0.15,1,t)+;var o = {var e = Decay2.kr(t,0.01,n2)+ ;BPF.ar(n3 * e,n4,n5)}+;var n7 = PV_RandComb(FFT(10,o),n6,t)+;var s = (o * 0.05) + IFFT(n7)+;Out.ar(0,s)}.play
@@ -0,0 +1,17 @@+(let* ((x (MouseX KR 100 12000 0 0.1))+ (y (MouseY KR 0.01 0.15 0 0.1))+ (n1 (LFNoise0 KR (mce2 3 3.25)))+ (t (Impulse KR (MulAdd n1 16 18) 0))+ (n2 (TRand 0.005 y t))+ (n3 (WhiteNoise AR))+ (n4 (TRand 10 x t))+ (n5 (TRand 0.0 1.0 t))+ (n6 (TExpRand 0.15 1.0 t))+ (e (Decay2 t 0.01 n2))+ (o (BPF (Mul n3 e) n4 n5))+ (n7 (PV_RandComb (FFT* 10 o) n6 t))+ (s (Add (Mul o 0.05) (IFFT* n7))))+ (with-sc3+ (lambda (fd)+ (async fd (/b_alloc 10 2048 1))+ (play fd (Out 0 s)))))
@@ -0,0 +1,60 @@+-- mridangam (jmcc)++import Sound.OpenSoundControl {- hosc -}+import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}++spe3_mridangam :: Synthdef+spe3_mridangam =+ let t_amp = tr_control "t_amp" 1+ n = whiteNoise 'a' AR * 70+ e = decay2 t_amp 0.002 0.1+ o = distort (resonz (n * e) (midiCPS 60) 0.02 * 4) * 0.4+ in synthdef "mridangam" (out 0 o)++spe3_drone :: Synthdef+spe3_drone =+ let s1 = saw AR (midiCPS (mce2 60 60.04))+ s2 = saw AR (midiCPS (mce2 67 67.04))+ o = lpf (s1 + s2) (midiCPS 108) * 0.007+ in synthdef "drone" (out 0 o)++p :: [P Double]+p =+ [pseq [0.0] 10+ -- intro+ ,pseq [0.9,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0] 2+ ,pseq [0.9,0.0,0.0,0.2,0.0,0.0,0.0,0.2,0.0,0.0] 2+ ,pseq [0.9,0.0,0.0,0.2,0.0,0.2,0.0,0.2,0.0,0.0] 2+ ,pseq [0.9,0.0,0.0,0.2,0.0,0.0,0.0,0.2,0.0,0.2] 2+ -- solo+ ,prand 'a' [pseq [0.9,0.0,0.0,0.7,0.0,0.2,0.0,0.7,0.0,0.0] 1+ ,pseq [0.9,0.2,0.0,0.7,0.0,0.2,0.0,0.7,0.0,0.0] 1+ ,pseq [0.9,0.0,0.0,0.7,0.0,0.2,0.0,0.7,0.0,0.2] 1+ ,pseq [0.9,0.0,0.0,0.7,0.2,0.2,0.0,0.7,0.0,0.0] 1+ ,pseq [0.9,0.0,0.0,0.7,0.0,0.2,0.2,0.7,0.2,0.0] 1+ ,pseq [0.9,0.2,0.2,0.7,0.2,0.2,0.2,0.7,0.2,0.2] 1+ ,pseq [0.9,0.2,0.2,0.7,0.2,0.2,0.2,0.7,0.0,0.0] 1+ ,pseq [0.9,0.0,0.0,0.7,0.2,0.2,0.2,0.7,0.0,0.0] 1+ ,pseq [0.9,0.0,0.4,0.0,0.4,0.0,0.4,0.0,0.4,0.0] 1+ ,pseq [0.9,0.0,0.0,0.4,0.0,0.0,0.4,0.2,0.4,0.2] 1+ ,pseq [0.9,0.0,0.2,0.7,0.0,0.2,0.0,0.7,0.0,0.0] 1+ ,pseq [0.9,0.0,0.0,0.7,0.0,0.0,0.0,0.7,0.0,0.0] 1+ ,pseq [0.9,0.7,0.7,0.0,0.0,0.2,0.2,0.2,0.0,0.0] 1+ ,pseq [0.9,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0] 1] 30+ -- tehai+ ,pseq [2.0,0.0,0.2,0.5,0.0,0.2,0.9+ ,1.5,0.0,0.2,0.5,0.0,0.2,0.9+ ,1.5,0.0,0.2,0.5,0.0,0.2] 3+ -- sam+ ,pseq [5] 1]++act :: Transport t => t -> IO ()+act fd = do+ play fd spe3_drone+ _ <- async fd (d_recv spe3_mridangam)+ let p' = pmono_d spe3_mridangam 100 [("t_amp",pseq p 1),("dur",1/8)]+ play fd p'++main :: IO ()+main = withSC3 act
@@ -0,0 +1,37 @@+-- nharm-p (rd)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.Event+import Sound.SC3.Lang.Pattern.ID++nharm :: Num n => Int -> n -> [n]+nharm n f = map ((* f) . fromIntegral) [1..n]++klg :: Int -> UGen+klg n =+ let f = control KR "freq" 440+ d = rand 'a' 9 12+ l = uclone' 'a' n (rand 'a' 0.01 0.02)+ p = rand 'a' (-1.0) 1.0+ a = 0.5+ e = envGen KR 1 0.9 0 1 RemoveSynth (envSine d a)+ nh = nharm n f+ s = klangSpec nh l (replicate n 0.0)+ in out 0 (pan2 (klang AR 1 0 s) p e)++type Range = (Double,Double)++{- Note that the dur key is used only to schedule the nodes. Both it+and the gate message are ignored by the UGen graph, which manages+duration internally. -}++pN :: Int -> Range -> Range -> P Event+pN n (m0,m1) (d0,d1) =+ let i = synthdef ("klg" ++ show n) (klg n)+ p = pbind [("midinote",pwhite 'a' m0 m1 inf)+ ,("dur",pwhite 'b' d0 d1 inf)]+ in pinstr_d (return i) p++main :: IO ()+main = audition (pmerge (pN 24 (90,92) (0.25,0.75))+ (pN 54 (12,14) (1.25,1.76)))
@@ -0,0 +1,38 @@+--nharm (rd)++import Control.Concurrent+import Control.Monad+import Sound.OpenSoundControl+import Sound.SC3.Monadic+import System.Random++rrand :: Random a => a -> a -> IO a+rrand l r = getStdRandom (randomR (l,r))++nharm :: (Num b, Integral a) => a -> b -> [b]+nharm n f = map ((* f) . fromIntegral) [1..n]++klg :: UGen -> Int -> IO UGen+klg m u = do+ n <- rrand 4 u+ d <- iRand 9 12+ f <- iRand m (m + 2)+ l <- sequence (replicate n (rand 0.01 0.02))+ p <- rand (-1.0) 1.0+ let a = 0.5+ e = envGen KR 1 0.9 0 1 RemoveSynth (envSine d a)+ nh = nharm n (midiCPS f)+ s = klangSpec nh l (replicate n 0.0)+ return (pan2 (klang AR 1 0 s) p e)++ply :: Int -> (Double,Double) -> UGen -> Int -> IO ()+ply n (l,r) m u = do+ let a = do pauseThread =<< rrand l r+ audition . out 0 =<< klg m u+ replicateM_ n a++main :: IO ()+main = do+ _ <- forkIO (ply 32 (0.25,0.75) 92 24)+ _ <- forkIO (ply 8 (1.25,1.75) 12 54)+ return ()
@@ -1,26 +0,0 @@-nharm (rd)--> import Control.Concurrent-> import Control.Monad-> import Sound.SC3.Monadic-> import System.Random--> main =-> let { nharm n f = map ((* f) . fromIntegral) [1..n]-> ; rrand l r = getStdRandom (randomR (l, r))-> ; threadPause n = when (n>0) (threadDelay (floor (n * 1e6)))-> ; klg m u = do { n <- rrand 4 u-> ; d <- rrand 9 12-> ; f <- rrand m (m + 2)-> ; l <- sequence (replicate n (rrand 0.01 0.02))-> ; p <- rrand (-1.0) 1.0-> ; let { a = 0.5-> ; e = envGen kr 1 0.9 0 1 RemoveSynth (envSine d a)-> ; nh = nharm n (midiCPS f)-> ; s = klangSpec nh l (replicate n 0.0) }-> in return (pan2 (klang ar 1 0 s) p e) }-> ; ply :: Int -> (Double, Double) -> UGen -> Int -> IO ()-> ; ply n (l,r) m u = replicateM_ n (do { threadPause =<< rrand l r-> ; audition . out 0 =<< klg m u }) }-> in do { forkIO (ply 32 (0.25, 0.75) 92 24)-> ; forkIO (ply 8 (1.25, 1.75) 12 54) }
@@ -0,0 +1,20 @@+-- noise burst sweep (jmcc)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.OverlapTexture++nbs :: UGen+nbs =+ let n = udup 2 (whiteNoise 'a' AR)+ lfoRate = mouseX' KR 10 60 Exponential 0.2+ amp = max 0 (lfSaw KR lfoRate (-1))+ cfreq = mouseY' KR 400 8000 Exponential 0.2+ freq = sinOsc KR 0.2 0 * cfreq + (1.05 * cfreq)+ in resonz (n * amp) freq 0.1++main :: IO ()+main = overlapTextureU (2,4,4,maxBound) nbs++{-+audition (out 0 nbs)+-}
@@ -1,18 +0,0 @@-noise burst sweep (jmcc)--> import Sound.SC3.Monadic--> main =-> do { n <- clone 2 (whiteNoise ar)-> ; let { lfoRate = mouseX kr 10 60 Exponential 0.2-> ; amp = max 0 (lfSaw kr lfoRate (-1))-> ; cfreq = mouseY kr 400 8000 Exponential 0.2-> ; freq = sinOsc kr 0.2 0 * cfreq + (1.05 * cfreq) }-> in audition (out 0 (resonz (n * amp) freq 0.1)) }--{ var n = WhiteNoise.ar ! 2-; var lfoRate = MouseX.kr(10, 60, 'exponential', 0.2)-; var amp = max(0, LFSaw.kr(lfoRate, -1))-; var cfreq = MouseY.kr(400, 8000, 'exponential', 0.2)-; var freq = SinOsc.kr(0.2, 0) * cfreq + (1.05 * cfreq)-; Out.ar(0, Resonz.ar(n * amp, freq, 0.1)) }.play
@@ -0,0 +1,6 @@+{var n = WhiteNoise.ar ! 2+;var lfoRate = MouseX.kr(10,60,'exponential',0.2)+;var amp = max(0,LFSaw.kr(lfoRate,-1))+;var cfreq = MouseY.kr(400,8000,'exponential',0.2)+;var freq = SinOsc.kr(0.2,0) * cfreq + (1.05 * cfreq)+;Out.ar(0,Resonz.ar(n * amp,freq,0.1))}.play
@@ -0,0 +1,17 @@+-- noise modulated sines (jmcc)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.OverlapTexture++nms :: UGen+nms =+ let f = midiCPS (rand 'a' 60 100)+ o = fSinOsc AR (mce2 f (f + 0.2)) 0+ a = lfNoise2 'b' KR (f * mce2 0.15 0.16) * 0.1+ in o * a++nms_pp :: (UGen -> UGen)+nms_pp i = combN i 0.3 0.3 4 + mceReverse i++main :: IO ()+main = overlapTextureU_pp (4,4,4,maxBound) nms 2 nms_pp
@@ -12,27 +12,24 @@ score :: [OSC] score =- let at t m = Bundle (NTPr t) m+ let at t = Bundle (NTPr t) mk_instr = d_recv (synthdef "test" graph) mk_group = g_new [(1, AddToTail, 0)] mk_node t f = at t [s_new "test" (-1) AddToTail 1 [("freq", f)]] notes = take 128 (zipWith mk_node [1.0, 1.05 ..] [330, 350 ..]) in at 0.0 [mk_instr, mk_group] : notes -perform :: [OSC] -> IO ()-perform s = do- let f i fd x = do let (Bundle (NTPr t) x') = x- pauseThreadUntil (i + t)- send fd (Bundle immediately x')- withSC3 (\fd -> utcr >>= \i -> mapM_ (f i fd) s)- render :: [OSC] -> IO () render s = do writeNRT "/tmp/nrt.score" s- system "scsynth -N /tmp/nrt.score _ /tmp/nrt.wav 44100 WAVE float"+ _ <- system "scsynth -N /tmp/nrt.score _ /tmp/nrt.wav 44100 WAVE float" return () main :: IO () main = do render score perform score++{-+perform score+-}
@@ -0,0 +1,16 @@+-- nv-tw-1 (nv)+-- http://sccode.org/1-V++import Sound.SC3.ID++nv_tw_1 :: UGen+nv_tw_1 =+ let a = udup 2 (pinkNoise 'a' AR)+ nd z =+ let n = lfNoise1 'a' KR (rand 'a' 0 0.05)+ f = linExp n (-1) 1 40 15000+ in bBandStop z f (expRand 'a' 0.1 2)+ in lpf (useq 'a' 50 nd a) 1e5++main :: IO ()+main = audition (out 0 nv_tw_1)
@@ -0,0 +1,6 @@+{a=PinkNoise.ar(1!2)+;50.do{+ f=LFNoise1.kr(0.05.rand).exprange(40,15000)+ ;a=BBandStop.ar(a,f,exprand(0.1,2))}+;LPF.ar(a,1e5)+}.play
@@ -0,0 +1,17 @@+-- nv-tw-41 (nv)+-- http://sccode.org/1-V++import Sound.SC3.ID++nv_tw_41 :: UGen+nv_tw_41 =+ let nd i =+ let t = (0.6 ** i) * 40 * impulse AR ((2 ** i) / 32) (1/2)+ f = (4 ** lfNoise0 i KR (1/16)) * 300+ in sin (rlpf t f 5e-3)+ x = splay (mce (map nd [0..7])) 1 1 0 True+ r u = let (p,q) = mce2c u in freeVerb2 p q 0.1 1 1+ in r (r x)++main :: IO ()+main = audition (out 0 nv_tw_41)
@@ -0,0 +1,7 @@+play{+x=Splay.ar({|i|+t=0.6**i*40*Impulse.ar(2**i/32,1/2);+f=4**LFNoise0.kr(1/16)*300;+RLPF.ar(t,f,5e-3).sin}!8);+2.do{x=FreeVerb2.ar(*x++[0.1,1,1])};+x}
@@ -0,0 +1,29 @@+-- nv-tw-54 (nv)+-- http://sccode.org/1-V++import Sound.SC3+import Sound.SC3.Lang.Pattern.ID++fF :: Double -> Double -> Double+fF i f =+ let n = (((2 * i) `modE` 6 + 1) + ffloor f) / (i `modE` 5 + 1)+ in (f + log2 n) `modE` 2++fS :: [Double]+fS =+ let lp i f = let f' = fF i f in f' : lp (i + 1) f'+ in lp 0 0++nvi :: Synthdef+nvi =+ let i = control KR "i" 0+ f = control KR "f" 0+ p = (i `modE` 8 + 2) * 52+ e = line KR 0.1 0 1 RemoveSynth+ o = syncSaw AR ((2 ** f) * 99 + mce2 0 1) p * e+ in synthdef "nvi" (out 0 o)++main :: IO ()+main = audition (nvi,pbind [("f",fromList fS)+ ,("i",pseries 0 1 inf)+ ,("dur",0.3)])
@@ -0,0 +1,7 @@+f=0;+{inf.do{|i|+n=((((2*i)%6)+1)+floor(f))/((i%5)+1);+f=(f+log2(n))%2;+e=Line.kr(0.1,0,1,1,0,2);+play{SyncSaw.ar(2**f*99+[0,1],i%8+2*52)*e};+0.3.wait}}.r.play
@@ -0,0 +1,14 @@+-- one-line (lance putnam)++import Sound.SC3++one_line :: UGen+one_line =+ let lfs = lfSaw AR (mce2 1 0.99) (mce2 0 0.6) * 2000 + 2000+ lfs_t = trunc lfs (mce2 400 600) * mce2 1 (-1)+ f = onePole (mix lfs_t) 0.98+ in pan2 (sinOsc AR f 0) 0 0.1++main :: IO ()+main = audition (out 0 one_line)+
@@ -1,14 +0,0 @@-one-line (lance putnam)--> import Sound.SC3--> main =-> let { lfs = lfSaw ar (mce2 1 0.99) (mce2 0 0.6) * 2000 + 2000-> ; lfs_t = trunc lfs (mce2 400 600) * mce2 1 (-1)-> ; f = onePole (mix lfs_t) 0.98 }-> in audition (out 0 (pan2 (sinOsc ar f 0) 0 0.1))--{ var lfs = LFSaw.ar([1, 0.99], [0, 0.6], 2000, 2000)-; var lfs_t = lfs.trunc([400, 600]) * [1, -1]-; var f = OnePole.ar(Mix.new(lfs_t), 0.98)-; Out.ar(0, Pan2.ar(SinOsc.ar(f, 0), 0, 0.1)) }.play
@@ -0,0 +1,4 @@+{var lfs = LFSaw.ar([1,0.99],[0,0.6],2000,2000)+;var lfs_t = lfs.trunc([400,600]) * [1,-1]+;var f = OnePole.ar(Mix.new(lfs_t),0.98)+;Out.ar(0,Pan2.ar(SinOsc.ar(f,0),0,0.1))}.play
@@ -0,0 +1,34 @@+-- oscillator cluster (rd)++import Sound.SC3.Lang.Pattern.ID+import Sound.SC3.Monadic++oscillator_cluster :: (Functor m,UId m) => m UGen+oscillator_cluster = do+ let ln a b d = line KR a b d RemoveSynth+ rln r a b d = fmap (\n -> ln (a + n) b d) (rand 0 r)+ prt d a cf = do r1 <- rand cf (cf + 2)+ r2 <- rln 1 5 0.01 d+ r3 <- rln 10 20 0 d+ r4 <- rand 0.1 0.2+ let f = mce2 cf r1 + sinOsc KR r2 0 * r3+ o = fSinOsc AR f 0+ e = decay2 (impulse AR 0 0) r4 d * a+ return (o * e)+ np = 12+ fp = sequence (replicate np (rand 220 660))+ d <- rand 4 7+ a <- rand 0.01 0.05+ return.sum =<< mapM (prt d a) =<< fp++main :: IO ()+main = do+ u <- oscillator_cluster+ let s = synthdef "oscillator_cluster" (out 0 u)+ audition (s,pbind [("dur",prand 'a' [0.25,0.5,1,3,5] inf)])++{-+audition . (out 0) =<< oscillator_cluster+let otu = Sound.SC3.Lang.Control.OverlapTexture.overlapTextureU+otu (0,6,3,maxBound) =<< oscillator_cluster+-}
@@ -1,46 +0,0 @@-oscillator cluster (rd)--> import Sound.SC3.Monadic--> main =-> let { ln a b d = line kr a b d RemoveSynth-> ; rln r a b d = fmap (\n -> ln (a + n) b d) (rand 0 r)-> ; prt d a cf = do { r1 <- rand cf (cf + 2)-> ; r2 <- rln 1 5 0.01 d-> ; r3 <- rln 10 20 0 d-> ; r4 <- rand 0.1 0.2-> ; let { f = mce2 cf r1 + sinOsc kr r2 0 * r3-> ; o = fSinOsc ar f 0-> ; e = decay2 (impulse ar 0 0) r4 d * a }-> in return (o * e) }-> ; np = 12-> ; fp = sequence (replicate np (rand 220 660)) }-> in do { d <- rand 4 7-> ; a <- rand 0.01 0.05-> ; audition . (out 0) . sum =<< mapM (prt d a) =<< fp }--{ var ln = { arg a, b, d- ; Line.kr(a, b, d, 1) }-; var xln = { arg a, b, d- ; XLine.kr(a, b, d, 1) }-; var rln = { arg r, a, b, d- ; var n = Rand.new(0, r)- ; ln.value(a + n, b, d) }-; var rxln = { arg r, a, b, d- ; var n = Rand.new(0, r)- ; xln.value(a + n, b, d) }-; var prt = { arg d, a- ; { arg cf- ; var r1 = Rand.new(cf, cf + 2)- ; var r2 = rln.value(1, 5, 0.01, d)- ; var r3 = rln.value(10, 20, 0, d)- ; var r4 = Rand.new(0.1, 0.2)- ; var f = [cf, r1] + (SinOsc.kr(r2, 0) * r3)- ; var o = FSinOsc.ar(f, 0)- ; var e = Decay2.ar(Impulse.ar(0, 0), r4, d) * a- ; o * e } }-; var np = 12-; var fp = Array.fill(np, { Rand.new(220, 660) })-; var d = Rand.new(4, 7)-; var a = Rand.new(0.01, 0.05)-; Out.ar(0, fp.collect(prt.value(d, a)).sum) }.play
@@ -0,0 +1,23 @@+{var ln = {arg a,b,d;Line.kr(a,b,d,1)}+;var xln = {arg a,b,d;XLine.kr(a,b,d,1)}+;var rln = {arg r,a,b,d+ ;var n = Rand.new(0,r)+ ;ln.value(a + n,b,d)}+;var rxln = {arg r,a,b,d+ ;var n = Rand.new(0,r)+ ;xln.value(a + n,b,d)}+;var prt = {arg d,a+ ;{arg cf+ ;var r1 = Rand.new(cf,cf + 2)+ ;var r2 = rln.value(1,5,0.01,d)+ ;var r3 = rln.value(10,20,0,d)+ ;var r4 = Rand.new(0.1,0.2)+ ;var f = [cf,r1] + (SinOsc.kr(r2,0) * r3)+ ;var o = FSinOsc.ar(f,0)+ ;var e = Decay2.ar(Impulse.ar(0,0),r4,d) * a+ ;o * e}}+;var np = 12+;var fp = Array.fill(np,{Rand.new(220,660)})+;var d = Rand.new(4,7)+;var a = Rand.new(0.01,0.05)+;Out.ar(0,fp.collect(prt.value(d,a)).sum)}.play
@@ -0,0 +1,22 @@+-- overlap-add (jmcc, rd)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.OverlapTexture+import Sound.SC3.Lang.Pattern.ID++sine :: UGen+sine =+ let r0 = expRand 'a' 500 1400+ r1 = rand 'b' (-1) 1+ in pan2 (sinOsc AR r0 0) r1 0.01++noise :: UGen+noise =+ let n0 = whiteNoise 'a' AR+ r0 = expRand 'b' 800 8400+ r1 = rand 'c' (-1) 1+ in pan2 (resonz (n0 * 0.1) r0 0.05) r1 0.25++main :: IO ()+main = audition (ppar [overlapTextureU' (4,4,6,maxBound) sine+ ,overlapTextureU' (4,4,6,maxBound) noise])
@@ -1,41 +0,0 @@-overlap-add (jmcc, rd)--> import Control.Concurrent-> import Sound.OpenSoundControl-> import Sound.SC3.Monadic--> main =-> let { at t f -> = let at' t' f' = do { n <- f' t'-> ; pauseThreadUntil (t' + n)-> ; at' (t' + n) f' }-> in do { pauseThreadUntil t-> ; at' t f-> ; return () }-> ; mk_env a s -> = let { c = EnvNum 4-> ; p = envLinen' a s a 1 (c, c, c) }-> in envGen KR 1 1 0 1 RemoveSynth p-> ; with_env g a s -> = out 0 (g * (mk_env a s))-> ; overlap_add fd n o a s g -> = do { t <- utcr-> ; let { g' = with_env g (constant a) (constant s)-> ; dt = (a + s + a) / o -> ; f _ = do { send fd (s_new n (-1) AddToTail 1 [])-> ; return dt } }-> in do { async fd (d_recv (synthdef n g'))-> ; at t f } }-> ; oSine fd -> = do { r0 <- expRand 500 1400-> ; r1 <- rand (-1) 1-> ; let g = pan2 (sinOsc AR r0 0) r1 0.01-> in overlap_add fd "random-sines" 4 2 4 g }-> ; oNoise fd -> = do { n0 <- whiteNoise AR-> ; r0 <- expRand 800 8400-> ; r1 <- rand (-1) 1-> ; let g = pan2 (resonz (n0 * 0.1) r0 0.05) r1 0.25-> in overlap_add fd "random-noise" 4 2 4 g } }-> in do { forkIO (withSC3 (\fd -> oSine fd))-> ; forkIO (withSC3 (\fd -> oNoise fd)) }
@@ -0,0 +1,59 @@+-- pattern buffer (rd)++import Sound.OpenSoundControl+import Sound.SC3.Monadic+import System.Random++tseq :: [UGen] -> UGen+tseq l =+ let n = fromIntegral (length l) / 2.0+ in select (lfSaw KR 0.5 0 * n + n) (mce l)++rrand :: Random a => a -> a -> IO a+rrand l r = getStdRandom (randomR (l, r))++pattern_buffer :: Int -> IO UGen+pattern_buffer c = do+ let p = phasor AR 0 (bufRateScale KR 10) 0 (bufFrames KR 10) 0+ t = bufRdC 1 AR 10 p Loop+ r1 <- sequence (replicate c (rrand 36 96))+ r2 <- sequence (replicate c (rrand (-1.0) 1.0))+ r3 <- rrand 0 1+ n1 <- tRand 0.02 0.08 t+ let e = decay2 t 0.01 n1+ f = midiCPS (tseq r1)+ l = tseq r2+ o = [sinOsc AR f 0, saw AR f] !! r3+ return (pan2 o l e)++set_pattern :: Transport t => Int -> Int -> t -> IO ()+set_pattern nf c fd = do+ let rs = do r0 <- rrand 0 nf+ r1 <- rrand 0.0 1.0+ send fd (b_set1 10 r0 r1)+ sequence_ (replicate c rs)++fill_clr :: (Transport t) => Int -> Int -> Double -> Int -> t -> IO b+fill_clr nf c dt n fd = do+ let go i = if i == 0+ then do print "clr"+ send fd (b_zero 10)+ go n+ else do set_pattern nf c fd+ print ("fill",i)+ pauseThread dt+ go (i - 1)+ go n++run :: Transport t => t -> IO ()+run fd = do+ let nf = 2 * 48000+ c = 24+ n = 16+ dt = 2.6+ _ <- async fd (b_alloc 10 (nf * 2) 1)+ play fd . out 0 =<< pattern_buffer c+ fill_clr nf c dt n fd++main :: IO ()+main = withSC3 run
@@ -1,27 +0,0 @@-pattern buffer (rd)--> import Sound.SC3.Monadic-> import System.Random--> main =-> let { nf = 2 * 48000-> ; c = 24-> ; tseq l = let n = fromIntegral (length l) / 2.0-> in select (lfSaw kr 0.5 0 * n + n) (mce l)-> ; rrand l r = getStdRandom (randomR (l, r))-> ; p = phasor ar 0 (bufRateScale kr 10) 0 (bufFrames kr 10) 0-> ; t = bufRdC 1 ar 10 p Loop -> ; rs h = do { r0 <- rrand 0 nf-> ; r1 <- rrand 0.0 1.0-> ; send h (b_set1 10 r0 r1) } }-> in do { r1 <- sequence (replicate c (rrand 36 96))-> ; r2 <- sequence (replicate c (rrand (-1.0) 1.0))-> ; r3 <- rrand 0 1-> ; n1 <- tRand 0.02 0.08 t-> ; let { e = decay2 t 0.01 n1-> ; f = midiCPS (tseq r1)-> ; l = tseq r2-> ; o = [sinOsc ar f 0, saw ar f] !! r3 }-> in withSC3 (\fd -> do { async fd (b_alloc 10 (nf * 2) 1)-> ; sequence (replicate c (rs fd))-> ; play fd (out 0 (pan2 o l e)) }) }
@@ -0,0 +1,41 @@+-- pebble beach (np)+-- http://sccode.org/1-u+-- requires 'scsynth -u 57110 -m 32768'++import Sound.SC3.ID++exprange :: UGen -> UGen -> UGen -> UGen+exprange l r i = linExp i (-1) 1 l r++bg_f :: UGen -> UGen+bg_f k =+ let sc = 0.4 + (k * 0.07)+ fr = range 3100 4900 (lag (lfNoise0 'a' KR 21.8) 0.7) * sc+ am = range 0 1 (lag (lfNoise1 'a' KR 5.227) 5.374)+ in bpf (pinkNoise 'a' AR * 0.4) fr 0.1 * am++fg_f :: UGen -> UGen -> UGen+fg_f df tf =+ let d = dust 'a' AR (df * rand 'a' 0.8 1.2) * 50+ l = exprange 800 900 (sinOsc KR 2.2 0)+ r = exprange 2600 2900 (sinOsc KR 5.228 0)+ z = resonz d (tRand 'a' l r d) (tRand 'a' 0.03 0.08 d)+ t = lagUD (range 2 0.5 (saw KR tf)) 0.6 2.8+ o = z * t+ in o + combL o 0.8 (rand 'a' 0.2 0.8) (iChoose 'a' (mce2 (-4) 4))++pebble_beach' :: ID a => a -> UGen+pebble_beach' j =+ let bg' = let am = range 0 1 (lag (lfNoise0 'a' KR 34) 1.4)+ in brownNoise 'a' AR * 0.06 * am+ bg = bg' + sum (uprotect' j (map bg_f [0..19])) * 0.6+ tf = range 0.122 0.24 (sinOsc KR 0.17 0)+ df = exprange 1 700 (lfTri KR tf 0) * exprange 1 0.2 (lfTri KR tf 0)+ fg = mix (uclone j 50 (fg_f df tf)) * 0.2+ in (bg + fg) * line KR 0 1 1.2 DoNothing++pebble_beach :: UGen+pebble_beach = mce2 (pebble_beach' 'a') (pebble_beach' 'b')++main :: IO ()+main = audition (out 0 pebble_beach)
@@ -0,0 +1,27 @@+-- plucked strings (jmcc)++import Sound.SC3.Monadic++plucked_strings :: UId m => m UGen+plucked_strings = do+ let dt = do r0 <- rand 60 90+ return (1 / midiCPS (floorE r0))+ i = do r0 <- rand 2 2.2+ n0 <- dust AR 0.5+ r1 <- rand 0.05 0.15+ r2 <- rand 0 (pi * 2)+ r3 <- iRand 0 2+ let s0 = impulse AR r0 0.3+ s1 = n0 * 0.3+ s2 = impulse AR (sinOsc KR r1 r2 * 5 + 5.2) 0.3+ return (select r3 (mce [s0,s1,s2]))+ s = do n0 <- pinkNoise AR+ r1 <- rand (-1) 1+ im <- i+ dt' <- dt+ let t = decay im 0.1 * n0 * 0.1+ return (pan2 (combL t dt' dt' 4) r1 1)+ return.sum =<< sequence (replicate 5 s)++main :: IO ()+main = audition . out 0 =<< plucked_strings
@@ -1,23 +0,0 @@-plucked strings (jmcc)--> import Sound.SC3.Monadic--> main =-> let { s = do { n0 <- pinkNoise ar-> ; r1 <- rand (-1) 1-> ; im <- i-> ; dt' <- dt-> ; let t = decay im 0.1 * n0 * 0.1-> in return (pan2 (combL t dt' dt' 4) r1 1) }-> ; i = do { r0 <- rand 2 2.2-> ; n0 <- dust ar 0.5-> ; r1 <- rand 0.05 0.15-> ; r2 <- rand 0 (pi * 2)-> ; r3 <- iRand 0 2-> ; let { s0 = impulse ar r0 0.3-> ; s1 = n0 * 0.3-> ; s2 = impulse ar (sinOsc kr r1 r2 * 5 + 5.2) 0.3 }-> in return (select r3 (mce [s0, s1, s2])) }-> ; dt = do { r0 <- rand 60 90-> ; return (1 / (midiCPS (floorE r0))) } }-> in audition . out 0 . sum =<< sequence (replicate 5 s)
@@ -0,0 +1,24 @@+-- police state (jmcc)++import Sound.SC3.Monadic++police_state :: UId m => m UGen+police_state = do+ let nd = do r0 <- rand 0.02 0.12+ r1 <- rand 0 (pi*2)+ r2 <- rand 0 600+ r3 <- rand 700 1300+ r4 <- rand (-1) 1+ r5 <- rand 80 120+ n0 <- lfNoise2 AR r5+ let f = sinOsc KR r0 r1 * r2 + r3+ return (pan2 (sinOsc AR f 0 * n0 * 0.1) r4 1)+ ns <- clone 4 nd+ n0 <- clone 2 (lfNoise2 KR 0.4)+ n1 <- lfNoise2 AR (n0 * 90 + 620)+ n2 <- lfNoise2 KR (mce2 0.3 0.301)+ let e = n1 * (n2 * 0.15 + 0.18)+ return (combL (mix ns + e) 0.3 0.3 3)++main :: IO ()+main = audition . out 0 =<< police_state
@@ -1,35 +0,0 @@-police state (jmcc)--> import Sound.SC3.Monadic--> main =-> let node = do { r0 <- rand 0.02 0.12-> ; r1 <- rand 0 (pi*2)-> ; r2 <- rand 0 600-> ; r3 <- rand 700 1300-> ; r4 <- rand (-1) 1-> ; r5 <- rand 80 120-> ; n0 <- lfNoise2 ar r5-> ; let f = sinOsc kr r0 r1 * r2 + r3-> in return (pan2 (sinOsc ar f 0 * n0 * 0.1) r4 1) }-> in do { nodes <- clone 4 node-> ; n0 <- clone 2 (lfNoise2 kr 0.4)-> ; n1 <- lfNoise2 ar (n0 * 90 + 620)-> ; n2 <- lfNoise2 kr (mce2 0.3 0.301)-> ; let e = n1 * (n2 * 0.15 + 0.18)-> in audition (out 0 (combL (mix nodes + e) 0.3 0.3 3)) }--{ var node = { var r0 = Rand.new(0.02, 0.12)- ; var r1 = Rand.new(0, 2pi)- ; var r2 = Rand.new(0, 600)- ; var r3 = 1000 + Rand.new(-300, 300)- ; var r4 = Rand.new(-1, 1)- ; var r5 = 100 + Rand.new(-20, 20)- ; var n0 = LFNoise2.ar(r5)- ; var f = SinOsc.kr(r0, r1, r2, r3)- ; Pan2.ar(SinOsc.ar(f, 0) * n0 * 0.1, r4, 1) }-; var n0 = LFNoise2.kr([0.4, 0.4])-; var n1 = LFNoise2.ar(n0 * 90 + 620)-; var n2 = LFNoise2.kr([0.3,0.3])-; var e = n1 * (n2 * 0.15 + 0.18)-; Out.ar(0, CombL.ar(Mix.fill(4, node) + e, 0.3, 0.3, 3)) }.play
@@ -0,0 +1,14 @@+{var node = {var r0 = Rand.new(0.02,0.12)+ ;var r1 = Rand.new(0,2pi)+ ;var r2 = Rand.new(0,600)+ ;var r3 = 1000 + Rand.new(-300,300)+ ;var r4 = Rand.new(-1,1)+ ;var r5 = 100 + Rand.new(-20,20)+ ;var n0 = LFNoise2.ar(r5)+ ;var f = SinOsc.kr(r0,r1,r2,r3)+ ;Pan2.ar(SinOsc.ar(f,0) * n0 * 0.1,r4,1)}+;var n0 = LFNoise2.kr([0.4,0.4])+;var n1 = LFNoise2.ar(n0 * 90 + 620)+;var n2 = LFNoise2.kr([0.3,0.3])+;var e = n1 * (n2 * 0.15 + 0.18)+;Out.ar(0,CombL.ar(Mix.fill(4,node) + e,0.3,0.3,3))}.play
@@ -0,0 +1,3 @@+var f = FSinOsc.kr(20+30.0.rand,100+300.0.rand,500 + 2000.0.linrand);+var o = SinOsc.ar(f,0,LFPulse.kr(3/(1 + 8.0.rand),0.2+0.3.rand,0.04));+OverlapTexture.ar({Pan2.ar(o,1.0.rand2)},8,8,4,2)
@@ -0,0 +1,21 @@+-- pulsing bottles (jmcc)++import Control.Monad+import Sound.SC3.Monadic+import Sound.SC3.Lang.Control.OverlapTexture++pulsing_bottles :: UId m => m UGen+pulsing_bottles = do+ let r = do n <- whiteNoise AR+ r0 <- rand 4 14+ r1 <- rand 0 0.7+ r2 <- rand 400 7400+ return (resonz (n * lfPulse KR r0 0 0.25 * r1) r2 0.01)+ s = do f <- rand 0.1 0.5+ p <- rand 0 (pi * 2)+ return (sinOsc KR f p)+ u = liftM2 (\x y -> pan2 x y 1) r s+ return.sum =<< sequence (replicate 6 u)++main :: IO ()+main = overlapTextureU (4,4,4,maxBound) =<< pulsing_bottles
@@ -0,0 +1,23 @@+-- pulsing bottles (jmcc)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.OverlapTexture++pulsing_bottles :: UGen+pulsing_bottles =+ let r = let n = whiteNoise 'a' AR+ r0 = rand 'a' 4 14+ r1 = rand 'a' 0 0.7+ r2 = rand 'a' 400 7400+ in resonz (n * lfPulse KR r0 0 0.25 * r1) r2 0.01+ s = let f = rand 'b' 0.1 0.5+ p = rand 'b' 0 (pi * 2)+ in sinOsc KR f p+ in sum (zipWith3 pan2 (uclone' 'a' 6 r) (uclone' 'b' 6 s) (repeat 1))++main :: IO ()+main = overlapTextureU (4,4,4,maxBound) pulsing_bottles++{-+audition (out 0 pulsing_bottles)+-}
@@ -1,16 +0,0 @@-pulsing bottles (jmcc)--> import Control.Monad-> import Sound.SC3.Monadic--> main =-> let { r = do { n <- whiteNoise ar-> ; r0 <- rand 4 14-> ; r1 <- rand 0 0.7-> ; r2 <- rand 400 7400-> ; return (resonz (n * lfPulse kr r0 0 0.25 * r1) r2 0.01) }-> ; s = do { f <- rand 0.1 0.5-> ; p <- rand 0 (pi * 2)-> ; return (sinOsc kr f p) }-> ; u = liftM2 (\x y -> pan2 x y 1) r s }-> in audition . out 0 . sum =<< sequence (replicate 6 u)
@@ -0,0 +1,5 @@+{var n = [400,500,450,376,600]+;var d = 1/20+;var f = Demand.kr(Impulse.kr(d,[0,0.5]),0,Dseq(n,inf))+;var f_ = LFPulse.kr(8,0,LFTri.kr(d,1).range(0,1)).range(*f)+;LPF.ar(Saw.ar(f_.max(376) * [1,0.99],0.5),8000);}.play
@@ -0,0 +1,27 @@+-- rails (jmcc)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.OverlapTexture++rand2 :: ID a => a -> UGen -> UGen+rand2 e n = rand e (-n) n++rails :: UGen+rails =+ let n = 20 -- resonant modes+ e = dust 'a' AR 100 * 0.04 -- excitation+ f = xLine KR 3000 300 8 DoNothing -- sweep filter down+ l = line KR (rand2 'b' 1) (rand2 'c' 1) 8 DoNothing -- sweep pan+ r = uclone' 'a' n (200 + linRand 'd' 0 3000 0) -- resonant frequencies+ a = replicate n 1+ t = uclone' 'b' n (0.2 + rand 'e' 0 1) -- ring times+ k = klank (resonz e f 0.2) 1 0 1 (klankSpec r a t)+ in pan2 k l 1++main :: IO ()+main = overlapTextureU (2,3,4,maxBound) rails++{-+audition (out 0 rails)+Sound.SC3.UGen.Dot.draw rps+-}
@@ -0,0 +1,9 @@+{var n = 20+;var e = Dust.ar(100,0.04)+;var f = XLine.kr(3000,300,8)+;var l = Line.kr(1.0.rand2,1.0.rand2,8)+;var r = Array.fill(n,{200 + 3000.0.linrand})+;var t = Array.fill(n,{0.2 + 1.0.rand})+;var k = Klank.ar(`[r,nil,t],Resonz.ar(e,f,0.2))+;Pan2.ar(k,l)+}.play
@@ -0,0 +1,24 @@+-- rain, thunder (jl)+-- http://sccode.org/1-e++import Sound.SC3.ID++rain_thunder :: UGen+rain_thunder =+ let n0 = pinkNoise 'a' AR * (0.08 + lfNoise1 'a' KR 0.3 * 0.02)+ d0 = lpf (dust2 'b' AR (range 40 50 (lfNoise1 'b' KR 0.2))) 7000+ e0 = line KR 0 1 10 DoNothing+ p0 = tanh (3 * gVerb (hpf (n0+d0) 400) 250 100 0.25 0.5 15 0.3 0.7 0.5 300 * e0)+ lfNoise1C e r f = clip (lfNoise1 e r f) 0 1+ n1 = pinkNoise 'c' AR * ((lfNoise1C 'c' KR 3 * lfNoise1C 'c' KR 2) ** 1.8)+ f1 = linExp (lfNoise1 'd' KR 1) (-1) 1 100 2500+ e1 = line KR 0 0.7 30 DoNothing+ p1 = gVerb (tanh (lpf (10 * hpf n1 20) f1)) 270 30 0.7 0.5 15 0.5 0.7 0.5 300 * e1+ in limiter (p0 + p1) 1 0.01++main :: IO ()+main = audition (out 0 rain_thunder)++{-+Sound.SC3.UGen.Dot.draw rain_thunder+-}
@@ -0,0 +1,9 @@+{var n0 = PinkNoise.ar(0.08 + LFNoise1.kr(0.3,0.02))+;var d0 = LPF.ar(Dust2.ar(LFNoise1.kr(0.2).range(40,50)),7000)+;var e0 = Line.kr(0,1,10)+;var p0 = tanh(3 * GVerb.ar(HPF.ar(n0 + d0,400),250,100,0.25,drylevel:0.3) * e0)+;var n1 = PinkNoise.ar(LFNoise1.kr(3).clip(0,1) * LFNoise1.kr(2).clip(0,1) ** 1.8)+;var f1 = LFNoise1.kr(1).exprange(100,2500)+;var e1 = Line.kr(0,0.7,30)+;var p1 = GVerb.ar(LPF.ar(10 * HPF.ar(n1, 20),f1).tanh,270,30,0.7,drylevel:0.5) * e1+;Limiter.ar(p0 + p1)}.play
@@ -0,0 +1,22 @@+-- random panning sines (jmcc)++import Sound.SC3.Monadic+import Sound.SC3.Lang.Control.OverlapTexture++rps :: UId m => m UGen+rps = do+ let nd = do r0 <- linRand 80 2000 0+ let o = fSinOsc AR r0 0+ l <- lfNoise1 KR =<< rand 0.8 1.2+ a <- lfNoise1 KR =<< rand 0.82 0.98+ return (pan2 o l a)+ r <- clone 8 nd+ return (mix r * (0.4 / 8))++main :: IO ()+main = overlapTextureU (8,8,2,maxBound) =<< rps++{-+audition . out 0 =<< rps+Sound.SC3.UGen.Dot.draw =<< rps+-}
@@ -0,0 +1,20 @@+-- random panning sines (jmcc)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.OverlapTexture++rps :: UGen+rps =+ let nd = let o = fSinOsc AR (linRand 'a' 80 2000 0) 0+ l = lfNoise1 'b' KR (rand 'b' 0.8 1.2)+ a = lfNoise1 'c' KR (rand 'c' 0.82 0.98)+ in pan2 o l a+ in mix (uclone 'a' 8 nd) * (0.4 / 8)++main :: IO ()+main = overlapTextureU (8,8,2,maxBound) rps++{-+audition (out 0 rps)+Sound.SC3.UGen.Dot.draw rps+-}
@@ -0,0 +1,14 @@+-- random pulsations (jmcc)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.OverlapTexture++rp :: UGen+rp =+ let o1 = fSinOsc AR (rand 'a' 0 2000) 0 * 0.02+ o2 = sinOsc AR (linRand 'b' 8 88 0) 0+ o3 = sinOsc KR (rand 'c' 0.3 0.8) (rand 'd' 0 (2 * pi)) * 0.7+ in pan2 (o1 `amClip` o2) o3 1++main :: IO ()+main = overlapTextureU (2,5,8,maxBound) rp
@@ -0,0 +1,13 @@+-- random sine waves (jmcc)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.OverlapTexture++rsw :: UGen+rsw =+ let f = rand 'a' 0 2000+ o = fSinOsc AR f 0 * 0.02+ in pan2 o (rand 'b' (-1) 1) 1++main :: IO ()+main = overlapTextureU (2,5,12,maxBound) rsw
@@ -0,0 +1,3 @@+var e = Env.linen(2,5,2);+var o = FSinOsc.ar(2000.0.rand,EnvGen.kr(e,1,0,0.02));+play({Spawn.ar({Pan2.ar(o,1.0.rand2)},2,9/12)})
@@ -0,0 +1,25 @@+-- record scratcher (josh parmenter)++import Sound.OpenSoundControl+import Sound.SC3++record_scratcher :: UGen+record_scratcher =+ let dup a = mce2 a a+ d = env [0, 1, 0] [0.1, 0.1] [EnvSin] 1 0+ e = envGen KR 1 0.5 0 1 RemoveSynth d+ x = mouseX' KR (-10) 10 Linear 0.2+ dx = x - delayN x 0.1 0.1+ bdx = mouseButton' KR 1 0 0.3 + dx+ bdxr = bdx * bufRateScale KR 0+ scr = playBuf 1 AR 0 bdxr 0 0 Loop DoNothing+ in dup (scr * e)++run :: Transport t => t -> IO ()+run fd = do+ let fn = "/home/rohan/data/audio/pf-c5.snd"+ _ <- async fd (b_allocRead 0 fn 0 0)+ play fd (out 0 record_scratcher)++main :: IO ()+main = withSC3 run
@@ -1,30 +0,0 @@-record scratcher (josh parmenter)--> import Sound.SC3--> main =-> let { dup a = mce2 a a-> ; fn = "/home/rohan/audio/metal.wav"-> ; d = env [0, 1, 0] [0.1, 0.1] [EnvSin] 1 0-> ; e = envGen kr 1 1 0 1 RemoveSynth d-> ; x = mouseX kr (-10) 10 Linear 0.2-> ; dx = x - delayN x 0.1 0.1-> ; bdx = mouseButton kr 1 0 0.3 + dx-> ; bdxr = bdx * bufRateScale kr 0-> ; scr = playBuf 1 0 bdxr 0 0 Loop DoNothing }-> in withSC3 (\fd -> do { async fd (b_allocRead 0 fn 0 0)-> ; play fd (out 0 (dup (scr * e))) })--{ var fn = "/home/rohan/audio/metal.wav"-; var b = 0-; var gate = 1-; var e = Env.new([0, 1, 0], [0.1, 0.1], \sin, 1, nil)-; var env = EnvGen.kr(e, gate, doneAction: 2)-; var x = MouseX.kr(-10, 10, 'linear', 0.2)-; var dx = x - DelayN.kr(x, 0.1, 0.1)-; var bdx = MouseButton.kr(1, 0, 0.3) + dx-; var bdxr = bdx * BufRateScale.kr(b)-; var scr = PlayBuf.ar(1, b, bdxr, 0, 0, 1)-; var s = Server.default-; s.sendMsg("/b_allocRead", b, fn, 0, 0)-; Out.ar(0, (scr * env).dup ) }.play
@@ -0,0 +1,13 @@+{ var fn = "/home/rohan/audio/metal.wav"+; var b = 0+; var gate = 1+; var e = Env.new([0, 1, 0], [0.1, 0.1], \sin, 1, nil)+; var env = EnvGen.kr(e, gate, doneAction: 2)+; var x = MouseX.kr(-10, 10, 'linear', 0.2)+; var dx = x - DelayN.kr(x, 0.1, 0.1)+; var bdx = MouseButton.kr(1, 0, 0.3) + dx+; var bdxr = bdx * BufRateScale.kr(b)+; var scr = PlayBuf.ar(1, b, bdxr, 0, 0, 1)+; var s = Server.default+; s.sendMsg("/b_allocRead", b, fn, 0, 0)+; Out.ar(0, (scr * env).dup ) }.play
@@ -0,0 +1,24 @@+-- red_frik (f0)++import Sound.SC3.Monadic++red :: UId m => UGen -> UGen -> m UGen+red tr n = do+ r1 <- tRand 0.3 3 tr+ r2 <- tRand 0.3 5 tr+ r3 <- tRand 0 0.5 tr+ r4 <- tRand 0.49 0.56 tr+ r5 <- tRand 0.3 0.6 tr+ r6 <- tRand 0.3 0.5 tr+ let o1 = fSinOsc KR r2 0 * r3 + r4+ o2 = fSinOsc KR o1 r5 * r6+ return (rhpf n r1 o2)++red_frik :: UId m => m UGen+red_frik = do+ n <- clone 2 (brownNoise AR)+ let tr = impulse KR 0.1 0+ red tr n++main :: IO ()+main = audition . out 0 =<< red_frik
@@ -1,32 +0,0 @@-red frik (f0)--> import Sound.SC3.Monadic--> main =-> let red tr n = -> do { r1 <- tRand 0.3 3 tr-> ; r2 <- tRand 0.3 5 tr-> ; r3 <- tRand 0 0.5 tr-> ; r4 <- tRand 0.49 0.56 tr-> ; r5 <- tRand 0.3 0.6 tr-> ; r6 <- tRand 0.3 0.5 tr-> ; let { o1 = fSinOsc kr r2 0 * r3 + r4-> ; o2 = fSinOsc kr o1 r5 * r6 }-> in return (rhpf n r1 o2) }-> in do { n <- clone 2 (brownNoise ar)-> ; let tr = impulse kr 0.1 0-> in audition . out 0 =<< red tr n }--{ var red = { arg tr, n- ; var r1 = TRand.kr(0.3, 3, tr)- ; var r2 = TRand.kr(0.3, 5, tr)- ; var r3 = TRand.kr(0, 0.5, tr)- ; var r4 = TRand.kr(0.49, 0.56, tr)- ; var r5 = TRand.kr(0.3, 0.6, tr)- ; var r6 = TRand.kr(0.3, 0.5, tr)- ; var o1 = FSinOsc.kr(r2, 0, r3, r4)- ; var o2 = FSinOsc.kr(o1, r5, r6)- ; RHPF.ar(n, r1, o2) }-; var n = [BrownNoise.ar, BrownNoise.ar]-; var tr = Impulse.kr(0.1, 0)-; Out.ar(0, red.value(tr, n)) }.play
@@ -0,0 +1,13 @@+{ var red = { arg tr, n+ ; var r1 = TRand.kr(0.3, 3, tr)+ ; var r2 = TRand.kr(0.3, 5, tr)+ ; var r3 = TRand.kr(0, 0.5, tr)+ ; var r4 = TRand.kr(0.49, 0.56, tr)+ ; var r5 = TRand.kr(0.3, 0.6, tr)+ ; var r6 = TRand.kr(0.3, 0.5, tr)+ ; var o1 = FSinOsc.kr(r2, 0, r3, r4)+ ; var o2 = FSinOsc.kr(o1, r5, r6)+ ; RHPF.ar(n, r1, o2) }+; var n = [BrownNoise.ar, BrownNoise.ar]+; var tr = Impulse.kr(0.1, 0)+; Out.ar(0, red.value(tr, n)) }.play
@@ -0,0 +1,15 @@+-- resonant dust (jmcc)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.OverlapTexture++resonant_dust :: UGen+resonant_dust =+ let rf = let st = rand 'a' 80 2080+ en = st + (rand 'b' (-0.5) 0.5 * st)+ in xLine KR st en 9 DoNothing+ d = dust 'c' AR (rand 'd' 50 850) * 0.3+ in pan2 (resonz d rf 0.1) (rand 'e' (-1) 1) 1++main :: IO ()+main = overlapTextureU (2,5,9,maxBound) resonant_dust
@@ -0,0 +1,26 @@+-- reverberated sine percussion (jmcc)++import Sound.SC3.Monadic++reverberated_sine_percussion :: (Functor m,UId m) => m UGen+reverberated_sine_percussion = do+ let d = 6+ c = 5+ a = 4+ s_ = do n <- dust AR (2 / constant d)+ r <- rand 0 3000+ return (resonz (n * 50) (200 + r) 0.003)+ x_ i = do r <- clone 2 (rand 0 0.05)+ return (allpassN i 0.05 r 1)+ (>=>) f g x = f x >>= g+ chain n f = foldl (>=>) return (replicate n f)+ s <- fmap sum (sequence (replicate d s_))+ y <- do let z = delayN s 0.048 0.48+ r <- clone c (rand 0 0.1)+ n <- lfNoise1 KR r+ return (mix (combL z 0.1 (n * 0.04 + 0.05) 15))+ x <- chain a x_ y+ return (s + x * 0.2)++main :: IO ()+main = audition . out 0 =<< reverberated_sine_percussion
@@ -1,38 +0,0 @@-reverberated sine percussion (jmcc)--> import Sound.SC3.Monadic--> main =-> let { d = 6-> ; c = 5-> ; a = 4-> ; s_ = do { n <- dust ar (2 / constant d)-> ; r <- rand 0 3000-> ; return (resonz (n * 50) (200 + r) 0.003) }-> ; x_ i = do { r <- clone 2 (rand 0 0.05)-> ; return (allpassN i 0.05 r 1) } -> ; (>=>) f g = \x -> f x >>= g-> ; chain n f = foldl (>=>) return (replicate n f) }-> in do { s <- fmap sum (sequence (replicate d s_))-> ; y <- let z = delayN s 0.048 0.48-> in do { r <- clone c (rand 0 0.1)-> ; n <- lfNoise1 kr r-> ; return (mix (combL z 0.1 (n * 0.04 + 0.05) 15)) }-> ; x <- chain a x_ y-> ; audition (out 0 (s + x * 0.2)) }--{ var d = 6-; var c = 5-; var a = 4-; var s_ = { var n = Dust.ar(2 / d)- ; var r = Rand.new(0, 3000)- ; Resonz.ar(n * 50, 200 + r, 0.003) }-; var s = Mix.ar(Array.fill(d, s_))-; var z = DelayN.ar(s, 0.048)-; var y_ = LFNoise1.kr(Array.fill(c, { Rand.new(0, 0.1) }), 0.04, 0.05)-; var y = Mix.ar(CombL.ar(z, 0.1, y_, 15))-; var x = y-; var x_ = { var r = [Rand.new(0, 0.05), Rand.new(0, 0.05)]- ; x = AllpassN.ar(x, 0.050, r, 1) }-; a.do(x_)-; Out.ar(0, s + (0.2 * x)) }.play
@@ -0,0 +1,15 @@+{var d = 6+;var c = 5+;var a = 4+;var s_ = {var n = Dust.ar(2 / d)+ ;var r = Rand.new(0,3000)+ ;Resonz.ar(n * 50,200 + r,0.003)}+;var s = Mix.ar(Array.fill(d,s_))+;var z = DelayN.ar(s,0.048)+;var y_ = LFNoise1.kr(Array.fill(c,{Rand.new(0,0.1)}),0.04,0.05)+;var y = Mix.ar(CombL.ar(z,0.1,y_,15))+;var x = y+;var x_ = {var r = [Rand.new(0,0.05),Rand.new(0,0.05)]+ ;x = AllpassN.ar(x,0.050,r,1)}+;a.do(x_)+;Out.ar(0,s + (0.2 * x))}.play
@@ -0,0 +1,21 @@+-- ring modulated klank (jmcc)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.OverlapTexture++rmk :: UGen+rmk =+ let p = 8+ k = let sp = klankSpec (udup' p (rand 'a' 100 10000))+ (replicate p 1)+ (udup' p (rand 'a' 0.2 1))+ in klank (dust 'a' AR 20 * 0.02) 1 0 1 sp+ f = lfNoise2 'a' KR (rand 'a' 0.1 0.4) * 200 + rand 'a' 350 400+ in pan2 (sinOsc AR f 0 * k) (rand 'a' (-1) 1) 1++main :: IO ()+main = overlapTextureU (4,4,4,maxBound) rmk++{-+audition (out 0 rmk)+-}
@@ -1,10 +0,0 @@-rm-octaver (andrea valle, miller puckette)--> import Sound.SC3--> main =-> let { defaultPitch x = pitch x 440 60 4000 100 16 1 0.01 0.5 1-> ; i = soundIn 0-> ; p = defaultPitch i-> ; f = mceChannel 0 p }-> in audition (out 0 (sinOsc ar (f * 0.5) 0 * i + i))
@@ -0,0 +1,27 @@+-- rzblp (rd)++import Sound.SC3 {- hsc3 -}+import Sound.SC3.UGen.Unsafe {- hsc3-unsafe -}++rzblp :: UGen+rzblp =+ let wrp i l r = let m = (r - l) / 2+ in i * m + l + m+ lfn f = wrp (lfNoise0 KR f)+ hpb q = mixFill 2 (\_ -> let f = lfn q 1330 1395+ a = lfn q 0.001 0.007+ in blip AR f 24 * a)+ mk_f d = let q = lfn 5.2 5.2 5.21+ a = d dinf (mce [1,3,2,7,8])+ tr = impulse KR q 0+ freq = demand tr 0 a * 30 + 340+ in sum [blip AR freq 3 * lfn q 0.001 0.01+ ,resonz (impulse AR q (mce2 0 0))+ (lfn 5 30 640)+ (lfn q 0.1 0.5) * lfn q 0.01 1.8+ ,hpb q * lfn q 1.2 1.8+ ,blip AR (lfn q 16 36) 3 * mce2 0.03 0.09]+ in mk_f drand + mk_f dxrand++main :: IO ()+main = audition (out 0 rzblp)
@@ -0,0 +1,31 @@+-- s-chirp (rd)++import Sound.OpenSoundControl+import Sound.SC3.ID++s_chirp :: UGen+s_chirp =+ let x = mouseX' KR 15 0 Linear 0.1+ y = mouseY' KR 15 27 Linear 0.1+ t = dust 'a' KR 9+ b = tChoose 'a' t (mce [36,48,60,72])+ n = lfNoise1 'a' KR (mce2 3 3.05) * 0.04+ d = tIRand 'a' x y t+ e = decay2 t 0.005 (tRand 'a' 0.02 0.15 t)+ o = let k = degreeToKey 0 d 12+ f = midiCPS (b + k + n)+ m = e * sinOsc AR f 0 * 0.2+ u = pulseDivider t 9 0+ r0 = tRand 'a' 0.0075 0.125 u+ r1 = tRand 'a' 0.05 0.15 u+ in m * 0.5 + allpassC m 0.15 r0 r1+ in out 0 o++act :: Transport t => t -> IO ()+act fd = do+ let scl = [0,2,3.2,5,7,9,10]+ _ <- async fd (b_alloc_setn1 0 0 scl)+ play fd s_chirp++main :: IO ()+main = withSC3 act
@@ -1,26 +0,0 @@-s-chirp (rd)--> import Sound.SC3.Monadic-> import qualified Sound.SC3.ID as I--> main =-> let { x = linLin (I.lfNoise0 'a' KR 1) (-1) 1 15 0-> {- ; x = mouseX kr 15 0 Linear 0.1 -}-> ; y = linLin (I.lfNoise0 'b' KR 1) (-1) 1 15 27-> {- ; y = mouseY kr 15 27 Linear 0.1 -}-> ; scl = [0, 2, 3.2, 5, 7, 9, 10] }-> in do { t <- dust kr 9-> ; b <- tChoose t (mce [36, 48, 60, 72])-> ; n <- fmap (* 0.04) (lfNoise1 kr (mce2 3 3.05))-> ; d <- tiRand x y t-> ; e <- fmap (decay2 t 0.005) (tRand 0.02 0.15 t)-> ; o <- let { k = degreeToKey 0 d 12-> ; f = midiCPS (b + k + n)-> ; m = e * sinOsc ar f 0 * 0.2-> ; u = pulseDivider t 9 0 }-> in do { r0 <- tRand 0.0075 0.125 u-> ; r1 <- tRand 0.05 0.15 u-> ; return (m * 0.5 + allpassC m 0.15 r0 r1) }-> ; withSC3 (\fd -> do { _ <- async fd (b_alloc 0 7 1)-> ; send fd (b_setn1 0 0 scl)-> ; play fd (out 0 o) }) }
@@ -0,0 +1,53 @@+-- sam i am (jr)+-- http://www.listarc.bham.ac.uk/lists/sc-users/msg00280.html++import Control.Monad.Random+import Data.List+import Data.Maybe+import Sound.SC3+import Sound.SC3.Lang.Control.Event+import Sound.SC3.Lang.Random.Monad+import Sound.SC3.Lang.Pattern.ID++text :: [String]+text =+ ["I could not would not in a house"+ ,"I would not could not with a mouse"+ ,"I would not eat them with a fox"+ ,"I would not eat them in a box"+ ,"I would not eat them here or there"+ ,"I would not eat them anywhere"+ ,"I would not eat green eggs and ham"+ ,"I do not like them Sam-I-am"]++x :: [[String]]+x = map words text++a :: [String]+a = nub (concat x)++sam :: Synthdef+sam =+ let f1 = control KR "freq1" 440+ f2 = control KR "freq2" 440+ f3 = control KR "freq3" 440+ e = xLine KR 0.1 0.001 0.5 RemoveSynth+ o = sinOsc AR f1 0 * pulse AR f2 0.5 * saw AR f3 * e+ in synthdef "sam" (out 0 o)++b :: RandomGen g => g -> [(String,[(String,Double)])]+b g =+ let mk w = do+ f1 <- exprand 200 9000+ f2 <- exprand 20 9000+ f3 <- exprand 20 9000+ let d = 0.1 * fromIntegral (length w)+ return (w,[("freq1",f1),("freq2",f2),("freq3",f3),("dur",d)])+ in evalRand (mapM mk a) g++main :: IO ()+main = do+ g <- getStdGen+ let t = b g+ ae = mapMaybe (\w -> fmap event (lookup w t)) (concat x)+ audition (sam,pseq (map return ae) 1)
@@ -0,0 +1,17 @@+-- sample and hold liquidities (jmcc)++import Sound.SC3.ID++shl :: UGen+shl =+ let r = mouseX' KR 1 200 Exponential 0.1+ t = recip r+ c = impulse KR r 0.4+ cf = mouseY' KR 100 8000 Exponential 0.1+ f = latch (whiteNoise 'α' KR * cf * 0.5 + cf) c+ p = latch (whiteNoise 'β' KR) c+ i = pan2 (sinOsc AR f 0 * decay2 c (t * 0.1) (t * 0.9)) p 1+ in combN i 0.3 0.3 2++main :: IO ()+main = audition (out 0 shl)
@@ -1,22 +0,0 @@-sample and hold liquidities (jmcc)--> import Sound.SC3.ID--> main =-> let { r = mouseX kr 1 200 Exponential 0.1-> ; t = recip r-> ; c = impulse kr r 0.4-> ; cf = mouseY kr 100 8000 Exponential 0.1-> ; f = latch (whiteNoise 'α' kr * cf * 0.5 + cf) c-> ; p = latch (whiteNoise 'β' kr) c-> ; i = pan2 (sinOsc ar f 0 * decay2 c (t * 0.1) (t * 0.9)) p 1 }-> in audition (out 0 (combN i 0.3 0.3 2))--{ var r = MouseX.kr(1, 200, 'exponential', 0.1)-; var t = r.reciprocal-; var c = Impulse.kr(r, 0.4)-; var cf = MouseY.kr(100, 8000, 'exponential', 0.1)-; var f = Latch.kr(WhiteNoise.kr * cf * 0.5 + cf, c)-; var p = Latch.kr(WhiteNoise.kr, c)-; var i = Pan2.ar(SinOsc.ar(f, 0, Decay2.kr(c, 0.1 * t, 0.9 * t)), p, 1)-; Out.ar(0, CombN.ar(i, 0.3, 0.3, 2)) }.play
@@ -0,0 +1,8 @@+{var r = MouseX.kr(1,200,'exponential',0.1)+;var t = r.reciprocal+;var c = Impulse.kr(r,0.4)+;var cf = MouseY.kr(100,8000,'exponential',0.1)+;var f = Latch.kr(WhiteNoise.kr * cf * 0.5 + cf,c)+;var p = Latch.kr(WhiteNoise.kr,c)+;var i = Pan2.ar(SinOsc.ar(f,0,Decay2.kr(c,0.1 * t,0.9 * t)),p,1)+;Out.ar(0,CombN.ar(i,0.3,0.3,2))}.play
@@ -0,0 +1,17 @@+-- saucer base (jmcc)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.OverlapTexture++saucer_base :: UGen+saucer_base =+ let a = rand 'a' 0 20+ b = rand 'b' 0 1000+ c = rand 'c' 0 5000+ p = rand 'd' (-1) 1+ o = sinOsc AR a 0 * b + (1.1 * b)+ o' = sinOsc AR o 0 * c + (1.1 * c)+ in pan2 (sinOsc AR o' 0 * 0.1) p 1++main :: IO ()+main = overlapTextureU (6,2,4,maxBound) saucer_base
@@ -0,0 +1,18 @@+-- sawed cymbals (jmcc)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.OverlapTexture++sawed_cymbals :: UGen+sawed_cymbals =+ let y = let f1 = rand 'a' 500 2500+ f2 = rand 'a' 0 8000+ f = udup' 15 (rand 'a' f1 (f1 + f2))+ rt = udup' 15 (rand 'a' 2 6)+ in klankSpec f (replicate 15 1) rt+ z = uclone 'a' 2 y+ fS = xLine KR (rand 'α' 0 600) (rand 'β' 0 600) 12 DoNothing+ in klank (lfSaw AR fS 0 * 0.0005) 1 0 1 (mceTranspose z)++main :: IO ()+main = overlapTextureU (4,4,6,maxBound) sawed_cymbals
@@ -0,0 +1,12 @@+-- scratchy-m (jmcc)++import Sound.SC3.Monadic++scratchy :: UId m => m UGen+scratchy = do+ n <- clone 2 (brownNoise AR)+ let f = max (n * 0.5 - 0.49) 0 * 20+ return (rhpf f 5000 1)++main :: IO ()+main = audition . out 0 =<< scratchy
@@ -1,12 +0,0 @@-scratchy-m (jmcc)--> import Sound.SC3.Monadic--> main =-> do { n <- clone 2 (brownNoise ar)-> ; let f = max (n * 0.5 - 0.49) 0 * 20-> in audition (out 0 (rhpf f 5000 1)) }--{ var n = BrownNoise.ar([0.5, 0.5])-; var f = (n - 0.49).max(0) * 20-; Out.ar(0, RHPF.ar(f, 5000, 1)) }.play
@@ -0,0 +1,12 @@+-- scratchy (jmcc)++import Sound.SC3.ID++scratchy :: UGen+scratchy =+ let f m = brownNoise m AR * 0.5 - 0.49+ n = mce2 (f 'α') (f 'β')+ in rhpf (max n 0 * 20) 5000 1++main :: IO ()+main = audition (out 0 scratchy)
@@ -1,12 +0,0 @@-scratchy (jmcc)--> import Sound.SC3.ID--> main =-> let { f m = brownNoise m ar * 0.5 - 0.49-> ; n = mce2 (f 'α') (f 'β') }-> in audition (out 0 (rhpf (max n 0 * 20) 5000 1))--{ var n = BrownNoise.ar([0.5, 0.5])-; var f = (n - 0.49).max(0) * 20-; Out.ar(0, RHPF.ar(f, 5000, 1)) }.play
@@ -0,0 +1,3 @@+{ var n = BrownNoise.ar([0.5, 0.5])+; var f = (n - 0.49).max(0) * 20+; Out.ar(0, RHPF.ar(f, 5000, 1)) }.play
@@ -0,0 +1,28 @@+-- scritto (rd)++import Sound.SC3.Monadic+import qualified Sound.SC3.Lang.Data.Vowel as V++main :: IO ()+main =+ let s_msg n (_,_,f,a,b) = b_setn1 n 0 (f ++ a ++ b)+ s_alloc fd (s,b) = do _ <- async fd (b_alloc b 15 1)+ send fd (s_msg b s)+ buf_at b n = bufRd 1 KR b (mce [n .. n + 4]) NoLoop NoInterpolation+ v_filter i f a b = resonz i f (b / f) * dbAmp a+ v_filter_b bi i = v_filter i (buf_at bi 0) (buf_at bi 5) (buf_at bi 10)+ mk_instr bx = do+ n <- lfNoise2 KR 3+ let t = impulse AR (n * 9 + 9) 0+ i d = do n1 <- tRand 0.02 0.06 t+ n2 <- tIRand 30 52 t+ n3 <- tIRand 16 32 t+ let p = pulseDivider t d 0+ b = blip AR (midiCPS n2) n3+ return (decay2 p 0.01 n1 * b * 12)+ bi = linLin n (-1) 1 0 bx+ voice = mix . v_filter_b bi+ return . out 0 . mce . map voice =<< mapM i [1,2]+ in withSC3 (\fd-> do mapM_ (s_alloc fd) (zip V.fdata_table [0..])+ let n = constant (length V.fdata_table)+ audition =<< mk_instr n)
@@ -0,0 +1,47 @@+-- scritto (rd)++import Control.Monad+import Sound.OpenSoundControl+import Sound.SC3.ID+import qualified Sound.SC3.Lang.Data.Vowel as V++scritto_i :: UGen -> UGen+scritto_i bx =+ let buf_at b n = bufRd 1 KR b (mce [n .. n + 4]) NoLoop NoInterpolation+ v_filter i f a b = resonz i f (b / f) * dbAmp a+ n0 = lfNoise2 'a' KR 3+ v_filter_b i =+ let bi = linLin n0 (-1) 1 0 bx+ b = buf_at bi in v_filter i (b 0) (b 5) (b 10)+ t = impulse AR (n0 * 9 + 9) 0+ ble (e,d) =+ let n1 = tRand e 0.02 0.06 t+ n2 = tIRand e 30 52 t+ n3 = tIRand e 16 32 t+ p = pulseDivider t d 0+ b = blip AR (midiCPS n2) n3+ in (decay2 p 0.01 n1 * b * 12)+ voice = mix . v_filter_b+ in out 0 (mce (map (voice . ble) (zip "ab" [1,2])))++s_alloc :: Transport t => t -> (V.Fdata Double,Int) -> IO ()+s_alloc fd (s,b) = do+ let s_msg n (_,_,fr,am,bw) = b_setn1 n 0 (fr ++ am ++ bw)+ _ <- async fd (b_alloc b 15 1)+ send fd (s_msg b s)++s_init :: Transport t => t -> IO ()+s_init fd = mapM_ (s_alloc fd) (zip V.fdata_table [0..])++act :: Transport t => Bool -> t -> IO ()+act i fd = do+ when i (s_init fd)+ let n = constant (length V.fdata_table)+ play fd (scritto_i n)++main :: IO ()+main = withSC3 (act True)++{-+withSC3 (act False)+-}
@@ -1,126 +0,0 @@-scritto (rd)--> import Sound.SC3.Monadic--> main =-> let { scritto = [ ( "sA" -> , [800, 1150, 2900, 3900, 4950]-> , [0, -6, -32, -20, -50]-> , [80, 90, 120, 130, 140] )-> , ( "sE" -> , [350, 2000, 2800, 3600, 4950]-> , [0, -20, -15, -40, -56]-> , [60, 100, 120, 150, 200] )-> , ( "sI" -> , [270, 2140, 2950, 3900, 4950]-> , [0, -12 , -26 , -26 , -44]-> , [60, 90, 100, 120, 120] )-> , ( "sO" -> , [450, 800, 2830, 3800, 4950]-> , [0, -11 , -22 , -22 , -50]-> , [70, 80, 100, 130, 135] )-> , ( "sU" -> , [325, 700, 2700, 3800, 4950]-> , [0, -16, -35, -40, -60]-> , [50, 60, 170, 180, 200] )-> , ( "aA" -> , [800, 1150, 2800, 3500, 4950]-> , [0, -4 , -20, -36 , -60]-> , [80, 90, 120, 130, 140] )-> , ( "aE" -> , [400, 1600, 2700, 3300, 4950]-> , [0, -24 , -30, -35, -60]-> , [60, 80, 120, 150, 200] )-> , ( "aI" -> , [350, 1700, 2700, 3700, 4950]-> , [0, -20, -30, -36 , -60]-> , [50, 100, 120, 150, 200] )-> , ( "aO" -> , [450, 800, 2830, 3500, 4950]-> , [0, -9 , -16 , -28 , -55]-> , [70, 80, 100, 130, 135] )-> , ( "aU" -> , [325, 700, 2530, 3500, 4950]-> , [0, -12 , -30, -40, -64]-> , [50, 60, 170, 180, 200] )-> , ( "ctA"-> , [660, 1120, 2750, 3000, 3350]-> , [0, -6 , -23 , -24 , -38]-> , [80, 90, 120, 130, 140] )-> , ( "ctE"-> , [440, 1800, 2700, 3000, 3300]-> , [0, -14 , -18 , -20, -20]-> , [70, 80, 100, 120, 120] )-> , ( "ctI"-> , [270, 1850, 2900, 3350, 3590]-> , [0, -24 , -24 , -36 , -36]-> , [40, 90, 100, 120, 120] )-> , ( "ctO"-> , [430, 820, 2700, 3000, 3300]-> , [0, -10, -26 , -22 , -34]-> , [40, 80, 100, 120, 120] )-> , ( "ctU"-> , [370, 630, 2750, 3000, 3400]-> , [0, -20, -23 , -30, -34]-> , [40, 60, 100, 120, 120] )-> , ( "tA" -> , [650, 1080, 2650, 2900, 3250]-> , [0, -6 , -7 , -8 , -22]-> , [80, 90, 120, 130, 140] )-> , ( "tE" -> , [400, 1700, 2600, 3200, 3580]-> , [0, -14 , -12 , -14 , -20]-> , [70, 80, 100, 120, 120] )-> , ( "tI" -> , [290, 1870, 2800, 3250, 3540]-> , [0, -15, -18 , -20, -30]-> , [40, 90, 100, 120, 120] )-> , ( "tO" -> , [400, 800, 2600, 2800, 3000]-> , [0, -10, -12 , -12 , -26]-> , [40, 80, 100, 120, 120] )-> , ( "tU" -> , [350, 600, 2700, 2900, 3300]-> , [0, -20, -17 , -14 , -26]-> , [40, 60, 100, 120, 120] )-> , ( "bA" -> , [600, 1040, 2250, 2450, 2750]-> , [0, -7 , -9 , -9 , -20]-> , [60, 70, 110, 120, 130] )-> , ( "bE" -> , [400, 1620, 2400, 2800, 3100]-> , [0, -12 , -9 , -12 , -18]-> , [40, 80, 100, 120, 120] )-> , ( "bI" -> , [250, 1750, 2600, 3050, 3340]-> , [0, -30, -16 , -22 , -28]-> , [60, 90, 100, 120, 120] )-> , ( "bO" -> , [400, 750, 2400, 2600, 2900]-> , [0, -11 , -21 , -20, -40]-> , [40, 80, 100, 120, 120] )-> , ( "bU" -> , [350, 600, 2400, 2675, 2950]-> , [0, -20, -32 , -28 , -36]-> , [40, 80, 100, 120, 120] ) ]-> ; s_msg n (_, f, a, b) = b_setn1 n 0 (f ++ a ++ b)-> ; s_alloc fd (s, b) = do { async fd (b_alloc b 15 1)-> ; send fd (s_msg b s) }-> ; buf_at b n = bufRd 1 kr b (mce [n .. n + 4]) NoLoop NoInterpolation-> ; v_filter i f a b = resonz i f (b / f) * dbAmp a-> ; v_filter_b bi i = v_filter i (buf_at bi 0) (buf_at bi 5) (buf_at bi 10)-> ; mk_instr bx = do -> { n <- lfNoise2 kr 3-> ; let { t = impulse ar (n * 9 + 9) 0-> ; i d = do { n1 <- tRand 0.02 0.06 t-> ; n2 <- tiRand 30 52 t-> ; n3 <- tiRand 16 32 t-> ; let { p = pulseDivider t d 0-> ; b = blip ar (midiCPS n2) n3 }-> in return (decay2 p 0.01 n1 * b * 12) }-> ; bi = linLin n (-1) 1 0 bx-> ; voice = mix . v_filter_b bi }-> in return . out 0 . mce . map voice =<< mapM i [1, 2] } }-> in withSC3 (\fd -> do { mapM_ (s_alloc fd) (zip scritto [0..])-> ; let n = constant (length scritto)-> in audition =<< mk_instr n })
@@ -0,0 +1,27 @@+-- seqr (rd)++import Sound.SC3.ID++nfreq :: ID a => a -> Int -> UGen -> UGen -> [UGen]+nfreq z n l r = map (midiCPS . floorE) (uclone' z n (rand z l r))++seqr_f :: UGen -> [UGen] -> UGen+seqr_f f e =+ let n = constant (length e `div` 2)+ in select (lfSaw KR f 0 * n + n) (mce e)++seqr :: Int -> UGen+seqr n =+ let f = rand 'a' 9 18 / constant n+ b = blip AR (mce2 (seqr_f f (nfreq 'a' n 72 96))+ (seqr_f f (nfreq 'b' n 72 84)))+ (mce2 (seqr_f f (uclone' 'c' n (rand 'c' 1 3)))+ (seqr_f f (uclone' 'd' n (rand 'd' 3 6))))+ a = mce2 (seqr_f f (uclone' 'e' n (rand 'e' 0.05 0.10)))+ (seqr_f f (uclone' 'f' n (rand 'f' 0.05 0.15)))+ in b * a+++-- n = rand 6 18+main :: IO ()+main = audition (out 0 (seqr 12))
@@ -0,0 +1,39 @@+-- shepard tones (alberto de campo)++import Sound.OpenSoundControl+import Sound.SC3++interp :: (Fractional t,Enum t) => t -> t -> t -> [t]+interp n l r =+ let i = (r - l) / n+ in [l,l + i .. r - i]++hanningWindow :: (Floating b,Enum b) => b -> [b]+hanningWindow n =+ let lp = pi * (-0.5)+ rp = lp + 2 * pi+ hf i = sin i * 0.5 + 0.5+ in map hf (interp n lp rp)++shepard_tones :: UGen+shepard_tones =+ let ratescale = 1024 / 44100 / 10+ rate = 0.1+ ph = phasor AR 0 (rate * ratescale) 0 1024 0+ phases = mce (map (\n -> n * 0.1 * 1024 + ph) [0..9])+ freqs = bufRdC 1 AR 1 phases Loop+ amps = bufRdC 1 AR 2 phases Loop+ in mix (sinOsc AR freqs 0 * amps) * 0.1++run :: Transport t => t -> IO ()+run fd = do+ let square x = x * x+ ampTable = map square (hanningWindow 1024)+ amp_f i = (0.5 ** i) * 20000+ freqTable = map amp_f (interp 1024 0 10)+ _ <- async fd (b_alloc_setn1 1 0 freqTable)+ _ <- async fd (b_alloc_setn1 2 0 ampTable)+ audition (out 0 shepard_tones)++main :: IO ()+main = withSC3 run
@@ -1,42 +0,0 @@-shepard tones (alberto de campo)--> import Sound.SC3--> main =-> let { indxs n l r = let i = (r - l) / n -> in [l, l + i .. r - i]-> ; hanningWindow n = -> let { lp = pi * (-0.5)-> ; rp = lp + 2 * pi -> ; hf i = sin i * 0.5 + 0.5 }-> in map hf (indxs n lp rp)-> ; square x = x * x-> ; ampTable = map square (hanningWindow 1024) -> ; amp_f i = (0.5 ** i) * 20000-> ; freqTable = map amp_f (indxs 1024 0 10)-> ; ratescale = 1024 / 44100 / 10-> ; rate = 0.1-> ; ph = phasor ar 0 (rate * ratescale) 0 1024 0-> ; phases = mce (map (\n -> n * 0.1 * 1024 + ph) [0..9])-> ; freqs = bufRdC 1 ar 1 phases Loop-> ; amps = bufRdC 1 ar 2 phases Loop-> ; tone = mix (sinOsc ar freqs 0 * amps) * 0.1 }-> in withSC3 (\fd -> do { async fd (b_alloc 1 1024 1)-> ; async fd (b_alloc 2 1024 1)-> ; send fd (b_setn1 1 0 freqTable)-> ; send fd (b_setn1 2 0 ampTable)-> ; audition (out 0 tone) })--{ var ampTable = Signal.hanningWindow(1024).squared-; var amp_f = { arg i; 0.5 ** i * 20000 }-; var freqTable = Signal.newClear(1024).waveFill(amp_f, 0, 10)-; var b1 = Buffer.loadCollection(s, freqTable)-; var b2 = Buffer.loadCollection(s, ampTable)-; var ratescale = 1024 / 44100 / 10-; var rate = 0.1-; var ph = Phasor.ar(0, rate * ratescale, 0, 1024, 0)-; var phases = (0..9) * 0.1 * 1024 + ph-; var freqs = BufRd.ar(1, b1.bufnum, phases)-; var amps = BufRd.ar(1, b2.bufnum, phases)-; var tone = Mix.ar(SinOsc.ar(freqs) * amps) * 0.1 -; Out.ar(0, tone)}.play
@@ -0,0 +1,13 @@+{var ampTable = Signal.hanningWindow(1024).squared+;var amp_f = {arg i;0.5 ** i * 20000}+;var freqTable = Signal.newClear(1024).waveFill(amp_f,0,10)+;var b1 = Buffer.loadCollection(s,freqTable)+;var b2 = Buffer.loadCollection(s,ampTable)+;var ratescale = 1024 / 44100 / 10+;var rate = 0.1+;var ph = Phasor.ar(0,rate * ratescale,0,1024,0)+;var phases = (0..9) * 0.1 * 1024 + ph+;var freqs = BufRd.ar(1,b1.bufnum,phases)+;var amps = BufRd.ar(1,b2.bufnum,phases)+;var tone = Mix.ar(SinOsc.ar(freqs) * amps) * 0.1+;Out.ar(0,tone)}.play
@@ -0,0 +1,19 @@+-- shifting pulses (rd)++import Sound.SC3.Monadic++shifting_pulses :: UId m => m UGen+shifting_pulses = do+ n0 <- clone 2 (brownNoise KR)+ n1 <- clone 2 (brownNoise KR)+ n2 <- clone 2 (brownNoise KR)+ t <- dust KR 0.75+ let warp i = linLin i (-1) 1+ l = latch t t+ p = pulse AR (warp n0 2 (mce2 11 15)) 0.01 * 0.1+ f = warp n1 300 1800+ rq = warp n2 0.01 2+ return (l * rlpf p f rq)++main :: IO ()+main = audition . out 0 =<< shifting_pulses
@@ -1,23 +0,0 @@-shifting pulses (rd)--> import Sound.SC3.Monadic--> main =-> do { [n0, n1, n2] <- sequence (replicate 3 (clone 2 (brownNoise kr)))-> ; t <- dust kr 0.75-> ; let { warp i = linLin i (-1) 1-> ; l = latch t t-> ; p = pulse ar (warp n0 2 (mce2 11 15)) 0.01 * 0.1 -> ; f = warp n1 300 1800 -> ; rq = warp n2 0.01 2 }-> in audition (out 0 (l * rlpf p f rq)) }--{ var n0 = BrownNoise.kr.dup-; var n1 = BrownNoise.kr.dup-; var n2 = BrownNoise.kr.dup-; var t = Dust.kr(0.75)-; var l = Latch.kr(t, t)-; var p = Pulse.ar(n0.range(2, [11, 15]), 0.01) * 0.1 -; var f = n1.range(300, 1800)-; var rq = n2.range(0.01, 2)-; Out.ar(0, l * RLPF.ar(p, f, rq)) }.play
@@ -0,0 +1,9 @@+{var n0 = BrownNoise.kr.dup+var n1 = BrownNoise.kr.dup+var n2 = BrownNoise.kr.dup+var t = Dust.kr(0.75)+var l = Latch.kr(t,t)+var p = Pulse.ar(n0.range(2,[11,15]),0.01) * 0.1+var f = n1.range(300,1800)+var rq = n2.range(0.01,2)+Out.ar(0,l * RLPF.ar(p,f,rq))}.play
@@ -0,0 +1,24 @@+-- sidereal time (jmcc)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.OverlapTexture++sidereal_time :: UGen+sidereal_time =+ let p = 15+ z = let y = let fr = udup' p (expRand 'a' 100 6000)+ rt = udup' p (rand 'a' 2 6)+ in klankSpec fr (replicate p 1) rt+ in uclone 'a' 2 y+ f = xLine KR (expRand 'α' 40 300) (expRand 'β' 40 300) 12 DoNothing+ t = let e = lfNoise2 'γ' KR (rand 'δ' 0 8)+ in lfPulse AR f 0 (rand 'ε' 0.1 0.9) * 0.002 * max 0 e+ o = distort (klank t 1 0 1 (mceTranspose z)) * 0.1+ in combN o 0.6 (rand 'ζ' 0.1 0.6) 8 + mceReverse o++main :: IO ()+main = overlapTextureU (4,4,6,maxBound) sidereal_time++{-+audition (out 0 sidereal_time)+-}
@@ -0,0 +1,9 @@+var p = 15;+play({OverlapTexture.ar({+var z = Array.fill(2,{`[Array.fill(p,{exprand(100.0,6000.0)}),+ nil,+ Array.fill(p,{2.0 + 4.0.rand})]});+var f = XLine.kr(exprand(40.0,300.0),exprand(40.0,300.0),12);+var t = LFPulse.ar(f,rrand(0.1,0.9),0.002 * LFNoise2.kr(8.0.rand).max(0));+var o = Klank.ar(z,t).distort * 0.1;+CombN.ar(o,0.6,0.5.rand + 0.1,8,1,o.reverse);},4,4,6,2)}))
@@ -0,0 +1,44 @@+-- slow beating harmonic sines (jmcc)++import Control.Monad+import Control.Monad.Random+import Sound.SC3+import Sound.SC3.Lang.Control.OverlapTexture+import Sound.SC3.Lang.Random.Monad++r_freq :: (RandomGen g) => Int -> Int -> Rand g [Double]+r_freq k i = do+ n <- nchoose i [0,2,4,5,7,9]+ o <- nrand i 7+ let f n' o' = midiCPS' (n' + (o' * 12) + fromIntegral k)+ return (zipWith f n o)++r_harmonics :: (RandomGen g) => Double -> Int -> Double -> Rand g [Double]+r_harmonics d m f = do+ d' <- nrand2 m d+ return (zipWith (+) (map (* f) [1,2,4,5,6]) d')++r_phase :: (RandomGen g) => Int -> Rand g [Double]+r_phase m = nrrand m 0 (2 * pi)++sbhs :: (RandomGen g) => Int -> Double -> Int -> Rand g UGen+sbhs n d m = do+ k' <- rand 12+ let k = 24 + k'+ f <- r_freq k n+ p_fr <- mapM (r_harmonics d m) f+ q_fr <- mapM (r_harmonics d m) f+ p_ph <- replicateM n (r_phase m)+ q_ph <- replicateM n (r_phase m)+ let a = replicate n (replicate m 1)+ p_sp = zipWith3 klangSpec' p_fr a p_ph+ q_sp = zipWith3 klangSpec' q_fr a q_ph+ mk_u s = klang AR 1 0 s * (0.1 / fromIntegral n)+ p_u = sum (map mk_u p_sp)+ q_u = sum (map mk_u q_sp)+ return (mce2 p_u q_u)++main :: IO ()+main = do+ g <- getStdGen+ overlapTextureS (6,3,3,maxBound) (runRand (sbhs 8 0.4 5)) g
@@ -0,0 +1,41 @@+-- slow beating sines (jmcc)++import Control.Monad+import Control.Monad.Random+import Sound.SC3+import Sound.SC3.Lang.Control.OverlapTexture+import Sound.SC3.Lang.Random.Monad++r_freq :: (RandomGen g) => Int -> Rand g [Double]+r_freq i = do+ n <- nrrand i 24 84+ return (map midiCPS' n)++r_harmonics :: (RandomGen g) => Double -> Int -> Double -> Rand g [Double]+r_harmonics d m f = fmap (map (+ f)) (nrand2 m d)++r_harmonics' :: (RandomGen g) => Double -> Int -> Double -> Rand g [Double]+r_harmonics' d m f = fmap ((f :) . map (+ f)) (nrand2 (m - 1) d)++r_phase :: (RandomGen g) => Int -> Rand g [Double]+r_phase m = nrrand m 0 (2 * pi)++sbs :: (RandomGen g) => Int -> Double -> Int -> Rand g UGen+sbs n d m = do+ f <- r_freq n+ p_fr <- mapM (r_harmonics' d m) f+ q_fr <- mapM (r_harmonics d m) f+ p_ph <- replicateM n (r_phase m)+ q_ph <- replicateM n (r_phase m)+ let a = replicate n (replicate m 1)+ p_sp = zipWith3 klangSpec' p_fr a p_ph+ q_sp = zipWith3 klangSpec' q_fr a q_ph+ mk_u s = klang AR 1 0 s * (0.1 / fromIntegral n)+ p_u = sum (map mk_u p_sp)+ q_u = sum (map mk_u q_sp)+ return (mce2 p_u q_u)++main :: IO ()+main = do+ g <- getStdGen+ overlapTextureS (4,4,3,maxBound) (runRand (sbs 20 0.4 3)) g
@@ -0,0 +1,31 @@+-- snare-909 (jmcc)++import Sound.SC3.ID++snare_909 :: UGen -> UGen+snare_909 tr =+ let n = whiteNoise 'a' AR+ v = tRand 'a' 0.25 1.0 tr+ e a b = envGen AR tr 1 0 1 DoNothing (envPerc a b)+ e1 = e 0.0005 0.055+ e2 = e 0.0005 0.075+ e3 = e 0.0005 0.4+ e4 = e 0.0005 0.283+ t1 = lfTri AR 330 0+ t2 = lfTri AR 185 0+ x1 = lpf n 7040 * 0.1 + v+ x2 = hpf x1 523+ m1 = t1 * e1 * 0.25 + t2 * e2 * 0.25+ m2 = x1 * e3 * 0.20 + x2 * e4 * 0.20+ in m1 + m2++snare_909_a :: UGen+snare_909_a =+ let x = mouseX' KR 1 4 Linear 0.2+ y = mouseY' KR 0.25 0.75 Exponential 0.2+ t = impulse KR (3 * x) 0+ in pan2 (snare_909 t) 0 y++main :: IO ()+main = audition (out 0 snare_909_a)+
@@ -1,46 +0,0 @@-snare-909 (jmcc)--> import Sound.SC3.Monadic--> main =-> let { snr tr n v =-> let { e a b = envGen ar tr 1 0 1 DoNothing (envPerc a b)-> ; e1 = e 0.0005 0.055-> ; e2 = e 0.0005 0.075-> ; e3 = e 0.0005 0.4-> ; e4 = e 0.0005 0.283-> ; t1 = lfTri ar 330 0-> ; t2 = lfTri ar 185 0-> ; x1 = lpf n 7040 * 0.1 + v-> ; x2 = hpf x1 523-> ; m1 = t1 * e1 * 0.25 + t2 * e2 * 0.25-> ; m2 = x1 * e3 * 0.20 + x2 * e4 * 0.20 }-> in m1 + m2-> ; x = mouseX kr 1 4 Linear 0.2-> ; y = mouseY kr 0.25 0.75 Exponential 0.2-> ; t = impulse kr (3 * x) 0 }-> in do { n <- whiteNoise ar-> ; v <- tRand 0.25 1.0 t-> ; audition (out 0 (pan2 (snr t n v) 0 y)) }--{ var snr =- { arg tr, n, v- ; var e = { arg a, b- ; EnvGen.ar(Env.perc(a, b), tr, 1, 0, 1, 0) }- ; var e1 = e.value(0.0005, 0.055)- ; var e2 = e.value(0.0005, 0.075)- ; var e3 = e.value(0.0005, 0.4)- ; var e4 = e.value(0.0005, 0.283)- ; var t1 = LFTri.ar(330, 0)- ; var t2 = LFTri.ar(185, 0)- ; var x1 = LPF.ar(n, 7040) * (0.1 + v)- ; var x2 = HPF.ar(x1, 523)- ; var m1 = (t1 * e1 * 0.25) + (t2 * e2 * 0.25)- ; var m2 = (x1 * e3 * 0.20) + (x2 * e4 * 0.20)- ; m1 + m2 }-; var x = MouseX.kr(1, 4, 'linear', 0.2)-; var y = MouseY.kr(0.25, 0.75, 'exponential', 0.2)-; var t = Impulse.kr(3 * x, 0)-; var n = WhiteNoise.ar-; var v = TRand.kr(0.25, 1.0, t)-; Out.ar(0, Pan2.ar(snr.value(t, n, v), 0, y)) }.play
@@ -0,0 +1,21 @@+{ var snr =+ { arg tr, n, v+ ; var e = { arg a, b+ ; EnvGen.ar(Env.perc(a, b), tr, 1, 0, 1, 0) }+ ; var e1 = e.value(0.0005, 0.055)+ ; var e2 = e.value(0.0005, 0.075)+ ; var e3 = e.value(0.0005, 0.4)+ ; var e4 = e.value(0.0005, 0.283)+ ; var t1 = LFTri.ar(330, 0)+ ; var t2 = LFTri.ar(185, 0)+ ; var x1 = LPF.ar(n, 7040) * (0.1 + v)+ ; var x2 = HPF.ar(x1, 523)+ ; var m1 = (t1 * e1 * 0.25) + (t2 * e2 * 0.25)+ ; var m2 = (x1 * e3 * 0.20) + (x2 * e4 * 0.20)+ ; m1 + m2 }+; var x = MouseX.kr(1, 4, 'linear', 0.2)+; var y = MouseY.kr(0.25, 0.75, 'exponential', 0.2)+; var t = Impulse.kr(3 * x, 0)+; var n = WhiteNoise.AR+; var v = TRand.kr(0.25, 1.0, t)+; Out.ar(0, Pan2.ar(snr.value(t, n, v), 0, y)) }.play
@@ -1,34 +0,0 @@-sosc-lp (rd)--> import Sound.SC3.Monadic--> main =-> let { dustR r lo hi = do { n1 <- dwhite 1 lo hi-> ; n2 <- whiteNoise r-> ; d <- dseq dinf n1-> ; return (tDuty r d 0 DoNothing (abs n2) 1) }-> ; a = [60, 71, 89, 65, 36, 57, 92, 97, 92, 97]-> ; b = [71, 89, 60, 57, 65, 36, 95, 92, 93, 97]-> ; setup fd = do { async fd (b_alloc 10 9 1)-> ; async fd (b_alloc 11 9 1)-> ; send fd (b_setn1 10 0 a)-> ; send fd (b_setn1 11 0 b) }-> ; d_env t = decay2 t 0.002 2.5-> ; idx t = stepper t 0 0 15 1 0-> ; f1 t = let { l = (bufRdL 1 kr 10 (idx t) Loop - 24)-> ; r = (bufRdL 1 kr 11 (idx t) Loop - 24) }-> in midiCPS (mce2 l r)-> ; f2 t n = f1 t + n * 1.2-> ; o1 t = sinOsc ar (f1 t) 0 * d_env t-> ; o2 t n = sinOsc ar (f2 t n) 0 * d_env t-> ; sosc_lp t n = out 0 ((o1 t + o2 t n) * 0.2) }-> in do { clk <- dustR kr 0.2 0.9-> ; n <- lfNoise0 kr (mce2 1 3)-> ; audition (sosc_lp clk n) }--> resetter =-> let { a = [71, 60, 65, 89, 36, 57, 95, 97, 92, 97]-> ; b = [89, 71, 60, 65, 57, 36, 92, 95, 93, 97]-> ; resetup fd = do { send fd (b_setn1 10 0 a)-> ; send fd (b_setn1 11 0 b) } }-> in withSC3 resetup
@@ -0,0 +1,26 @@+-- spe (jmcc)+-- variant of graph in streams & patterns tutorial++import Sound.SC3.Monadic++spe :: UId m => m UGen+spe = do+ let (>=>) f g x = f x >>= g+ chain n f = foldl (>=>) return (replicate n f)+ rapf i = do r <- clone 2 (rand 0 0.05)+ return (allpassN i 0.05 r 4)+ src = do let t = impulse KR 9 0+ e = envGen KR t 0.1 0 1 DoNothing (envPerc 0.1 1)+ s = mce [00,03,02,07+ ,08,32,16,18+ ,00,12,24,32]+ n <- lfNoise1 KR 1+ m <- dseq dinf s+ let f = midiCPS (demand t 0 m + 32)+ o = lfSaw AR f 0 * e+ rq = midiCPS (n * 36 + 110)+ return (rlpf o rq 0.1)+ chain 4 rapf =<< src++main :: IO ()+main = audition . out 0 =<< spe
@@ -0,0 +1,30 @@+-- spe-p (jmcc)++import Sound.SC3.Monadic {- hsc3 -}+import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}++spe3_allpass6 :: IO Synthdef+spe3_allpass6 = do+ n <- lfNoise1 KR 1+ let freq = control KR "freq" 440+ (>=>) f g x = f x >>= g+ chain i f = foldl (>=>) return (replicate i f)+ rapf i = do r <- clone 2 (rand 0 0.05)+ return (allpassN i 0.05 r 4)+ e = envGen KR 1 0.1 0 1 RemoveSynth (envPerc 0.1 1)+ rq = midiCPS (n * 36 + 110)+ o = rlpf (lfSaw AR freq 0 * e) rq 0.1+ u <- fmap (out 0) (chain 4 rapf o)+ return (synthdef "spe" u)++notes :: P Double+notes =+ let n = [prand' 'a' [pempty,fromList [24,31,36,43,48,55]] inf+ ,pflop [60,prand 'b' [63,65] inf,67,prand 'c' [70,72,74] inf]+ ,psplitPlaces (pwhite 'd' 3 9 inf) (fromList [74,75,77,79,81])]+ in pjoin (pseq1 n inf)++main :: IO ()+main = do+ i <- spe3_allpass6+ audition (i,pbind [("midinote",notes),("dur",0.13)])
@@ -1,23 +0,0 @@-spe (jmcc)--> import Sound.SC3.Monadic--> main =-> let { (>=>) f g = \x -> f x >>= g-> ; chain n f = foldl (>=>) return (replicate n f)-> ; rapf i = do { r <- clone 2 (rand 0 0.05)-> ; return (allpassN i 0.05 r 4) }-> ; src = let { t = impulse kr 9 0-> ; e = envGen kr t 0.1 0 1 DoNothing (envPerc 0.1 1)-> ; s = mce [ 00, 03, 02, 07-> , 08, 32, 16, 18-> , 00, 12, 24, 32 ] }-> in do { n <- lfNoise1 kr 1-> ; m <- dseq dinf s-> ; let { f = midiCPS (demand t 0 m + 32)-> ; o = lfSaw ar f 0 * e-> ; rq = midiCPS (n * 36 + 110) }-> in return (rlpf o rq 0.1) } }-> in audition . (out 0) =<< chain 4 rapf =<< src--[variant of graph in streams & patterns tutorial]
@@ -0,0 +1,13 @@+-- sprinkler-m (jmcc)++import Sound.SC3.Monadic++sprinkler_m :: UId m => m UGen+sprinkler_m = do+ n <- whiteNoise AR+ let f = lfPulse KR 0.09 0 0.16 * 10 + 7+ t = lfPulse KR f 0 0.25 * 0.1+ return (bpz2 (n * t))++main :: IO ()+main = audition . out 0 =<< sprinkler_m
@@ -1,13 +0,0 @@-sprinkler-m (jmcc)--> import Sound.SC3.Monadic--> main =-> do { n <- whiteNoise ar-> ; let { f = lfPulse kr 0.09 0 0.16 * 10 + 7-> ; t = lfPulse kr f 0 0.25 * 0.1 }-> in audition (out 0 (bpz2 (n * t))) }--{ var f = LFPulse.kr(0.09, 0, 0.16, 10, 7)-; var t = LFPulse.kr(f, 0, 0.25, 0.1)-; Out.ar(0, BPZ2.ar(WhiteNoise.ar * t)) }.play
@@ -0,0 +1,13 @@+-- sprinkler (jmcc)++import Sound.SC3.ID++sprinkler :: UGen+sprinkler =+ let n = whiteNoise 'α' AR+ f = lfPulse KR 0.09 0 0.16 * 10 + 7+ t = lfPulse KR f 0 0.25 * 0.1+ in bpz2 (n * t)++main :: IO ()+main = audition (out 0 sprinkler)
@@ -1,13 +0,0 @@-sprinkler (jmcc)--> import Sound.SC3.ID--> main =-> let { n = whiteNoise 'α' AR-> ; f = lfPulse KR 0.09 0 0.16 * 10 + 7-> ; t = lfPulse KR f 0 0.25 * 0.1 }-> in audition (out 0 (bpz2 (n * t)))--{ var f = LFPulse.kr(0.09, 0, 0.16, 10, 7)-; var t = LFPulse.kr(f, 0, 0.25, 0.1)-; Out.ar(0, BPZ2.ar(WhiteNoise.ar * t)) }.play
@@ -0,0 +1,3 @@+{var f = LFPulse.kr(0.09,0,0.16,10,7)+;var t = LFPulse.kr(f,0,0.25,0.1)+;Out.ar(0,BPZ2.ar(WhiteNoise.ar * t))}.play
@@ -0,0 +1,23 @@+-- string wander-cluster (jmcc)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.OverlapTexture+import System.Random++type ST = (Double,StdGen)++wander :: ST -> ST+wander (n,g) =+ let (n',g') = randomR (-7,8) g+ in (foldToRange 50 120 (n + n'),g')++swc :: ST -> (UGen,ST)+swc st =+ let (n,g) = wander st+ d = 1 / midiCPS (constant n)+ w = whiteNoise 'c' AR * 0.008+ o = combC w 0.01 d (d * 1000)+ in (pan2 o (rand 'd' (-1) 1) 1,(n,g))++main :: IO ()+main = overlapTextureS (4/3,4/3,6,maxBound) swc (60,mkStdGen 0)
@@ -0,0 +1,19 @@+-- strummable guitar (jmcc)++import Sound.SC3.ID++strummable_guitar :: UGen+strummable_guitar =+ let scale = [52,57,62,67,71,76]+ str i = let x = mouseX' KR 0 1 Linear 0.2+ t = abs (hpz1 (x >* (0.25 + constant i * 0.1)))+ e = decay t 0.05+ n = pinkNoise i AR * e+ dt = 1 / midiCPS (scale !! i)+ s = combL n dt dt 4+ in pan2 s (constant i * 0.2 - 0.5) 1+ strs = mixFill (length scale) str+ in leakDC (lpf strs 12000) 0.995++main :: IO ()+main = audition (out 0 strummable_guitar)
@@ -1,27 +0,0 @@-strummable guitar (jmcc)--> import Sound.SC3.ID--> main =-> let { scale = [ 52, 57, 62, 67, 71, 76 ]-> ; str i = let { x = mouseX kr 0 1 Linear 0.2-> ; t = abs (hpz1 (x >* (0.25 + constant i * 0.1)))-> ; e = decay t 0.05-> ; n = pinkNoise i ar * e-> ; dt = 1 / (midiCPS (scale !! i))-> ; s = combL n dt dt 4 }-> in pan2 s (constant i * 0.2 - 0.5) 1-> ; strs = mixFill (length scale) str }-> in audition (out 0 (leakDC (lpf strs 12000) 0.995))--{ var scale = [ 52, 57, 62, 67, 71, 76 ]-; var str = { arg i- ; var x = MouseX.kr(0, 1, 'linear', 0.2)- ; var t = HPZ1.kr(x > (0.25 + (i * 0.1))).abs- ; var e = Decay.kr(t, 0.05)- ; var n = PinkNoise.ar * e- ; var dt = scale.at(i).midicps.reciprocal- ; var s = CombL.ar(n, dt, dt, 4)- ; Pan2.ar(s, i * 0.2 - 0.5, 1) }-; var strs = Mix.fill(scale.size, str)-; Out.ar(0, LeakDC.ar(LPF.ar(strs, 12000), 0.995)) }.play
@@ -0,0 +1,11 @@+{var scale = [52,57,62,67,71,76]+;var str = {arg i+ ;var x = MouseX.kr(0,1,'linear',0.2)+ ;var t = HPZ1.kr(x > (0.25 + (i * 0.1))).abs+ ;var e = Decay.kr(t,0.05)+ ;var n = PinkNoise.ar * e+ ;var dt = scale.at(i).midicps.reciprocal+ ;var s = CombL.ar(n,dt,dt,4)+ ;Pan2.ar(s,i * 0.2 - 0.5,1)}+;var strs = Mix.fill(scale.size,str)+;Out.ar(0,LeakDC.ar(LPF.ar(strs,12000),0.995))}.play
@@ -0,0 +1,15 @@+-- sweepy noise (jmcc)++import Sound.SC3.ID++sweepy_noise :: UGen+sweepy_noise =+ let n = udup 2 (whiteNoise 'a' AR)+ lfoDepth = mouseY' KR 200 8000 Exponential 0.1+ lfoRate = mouseX' KR 4 60 Exponential 0.1+ freq = lfSaw KR lfoRate 0 * lfoDepth + (lfoDepth * 1.2)+ filtered = rlpf (n * 0.03) freq 0.1+ in combN filtered 0.3 0.3 2 + filtered++main :: IO ()+main = audition (out 0 sweepy_noise)
@@ -1,17 +0,0 @@-sweepy noise (jmcc)--> import Sound.SC3.Monadic--> main =-> do { n <- clone 2 (whiteNoise ar)-> ; let { lfoDepth = mouseY kr 200 8000 Exponential 0.1-> ; lfoRate = mouseX kr 4 60 Exponential 0.1-> ; freq = lfSaw kr lfoRate 0 * lfoDepth + (lfoDepth * 1.2)-> ; filtered = rlpf (n * 0.03) freq 0.1 }-> in audition (out 0 (combN filtered 0.3 0.3 2 + filtered)) }--{ var lfoDepth = MouseY.kr(200, 8000, 'exponential', 0.1)-; var lfoRate = MouseX.kr(4, 60, 'exponential', 0.1)-; var freq = LFSaw.kr(lfoRate, 0) * lfoDepth + (lfoDepth * 1.2)-; var filtered = RLPF.ar(WhiteNoise.ar([0.03,0.03]), freq, 0.1)-; Out.ar(0, CombN.ar(filtered, 0.3, 0.3, 2) + filtered) }.play
@@ -0,0 +1,5 @@+{var lfoDepth = MouseY.kr(200,8000,'exponential',0.1)+;var lfoRate = MouseX.kr(4,60,'exponential',0.1)+;var freq = LFSaw.kr(lfoRate,0) * lfoDepth + (lfoDepth * 1.2)+;var filtered = RLPF.ar(WhiteNoise.ar([0.03,0.03]),freq,0.1)+;Out.ar(0,CombN.ar(filtered,0.3,0.3,2) + filtered) }.play
@@ -0,0 +1,26 @@+-- synthetic piano (jmcc)++import Sound.SC3.Lang.Control.OverlapTexture+import Sound.SC3.Monadic++synthetic_piano :: UId m => m UGen+synthetic_piano = do+ n <- iRand 36 90+ f <- rand 0.1 0.5+ ph <- rand 0 (pi * 2)+ let s = impulse AR f ph * 0.1+ e = decay2 s 0.008 0.04+ c i = do n0 <- lfNoise2 AR 3000+ let o = [-0.05,0,0.04] !! i+ dt = 1 / midiCPS (n + o)+ return (combL (n0 * e) dt dt 6)+ l = ((n - 36) / 27) - 1+ c_ <- mixFillM 3 c+ return (pan2 c_ l 1)++main :: IO ()+main = overlapTextureU (0,6,6,maxBound) =<< synthetic_piano++{-+audition . out 0 =<< mixFillM 6 (const synthetic_piano)+-}
@@ -1,33 +0,0 @@-synthetic piano (jmcc)--> import Sound.SC3.Monadic--> main =-> let p = do { n <- iRand 36 90-> ; f <- rand 0.1 0.5-> ; ph <- rand 0 (pi * 2)-> ; let { s = impulse ar f ph * 0.1-> ; e = decay2 s 0.008 0.04-> ; c i = do { n0 <- lfNoise2 ar 3000-> ; let { o = [-0.05, 0, 0.04] !! i-> ; dt = 1 / (midiCPS (n + o)) }-> in return (combL (n0 * e) dt dt 6) }-> ; l = ((n - 36) / 27) - 1 }-> in do { c_ <- mixFillM 3 c-> ; return (pan2 c_ l 1) } }-> in audition . out 0 =<< mixFillM 6 (const p)--{ var p = { var n = IRand.new(36, 90)- ; var f = Rand.new(0.1, 0.5)- ; var ph = Rand.new(0, pi * 2)- ; var s = Impulse.ar(f, ph) * 0.1- ; var e = Decay2.ar(s, 0.008, 0.04)- ; var c = { arg i- ; var n0 = LFNoise2.ar(3000)- ; var o = [-0.05, 0, 0.04].at(i)- ; var dt = 1 / (n + o).midicps- ; CombL.ar(n0 * e, dt, dt, 6) }- ; var l = ((n - 36) / 27) - 1- ; var c_ = Mix.fill(3, c)- ; Pan2.ar(c_, l, 1) }-; Out.ar(0, Mix.fill(6, p)) }.play
@@ -0,0 +1,14 @@+{var p = {var n = IRand.new(36,90)+ ;var f = Rand.new(0.1,0.5)+ ;var ph = Rand.new(0,pi * 2)+ ;var s = Impulse.ar(f,ph) * 0.1+ ;var e = Decay2.ar(s,0.008,0.04)+ ;var c = {arg i+ ;var n0 = LFNoise2.ar(3000)+ ;var o = [-0.05,0,0.04].at(i)+ ;var dt = 1 / (n + o).midicps+ ;CombL.ar(n0 * e,dt,dt,6) }+ ;var l = ((n - 36) / 27) - 1+ ;var c_ = Mix.fill(3,c)+ ;Pan2.ar(c_,l,1) }+;Out.ar(0,Mix.fill(6,p)) }.play
@@ -0,0 +1,58 @@+-- tank-m (jmcc)+-- http://create.ucsb.edu/pipermail/sc-users/2004-April/009692.html++import Control.Monad+import Sound.SC3.Monadic++pling :: IO UGen+pling = do+ d <- dust AR 0.2+ f <- expRand 300 2200+ p <- rand (-1) 1+ let s1 = cubed (fSinOsc AR f 0)+ s2 = decay2 d 0.1 0.5 * 0.1 * s1+ return (pan2 s2 p 1)++bang :: IO UGen+bang = do+ d <- dust AR 0.01+ n <- brownNoise AR+ return (pan2 (decay2 d 0.04 0.3 * n) 0 1)++chain :: Monad m => Int -> (b -> m b) -> b -> m b+chain n f = foldl (>=>) return (replicate n f)++r_allpass :: UId m => UGen -> m UGen+r_allpass i = do+ r <- clone 2 (rand 0.005 0.02)+ return (allpassN i 0.03 r 1)++tank_f :: UGen -> IO UGen+tank_f i = do+ r1 <- clone 2 (rand 0.01 0.05)+ r2 <- clone 2 (rand 0.03 0.15)+ let l0 = localIn 2 AR * 0.98+ l1 = onePole l0 0.33+ [l1l,l1r] = mceChannels l1+ l2 = rotate2 l1l l1r 0.23+ l3 = allpassN l2 0.05 r1 2+ l4 = delayN l3 0.3 (mce [0.17,0.23])+ l5 = allpassN l4 0.05 r2 2+ l6 = leakDC l5 0.995+ l7 = l6 + i+ return (mrg [l7,localOut l7])++tank :: IO UGen+tank = do+ s <- liftM2 (+) bang (mixFillM 8 (const pling))+ s' <- chain 4 r_allpass s+ tank_f s'++main :: IO ()+main = do+ t <- tank+ audition (out 0 t)++{-+tank >>= Sound.SC3.UGen.Dot.draw+-}
@@ -0,0 +1,51 @@+-- tank (jmcc)+-- http://create.ucsb.edu/pipermail/sc-users/2004-April/009692.html++import Sound.SC3.ID++pling :: UGen+pling =+ let d = dust 'a' AR 0.2+ f = expRand 'a' 300 2200+ p = rand 'a' (-1) 1+ s1 = cubed (fSinOsc AR f 0)+ s2 = decay2 d 0.1 0.5 * 0.1 * s1+ in pan2 s2 p 1++bang :: UGen+bang =+ let d = dust 'b' AR 0.01+ n = brownNoise 'b' AR+ in pan2 (decay2 d 0.04 0.3 * n) 0 1++r_allpass :: UGen -> UGen+r_allpass i =+ let r = udup 2 (rand 'c' 0.005 0.02)+ in allpassN i 0.03 r 1++tank_f :: UGen -> UGen+tank_f i =+ let r1 = udup 2 (rand 'd' 0.01 0.05)+ r2 = udup 2 (rand 'd' 0.03 0.15)+ l0 = localIn 2 AR * 0.98+ l1 = onePole l0 0.33+ (l1l,l1r) = mce2c l1+ l2 = rotate2 l1l l1r 0.23+ l3 = allpassN l2 0.05 r1 2+ l4 = delayN l3 0.3 (mce2 0.17 0.23)+ l5 = allpassN l4 0.05 r2 2+ l6 = leakDC l5 0.995+ l7 = l6 + i+ in mrg [l7,localOut l7]++tank :: UGen+tank =+ let s = bang + mix (uclone 'a' 8 pling)+ in tank_f (useq 'a' 4 r_allpass s)++main :: IO ()+main = audition (out 0 tank)++{-+Sound.SC3.UGen.Dot.draw tank+-}
@@ -1,64 +0,0 @@-tank (jmcc)--> import Control.Monad-> import Sound.SC3.Monadic--> main =-> let { r_allpass i = do { r <- clone 2 (rand 0.005 0.02)-> ; return (allpassN i 0.03 r 1) }-> ; chain n f = foldl (>=>) return (replicate n f)-> ; pling = do { d <- dust ar 0.2-> ; f <- expRand 300 2200-> ; p <- rand (-1) 1-> ; let { s1 = cubed (fSinOsc ar f 0)-> ; s2 = decay2 d 0.1 0.5 * 0.1 * s1 }-> in return (pan2 s2 p 1) }-> ; bang = do { d <- dust ar 0.01-> ; n <- brownNoise ar-> ; return (pan2 (decay2 d 0.04 0.3 * n) 0 1) }-> ; tank i = do { r1 <- clone 2 (rand 0.01 0.05)-> ; r2 <- clone 2 (rand 0.03 0.15)-> ; let { l0 = localIn 2 ar * 0.98-> ; l1 = onePole l0 0.33-> ; [l1l, l1r] = mceChannels l1-> ; l2 = rotate2 l1l l1r 0.23-> ; l3 = allpassN l2 0.05 r1 2-> ; l4 = delayN l3 0.3 (mce [0.17, 0.23])-> ; l5 = allpassN l4 0.05 r2 2-> ; l6 = leakDC l5 0.995-> ; l7 = l6 + i }-> in return (mrg [l7, localOut l7]) }-> ; signal = do { s <- liftM2 (+) bang (mixFillM 8 (const pling))-> ; chain 4 r_allpass s } }-> in audition . out 0 =<< tank =<< signal--{ var r_allpass = { arg signal- ; var r = { Rand.new(0.005, 0.02) }.dup- ; AllpassN.ar(signal, 0.03, r, 1); }-; var pling = { var d = Dust.ar(0.2)- ; var f = ExpRand.new(300, 2200)- ; var p = Rand.new(-1, 1)- ; var s1 = FSinOsc.ar(f, 0).cubed- ; var s2 = Decay2.ar(d, 0.1, 0.5) * 0.1 * s1- ; Pan2.ar(s2, p, 1) }-; var bang = { var d = Dust.ar(0.01)- ; var n = BrownNoise.ar- ; Pan2.ar(Decay2.ar(d, 0.04, 0.3) * n, 0, 1) }-; var tank = { arg i- ; var r1 = { Rand.new(0.01,0.05) }.dup- ; var r2 = { Rand.new(0.03,0.15) }.dup- ; var l0 = LocalIn.ar(2) * 0.98- ; var l1 = OnePole.ar(l0, 0.33)- ; var l2 = Rotate2.ar(l1[0], l1[1], 0.23)- ; var l3 = AllpassN.ar(l2, 0.05, r1, 2)- ; var l4 = DelayN.ar(l3, 0.3, [0.17,0.23])- ; var l5 = AllpassN.ar(l4, 0.05, r2, 2)- ; var l6 = LeakDC.ar(l5, 0.995)- ; var l7 = l6 + i- ; LocalOut.ar(l7)- ; l7 }-; var signal = Mix.fill(12, pling) + bang.value-; 4.do({ signal = r_allpass.value(signal) })-; Out.ar(0, tank.value(signal)) }.play--http://create.ucsb.edu/pipermail/sc-users/2004-April/009692.html
@@ -0,0 +1,28 @@+{var r_allpass = {arg signal+ ;var r = {Rand.new(0.005, 0.02)}.dup+ ;AllpassN.ar(signal, 0.03, r, 1);}+;var pling = {var d = Dust.ar(0.2)+ ;var f = ExpRand.new(300, 2200)+ ;var p = Rand.new(-1, 1)+ ;var s1 = FSinOsc.ar(f, 0).cubed+ ;var s2 = Decay2.ar(d, 0.1, 0.5) * 0.1 * s1+ ;Pan2.ar(s2, p, 1)}+;var bang = {var d = Dust.ar(0.01)+ ;var n = BrownNoise.AR+ ;Pan2.ar(Decay2.ar(d, 0.04, 0.3) * n, 0, 1)}+;var tank = {arg i+ ;var r1 = {Rand.new(0.01,0.05)}.dup+ ;var r2 = {Rand.new(0.03,0.15)}.dup+ ;var l0 = LocalIn.ar(2) * 0.98+ ;var l1 = OnePole.ar(l0, 0.33)+ ;var l2 = Rotate2.ar(l1[0], l1[1], 0.23)+ ;var l3 = AllpassN.ar(l2, 0.05, r1, 2)+ ;var l4 = DelayN.ar(l3, 0.3, [0.17,0.23])+ ;var l5 = AllpassN.ar(l4, 0.05, r2, 2)+ ;var l6 = LeakDC.ar(l5, 0.995)+ ;var l7 = l6 + i+ ;LocalOut.ar(l7)+ ;l7}+;var signal = Mix.fill(12, pling) + bang.value+;4.do({signal = r_allpass.value(signal)})+;Out.ar(0, tank.value(signal))}.play
@@ -0,0 +1,40 @@+-- tgb (rd)++import Sound.OpenSoundControl+import Sound.SC3.Monadic++tgb :: UId m => UGen -> UGen -> m UGen+tgb b d = do+ let mkls bp t = envGen KR 1 1 0 1 RemoveSynth (envCoord bp t 1 EnvLin)+ pm_t l r du t = let le = mkls l du+ re = mkls r du+ in tRand le re t+ wrp i = linLin i (-1) 1+ pm_n rt l du = do let le = mkls l du+ re = mkls l du+ n <- whiteNoise rt+ return (wrp n le re)+ gps <- pm_n AR [(0,400),(1,900)] d+ let t = impulse AR gps 0+ pm_f (l,r) = pm_t l r d t+ du <- pm_f ([(0,0.005),(0.5,0.015),(1,0.005)]+ ,[(0,0.009),(0.5,0.020),(1,0.009)])+ pn <- pm_f ([(0,-1.0),(0.5,-0.5),(1,0.5)]+ ,[(0,-0.5),(0.5,0.5),(1,1.0)])+ rt <- pm_f ([(0,6),(0.5,12),(1,6)]+ ,[(0,12),(0.5,12),(1,12)])+ cs <- pm_f ([(0,0),(1,0.95)]+ ,[(0,0),(1,1)])+ am <- pm_f ([(0,0.25),(0.5,0.55),(1,0.15)]+ ,[(0,0.5),(0.5,0.75),(1,0.25)])+ let cs' = cs * bufDur KR b+ return (tGrains 2 t b rt cs' du pn am 2)++act :: Transport t => t -> IO ()+act fd = do+ let fn = "/home/rohan/data/audio/pf-c5.aif"+ _ <- async fd (b_allocRead 10 fn 0 0)+ play fd . out 0 =<< tgb 10 12++main :: IO ()+main = withSC3 act
@@ -1,33 +0,0 @@-tgb (rd)--> import Sound.SC3.Monadic-> import System.Random--> main =-> let { mkls bp t = envGen kr 1 1 0 1 RemoveSynth (envCoord bp t 1 EnvLin)-> ; pm_t l r d t = let { le = mkls l d-> ; re = mkls r d }-> in tRand le re t-> ; wrp i l r = linLin i (-1) 1 l r-> ; pm_n rt l d = let { le = mkls l d-> ; re = mkls l d }-> in do { n <- whiteNoise rt-> ; return (wrp n le re) }-> ; gb b d = do { gps <- pm_n ar [(0, 400), (1, 900)] d-> ; let { t = impulse ar gps 0-> ; pm_f (l, r) = pm_t l r d t }-> in do { du <- pm_f ([(0, 0.005), (0.5, 0.015), (1, 0.005)]-> ,[(0, 0.009), (0.5, 0.020), (1, 0.009)])-> ; pn <- pm_f ([(0, -1.0), (0.5, -0.5), (1, 0.5)]-> ,[(0, -0.5), (0.5, 0.5), (1, 1.0)])-> ; rt <- pm_f ([(0, 6), (0.5, 12), (1, 6)]-> ,[(0, 12), (0.5, 12), (1, 12)])-> ; cs <- pm_f ([(0, 0), (1, 0.95)]-> ,[(0, 0), (1, 1)])-> ; am <- pm_f ([(0, 0.25), (0.5, 0.55), (1, 0.15)]-> ,[(0, 0.5), (0.5, 0.75), (1, 0.25)])-> ; let cs' = cs * (bufDur kr b)-> in return (tGrains 2 t b rt cs' du pn am 2) } }-> ; fn = "/home/rohan/audio/text.snd" }-> in withSC3 (\fd -> do { async fd (b_allocRead 10 fn 0 0)-> ; play fd . (out 0) =<< gb 10 12 })
@@ -0,0 +1,65 @@+-- tgr-rpr (rd)++import Sound.OpenSoundControl+import Sound.SC3.Monadic+import System.Random++dustR :: UId m => Rate -> UGen -> UGen -> m UGen+dustR r lo hi = do+ n1 <- dwhite 1 lo hi+ n2 <- whiteNoise r+ d <- dseq dinf n1+ return (tDuty r d 0 DoNothing (abs n2) 1)++rpr :: UId m => UGen -> UGen -> m UGen+rpr n = tRand (in' 1 KR n) (in' 1 KR (n + 1))++tgr_rpr :: (Functor m,UId m) => m UGen+tgr_rpr = do+ clk <- dustR AR (in' 1 KR 0) (in' 1 KR 1)+ rat <- rpr 2 clk+ dur <- rpr 4 clk+ pos <- fmap (* bufDur KR 10) (rpr 8 clk)+ pan <- rpr 10 clk+ amp <- rpr 6 clk+ return (tGrains 2 clk 10 rat pos dur pan amp 2)++rrand :: Random a => a -> a -> IO a+rrand l r = getStdRandom (randomR (l,r))++preset :: [Double]+preset =+ [0.01,0.02+ ,0.95,1.05+ ,0.02,0.06+ ,0.6,0.7+ ,0.7,0.9+ ,-1.0,1.0]++rSet :: [(Double, Double)]+rSet =+ [(0.005,0.025),(0.05,0.25)+ ,(0.75,0.95),(1.05,1.25)+ ,(0.001,0.01),(0.02,0.04)+ ,(0.4,0.5),(0.7,0.8)+ ,(0.0,0.45),(0.55,1.0)+ ,(-1.0,0.0),(0.0,1.0)]++edit :: Transport t => t -> IO ()+edit fd = do+ s <- mapM (uncurry rrand) rSet+ send fd (c_setn [(0,s)])+ pauseThread 0.35++run :: Transport t => t -> IO ()+run fd = do+ let sf = "/home/rohan/data/audio/pf-c5.snd"+ _ <- async fd (b_allocRead 10 sf 0 0)+ send fd (c_setn [(0,preset)])+ play fd . out 0 =<< tgr_rpr+ pauseThread 0.3+ _ <- sequence (replicate 64 (edit fd))+ reset fd++main :: IO ()+main = withSC3 run
@@ -1,42 +0,0 @@-tgr-rpr (rd)--> import Sound.OpenSoundControl-> import Sound.SC3.Monadic-> import System.Random--> main =-> let { sf = "/home/rohan/audio/text.snd"-> ; preset = [ 0.01, 0.02-> , 0.95, 1.05-> , 0.02, 0.06-> , 0.2, 0.3-> , 0.7, 0.9-> , -1.0, 1.0 ]-> ; dustR r lo hi = do { n1 <- dwhite 1 lo hi-> ; n2 <- whiteNoise r-> ; d <- dseq dinf n1-> ; return (tDuty r d 0 DoNothing (abs n2) 1) }-> ; rpr n t = tRand (in' 1 kr n) (in' 1 kr (n + 1)) t-> ; rrand l r = getStdRandom (randomR (l, r))-> ; rSet = [ (0.005, 0.025), (0.05, 0.25)-> , (0.75, 0.95) , (1.05, 1.25)-> , (0.001, 0.01) , (0.02, 0.04)-> , (0.1, 0.2) , (0.2, 0.4)-> , (0.0, 0.45) , (0.55, 1.0)-> , (-1.0, 0.0) , (0.0, 1.0) ]-> ; edit fd = do { s <- mapM (\(l,r) -> rrand l r) rSet-> ; send fd (c_setn [(0, s)])-> ; pauseThread 0.35 } }-> in do { clk <- dustR ar (in' 1 kr 0) (in' 1 kr 1)-> ; rat <- rpr 2 clk-> ; dur <- rpr 4 clk-> ; pos <- fmap (* (bufDur kr 10)) (rpr 8 clk)-> ; pan <- rpr 10 clk-> ; amp <- rpr 6 clk-> ; withSC3 (\fd -> do { async fd (b_allocRead 10 sf 0 0)-> ; send fd (c_setn [(0, preset)])-> ; let o = tGrains 2 clk 10 rat pos dur pan amp 2-> in play fd (out 0 o)-> ; pauseThread 0.3-> ; sequence (replicate 16 (edit fd))-> ; reset fd }) }
@@ -0,0 +1,24 @@+-- tgrn (rd)++import Sound.OpenSoundControl+import Sound.SC3.ID++tgrn :: UGen -> UGen+tgrn b =+ let trate = mouseY' KR 2 120 Exponential 0.1+ dur = 1.2 / trate+ clk = impulse AR trate 0+ pos = mouseX' KR 0 (bufDur KR b) Linear 0.1+ pan = whiteNoise 'α' KR * 0.6+ n = roundTo (whiteNoise 'β' KR * 3) 1+ rate = shiftLeft 1.2 n+ in tGrains 2 clk b rate pos dur pan 0.5 2++run :: Transport t => t -> IO ()+run fd = do+ let fn = "/home/rohan/data/audio/pf-c5.snd"+ _ <- async fd (b_allocRead 10 fn 0 0)+ play fd (out 0 (tgrn 10))++main :: IO ()+main = withSC3 run
@@ -1,20 +0,0 @@-tgrn (rd)-ghci -e main tgrn.lhs-C-cC-l C-cC-m--> import Sound.SC3.ID--> tgrn b =-> let { trate = mouseY kr 2 120 Exponential 0.1-> ; dur = 1.2 / trate-> ; clk = impulse ar trate 0-> ; pos = mouseX kr 0 (bufDur kr b) Linear 0.1-> ; pan = whiteNoise 'α' kr * 0.6-> ; n = roundE (whiteNoise 'β' kr * 3) 1-> ; rate = shiftLeft 1.2 n }-> in tGrains 2 clk b rate pos dur pan 0.25 2--> main =-> let fn = "/home/rohan/audio/text.snd"-> in withSC3 (\fd -> do { async fd (b_allocRead 10 fn 0 0)-> ; audition (out 0 (tgrn 10)) })
@@ -0,0 +1,18 @@+-- theremin (jmcc)++import Sound.SC3++theremin :: UGen+theremin =+ let m = 7+ detune = 0+ x = mouseX' KR 0 0.6 Linear 0.2+ y = mouseY' KR 4000 200 Exponential 0.8+ f = y + detune+ f' = f + f * sinOsc AR m 0 * 0.02+ a = sinOsc AR f' 0 * x+ in pan2 a 0 1++main :: IO ()+main = audition (out 0 theremin)+
@@ -1,22 +0,0 @@-theremin (jmcc)--> import Sound.SC3--> main =-> let { m = 7-> ; detune = 0-> ; x = mouseX kr 0 0.9 Linear 0.2-> ; y = mouseY kr 4000 200 Exponential 0.8-> ; f = y + detune-> ; f' = f + f * sinOsc ar m 0 * 0.02-> ; a = sinOsc ar f' 0 * x }-> in audition (out 0 (pan2 a 0 1))--{ var mod = 7-; var detune = 0-; var x = MouseX.kr(0, 0.9, 'linear', 0.2)-; var y = MouseY.kr(4000, 200, 'exponential', 0.8)-; var f = y + detune-; var f_ = f + (f * SinOsc.ar(mod, 0) * 0.02)-; var a = SinOsc.ar(f_, 0) * x-; Out.ar(0, (Pan2.ar(a, 0, 1))) }.play
@@ -0,0 +1,8 @@+{ var mod = 7+; var detune = 0+; var x = MouseX.kr(0, 0.9, 'linear', 0.2)+; var y = MouseY.kr(4000, 200, 'exponential', 0.8)+; var f = y + detune+; var f_ = f + (f * SinOsc.ar(mod, 0) * 0.02)+; var a = SinOsc.ar(f_, 0) * x+; Out.ar(0, (Pan2.ar(a, 0, 1))) }.play
@@ -0,0 +1,18 @@+-- three-cpsw (rd)++import Sound.SC3.Monadic++three_cpsw :: UId m => m UGen+three_cpsw = do+ t <- dust KR (mce2 12 18)+ f0 <- tRand 1 64 t+ f1 <- lfNoise0 KR f0+ a <- tRand 0.0 0.5 t+ dt <- tRand 0.975 1.025 t+ dh <- tRand 0.750 0.7505 t+ let f = f1 * mce2 9000 12000 + 9500+ o = saw AR f + saw AR (f * dh) + saw AR (f * dt)+ return (clip2 (o * a) 0.75)++main :: IO ()+main = audition . out 0 =<< three_cpsw
@@ -1,24 +0,0 @@-three-cpsw (rd)--> import Sound.SC3.Monadic--> main =-> do { t <- dust kr (mce2 12 18)-> ; f0 <- tRand 1 64 t-> ; f1 <- lfNoise0 kr f0-> ; a <- tRand 0.0 0.5 t-> ; dt <- tRand 0.975 1.025 t-> ; dh <- tRand 0.750 0.7505 t-> ; let { f = f1 * mce2 9000 12000 + 9500-> ; o = saw ar f + saw ar (f * dh) + saw ar (f * dt) }-> in audition (out 0 (clip2 (o * a) 0.75)) }--{ var t = Dust.kr([12, 18])-; var f0 = TRand.kr(1, 64, t)-; var f1 = LFNoise0.kr(f0)-; var a = TRand.kr(0.0, 0.5, t)-; var dt = TRand.kr(0.975, 1.025, t)-; var dh = TRand.kr(0.750, 0.7505, t)-; var f = f1 * [9000, 12000] + 9500-; var o = Saw.ar(f) + Saw.ar(f * dh) + Saw.ar(f * dt)-; Out.ar(0, (o * a).clip2(0.75)) }.play
@@ -0,0 +1,9 @@+{var t = Dust.kr([12,18])+;var f0 = TRand.kr(1,64,t)+;var f1 = LFNoise0.kr(f0)+;var a = TRand.kr(0.0,0.5,t)+;var dt = TRand.kr(0.975,1.025,t)+;var dh = TRand.kr(0.750,0.7505,t)+;var f = f1 * [9000,12000] + 9500+;var o = Saw.ar(f) + Saw.ar(f * dh) + Saw.ar(f * dt)+;Out.ar(0,(o * a).clip2(0.75)) }.play
@@ -0,0 +1,47 @@+-- thx (perry cook)+-- http://ccrma-mail.stanford.edu/pipermail/stk/2007-January/000327.html++import Sound.SC3+import System.Random++type R = Double++rvb :: UGen -> R -> UGen+rvb i rT =+ let d = mce [0.0297,0.0371,0.0411,0.0437]+ c = mix (combN i 0.05 d (constant rT) * 0.25)+ f = (allpassN c 0.01 0.005 0.096835)+ in allpassN f 0.01 0.0017 0.032924++mk_env :: R -> R -> R -> R -> R -> R -> R -> EnvCurve -> UGen+mk_env z0 t0 z1 t1 t2 z2 t3 c =+ let z = map constant [z0,z1,z1,z2,z2]+ t = map constant [t0,t1,t2,t3]+ e = env z t [c,c,c] (-1.0) (-1.0)+ in envGen KR 1 1 0 1 RemoveSynth e++mk_node :: R -> R -> R -> UGen -> UGen+mk_node t4 f0 f1 l =+ let f = mk_env f0 t0 f0 t1 t2 f1 (t3 + t4 + t5 + t5) EnvLin+ g = mk_env 0 t0 0.1 (t1 + t2 + t3) t4 0.0 (t5 + t5) EnvLin+ s = saw AR f+ t0 = 0.035+ t1 = 0.2267573696+ t2 = 2.2675736061+ t3 = 6.8027210884+ t5 = 1.75+ in pan2 s l g++thx :: UGen+thx =+ let t4 = 7.9365079365+ s = sum (zipWith3 (mk_node t4) f0 f1 l)+ n = 30+ l = take n (randomRs (-1.0,1.0) (mkStdGen 1))+ f = [29,87.5,116,175,233,350,524,880,1048,1760]+ f0 = take n (randomRs (200.0,800.0) (mkStdGen 2))+ f1 = take n (cycle f)+ in rvb s t4++main :: IO ()+main = audition (out 0 thx)
@@ -1,38 +0,0 @@-thx (perry cook)--> import Sound.SC3-> import System.Random--> main =-> let { rvb i rT -> = let { d = mce [0.0297, 0.0371, 0.0411, 0.0437]-> ; c = mix (combN i 0.05 d rT * 0.25)-> ; f = (allpassN c 0.01 0.005 0.096835) }-> in allpassN f 0.01 0.0017 0.032924-> ; mk_env z0 t0 z1 t1 t2 z2 t3 c-> = let { z = [z0, z1, z1, z2, z2]-> ; t = [t0, t1, t2, t3]-> ; e = env z t [c, c, c] (-1.0) (-1.0) }-> in envGen KR 1 1 0 1 RemoveSynth e-> ; mk_node t4 f0 f1 l -> = let { f = mk_env f0 t0 f0 t1 t2 f1 (t3 + t4 + t5 + t5) EnvLin-> ; g = mk_env 0 t0 0.1 (t1 + t2 + t3) t4 0.0 (t5 + t5) EnvLin-> ; s = saw AR f-> ; t0 = 0.035-> ; t1 = 0.2267573696-> ; t2 = 2.2675736061-> ; t3 = 6.8027210884-> ; t5 = 1.75 }-> in pan2 s l g-> ; thx -> = let { s = foldl1 (+) (zipWith3 (mk_node t4) f0 f1 l)-> ; t4 = 7.9365079365-> ; n = 30-> ; l = take n (randomRs (-1.0, 1.0) (mkStdGen 1))-> ; f = [29, 87.5, 116, 175, 233, 350, 524, 880, 1048, 1760]-> ; f0 = take n (randomRs (200.0, 800.0) (mkStdGen 2))-> ; f1 = take n (cycle f) }-> in out 0 (rvb (mce [s]) t4) }-> in audition thx--http://ccrma-mail.stanford.edu/pipermail/stk/2007-January/000327.html
@@ -0,0 +1,19 @@+-- tipnso (rd)++import Sound.SC3.ID++tipnso :: UGen+tipnso =+ let x = mouseX' KR 1 32 Linear 0.1+ t = impulse AR x 0+ n1 = tIRand 'a' 16 72 t+ n2 = tIRand 'a' 0 1 t+ n3 = pinkNoise 'a' AR+ e = decay2 t 0.01 (mce2 0.1 0.15)+ f = midiCPS (n1 + 36 + (12 * n2))+ s = sinOsc AR f 0 * e+ b = bpf (n3 * e) (36 + midiCPS n1) (175 / midiCPS n1)+ in (s + b) * mce2 0.15 0.1++main :: IO ()+main = audition (out 0 tipnso)
@@ -1,17 +0,0 @@-tipnso (rd)--> import Sound.SC3.Monadic-> import qualified Sound.SC3.ID as I--> main =-> let { x = linLin (I.lfNoise0 'a' KR 3) (-1) 1 1 32-> {- ; x = mouseX kr 1 32 Linear 0.1 -}-> ; t = impulse ar x 0 }-> in do { n1 <- tiRand 16 72 t-> ; n2 <- tiRand 0 1 t-> ; n3 <- pinkNoise ar-> ; let { e = decay2 t 0.01 (mce2 0.1 0.15)-> ; f = midiCPS (n1 + 36 + (12 * n2))-> ; s = sinOsc ar f 0 * e-> ; b = bpf (n3 * e) (36 + midiCPS n1) (175 / (midiCPS n1)) }-> in audition (out 0 ((s + b) * mce2 0.15 0.1)) }
@@ -0,0 +1,32 @@+-- tr-out (rd)++import Sound.OpenSoundControl+import Sound.SC3.Monadic++tr_nd :: UId m => UGen -> m (UGen,UGen)+tr_nd n = do+ t <- dust KR 1.6+ r1 <- tRand 0 6 t+ r2 <- tRand 0 6 t+ r3 <- tRand 0 6 t+ let f = midiCPS (bufRdN 1 KR 0 r1 NoLoop)+ p = bufRdN 1 KR 1 r2 NoLoop+ a = bufRdN 1 KR 2 r3 NoLoop+ return (pan2 (sinOsc AR f 0) p a+ ,sendTrig t n (f / 660))++tr_out :: UId m => m UGen+tr_out = do+ ns <- mapM tr_nd [1..4]+ let o = sum (map fst ns)+ return (mrg (o : map snd ns))++act :: Transport t => t -> IO ()+act fd = do+ _ <- async fd (b_alloc_setn1 0 0 [60,62,64,65,67,69])+ _ <- async fd (b_alloc_setn1 1 0 [-1,-0.5,0,0.25,0.75,1.0])+ _ <- async fd (b_alloc_setn1 2 0 [0.01,0.05,0.1,0.15,0.25,0.35])+ play fd . out 0 =<< tr_out++main :: IO ()+main = withSC3 act
@@ -1,23 +0,0 @@-tr-out (rd)--> import Sound.SC3.Monadic--> main =-> let node n = do { t <- dust kr 1.6-> ; r1 <- tRand 0 6 t-> ; r2 <- tRand 0 6 t-> ; r3 <- tRand 0 6 t-> ; let { f = midiCPS (bufRdN 1 kr 0 r1 NoLoop)-> ; p = bufRdN 1 kr 1 r2 NoLoop-> ; a = bufRdN 1 kr 2 r3 NoLoop }-> in return ( pan2 (sinOsc ar f 0) p a-> , sendTrig t n (f / 660) ) }-> in withSC3 (\fd -> do { async fd (b_alloc 0 6 1)-> ; send fd (b_setn1 0 0 [60, 62, 64, 65, 67, 69])-> ; async fd (b_alloc 1 6 1)-> ; send fd (b_setn1 1 0 [-1, -0.5, 0, 0.25, 0.75, 1.0])-> ; async fd (b_alloc 2 6 1)-> ; send fd (b_setn1 2 0 [0.01, 0.05, 0.1, 0.15, 0.25, 0.35])-> ; ns <- mapM node [1..4]-> ; let o = sum (map fst ns)-> in play fd (out 0 (mrg (o : map snd ns))) })
@@ -0,0 +1,34 @@+-- train (th.list at gmail.com)+-- http://www.create.ucsb.edu/pipermail/sc-users/2007-August/035957.html++import Sound.SC3.ID++steam :: UGen -> UGen -> UGen -> UGen+steam time n1 n2 =+ let piston = lfSaw AR (xLine AR 1 7 time DoNothing) 0+ air = lpf (n1 * piston + n2 * piston) 5000+ e = envGen AR 1 1 0 1 DoNothing (envSine time 9)+ in bpf air 600 (1 + e)++whistle :: UGen -> UGen -> UGen+whistle time n3 =+ let f = [800,600,1200,990]+ s = klankSpec f [1,1,1,1] [1,1,1,1]+ t = [0,0,1,1,0,0,1,1,0,0,1,0]+ l = [2,0,0.2,0,0.2,0,0.8,0,4,0,3]+ d = env t l (repeat EnvLin) 0 0+ e = envGen AR 1 1 0 (time/10) DoNothing d+ in klank (n3 * 0.004) 1 0 1 s * e++train :: UGen+train =+ let time = 24+ loc = let e = env [-0.8,0.8] [time + 2] [EnvSin,EnvSin] 0 0+ in envGen AR 1 1 0 1 RemoveSynth e+ n1 = whiteNoise 'a' AR+ n2 = pinkNoise 'b' AR+ n3 = whiteNoise 'c' AR+ in pan2 (steam time n1 n2 + whistle time n3) loc 1++main :: IO ()+main = audition (out 0 train)
@@ -1,25 +0,0 @@-train (th.list at gmail.com)--> import Sound.SC3.Monadic--> main =-> let { time = 24-> ; steam n1 n2 = let { piston = lfSaw AR (xLine AR 1 7 time DoNothing) 0-> ; air = lpf (n1 * piston + n2 * piston) 5000 -> ; e = envGen AR 1 1 0 1 DoNothing (envSine time 9) }-> in bpf air 600 (1 + e)-> ; whistle n3 = let { f = [800, 600, 1200, 990]-> ; s = klankSpec f [1, 1, 1, 1] [1, 1, 1, 1]-> ; t = [0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0]-> ; l = [2, 0, 0.2, 0, 0.2, 0, 0.8, 0, 4, 0, 3]-> ; d = env t l (repeat EnvLin) 0 0-> ; e = envGen AR 1 1 0 (time/10) DoNothing d }-> in klank (n3 * 0.004) 1 0 1 s * e-> ; loc = let e = env [-0.8, 0.8] [time + 2] [EnvSin, EnvSin] 0 0-> in envGen AR 1 1 0 1 RemoveSynth e }-> in do { n1 <- whiteNoise AR-> ; n2 <- pinkNoise AR-> ; n3 <- whiteNoise AR-> ; audition (out 0 (pan2 (steam n1 n2 + whistle n3) loc 1)) }--http://www.create.ucsb.edu/pipermail/sc-users/2007-August/035957.html
@@ -0,0 +1,27 @@+-- tremulate (jmcc)++import Sound.SC3.Monadic+import Sound.SC3.Lang.Control.OverlapTexture++tremulate :: UId m => m UGen+tremulate = do+ f <- rand 500 900+ let o = fSinOsc AR (f * mce [1,1.2,1.5,1.8]) 0+ r <- rand 30 90+ n <- clone 4 (lfNoise2 KR r)+ let a = max 0 (n * 0.1)+ l <- clone 4 (rand (-1) 1)+ return (mix (pan2 o l a))++tremulate_pp :: UGen -> UGen+tremulate_pp i = combN i 0.1 0.1 1++main :: IO ()+main = do+ t <- tremulate+ xfadeTextureU_pp (2,0.5,maxBound) t 2 tremulate_pp++{-+audition . out 0 =<< tremulate+Sound.SC3.UGen.Dot.draw =<< tremulate+-}
@@ -0,0 +1,24 @@+-- tremulate (jmcc)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.OverlapTexture++tremulate :: UGen+tremulate =+ let f = rand 'a' 500 900+ o = fSinOsc AR (f * mce [1,1.2,1.5,1.8]) 0+ r = uprotect 'a' (rand 'a' 30 90)+ a = max 0 (uclone 'a' 4 (lfNoise2 'a' KR r) * 0.1)+ l = udup 4 (rand 'a' (-1) 1)+ in mix (pan2 o l a)++tremulate_pp :: UGen -> UGen+tremulate_pp i = combN i 0.1 0.1 1++main :: IO ()+main = xfadeTextureU_pp (2,0.5,maxBound) tremulate 2 tremulate_pp++{-+audition (out 0 tremulate)+Sound.SC3.UGen.Dot.draw tremulate+-}
@@ -0,0 +1,7 @@+play({CombN.ar(XFadeTexture.ar({+f = 500 + 400.rand;+r = 30 + 60.rand;+o = FSinOsc.ar(f*[1.0,1.2,1.5,1.8]);+a = max(0,LFNoise2.kr([r,r,r,r],0.1));+l = [1.0.rand2,1.0.rand2,1.0.rand2,1.0.rand2];+Mix.ar(Pan2.ar(o*a,l))},2,0.5,2),0.1,0.1,1)})
@@ -1,27 +0,0 @@-trkl (rd)--> import Sound.SC3.Monadic--> main =-> let trkl d ul fu dy la fy =-> let { tf = xLine kr 1 ul d RemoveSynth-> ; st = impulse ar (tf * 8) 0-> ; t = impulse ar tf 0 }-> in do { r0 <- rand (-1) 1-> ; r1 <- rand (-1) 1-> ; r2 <- tRand 0.05 1.0 t-> ; r3 <- tExpRand 0.0 0.25 st -> ; fh <- tRand 1.75 2.25 t -> ; let { a = dbAmp (line kr 12 la d RemoveSynth)-> ; f = xLine kr fu 900 d RemoveSynth-> ; p = line kr r0 r1 d RemoveSynth-> ; o1 = mix (ringz (decay2 t 0.01 dy) (mce2 f (f * fh)) fy)-> ; o2 = mix (saw ar (mce2 f (f * fh))) }-> in return (pan2 (o1 + o2 * decay2 t 0.1 r2 * r3) p a) }-> in do { d <- rand 0.5 16-> ; ul <- rand 16 64-> ; fu <- rand 1200 9000-> ; dy <- rand 0.005 0.175-> ; la <- rand (-60) (-25)-> ; fy <- rand 0.015 0.125-> ; audition . (out 0) =<< trkl d ul fu dy la fy }
@@ -0,0 +1,52 @@+-- trmlo (rd)++import Sound.SC3 {- hsc3 -}+import Sound.SC3.UGen.Unsafe {- hsc3-unsafe -}+import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}++trmlo :: UGen+trmlo =+ let mWrp i l r = linLin i (-1) 1 (midiCPS l) (midiCPS r)+ mWrp1 i m = mWrp i m (m + 1)+ mWrpN i m n = mWrp i m (m + n)+ o1 = let f = 5+ d = 3+ s = envSine d 0.1+ e = envGen KR 1 1 0 1 DoNothing s+ n = 65+ m = sinOsc KR f 0+ in pan2 (sinOsc AR (mWrp1 m n) 0) m e+ o2 = let f = iRand 5 9+ d = iRand 5 9+ s = envSine d (rand 0.1 0.2)+ e = envGen KR 1 1 0 1 DoNothing s+ n = iRand 69 72+ m = sinOsc KR f 0+ in pan2 (sinOsc AR (mWrp1 m n) 0) m e+ o3 = let f = iRand 5 9+ d = iRand 9 12+ s = envSine d (rand 0.1 0.2)+ e = envGen KR 1 1 0 1 DoNothing s+ n = iRand 69 72+ m = sinOsc KR f 0+ l = line KR 0 (iRand 1 5) d DoNothing+ in pan2 (blip AR (mWrp1 m (n + l)) (linLin m (-1) 1 1 2)) m e+ o4 = let f = iRand 5 18+ d = iRand 12 15+ s = envSine d (rand 0.1 0.2)+ e = envGen KR 1 5e-2 0 1 DoNothing s+ n = iRand 69 72+ m = sinOsc KR f 0+ l = line KR 0 (iRand 1 5) d RemoveSynth+ fr = mWrpN m (n + l) (iRand 1 5)+ in pan2 (blip AR fr (linLin m (-1) 1 1 (iRand 2 24))) m e+ in o1 + o2 + o3 + o4++main :: IO ()+main = do+ let s = synthdef "trmlo" (out 0 trmlo)+ audition (s,pbind [("dur",pxrand 'a' [0.25,0.5,1,2,4] inf)])++{-+audition (out 0 trmlo)+-}
@@ -3,7 +3,7 @@ This simple graph tests the topological sort of the unit generator graph, it ought only to use a minimal number of interconnect buffers. -The below 369 node graph works with 'scsynth -u 57110 -w 2'. +The below 369 node graph works with 'scsynth -u 57110 -w 2'. (Note that graphs loaded from disk during startup will grow the number of interconnect buffers, so to test this we must delete all graphs that@@ -11,11 +11,12 @@ > import Sound.SC3 +> main :: IO () > main = > let { n = 122 > ; c = envCoord [(0,0), (0.15, 1), (6, 0)] 1 1 EnvLin-> ; e = envGen kr 1 1 0 1 RemoveSynth c-> ; f o = sinOsc ar (440 + constant o) 0 * 0.001+> ; e = envGen KR 1 1 0 1 RemoveSynth c+> ; f o = sinOsc AR (440 + constant o) 0 * 0.001 > ; s = mixFill n f } > in audition (out 0 (s * e))
@@ -0,0 +1,22 @@+-- uplink (jmcc)++import Sound.SC3.ID+import Sound.SC3.Lang.Control.OverlapTexture++randz :: ID a => a -> UGen -> UGen+randz e = rand e 0++uplink :: UGen+uplink =+ let r = randz+ p0 = lfPulse KR (r 'α' 20) 0 (r 'α' 1)+ p1 = lfPulse KR (r 'β' 4) 0 (r 'β' 1) * r 'β' 8000 + r 'β' 2000+ f = mix (uclone 'γ' 2 (p0 * p1))+ in pan2 (lfPulse AR f 0 0.5 * 0.04) (rand 'δ' (-0.8) 0.8) 1++main :: IO ()+main = overlapTextureU (4,1,5,maxBound) uplink++{-+Sound.SC3.UGen.Dot.draw uplink+-}
@@ -0,0 +1,76 @@+-- vla-adttn-sharc (rd)++import Data.List+import Sound.Analysis.SHARC+import Sound.OpenSoundControl+import Sound.SC3.ID+import Sound.SC3.Lang.Pattern.ID++type R = Double+type R3 = (R,R,R)++spectra :: [Instrument] -> String -> Int -> [R3]+spectra sh nm j =+ let Just i = find ((== nm) . instrument_id) sh+ in note_spectra (note_normalise (notes i !! j))++vla :: FilePath -> IO [R3]+vla fn = do+ Right sh <- read_sharc fn+ return (spectra sh "viola_vibrato" 0)++unp :: R3 -> [R]+unp (_,i,j) = [i,j]++vla_prep :: [R3] -> [R]+vla_prep = concatMap unp++-- fr = freq,dt = detune+vla_partial :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen+vla_partial fr rise fall dt n =+ let m = n * 2+ ampl = bufRdN 1 KR 0 m NoLoop+ ph = bufRdN 1 KR 0 (m + 1) NoLoop+ o = let dt' = lfNoise1 'a' KR 1 * dt + 1.0+ in fSinOsc AR (fr * (n + 1) * dt') ph+ e = linen (impulse KR 0 0)+ (rise * rand 'a' 0.75 1.25)+ ampl+ (fall * rand 'b' 0.75 1.25)+ DoNothing+ in o * e++vla_plyr :: UGen -> UGen+vla_plyr n =+ let a = control KR "ampl" 0.1+ f = control KR "freq" 129.897+ rs = control KR "rise" 0.1+ fa = control KR "fall" 0.5+ l = control KR "loc" 0.0+ dt = control KR "dt" 0.001+ s = sum (map (vla_partial f rs fa dt) [0 .. n - 1])+ e = detectSilence s 0.001 0.2 RemoveSynth+ in mrg2 (pan2 s l a) e++plyr36 :: Synthdef+plyr36 = synthdef "plyr36" (out 0 (vla_plyr 36))++pattern :: [(String,P Double)]+pattern =+ [("loc",pwhite 'a' (-1) 1 inf)+ ,("ampl",pwhite 'b' 0.05 0.1 inf)+ ,("degree",prand 'c' [0,1,2,3,4,5,6,7,8] inf)+ ,("octave",prand 'd' [2,3] inf)+ ,("dt",pwhite 'e' 0.001 0.005 inf)+ ,("rise",pwhite 'f' 1 2 inf)+ ,("fall",pwhite 'g' 4 7 inf)+ ,("dur",prand 'h' [3,5] inf)]++act :: Transport t => FilePath -> t -> IO ()+act fn fd = do+ v <- vla fn+ _ <- async fd (b_alloc_setn1 0 0 (vla_prep v))+ play fd (plyr36,pbind pattern)++main :: IO ()+main = withSC3 (act "/home/rohan/data/sharc/sharc.xml")
@@ -0,0 +1,146 @@+-- vla-adttn (rd)++--import Sound.Analysis.SHARC+import Sound.OpenSoundControl+import Sound.SC3.ID+import Sound.SC3.Lang.Pattern.ID++type R = Double+type R2 = (R,R)++vla :: [R2]+vla =+ [(-49.43290,1.99165)+ ,(0.00000,1.09187)+ ,(-2.53835,-2.73340)+ ,(-8.55317,0.73919)+ ,(-7.58952,-0.75267)+ ,(-8.48353,1.70372)+ ,(-13.92700,1.64759)+ ,(-39.93130,-2.25142)+ ,(-19.87800,-3.12024)+ ,(-34.19660,-1.58899)+ ,(-18.82040,-1.39847)+ ,(-21.22520,2.04672)+ ,(-21.33070,-0.14754)+ ,(-31.08620,2.05345)+ ,(-42.51880,-0.55890)+ ,(-41.19730,0.23896)+ ,(-46.80570,1.71249)+ ,(-47.17510,2.37942)+ ,(-37.97520,-0.83005)+ ,(-38.32750,-2.49358)+ ,(-44.79280,-1.16301)+ ,(-49.11850,1.33082)+ ,(-45.26480,-0.45146)+ ,(-46.27050,-0.15578)+ ,(-63.14360,-3.13979)+ ,(-44.27590,-2.59826)+ ,(-40.19680,-2.16540)+ ,(-56.83330,0.48774)+ ,(-56.62160,-0.84155)+ ,(-55.76370,1.59076)+ ,(-59.36050,-0.99090)+ ,(-55.42520,-0.58264)+ ,(-64.99020,0.00110)+ ,(-63.45910,1.55117)+ ,(-64.77610,2.68228)+ ,(-68.27080,-1.82120)+ ,(-71.90240,1.80545)+ ,(-79.13910,2.99369)+ ,(-64.94640,-3.12388)+ ,(-59.41810,1.84679)+ ,(-86.33570,1.81713)+ ,(-88.53500,1.01834)+ ,(-64.17470,-1.52081)+ ,(-61.24430,1.45757)+ ,(-69.88980,-0.47708)+ ,(-65.39420,0.82882)+ ,(-73.84740,0.41623)+ ,(-72.26330,0.31856)+ ,(-73.88560,2.64035)+ ,(-70.86610,-0.43802)+ ,(-67.86130,-0.43389)+ ,(-80.76020,-2.50016)+ ,(-66.44520,2.26219)+ ,(-83.49810,2.57825)+ ,(-66.01220,-2.08254)+ ,(-65.30220,-2.83644)+ ,(-74.05780,0.21665)+ ,(-72.69060,-2.78729)+ ,(-75.49700,2.96210)+ ,(-69.45200,0.72293)+ ,(-75.36160,0.14687)+ ,(-70.21110,1.42155)+ ,(-79.34420,0.76044)+ ,(-81.56200,2.16997)+ ,(-84.20670,3.11095)+ ,(-74.40450,-2.98094)+ ,(-76.67820,1.96564)+ ,(-79.95980,2.68183)+ ,(-77.31420,-1.92260)+ ,(-74.60450,-1.89189)+ ,(-67.98670,1.99457)+ ,(-80.17960,-1.95013)+ ,(-79.44400,-2.70955)+ ,(-81.89010,3.12971)+ ,(-80.18220,1.76888)+ ,(-82.94420,2.77531)]++p_prep :: R2 -> R2+p_prep (a,p) = (dbAmp a,p)++unp :: R2 -> [R]+unp (i,j) = [i,j]++vla_prep :: [R]+vla_prep = concatMap (unp . p_prep) vla++-- fr = freq,dt = detune+vla_partial :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen+vla_partial fr rise fall dt n =+ let m = n * 2+ ampl = bufRdN 1 KR 0 m NoLoop+ ph = bufRdN 1 KR 0 (m + 1) NoLoop+ o = let dt' = lfNoise1 'a' KR 1 * dt + 1.0+ in fSinOsc AR (fr * (n + 1) * dt') ph+ e = linen (impulse KR 0 0)+ (rise * rand 'a' 0.75 1.25)+ ampl+ (fall * rand 'b' 0.75 1.25)+ DoNothing+ in o * e++vla_plyr :: UGen -> UGen+vla_plyr n =+ let a = control KR "ampl" 0.1+ f = control KR "freq" 129.897+ rs = control KR "rise" 0.1+ fa = control KR "fall" 0.5+ l = control KR "loc" 0.0+ dt = control KR "dt" 0.001+ s = sum (map (vla_partial f rs fa dt) [0 .. n - 1])+ e = detectSilence s 0.001 0.2 RemoveSynth+ in mrg2 (pan2 s l a) e++plyr36 :: Synthdef+plyr36 = synthdef "plyr36" (out 0 (vla_plyr 36))++pattern :: [(String,P Double)]+pattern =+ [("loc",pwhite 'a' (-1) 1 inf)+ ,("ampl",pwhite 'b' 0.05 0.1 inf)+ ,("degree",prand 'c' [0,1,2,3,4,5,6,7,8] inf)+ ,("octave",prand 'd' [2,3] inf)+ ,("dt",pwhite 'e' 0.001 0.005 inf)+ ,("rise",pwhite 'f' 1 2 inf)+ ,("fall",pwhite 'g' 4 7 inf)+ ,("dur",5)]++act :: Transport t => t -> IO ()+act fd = do+ _ <- async fd (b_alloc_setn1 0 0 vla_prep)+ play fd (plyr36,pbind pattern)++main :: IO ()+main = withSC3 act
@@ -1,133 +0,0 @@-vlc-distrtn (rd)-caution - audio feedback graph--> import Sound.OpenSoundControl-> import Sound.SC3.Monadic-> import System.Random--> main =-> let { rrand l r = getStdRandom (randomR (l, r))-> ; choose l = return . (l !!) =<< rrand 0 (length l - 1)-> ; prep (ampl, phase) = [dbAmp ampl, phase]-> ; vlc = [ (0.00000, 1.85550)-> , (-9.92383, -0.65147)-> , (-8.74205, -0.74728)-> , (-3.70464, -1.39796)-> , (-9.43435, -1.14812)-> , (-25.84790, -1.03375)-> , (-16.99500, -2.41724)-> , (-29.17040, 2.67419)-> , (-26.82750, -1.61810)-> , (-18.59870, 1.34568)-> , (-19.72160, -2.85972)-> , (-29.43650, 0.54603)-> , (-23.63120, -1.47813)-> , (-28.20100, -1.98501)-> , (-41.20700, -1.11808)-> , (-33.14310, -2.19369)-> , (-31.54010, 1.43134)-> , (-47.62740, 1.28571)-> , (-28.79740, -1.03754)-> , (-34.97950, 0.37740)-> , (-39.05770, -0.57557)-> , (-38.84060, 2.34836)-> , (-40.18090, -0.96978)-> , (-47.32150, 2.14768)-> , (-45.49290, 2.52100)-> , (-40.57100, -1.39905)-> , (-47.19530, -2.23994)-> , (-50.80920, 2.97853)-> , (-48.13640, 0.46815)-> , (-58.56890, -1.01821)-> , (-57.81200, -3.08971)-> , (-47.96870, -0.48657)-> , (-43.96100, -0.10311)-> , (-50.49810, -2.80977)-> , (-50.61640, -0.17212)-> , (-60.64640, -1.02433)-> , (-58.03410, 1.06921)-> , (-55.46390, -2.04501)-> , (-54.31000, -1.53512)-> , (-52.78670, -1.49875)-> , (-57.99380, 0.17697)-> , (-56.76990, 2.28241)-> , (-54.17450, -1.85553)-> , (-62.58220, -2.40971)-> , (-59.86460, 1.04782)-> , (-61.58570, 1.56183)-> , (-52.62080, 1.68360)-> , (-49.82940, -1.11019)-> , (-56.18160, -0.78538)-> , (-57.73320, -2.23918)-> , (-49.87560, 3.09604)-> , (-51.00100, -0.53762)-> , (-59.71530, 0.99017)-> , (-65.73280, 2.43855)-> , (-73.01270, -0.90664)-> , (-61.81450, -0.53346)-> , (-65.58980, 1.51174)-> , (-75.94320, -3.06072)-> , (-65.22210, -1.49937)-> , (-70.79970, -2.96199)-> , (-64.72450, 1.78172)-> , (-73.24130, 0.26939)-> , (-66.17110, -0.23305)-> , (-61.32910, -3.12592)-> , (-66.98180, 0.64700)-> , (-65.23060, -2.94395)-> , (-70.13430, 1.29805)-> , (-68.43470, -1.35906)-> , (-71.33000, -2.71582)-> , (-86.90080, 2.11646)-> , (-74.97450, 2.76118)-> , (-68.02520, 0.94979)-> , (-67.32960, 3.05994)-> , (-67.32140, -2.79905)-> , (-68.22010, -2.33831) ]-> ; partial b i freq detune fall n =-> do { n0 <- lfNoise1 kr 1-> ; n1 <- rand 0.75 1.25-> ; let { m = n * 2-> ; ampl = bufRdN 1 kr b m NoLoop-> ; f = freq * (n + 1) * (n0 * detune + 1) }-> in return (ringz i f (fall * n1) * ampl) }-> ; plyr n =-> let { ctl j k = control kr j k-> ; buf = ctl "buf" 0-> ; iamp = ctl "iamp" 0.1-> ; ampl = ctl "ampl" 0.1-> ; freq = ctl "freq" 129.897-> ; fall = ctl "fall" 0.5-> ; loc = ctl "loc" 0.0-> ; detune = ctl "detune" 0.001-> ; i = soundIn 0 * iamp }-> in do { s <- mapM (partial buf i freq detune fall) [0 .. n-1]-> ; return (out 0 (clip2 (pan2 (sum s) loc ampl) 0.1)) }-> ; degree_to_key degree scale steps =-> let scale_n = length scale-> in (steps * (degree `div` scale_n)) + (scale !! (degree `mod` scale_n))-> ; getCps b =-> do { b_ <- choose b-> ; d <- choose [0 .. 8]-> ; let k = degree_to_key d [0, 2, 3, 5, 7, 8, 10] 12-> in return (midiCPS (b_ + realToFrac k)) }-> ; pattern fd =-> do { f <- getCps [24, 36, 48, 55, 60]-> ; ia <- rrand 0.05 0.75-> ; l <- rrand (-1) 1-> ; a <- rrand 0.05 0.1-> ; d <- rrand 0.001 0.005-> ; fl <- rrand 1 7-> ; send fd (n_set 1002 [("freq", f)-> ,("iamp", ia)-> ,("buf", 0)-> ,("loc", l)-> ,("ampl", a)-> ,("detune", d)-> ,("fall", fl)])-> ; pauseThread =<< choose [0.25, 0.5, 0.75, 1.5] } }-> in withSC3 (\fd -> do { async fd (b_alloc 0 (length vlc * 2) 1)-> ; send fd (b_setn1 0 0 (concatMap prep vlc))-> ; async fd . d_recv . synthdef "plyr48" =<< plyr 48-> ; send fd (s_new "plyr48" 1002 AddToTail 1 [])-> ; sequence (replicate 32 (pattern fd)) })
@@ -0,0 +1,38 @@+-- voscil (rd)++import Sound.OpenSoundControl {- hosc -}+import Sound.SC3 {- hsc3 -}+import Sound.SC3.UGen.Unsafe {- hsc3-unsafe -}+import System.Random {- random -}++voscil :: Real a => a -> UGen+voscil b =+ let lfn = lfNoise0 KR+ hb = (constant b - 1) / 2+ rt = 6+ f = 600+ v = vOsc AR (lfn rt * hb + hb) (f * 2) 0+ o = let bf = lfn rt * 40 + 600+ nh = lfn rt * 16 + 24+ in blip AR bf nh * (lfn rt * 0.1 + 0.1)+ p = pan2 (v + o) (lfn rt) (lfn rt * 0.5 + 0.5)+ w = vOsc AR (lfSaw KR (1 / rt) 0 * hb + hb) f 0+ q = pan2 w (lfn rt) (lfn rt * 0.5 + 0.5)+ in p + q++run :: Transport t => t -> IO ()+run fd = do+ let rrand l r = getStdRandom (randomR (l,r))+ bn = 8192 * 4+ b = 32+ r_set i =+ do m <- rrand 2 512+ j <- sequence (replicate m (rrand 0 bn))+ k <- sequence (replicate m (rrand (-1) 1))+ _ <- async fd (b_alloc i bn 1)+ send fd (b_set i (zip j k))+ mapM_ r_set [0 .. (b - 1)]+ play fd (out 0 (voscil b))++main :: IO ()+main = withSC3 run
@@ -1,6 +1,5 @@ {- A simple waveset synthesiser (rd) -} -import Control.Monad import qualified Data.Array as A {- array -} import Data.List import qualified Sound.File.NeXT as F {- hsc3-sf -}@@ -18,22 +17,22 @@ -- | Add t to timestamp. offset :: Double -> OSC -> OSC offset t (Bundle (UTCr t0) m) = Bundle (UTCr (t + t0)) m-offset _ _ = undefined+offset _ _ = error "offset:non-bundle" -- | Play non-empty set of osc bundles. play_set :: Transport t => t -> [OSC] -> IO ()-play_set _ [] = undefined+play_set _ [] = error "play_set:empty" play_set fd (x:xs) = do let (Bundle (UTCr t) _) = x pauseThreadUntil (t - latency)- mapM_ (\e -> send fd e) (x:xs)+ mapM_ (send fd) (x:xs) -- | Play grouped score. play_sets :: Transport t => t -> [[OSC]] -> IO () play_sets _ [] = return () play_sets fd s = do t <- utcr- mapM_ (play_set fd) (map (\g -> map (offset t) g) s)+ mapM_ (play_set fd . map (offset t)) s -- | Split l into chunks of at most n elements. form_sets :: Int -> [a] -> [[a]]@@ -127,8 +126,9 @@ -- analysis, generate & play scores. run_waveset :: Transport t => t -> String -> IO () run_waveset fd fn = do- async fd (d_recv (synthdef "waveset" waveset))- async fd (b_allocRead 10 fn 0 0)+ _ <- async fd (d_recv (synthdef "waveset" waveset))+ _ <-+ async fd (b_allocRead 10 fn 0 0) (hdr, cs) <- F.read fn let nc = F.channelCount hdr nf = F.frameCount hdr@@ -147,9 +147,9 @@ main = do a <- getArgs case a of- [fn] -> withSC3 (\fd -> run_waveset fd fn)+ [fn] -> withSC3 (`run_waveset` fn) _ -> error "audio file?" {---withSC3 (\fd -> run_waveset fd "/home/rohan/audio/text.snd")+withSC3 (\fd -> run_waveset fd "/home/rohan/data/audio/pf-c5.snd") --}
@@ -0,0 +1,24 @@+-- what was i thinking? (jmcc)++import Sound.SC3.Monadic++what_was_i_thinking :: UId m => m UGen+what_was_i_thinking = do+ n0 <- lfNoise1 KR 0.2+ n1 <- lfNoise1 KR 0.157+ let p = pulse AR f (n1 * 0.4 + 0.5) * 0.04+ i = lfPulse AR 0.1 0 0.05 * impulse AR 8 0 * 500+ d = decay i 2+ f = max (sinOsc KR 4 0 + 80) d+ z = rlpf p (n0 * 2000 + 2400) 0.2+ c x = do r <- rand 0 0.3+ n <- lfNoise1 KR r+ return (combL x 0.06 (n * 0.025 + 0.035) 1)+ y = z * 0.6+ z0 <- clone 2 (c y)+ z1 <- clone 2 (c y)+ return (z + mce [mix z0,mix z1])++main :: IO ()+main = audition . out 0 =<< what_was_i_thinking+
@@ -1,34 +0,0 @@-what was i thinking? (jmcc)--> import Sound.SC3.Monadic--> main =-> do { n0 <- lfNoise1 kr 0.2-> ; n1 <- lfNoise1 kr 0.157-> ; let { p = pulse ar f (n1 * 0.4 + 0.5) * 0.04-> ; i = lfPulse ar 0.1 0 0.05 * impulse ar 8 0 * 500-> ; d = decay i 2-> ; f = max (sinOsc kr 4 0 + 80) d-> ; z = rlpf p (n0 * 2000 + 2400) 0.2-> ; c x = do { r <- rand 0 0.3-> ; n <- lfNoise1 kr r-> ; return (combL x 0.06 (n * 0.025 + 0.035) 1) }-> ; y = z * 0.6 }-> in do { z0 <- clone 2 (c y)-> ; z1 <- clone 2 (c y)-> ; audition (out 0 (z + mce [mix z0, mix z1])) } }--{ var n0 = LFNoise1.kr(0.2, 2000, 2400)-; var n1 = LFNoise1.kr(0.157, 0.4, 0.5)-; var i = LFPulse.ar(0.1, 0, 0.05) * Impulse.ar(8, 0) * 500-; var d = Decay.ar(i, 2)-; var f = max(SinOsc.kr(4, 0) + 80, d)-; var p = Pulse.ar(f, n1) * 0.04-; var z = RLPF.ar(p, n0, 0.2)-; var c = { arg i- ; var r = Rand.new(0, 0.3)- ; var n = LFNoise1.kr(r, 0.025, 0.035)- ; CombL.ar(i, 0.06, n, 1) }-; var y = z * 0.6-; Out.ar(0, z + [ c.value(y) + c.value(y)- , c.value(y) + c.value(y) ]) }.play
@@ -0,0 +1,14 @@+{var n0 = LFNoise1.kr(0.2,2000,2400)+;var n1 = LFNoise1.kr(0.157,0.4,0.5)+;var i = LFPulse.ar(0.1,0,0.05) * Impulse.ar(8,0) * 500+;var d = Decay.ar(i,2)+;var f = max(SinOsc.kr(4,0) + 80,d)+;var p = Pulse.ar(f,n1) * 0.04+;var z = RLPF.ar(p,n0,0.2)+;var c = {arg i+ ;var r = Rand.new(0,0.3)+ ;var n = LFNoise1.kr(r,0.025,0.035)+ ;CombL.ar(i,0.06,n,1)}+;var y = z * 0.6+;Out.ar(0,z + [c.value(y) + c.value(y)+ ,c.value(y) + c.value(y)])}.play
@@ -0,0 +1,21 @@+-- why supercollider (jmcc)++import Sound.SC3.ID++why_supercollider :: UGen+why_supercollider =+ let r = resonz (dust 'a' AR 0.2 * 50) (rand 'a' 200 3200) 0.003+ s = mix (uclone 'a' 10 r)+ z = delayN s 0.048 0.048+ c = combL z 0.1 (lfNoise1 'a' KR (rand 'a' 0 0.1) * 0.04 + 0.05) 15+ y = mix (uclone 'a' 7 c)+ f i = allpassN i 0.050 (udup 2 (rand 'a' 0 0.05)) 1+ x = useq 'a' 4 f y+ in out 0 (s + 0.2 * x)++main :: IO ()+main = audition why_supercollider++{-+Sound.SC3.UGen.Dot.draw why_supercollider+-}
@@ -0,0 +1,8 @@+{var r = {Resonz.ar(Dust.ar(0.2,50),200 + 3000.0.rand,0.003)}+;var s = Mix.ar(Array.fill(10,r))+;var z = DelayN.ar(s,0.048)+;var c = {CombL.ar(z,0.1,LFNoise1.kr(0.1.rand,0.04,0.05),15)}+;var y = Mix.ar(Array.fill(7,c))+;4.do({x = AllpassN.ar(y,0.050,[0.050.rand,0.050.rand],1)})+;s+(0.2*x)}.play+
@@ -0,0 +1,26 @@+-- wial (rd)++import Sound.SC3.Monadic++wial :: (Functor m,UId m) => m UGen+wial = do+ let pls c d f = do let t = pulseDivider c d 0+ e = decay2 t 0.05 0.75+ o = sinOsc AR (toggleFF t * f + f * 2) 0+ n0 <- tIRand 0 1 t+ return (o * e * n0 * 0.5)+ smpl f = [(4,6,f,0.75)+ ,(2,6,f * 2,0.75)+ ,(1,2,f * 16,0.025)+ ,(1,5,f * 64,0.005)+ ,(1,4,f * 128,0.035)+ ,(1,3,f * 256,0.15)+ ,(2,3,f * 512,0.35)]+ plss c (d0,d1,f,a) = fmap (* a) (pls c (mce2 d0 d1) f)+ clk = impulse AR 16 0+ n0 <- dust KR 2+ f <- tWChoose n0 (mce2 (20 * 0.66) 20) (mce2 0.25 0.75) 0+ return.sum =<< mapM (plss clk) (smpl f)++main :: IO ()+main = audition . out 0 =<< wial
@@ -1,22 +0,0 @@-wial (rd)--> import Sound.SC3.Monadic--> main =-> let { pls c d f = let { t = pulseDivider c d 0-> ; e = decay2 t 0.05 0.75-> ; o = sinOsc ar (toggleFF t * f + f * 2) 0 }-> in do { n0 <- tiRand 0 1 t-> ; return (o * e * n0 * 0.5) }-> ; smpl f = [ (4, 6, f , 0.75)-> , (2, 6, f * 2, 0.75)-> , (1, 2, f * 16, 0.025)-> , (1, 5, f * 64, 0.005)-> , (1, 4, f * 128, 0.035)-> , (1, 3, f * 256, 0.15)-> , (2, 3, f * 512, 0.35) ]-> ; plss c (d0, d1, f, a) = fmap (* a) (pls c (mce2 d0 d1) f)-> ; clk = impulse ar 16 0 }-> in do { n0 <- dust kr 2-> ; f <- twChoose n0 (mce2 (20 * 0.66) 20) (mce2 0.25 0.75) 0-> ; audition . out 0 . sum =<< mapM (plss clk) (smpl f) }
@@ -0,0 +1,26 @@+-- wind metals (jmcc)++import Sound.SC3.Lang.Control.OverlapTexture+import Sound.SC3.Monadic++wind_metals :: UId m => m UGen+wind_metals = do+ let n = 6+ base <- expRand 60 4000+ rng <- rand 500 8000+ n0 <- clone 2 (brownNoise AR)+ r0 <- expRand 0.125 0.5+ n1 <- lfNoise1 KR r0+ f <- sequence (replicate n (rand base (base + rng)))+ dt <- sequence (replicate n (rand 0.1 2))+ let exc = n0 * 0.007 * max 0 (n1 * 0.75 + 0.25)+ k = klankSpec f (replicate n 1) dt+ s = klank exc 1 0 1 k+ return (softClip (s * 0.1))++main :: IO ()+main = overlapTextureU (2,5,12,maxBound) =<< wind_metals++{-+audition . out 0 =<< wind_metals+-}
@@ -1,29 +0,0 @@-wind metals (jmcc)--> import Sound.SC3.Monadic--> main =-> let n = 6-> in do { base <- expRand 60 4000-> ; range <- rand 500 8000-> ; n0 <- clone 2 (brownNoise ar)-> ; r0 <- expRand 0.125 0.5-> ; n1 <- lfNoise1 kr r0-> ; f <- sequence (replicate n (rand base (base + range)))-> ; dt <- sequence (replicate n (rand 0.1 2))-> ; let { exc = n0 * 0.007 * max 0 (n1 * 0.75 + 0.25)-> ; k = klankSpec f (replicate n 1) dt-> ; s = klank exc 1 0 1 k }-> in audition (out 0 (softClip (s * 0.1))) }--{ var n = 6-; var base = ExpRand.new(60, 4000)-; var range = Rand.new(500.0, 8000.0)-; var n0 = BrownNoise.ar([0.007, 0.007])-; var r0 = ExpRand.new(0.125, 0.5)-; var n1 = LFNoise1.kr(r0, 0.75, 0.25)-; var exc = n0 * max(0, n1)-; var f = Array.fill(n, { Rand.new(0, range) + base })-; var dt = Array.fill(n, { Rand.new(0.1, 2.0) })-; var s = Klank.ar(`[f, nil, dt], exc)-; Out.ar(0, (s * 0.1).softclip) }.play
@@ -0,0 +1,11 @@+{var n = 6+;var base = ExpRand.new(60,4000)+;var rng = Rand.new(500.0,8000.0)+;var n0 = BrownNoise.ar([0.007,0.007])+;var r0 = ExpRand.new(0.125,0.5)+;var n1 = LFNoise1.kr(r0,0.75,0.25)+;var exc = n0 * max(0,n1)+;var f = Array.fill(n,{Rand.new(0,rng) + base})+;var dt = Array.fill(n,{Rand.new(0.1,2.0)})+;var s = Klank.ar(`[f,nil,dt],exc)+;Out.ar(0,(s * 0.1).softclip)}.play
@@ -0,0 +1,16 @@+-- xy-interference-m (rd)++import Sound.SC3.Monadic++xy_interference :: UId m => m UGen+xy_interference = do+ let x = mouseX' KR 20 22000 Linear (mce2 0.005 0.025)+ y = mouseY' KR 20 22000 Linear (mce2 0.005 0.075)+ nd = do n <- lfNoise0 KR (mce2 5 9)+ let a = sinOsc AR (x + n) 0+ b = sinOsc AR y 0+ return (a * b)+ return.sum =<< sequence (replicate 3 nd)++main :: IO ()+main = audition . out 0 =<< xy_interference
@@ -1,20 +0,0 @@-xy-interference-m (rd)--> import Sound.SC3.Monadic--> main =-> let { x = mouseX KR 20 22000 Linear (mce2 0.005 0.025)-> ; y = mouseY KR 20 22000 Linear (mce2 0.005 0.075)-> ; nd = do { n <- lfNoise0 KR (mce2 5 9)-> ; let { a = sinOsc AR (x + n) 0-> ; b = sinOsc AR y 0 }-> in return (a * b) } }-> in audition . (out 0) . sum =<< sequence (replicate 3 nd)--{ var x = MouseX.kr(20, 22000, 'linear', [0.005, 0.025])-; var y = MouseY.kr(20, 22000, 'linear', [0.005, 0.075])-; var nd = { var n = LFNoise0.kr([5, 9])- ; var a = SinOsc.ar(x + n, 0)- ; var b = SinOsc.ar(y, 0)- ; a * b }-; Out.ar(0, Mix.fill(3, nd)) }.play
@@ -0,0 +1,16 @@+-- xy-interference (rd)++import Sound.SC3.ID++xy_interference :: UGen+xy_interference =+ let x = mouseX' KR 20 22000 Linear (mce2 0.005 0.025)+ y = mouseY' KR 20 22000 Linear (mce2 0.005 0.075)+ nd = let n = lfNoise0 'a' KR (mce2 5 9)+ a = sinOsc AR (x + n) 0+ b = sinOsc AR y 0+ in a * b+ in mix (uclone 'a' 3 nd)++main :: IO ()+main = audition (out 0 xy_interference)
@@ -1,20 +0,0 @@-xy-interference (rd)--> import Sound.SC3.ID--> main =-> let { x = mouseX KR 20 22000 Linear (mce2 0.005 0.025)-> ; y = mouseY KR 20 22000 Linear (mce2 0.005 0.075)-> ; nd k = let { n = lfNoise0 k KR (mce2 5 9)-> ; a = sinOsc AR (x + n) 0-> ; b = sinOsc AR y 0 }-> in a * b }-> in audition (out 0 (sum (map nd ['α'..'γ'])))--{ var x = MouseX.kr(20, 22000, 'linear', [0.005, 0.025])-; var y = MouseY.kr(20, 22000, 'linear', [0.005, 0.075])-; var nd = { var n = LFNoise0.kr([5, 9])- ; var a = SinOsc.ar(x + n, 0)- ; var b = SinOsc.ar(y, 0)- ; a * b }-; Out.ar(0, Mix.fill(3, nd)) }.play
@@ -0,0 +1,7 @@+{var x = MouseX.kr(20,22000,'linear',[0.005,0.025])+;var y = MouseY.kr(20,22000,'linear',[0.005,0.075])+;var nd = {var n = LFNoise0.kr([5,9])+ ;var a = SinOsc.ar(x + n,0)+ ;var b = SinOsc.ar(y,0)+ ;a * b}+;Out.ar(0,Mix.fill(3,nd))}.play