Commit bc7af939 by PLN (Algolia)

chore: I should commit more often.

parent 7cc1f16d
......@@ -3,6 +3,7 @@
import Sound.Tidal.Context
import System.IO (hSetEncoding, stdout, utf8)
import Data.Char (toLower)
hSetEncoding stdout utf8
......@@ -150,6 +151,103 @@ let -- DPV specific parameters
sizeMax = pF "sizeMax"
figure = pS "figure"
color = pS "color"
-- =============================================
-- Mutable Instruments synth parameters
-- =============================================
-- MiPlaits (macro oscillator)
engine = pI "engine" -- 0-15: oscillator model
harm = pF "harm" -- harmonics
timbre = pF "timbre"
morph = pF "morph"
plaitslevel = pF "plaitslevel" -- internal LPG level
plaitsdecay = pF "plaitsdecay" -- "decay" is built into Tidal, so renamed
fm_mod = pF "fm_mod"
timb_mod = pF "timb_mod"
morph_mod = pF "morph_mod"
lpg_colour = pF "lpg_colour"
-- MiRings (resonator)
rstruct = pF "struct" -- "struct" is a Tidal function, so aliased
bright = pF "bright" -- brightness
damp = pF "damp" -- damping
pos = pF "pos" -- position
model = pI "model" -- resonator model
poly = pI "poly" -- polyphony
intern_exciter = pI "intern_exciter"
easteregg = pI "easteregg"
-- MiElements (physical modeling)
strength = pF "strength"
contour = pF "contour"
bow_level = pF "bow_level"
blow_level = pF "blow_level"
strike_level = pF "strike_level"
flow = pF "flow"
mallet = pF "mallet"
bow_timb = pF "bow_timb"
blow_timb = pF "blow_timb"
strike_timb = pF "strike_timb"
geom = pF "geom"
eldamp = pF "eldamp"
elpos = pF "elpos"
elmodel = pI "elmodel"
space = pF "space"
-- MiOmi (dual osc FM synth)
detune = pF "detune"
level1 = pF "level1"
level2 = pF "level2"
ratio1 = pF "ratio1"
ratio2 = pF "ratio2"
fm1 = pF "fm1"
fm2 = pF "fm2"
fb = pF "fb"
xfb = pF "xfb"
filter_mode = pI "filter_mode"
omicutoff = pF "omicutoff"
reson = pF "reson"
rotate = pF "rotate"
omispace = pF "omispace"
-- MiWarps (wave folder / ring mod)
algo = pI "algo"
timb = pF "timb"
osc = pI "osc"
lev1 = pF "lev1"
lev2 = pF "lev2"
vgain = pF "vgain"
-- MiTides (complex envelope / osc)
slope = pF "slope"
tsmooth = pF "smooth" -- "smooth" is a Tidal function, so aliased
shift = pF "shift"
output_mode = pI "output_mode"
ramp_mode = pI "ramp_mode"
ratio = pI "ratio"
tiderate = pF "tiderate"
-- MiVerb global effect
verbwet = pF "verbwet"
verbtime = pF "verbtime"
verbdamp = pF "verbdamp"
verbhp = pF "verbhp"
verbfreeze = pI "verbfreeze"
verbdiff = pF "verbdiff"
verbgain = pF "verbgain"
-- MiClouds global effect
cloudspitch = pF "cloudspitch"
cloudspos = pF "cloudspos"
cloudssize = pF "cloudssize"
cloudsdens = pF "cloudsdens"
cloudstex = pF "cloudstex"
cloudswet = pF "cloudswet"
cloudsgain = pF "cloudsgain"
cloudsspread = pF "cloudsspread"
cloudsrvb = pF "cloudsrvb"
cloudsfb = pF "cloudsfb"
cloudsfreeze = pI "cloudsfreeze"
cloudsmode = pI "cloudsmode"
cloudslofi = pI "cloudslofi"
-- MiRipples global effect
ripplescf = pF "ripplescf"
ripplesreson = pF "ripplesreson"
ripplesdrive = pF "ripplesdrive"
ripplesgain = pF "ripplesgain"
-- =============================================
-- Other parameters
modIndex = pF "modIndex"
mix = pF "mix"
......@@ -186,7 +284,99 @@ let -- DPV specific parameters
-- Global filters
gF1 = (# djfbus 1 (range 0.05 0.95 "^49"))
gF2 = (# djfbus 2 (range 0.05 0.95 "^50"))
gF3 = (# djfbus 3 (range 0.05 0.95 "^51"))
gF3 = (# djfbus 3 (range 0.05 0.95 "^51"))
-- Global masks (defaults)
gMask = (midiOn "^41" (mask "t!7 f"))
gMute1 = (midiOn "^73" (mask "f*16"))
gMute2 = (midiOn "^74" (mask "f*16"))
gMute3 = (midiOn "^75" (mask "f*16"))
gM1 = gMask . gMute1
gM2 = gMask . gMute2
gM3 = gMask . gMute3
-- Launchpad S controls
-- Launchpad S pad controls
pad00 = pF "pad00"
pad01 = pF "pad01"
pad02 = pF "pad02"
pad03 = pF "pad03"
pad04 = pF "pad04"
pad05 = pF "pad05"
pad06 = pF "pad06"
pad07 = pF "pad07"
pad08 = pF "pad08"
pad10 = pF "pad10"
pad11 = pF "pad11"
pad12 = pF "pad12"
pad13 = pF "pad13"
pad14 = pF "pad14"
pad15 = pF "pad15"
pad16 = pF "pad16"
pad17 = pF "pad17"
pad18 = pF "pad18"
pad20 = pF "pad20"
pad21 = pF "pad21"
pad22 = pF "pad22"
pad23 = pF "pad23"
pad24 = pF "pad24"
pad25 = pF "pad25"
pad26 = pF "pad26"
pad27 = pF "pad27"
pad28 = pF "pad28"
pad30 = pF "pad30"
pad31 = pF "pad31"
pad32 = pF "pad32"
pad33 = pF "pad33"
pad34 = pF "pad34"
pad35 = pF "pad35"
pad36 = pF "pad36"
pad37 = pF "pad37"
pad38 = pF "pad38"
pad40 = pF "pad40"
pad41 = pF "pad41"
pad42 = pF "pad42"
pad43 = pF "pad43"
pad44 = pF "pad44"
pad45 = pF "pad45"
pad46 = pF "pad46"
pad47 = pF "pad47"
pad48 = pF "pad48"
pad50 = pF "pad50"
pad51 = pF "pad51"
pad52 = pF "pad52"
pad53 = pF "pad53"
pad54 = pF "pad54"
pad55 = pF "pad55"
pad56 = pF "pad56"
pad57 = pF "pad57"
pad58 = pF "pad58"
pad60 = pF "pad60"
pad61 = pF "pad61"
pad62 = pF "pad62"
pad63 = pF "pad63"
pad64 = pF "pad64"
pad65 = pF "pad65"
pad66 = pF "pad66"
pad67 = pF "pad67"
pad68 = pF "pad68"
pad70 = pF "pad70"
pad71 = pF "pad71"
pad72 = pF "pad72"
pad73 = pF "pad73"
pad74 = pF "pad74"
pad75 = pF "pad75"
pad76 = pF "pad76"
pad77 = pF "pad77"
pad78 = pF "pad78"
pad80 = pF "pad80"
pad81 = pF "pad81"
pad82 = pF "pad82"
pad83 = pF "pad83"
pad84 = pF "pad84"
pad85 = pF "pad85"
pad86 = pF "pad86"
pad87 = pF "pad87"
pad88 = pF "pad88"
:}
-- FIXME: STALE EXAMPLES
......@@ -217,5 +407,157 @@ let -- DPV specific parameters
-- labelFX 9 "Cues & Noise"
-- :}
-- Jazz chord symbol converter (Am → a'min, C7 → c'dom7, etc.)
-- Use it in patterns with parseBP like: d1 $ n (jchord "<Am C D F>") # s "superpiano"
:{
jchord :: String -> ControlPattern
jchord input = n (parseBP_E $ convertChordSymbols input)
where
convertChordSymbols :: String -> String
convertChordSymbols str = unwords $ map parseChordSymbol (words str)
parseChordSymbol :: String -> String
parseChordSymbol symbol =
-- Handle pattern syntax chars at beginning/end
case symbol of
('<':rest) -> '<' : parseChordSymbol rest
('>':rest) -> '>' : parseChordSymbol rest
('[':rest) -> '[' : parseChordSymbol rest
(']':rest) -> ']' : parseChordSymbol rest
('{':rest) -> '{' : parseChordSymbol rest
('}':rest) -> '}' : parseChordSymbol rest
('|':rest) -> '|' : parseChordSymbol rest
('~':rest) -> '~' : parseChordSymbol rest
_ -> case reverse symbol of
('>':tser) -> parseChordSymbol (reverse tser) ++ ">"
(']':tser) -> parseChordSymbol (reverse tser) ++ "]"
('}':tser) -> parseChordSymbol (reverse tser) ++ "}"
('|':tser) -> parseChordSymbol (reverse tser) ++ "|"
_ -> if null symbol || not (any (`elem` "ABCDEFG") symbol)
then symbol -- no note names, pass through
else
let (root, quality) = splitChordSymbol symbol
tidalRoot = convertRoot root
tidalQuality = convertQuality quality
in tidalRoot ++ "'" ++ tidalQuality
-- NEW: Convert root note to Tidal notation
convertRoot :: String -> String
convertRoot root = map toLower $ replace '#' 's' $ replace 'b' 'f' root
where
replace :: Char -> Char -> String -> String
replace from to = map (\c -> if c == from then to else c)
splitChordSymbol :: String -> (String, String)
splitChordSymbol (c:rest)
| c `elem` "ABCDEFG" =
case rest of
('#':q) -> ([c, '#'], q)
('b':q) -> ([c, 'b'], q)
('s':q) -> ([c, 's'], q) -- also accept 's' directly
('f':q) -> ([c, 'f'], q) -- also accept 'f' directly
_ -> ([c], rest)
| otherwise = ([c], rest)
splitChordSymbol [] = ("C", "maj") -- default
convertQuality :: String -> String
convertQuality "" = "maj"
convertQuality "M" = "maj"
convertQuality "maj" = "maj"
convertQuality "m" = "min"
convertQuality "min" = "min"
convertQuality "-" = "min"
convertQuality "7" = "dom7"
convertQuality "maj7" = "maj7"
convertQuality "M7" = "maj7"
convertQuality "^7" = "maj7"
convertQuality "m7" = "min7"
convertQuality "min7" = "min7"
convertQuality "-7" = "min7"
convertQuality "mM7" = "minmaj7"
convertQuality "-M7" = "minmaj7"
convertQuality "dim" = "dim"
convertQuality "o" = "dim"
convertQuality "dim7" = "dim7"
convertQuality "o7" = "dim7"
convertQuality "m7b5" = "m7f5"
convertQuality "half-dim7" = "m7f5"
convertQuality "aug" = "aug"
convertQuality "+" = "aug"
convertQuality "sus2" = "sus2"
convertQuality "sus4" = "sus4"
convertQuality "sus" = "sus4"
convertQuality "7sus4" = "seven" -- closest match
convertQuality "9" = "nine"
convertQuality "maj9" = "maj9"
convertQuality "M9" = "maj9"
convertQuality "^9" = "maj9"
convertQuality "m9" = "min9"
convertQuality "min9" = "min9"
convertQuality "-9" = "min9"
convertQuality "11" = "eleven"
convertQuality "maj11" = "maj11"
convertQuality "M11" = "maj11"
convertQuality "m11" = "min11"
convertQuality "min11" = "min11"
convertQuality "13" = "thirteen"
convertQuality "maj13" = "maj13"
convertQuality "M13" = "maj13"
convertQuality "6" = "six"
convertQuality "m6" = "min6"
convertQuality "69" = "six" -- closest
convertQuality "add9" = "nine" -- approximate
convertQuality other = "maj" -- fallback to major
-- Extract root notes for bass lines (Am7 -> a, C#m9 -> cs, Bb -> bf)
-- FIXED: Now properly converts # to s and b to f for Tidal notation
jroot :: String -> ControlPattern
jroot input = n (parseBP_E $ extractRoots input)
where
extractRoots :: String -> String
extractRoots str = unwords $ map extractRoot (words str)
extractRoot :: String -> String
extractRoot symbol =
case symbol of
('<':rest) -> '<' : extractRoot rest
('>':rest) -> '>' : extractRoot rest
('[':rest) -> '[' : extractRoot rest
(']':rest) -> ']' : extractRoot rest
('{':rest) -> '{' : extractRoot rest
('}':rest) -> '}' : extractRoot rest
('|':rest) -> '|' : extractRoot rest
('~':rest) -> '~' : extractRoot rest
_ -> case reverse symbol of
('>':tser) -> extractRoot (reverse tser) ++ ">"
(']':tser) -> extractRoot (reverse tser) ++ "]"
('}':tser) -> extractRoot (reverse tser) ++ "}"
('|':tser) -> extractRoot (reverse tser) ++ "|"
_ -> if null symbol || not (any (`elem` "ABCDEFG") symbol)
then symbol
else
let (root, _) = splitChordSymbol symbol
in convertRoot root
-- NEW: Convert root note to Tidal notation
convertRoot :: String -> String
convertRoot root = map toLower $ replace '#' 's' $ replace 'b' 'f' root
where
replace :: Char -> Char -> String -> String
replace from to = map (\c -> if c == from then to else c)
splitChordSymbol :: String -> (String, String)
splitChordSymbol (c:rest)
| c `elem` "ABCDEFG" =
case rest of
('#':q) -> ([c, '#'], q)
('b':q) -> ([c, 'b'], q)
('s':q) -> ([c, 's'], q)
('f':q) -> ([c, 'f'], q)
_ -> ([c], rest)
| otherwise = ([c], rest)
splitChordSymbol [] = ("C", "")
:}
:set prompt "tidal> "
-- :set prompt-cont ""
:set -XOverloadedStrings
:set prompt ""
import Sound.Tidal.Context
import System.IO (hSetEncoding, stdout, utf8)
hSetEncoding stdout utf8
-- total latency = oLatency + cFrameTimespan
-- tidal <- startTidal (superdirtTarget {oLatency = 0.2, oAddress = "127.0.0.1", oPort = 57120}) (defaultConfig {cFrameTimespan = 1/20})
-- V2: Try avoid lateness by processing a tad earlier
tidal <- startTidal (superdirtTarget {oLatency = 0.1, oAddress = "127.0.0.1", oPort = 57120}) (defaultConfig {cFrameTimespan = 1/20})
:{
let p = streamReplace tidal
hush = streamHush tidal
list = streamList tidal
mute = streamMute tidal
unmute = streamUnmute tidal
solo = streamSolo tidal
unsolo = streamUnsolo tidal
once = streamOnce tidal
first = streamFirst tidal
asap = once
nudgeAll = streamNudgeAll tidal
all = streamAll tidal
resetCycles = streamResetCycles tidal
setcps = asap . cps
xfade i = transition tidal True (Sound.Tidal.Transition.xfadeIn 4) i
xfadeIn i t = transition tidal True (Sound.Tidal.Transition.xfadeIn t) i
histpan i t = transition tidal True (Sound.Tidal.Transition.histpan t) i
wait i t = transition tidal True (Sound.Tidal.Transition.wait t) i
waitT i f t = transition tidal True (Sound.Tidal.Transition.waitT f t) i
jump i = transition tidal True (Sound.Tidal.Transition.jump) i
jumpIn i t = transition tidal True (Sound.Tidal.Transition.jumpIn t) i
jumpIn' i t = transition tidal True (Sound.Tidal.Transition.jumpIn' t) i
jumpMod i t = transition tidal True (Sound.Tidal.Transition.jumpMod t) i
mortal i lifespan release = transition tidal True (Sound.Tidal.Transition.mortal lifespan release) i
interpolate i = transition tidal True (Sound.Tidal.Transition.interpolate) i
interpolateIn i t = transition tidal True (Sound.Tidal.Transition.interpolateIn t) i
clutch i = transition tidal True (Sound.Tidal.Transition.clutch) i
clutchIn i t = transition tidal True (Sound.Tidal.Transition.clutchIn t) i
anticipate i = transition tidal True (Sound.Tidal.Transition.anticipate) i
anticipateIn i t = transition tidal True (Sound.Tidal.Transition.anticipateIn t) i
forId i t = transition tidal False (Sound.Tidal.Transition.mortalOverlay t) i
d1 = p 1 . (|< orbit 0)
d2 = p 2 . (|< orbit 1)
d3 = p 3 . (|< orbit 2)
d4 = p 4 . (|< orbit 3)
d5 = p 5 . (|< orbit 4)
d6 = p 6 . (|< orbit 5)
d7 = p 7 . (|< orbit 6)
d8 = p 8 . (|< orbit 7)
d9 = p 9 . (|< orbit 8)
d10 = p 10 . (|< orbit 9)
d11 = p 11 . (|< orbit 10)
d12 = p 12 . (|< orbit 11)
d13 = p 13
d14 = p 14
d15 = p 15
d16 = p 16
setI = streamSetI tidal
setF = streamSetF tidal
setS = streamSetS tidal
setR = streamSetR tidal
setB = streamSetB tidal
drumMachine name ps = stack
(map (\ x ->
(# s (name ++| (extractS "s" (x)))) $ x
) ps)
drumFrom name drum = s (name ++| drum)
drumM = drumMachine
drumF = drumFrom
modIndex = pF "modIndex"
mix = pF "mix"
vibrato = pF "vibrato"
chorus = pF "chorus"
lagamount = pF "lagamount"
dec = pF "dec"
sus = pF "sus"
cutoff = pF "cutoff"
:}
:set prompt "tidal> "
:set prompt-cont ""
:set -XOverloadedStrings
:set prompt ""
import Sound.Tidal.Context
import System.IO (hSetEncoding, stdout, utf8)
hSetEncoding stdout utf8
-- OSCTarget for pattern visualizing.
patternTarget = OSCTarget { oName = "Pattern handler", oAddress = "127.0.0.1", oPort = 5050, oPath = "/trigger/something", oShape = Nothing, oLatency = 0.02, oPreamble = [], oTimestamp = BundleStamp }
-- OSCTarget for play music via SuperCollider.
musicTarget = superdirtTarget { oLatency = 0.2, oAddress = "127.0.0.1", oPort = 57120 }
-- total latency = oLatency + cFrameTimespan
config = defaultConfig {cFrameTimespan = 1/20}
-- Send pattern as osc both to SC and to tidal-vis
-- tidal <- startMulti [musicTarget, patternTarget] config
-- OR
-- Send pattern as osc to SC only
tidal <- startTidal musicTarget config
:{
let p = streamReplace tidal
hush = streamHush tidal
list = streamList tidal
mute = streamMute tidal
unmute = streamUnmute tidal
solo = streamSolo tidal
unsolo = streamUnsolo tidal
once = streamOnce tidal
first = streamFirst tidal
asap = once
nudgeAll = streamNudgeAll tidal
all = streamAll tidal
resetCycles = streamResetCycles tidal
setcps = asap . cps
xfade i = transition tidal True (Sound.Tidal.Transition.xfadeIn 4) i
xfadeIn i t = transition tidal True (Sound.Tidal.Transition.xfadeIn t) i
histpan i t = transition tidal True (Sound.Tidal.Transition.histpan t) i
wait i t = transition tidal True (Sound.Tidal.Transition.wait t) i
waitT i f t = transition tidal True (Sound.Tidal.Transition.waitT f t) i
jump i = transition tidal True (Sound.Tidal.Transition.jump) i
jumpIn i t = transition tidal True (Sound.Tidal.Transition.jumpIn t) i
jumpIn' i t = transition tidal True (Sound.Tidal.Transition.jumpIn' t) i
jumpMod i t = transition tidal True (Sound.Tidal.Transition.jumpMod t) i
mortal i lifespan release = transition tidal True (Sound.Tidal.Transition.mortal lifespan release) i
interpolate i = transition tidal True (Sound.Tidal.Transition.interpolate) i
interpolateIn i t = transition tidal True (Sound.Tidal.Transition.interpolateIn t) i
clutch i = transition tidal True (Sound.Tidal.Transition.clutch) i
clutchIn i t = transition tidal True (Sound.Tidal.Transition.clutchIn t) i
anticipate i = transition tidal True (Sound.Tidal.Transition.anticipate) i
anticipateIn i t = transition tidal True (Sound.Tidal.Transition.anticipateIn t) i
forId i t = transition tidal False (Sound.Tidal.Transition.mortalOverlay t) i
d1 = p 1 . (|< orbit 0)
d2 = p 2 . (|< orbit 1)
d3 = p 3 . (|< orbit 2)
d4 = p 4 . (|< orbit 3)
d5 = p 5 . (|< orbit 4)
d6 = p 6 . (|< orbit 5)
d7 = p 7 . (|< orbit 6)
d8 = p 8 . (|< orbit 7)
d9 = p 9 . (|< orbit 8)
d10 = p 10 . (|< orbit 9)
d11 = p 11 . (|< orbit 10)
d12 = p 12 . (|< orbit 11)
d13 = p 13
d14 = p 14
d15 = p 15
d16 = p 16
:}
:{
let setI = streamSetI tidal
setF = streamSetF tidal
setS = streamSetS tidal
setR = streamSetR tidal
setB = streamSetB tidal
:}
:{
let modIndex = pF "modIndex"
mix = pF "mix"
vibrato = pF "vibrato"
chorus = pF "chorus"
lagamount = pF "lagamount"
dec = pF "dec"
sus = pF "sus"
cutoff = pF "cutoff"
drumMachine name ps = stack
(map (\ x ->
(# s (name ++| (extractS "s" (x)))) $ x
) ps)
drumFrom name drum = s (name ++| drum)
drumM = drumMachine
drumF = drumFrom
-- Midi boolean buttons
-- midiOn
midiOn ch pat = someCyclesBy ch pat
midiOff ch pat = someCyclesBy (1 - ch) pat
midiNo c1 c2 pat = someCyclesBy (1 - c1 - c2) pat
midiBoth c1 c2 pat = someCyclesBy (c1 + c2 - 1) pat
-- Parameterized DJF
_LPF lMin lMax ch = (# lpf (min lMax ((range lMin ((lMax*2) - lMin) ch))))
_HPF hMin hMax ch = (# hpf (max hMin (min hMax (range (hMin - hMax) (hMax - hMin) ch))))
midiDJF ch lMin lMax hMin hMax = (_LPF lMin lMax ch) . (_HPF hMin hMax ch)
-- FIXME: Seems to cut some lows when lMin != 0
-- Midi gain control (faders)
midiGGlobal = "^77" * 1.3
_gainG ch = (gain (midiGGlobal * ch)) -- gain Global
midiG' ch l h = _gainG (range l h ch) -- midiGain control
midiGdef = midiG' 1 0 1 -- midiGain default
midiG ch = midiG' ch 0 1 -- midiGain default
-- Global filters
gF1 = (# djfbus 1 (range 0.05 0.95 "^49"))
gF2 = (# djfbus 2 (range 0.05 0.95 "^50"))
gF3 = (# djfbus 3 (range 0.05 0.95 "^51"))
:}
:set prompt "tidal> "
-- :set prompt-cont ""
......@@ -44,18 +44,32 @@ soir noir
# Work in progress⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
## `2025` quart de siecle
# TESTING A NEW STREAMING setup
# AND EXPLORING A NEW SAMPLE PACK
# Recipe
# To make a ParVagues live
Material
1. TidalCycles
2. Ardour DAW
3. MIDI LaunchControl
4. Two hands
Ingredients
1. Jungle Breaks
2. a GFunk lead
3. Drums: adjust to taste
4. a Bass synth of your choice
5. Lots of love <3
## Good timing no? :)
Instructions
1. Slice the breaks finely
2. Mix slowly all ingredients
3. ???
4. PROFIT
-- Law Adiri
......@@ -63,8 +77,31 @@ soir noir
# Work in progress⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
## 26 lettres de noblesses
## Mars Eclosion
Drums Architecte
## Fevrier Vide
## Janvier A
- Take 5 Drops
## `2025` quart de siecle
# Decembre
FROM SCRATCH
# Novembre Novelas
- Aria Sans Serif
- **Aria Sans Serif**
- Liquid Finale
- Liquid Nite
- My sunshine
- Maudite soit la Guerre
- [Louis] Anarchie
- [Louis] D'accord
- [Louis] Pleine Lune
## Octobre ocre
- A Long Long Way
......@@ -82,6 +119,7 @@ soir noir
- Des Efforts
- AUX <3 PLAY TONIGHT
- TODO OIL
- Plosive
## Somptueux Septembre
-- Jam reprise :3
......@@ -1686,7 +1724,139 @@ Sept1
- Des Efforts!
- AUXiliaire
## Images.
## 2025 11 SovieTeuf
,
,@,
,@@@,
,@@@@@,
`@@@@@@@@@@@@@@@@@@@`
`@@@@SOVIET@@@@`
`@@@-TEUF@@@`
,@@@@@@`@@@@@@,
@@@@` `@@@@
;@` `@;
- *Quand on Decolle*
- *Fabuleux*
- *Paris*
- Liquid Finale
- Sunshine
- *WAP*
- *The Secret*
- *Bain Electrique*
- **La Fin de l'insouciance*
- **TECHNO OLIGARCHIE**
- Piment Bresilien
- PERFECT
- L'or Bleu
- Sunny Side Up
- L'été à MauerPark
- Sept 1
## NOUVEAU Novembre set
- Quand on decolle
- Liquid Finale
- Sept1
- I'M PERFECT <3
- SoGood
# CCC
# Day 1 - Secret Toilet Rave
- Perfect Party
- WAP
- Piment Bresilien
- JeuDrill
- L'or Bleu?
- Sept1
- Sunny Side Up
- My Sunshine
- L'été à MauerPark?
- TECHNOLIGARCHIE?
- My Sunshine
- Suns of Gold
-
- END: Liquid Finale
# PARVAGUES LIVECODING
# PARVAGUES LIVECODING
# PARVAGUES LIVECODING
# PARVAGUES LIVECODING
# PARVAGUES LIVECODING
# PARVAGUES LIVECODING
# PARVAGUES LIVECODING
# CCC 39c3 ALGORAVE <3
# Un live tout doux
# Pour Un Thé Dansant
# par ParVagues
# avec TidalCycles
## INTRO
-- Quand on décolle
-- Because it's there
- Ere de jeu
## TECHNO HIGH
-- Sunny
-- TechnOrage
-- L'Ete a Mauerpark
-- Piment Bresilien
-- Venons Ensemble <3
# DNB...ish
-- _Paris you want?_: Something about **Drums**
# Nujazz Low
-- Cafe Bouillant
-- **Cafe Tiede*
-- **Force motrice**
-- Cafe Glacé
## OUTRO
-- *Sept1**
# VORTEX26
# ParVagues
## INTRO
-- *Quand on décolle*
-- *Because it's there*
-- *Ere de jeu*
## TECHNO HIGH
-- 🌟 *Take 5 Drops* 🌟 [NOUVELLE]
-- **Sunny **
-- *TechnOrage*
-- **L'Ete a Mauerpark**
-- Piment Bresilien
-- Venons Ensemble <3
## SURPRISE IT'S A DANCEFLOOR
-- Perfect PARTY
# DNB...ish
-- _Paris you want?_: Something about **Drums**
-- Plosive!!1!
-- L'amour d'Abord
# Nujazz Low
-- Cafe Bouillant
-- **Cafe Tiede*
-- **Force motrice**
-- Cafe Glacé
## OUTRO
-- *Sept1**
## Rappel? Bonus?
-- Ton Numero
-- Contre Visite
## Images
-- "/home/pln/Work/Art/GLITCHWAVE/outputs/digital_flow.gif"
-- url: "/home/pln/Work/Art/GLITCHWAVE/outputs/decolle.gif"
url: "/home/pln/Work/Web/www/next/public/images/parvagues/bg_live.gif"
......
once $ "bond:14" # cut 23 # gain 2 -- BUCKINGHAM
once $ "bond:13" # cut 23 # gain 2 -- LOST CHARM
once $ "bond:15" # cut 23 # gain 2 -- Audiovisual
......@@ -86,11 +86,11 @@ d7 -- Claps
$ stut 2 0.6 "s"
$ "~ c ~ c*2" # "superclap"
# n 2
# room 0.1
# size 0.8
-- # room 0.1
-- # size 0.8
# rate 50
# pitch1 (range 1 1.5 perlin)
# gain 1.5
-- # pitch1 (range 1 1.5 perlin)
# gain 1.9
d4 -- Brass voice
$ jux ((|+ room 0.1))
$ superimpose ((# "kurt:2") . (|* gain 0.7) . (|+ pan 0.1))
......@@ -186,7 +186,7 @@ d4 -- Brass voice
# "brass" # "moogBass" -- FIXME RESTORE BRASS SAMPLES!
# legato "<0.75!7 1>"
# room 0.2
# gain 0.6
# gain 0.7
d6 -- synth Chorus
$ note (cat [
"","","","","","","","", -- Intro
......
once $ "bassWarsaw"
do
-- resetCycles
setcps (110/60/4)
let gF1 = (# djfbus 1 (range 0.05 0.95 "^49"))
let gF1 = (# djfbus 1 (range 0.05 0.95 "^49"))
let gF2 = (# djfbus 2 (range 0.05 0.95 "^50"))
let gF3 = (# djfbus 3 (range 0.05 0.95 "^51"))
let gMask = (midiOn "^41" (mask "t . <f t f <f t>> <t f f <t f>>"))
......@@ -17,38 +18,43 @@ d1 $ gF1 $ gM2
$ midiOff "^42" (<| "k")
$ fix ((|* gain 0.9) . (# lpf 1000)) "jazz"
$ fix ((# att 0.02) . (# rel 0.5) . (# lpf 400)) "kick:4"
$ "[jazz,kick:4]"
d2 $ gF1 $ gM $ "~ sn ~ sn" # "[snare:5,snare:19]"
d3 $ gF1 $ gM -- Hats ouverts legers
$ "[808bd:1,808bd:2,jazz,kick:4]"
d2 $ gF1 $ gM $ "~ sn <~ [~ sn]> sn" # note "0 0 -1 0" # legato "1 1 0.75 1"
# "[snare:5,snare:19]"
# room 0.4 # sz 0.1 # dry 1.1
d3 $ gF1 $ gM -- Hats ouverts legers
$ midiOn "^76" (ply 2)
$ midiOff "^44" (mask "t(4,8)")
$ midiOff "^44" (mask "t(4,8,1)")
$ "ho:0*8"
# att 0.25
# rel 0.05
# gain "1 0.9 1 0.8 <0.9!3 1.05> 1"
d4$ gF2 $ gM3
# gain (1 * "1 0.9 1 0.8 <0.9!3 1.05> 1")
d4 $ gF2 $ gM3
$ midiOn "^57" ((|+ note 12) . (# freeze 0.8))
$ sometimesBy (1 - "^17") (mask "[t@6 <f!3 t> <f t>]")
$ note "[cs3@6 gs3 ds3]"
$ note "[cs2@6 gs2 ds2]"
# crushbus 41 (range 16 2.5 "^53")
# octersubbus 42 (range 0 2.5 "^33")
# octersubsubbus 43 (range 0 5 "^33")
# squizbus 44 (range 0 2 "^17")
# squizbus 44 (range 0 2 "^18")
# roombus 45 (range 0 0.5 "^53")
# "bassWarsaw"
d7 $ note "<b4 as4 gs4 ~>"
# legato 0.125
# room 0.8
# sz 0.4 # dry 1
# "ikedaBass"
# modIndex 0
# crushbus 71 (range 16 4.5 "^55")
# lpf 1500
# att 0.4
# rel 0.9
# delay 0.9
# delayfb 0.2
# delayt 0.75
# gain 1.2
d5 $ gF3 $ gM3
$ midiOn "^90" (stut 4 0.6 "e")
$ midiOn "^58" (|+ note 12)
$ note ("[<b5 as5 gs5 gs5>]"
|+| "0 ~ ~ 0 ~ <~!2 0 ~> 0 ~"
-- + (slow 8 "<0 12 0 24>")
- 12)
# "FMRhodes1"
# room 0.48 # sz 0.71
# dry 1.3
# gain 1.5
# octersubsubbus 51 (range 0 1.4 "^34")
# modIndex (range 0 16 "^54")
# rel 2
# orbit 4
d9 $ gF3 $ gM3 -- Aterrissage sur venus
$ note "gs5/2"
# "FMRhodes1"
......@@ -59,20 +65,36 @@ d9 $ gF3 $ gM3 -- Aterrissage sur venus
# modIndex 0
# pan "0.1"
d10
$ struct "<~!12 t ~ ~ ~>"
$ "risers:8" # speed 0.25
# room 0.4 # sz 0.9
# cut 10
# gain 0.8
d11 $ gMute3
$ note "<b4 as4 gs4 ~>"
# "90s_synatm:0"
# room 0.4 # sz 0.9
# cut 10
# cut 11
# lpfbus 101 (slow 8 $ range 3000 1500 sine)
d7 $ note ("<e4 ds4 cs4 cs4>" + "0(3,8) 0(3,8)" + "[0,12]")
# gain 0.7
d7 $ gF2 $ gM3
$ midiOff "^91" (mask "t(3,8) t(3,8)")
$ note (
"<e4 b3 cs4 cs4>" + "0(<3!3 5>,8) 0(5,8)"
)
# "giorgio_syn:7"
-- # lpf 500
# orbit 6
# octersubbus 102 (range 0 2 "^55")
# gain 0.8
d5 $ note "[<b5 as5 gs5 gs5>]" |+| "0 ~ ~ 0 ~ <~!2 0 ~> 0 ~"
# "FMRhodes1"
# room 0.8 # sz 0.1 # dry 1
# rel 2
# gain 0.7
# orbit 4
# gain 1.8
d8 $ gF1 $ gM
$ midiOn ("^60" - "^92") (ply "1!2 <1!3 <2 1 1 2>>!2" . mask "f(4,8)")
$ midiOn ("^36" - "^92") ((loopAt 1) . (# hpf 1500) . (# "jungle_breaks:45")) -- Clochettes?
$ midiOn ("^56" - "^92") ((loopAt 1) . (# hpf 1500) . (# "jungle_breaks:30")) -- Clochettes?
$ midiOn ("^92") ( -- Bouton Nassim <3
slice 16 "[0 .. 7] . <[0 .. 7]!7 [0 1 . [2 3]]>"
. loopAt 0.5 . (# "breaks165") . (# octersub 2)
)
$ chop 16
$ loopAt 2
$ "jungle_breaks:74"
# room 0
# gain 1.4
......@@ -92,20 +92,18 @@ let gMute3 = (midiOn "^75" (mask "f*16"))
let gM = gMask . gMute
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
-- 16-bar chord cycle: Bbm(4) | F(4) | Bbm(4) | Ebm(4)
-- Faders for live timbral control (the "wider before drop" sweep):
-- ^34: arp FM1 depth ^54: arp FM2 ^18: arp detune/width
-- ^55: arp brightness ^53: bass cutoff ^56: pad openness
-- ^35: lead FM
d1 $ gF1 $ gMute2 -- KICK: 808 sub + clubkick body, 4otf
-- Harmonic foundation: 16-bar cycle (each chord = 2 bars)
-- Main Bbm/F vamp with Db/Ebm variation at the end
let rt = slow 2 "<bf3 f3 bf3 f3 bf3 f3 df3 ef3>"
d1 $ gF1 $ gMute2 -- KICK: Deep 4otf house kick
$ midiOn "^42" (<| "k k k <k k*2 k [~ k]>")
$ midiOff "^42" (<| "k")
$ "[808bd:2,clubkick:2]"
# lpf 5000
$ fix ((# att 0.01) . (# rel 0.5) . (# lpf 2000)) "kick:4"
$ "[techno:0,808bd:2,kick:4]"
# gain 1.3
d2 $ gF1 $ gM -- CLAP: h2o natural handclap, reverbed
$ midiOn "^43" (<| "~ cp ~ [cp <~ cp>]")
$ midiOff "^43" (<| "~ cp ~ cp")
$ midiOff "^43" (<| "~ cp ~ <~ cp*<1 2>>")
$ "h2ogmcp"
# room (slow 32 $ range 0.3 0.6 saw)
# sz (slow 32 $ range 0.1 0.45 cosine)
......@@ -118,90 +116,75 @@ d3 $ gF1 $ gM -- HATS: h2o sparse offbeat + light flourish
$ "~ h ~ h ~ h ~ <h!3 h*2>"
# "h2ogmhh"
# n "~ 3 ~ 2 ~ 4 ~ <3!3 [3 6]>" -- occasional open hat flourish
# gain "~ 0.7 ~ 0.8 ~ 0.65 ~ <0.7!3 [0.7 0.5]>"
# gain 0.85
d4 $ gF2 $ gM3 -- BASS: MiOmi sub, melodic through chord tones
$ midiOn "^57" (rev)
$ midiOn "^89" (ply 2)
$ note (
slow 4 $ cat [
"bf2 ~ df3 ~ bf2 ~ f2 ~", -- Bbm: root → m3rd, root → 5th
"f2 ~ a2 ~ f2 ~ c3 ~", -- F: root → maj3rd, root → 5th
"bf2 ~ df3 ~ bf2 ~ f2 ~", -- Bbm
"ef2 ~ gf2 ~ ef2 ~ bf2 ~" -- Ebm: root → m3rd, root → 5th
])
# "miomi"
# fm1 0.08 # fm2 0
# level1 0.6 # level2 0.2
# omicutoff (range 0.25 0.5 "^53") -- fader: bass brightness
# reson 0.15
# gain (1.5 * "~ 0.7 ~ 0.8 ~ 0.65 ~ <0.7!3 [0.7 0.5]>")
d4 $ gF2 $ gM3 -- BASS: Sub drone, one root per bar
$ midiOn "^57" (
off "e" ((|+ note 12) . (|* gain 0.65) . (# legato 0.3))
) -- octave ghost echo
$ midiOn "^89" (struct "t <t(3,8) t*[2 <2 4>]>") -- Bass goes wild
$ note (rt - 12)
# "bassWarsaw"
# dec 0.3 # sus 0.8
# lpfbus 41 (range 300 900 "^53")
# crushbus 42 (range 16 3 "^33")
# room 0.15
# cut 4
# gain 1.3
d5 $ gF3 $ gM3 -- ARPEGGIO: MiOmi 2-note 16th oscillation (from MIDI)
d5 $ gF3 $ gM3 -- ARPEGGIO: 2-note 16th oscillation (from MIDI)
$ midiOn "^90" (stut 4 0.5 "e")
$ midiOn "^58" (|+ note 12) -- octave up
$ midiOn "^58" (superimpose ( -- bloom: octave shimmer + pan spread
(|+ note 12) . (|* gain 0.55) . (|+ pan 0.2) . (# room 0.5)
))
$ mask "<t(11,16) t(13,16) t(14,16) t(15,16)>" -- breathes: sparse → full over 4 bars
$ note (
slow 4 $ cat [
"[bf4 f4]*8", -- Bbm: Bb on downbeats
"[f4 bf4]*8", -- F: F on downbeats (order flips!)
"[bf4 f4]*8", -- Bbm
"[ef4 gf4]*8" -- Ebm: Eb/Gb oscillation
])
# "miomi"
# fm1 (range 0.05 0.6 "^34") -- fader: FM depth → wider/brighter
# fm2 (range 0 0.3 "^54") -- fader: FM2 → extra harmonics
# detune (range 0 0.4 "^18") -- fader: stereo width / phaser-like
# omicutoff (range 0.4 0.95 "^55") -- fader: brightness
# level1 0.5 # level2 0.3
# reson 0.1
# room 0.3 # sz 0.4 # dry 1.2
# legato 0.4
"<[bf4 f4]*8!2 [f4 bf4]*8!2 [bf4 f4]*8!2 [ef4 gf4]*8!2>"
)
# "FMRhodes1"
# modIndex (range 0.5 8 "^34")
# crushbus 51 (range 15 2.8 "^54")
# lpfbus 52 (slow 8 $ range 800 6000 sine)
# room 0.35 # sz 0.5 # dry 1.2
# legato 0.5
# pan 0.6
# gain 1.1
d9 $ gF2 $ gM3 -- PAD: MiOmi detuned warm bed
# gain 1.9
d9 $ gF2 $ gM3 -- PAD: Warm evolving harmonic bed
$ note (
slow 4 $ cat [
"[bf4,df5,f5]", -- Bbm
"[f4,a4,c5]", -- F
"[bf4,df5,f5]", -- Bbm
"[ef4,gf4,bf4]" -- Ebm
slow 2 $ cat [
"[bf4,df5,f5]", "[f4,a4,c5]",
"[bf4,df5,f5]", "[f4,a4,c5]",
"[bf4,df5,f5]", "[f4,a4,c5]",
"[df4,f4,af4]", "[ef4,gf4,bf4]"
])
# "miomi"
# detune 0.35
# level1 0.5 # level2 0.5
# fm1 0.02 # fm2 0
# omicutoff (range 0.3 0.6 "^56") -- fader: pad openness
# reson 0.2
# "90s_synatm:0"
# lpfbus 71 (slow 16 $ range 1500 5000 sine)
# room 0.6 # sz 0.8 # dry 0.9
# legato 4
# pan 0.4
# cut 7
# gain 0.6
d7 $ gF3 $ gMute3 -- LEAD: MiOmi counter-melody, high register
$ sometimesBy "^19" (superimpose (
(|+ note "[0,7]")
. (|+ pan 0.15)
. (# cut 91)
))
$ midiOff "^58" (mask "t(2,4)")
$ note (
slow 4 $ cat [
"bf5 ~ df6 ~ f5 ~ df6 bf5", -- Bbm
"c6 ~ a5 ~ f5 ~ a5 c6", -- F
"bf5 ~ df6 ~ f5 ~ df6 bf5", -- Bbm
"ef5 ~ gf5 ~ bf5 ~ gf5 ef5" -- Ebm
])
# "miomi"
# fm1 (range 0.1 0.4 "^35") -- fader: lead FM character
# fm2 0.1
# omicutoff 0.7
# level1 0.4 # level2 0.3
# room 0.5 # sz 0.7
# legato 1.5
# pan 0.7
# cut 9
# gain 0.85
# gain 0.95
zd7 $ gF3 $ gMute3 -- CELLO: Bowed answer phrase + sustained note
$ midiOn "^91" (ply 2) -- doubles for urgency
$ midiOn "^59" (# "[cpluck:6,cpluck:7]") -- pizzicato mode
$ note ( -- held note then descending answer at end of bar (4→3→2)
"<[bf5@5 ~ [ef5 df5 c5] ~] [f5@5 ~ [bf5 af5 gf5] ~] [bf5@5 ~ [ef5 df5 c5] ~] [ef5@5 ~ [af5 gf5 f5] ~]>"
)
# "cbow:2" -- C4 bowed long vibrato
# room 0.4 # sz 0.6
# legato 1.2
# pan 0.8
# cut 7
# gain 1.0
d8 $ gF1 $ gM1
$ midiOff "^60" (mask "t(4,8,1)")
$ midiOn "^36" (# "jungle_breaks:74")
$ midiOn "^56" (# "jungle_breaks:19")
$ chop 16
$ loopAt 2
$ "jungle_breaks:42"
# gain 1.5
# room (slow 8 $ range 0 0.3 perlin)
# sz 0.05
# octersub 0.5
# delay "[0 0.5]*2"
d10 -- RISER: Transition sweeps
$ struct "<~!14 t ~>"
$ "risers:8" # speed 0.25
......
......@@ -40,5 +40,3 @@ $ s "blip"
# note "<0 [3,7] 0 [0,7]>"
# pan (0.25 + rand / 2)
# gain 0.6
d1 $ n "0 2 4 5 7 9 11 12" -- gamme pentatonique
once $ s "bd"
# speed 6
--
d1
$ speed "1 1 1 <1 -4>"
# s "bd"
# gain 1
d1 -- kick
-- $ euclid "<4 6>" 4
......@@ -15,40 +17,40 @@ $ every' 16 7 degrade
$ every 16 (# gain 0)
$ s "bd(5,8)"
# note "<50 <55 <60 65>>>"
# pan 0.8
# gain 1.3
d3 -- vibration montante!
$ sometimesBy 0.01 (# crush 4)
$ every 4 (rev)
$ sound "bd"
# note "<<28 21 14 7 0> <7 14 21 28 35 42 49 56 63 70>>"
>| speed (
segment 200
$ range 2 4 cosine
)
# gain 0.8
d8 -- helico
$ every' 4 3 (off 0.125 id)
$ every 8 (# gain 0)
$ every' 8 7 (# gain 1.2)
$ rev $ iter 4 $ loopAt 4 $ chop 16 $ "bd"
# gain 2.5
# pan 0.3
d5 -- cordes guitare pincée
$ someCycles (fast 2 . degrade)
$ someCycles (slow 2 . off 0.125 (|- up 12))
$ off 0.125 (|+ up 12)
$ off 0.125 (|+ up 12)
$ off 0.25 (|- up 12)
$ up "40 47"
# s "bd"
d6 -- clap!
$ stut 2 1.05 0.05
$ s "~ ~ bd ~"
# hpf 400
# lpf 1000
-- # pan 0.8
-- # gain 1.3
--
-- d3 -- vibration montante!
-- $ sometimesBy 0.01 (# crush 4)
-- $ every 4 (rev)
-- $ sound "bd"
-- # note "<<28 21 14 7 0> <7 14 21 28 35 42 49 56 63 70>>"
-- >| speed (
-- segment 200
-- $ range 2 4 cosine
-- )
-- # gain 0.8
--
-- d8 -- helico
-- $ every' 4 3 (off 0.125 id)
-- $ every 8 (# gain 0)
-- $ every' 8 7 (# gain 1.2)
-- $ rev $ iter 4 $ loopAt 4 $ chop 16 $ "bd"
-- # gain 2.5
-- # pan 0.3
--
-- d5 -- cordes guitare pincée
-- $ someCycles (fast 2 . degrade)
-- $ someCycles (slow 2 . off 0.125 (|- up 12))
-- $ off 0.125 (|+ up 12)
-- $ off 0.125 (|+ up 12)
-- $ off 0.25 (|- up 12)
-- $ up "40 47"
-- # s "bd"
--
--
-- d6 -- clap!
-- $ stut 2 1.05 0.05
-- $ s "~ ~ bd ~"
-- # hpf 400
-- # lpf 1000
......@@ -10,10 +10,28 @@ let gMute3 = (midiOn "^75" (mask "f*16"))
let gM1 = gMask . gMute
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
d1 $ gF1 $ gM1
$ midiOn "^42" (fast 2 . (<|"k k k <k [<~ k> k]>"))
$ midiOff "^42" (<| "k k k k*<1 2>" )
$ "jazz"
d2
$ midiOn "^43" (fast 2)
$ "~ s ~ s*<1 1 2 [4 2]>"
# "vec1_snare:20"
d3 $ "hh(3,8) hh(5,8)"
d8 $ gF1 $ gM1
$ loopAt 1
$ chop 8
$ midiOn "^36" (# n 95)
$ midiOn "^56" (# n 45)
$ "jungle_breaks:22"
# cut 8
# gain 1.1
d4 $ gF2 $ gM3 $ note "<cs2 ef2 cs2 <cs2 gs3>>/2"
# "bassWarsaw"
# room 0.2
# crushbus 41 (range 16 2.5 "^53")
# octerbus 42 (range 0 2.5 "^33")
d5 $ note (
"[cs cs ef cs]" + 12) # "moog:3" # cut 5
......@@ -50,8 +50,9 @@ d4 $ gF2 $ gM3 -- Bassline faite main avec un violoncelle californien
-- # octersubbus 43 (range 0 2.5 "^33")
# cut 41
# lpf 20000
# gain 1.4
d5 $ gF3 $ gM3 -- Piano nostalgique, temps inexorable
-- $ midiOn "^"
$ midiOn "^90" (superimpose ((# cut 51) . (# delay 0.95). (# delayt 0.125) . (# delayfb 0.7) . (# room 0) .(|* gain 0.8)))
$ stack [
midiOn "^58" (# silence) $ slow 2 "<begin ~ begin ~ begin ~ ~ ~>/2" # cut 51 # begin 0 # end 0.2 # pan 0.4, -- Main piano
midiOn "^58" (# silence) $ slow 2 "<~ mid ~ mid ~ mid ~ ~>/2" # cut 52 # begin 0.25 # end 0.6 # pan 0.4, -- side piano
......@@ -76,14 +77,14 @@ d8 $ gF1 $ gM1 -- Break multi-facette, assez complexe, comme chacun d'entre nous
$ chop 16
$ loopAt 2
$ "jungle_breaks:1" # cut 8
# gain 0.8
# gain 1.4
d9 $ gF3 $ gM3
$ note ("<e e c b4>/2" - "e")
# "rhadamanthe_melo:4"
# legato 4
# rel 2
# sus 2
# room 0.4 # lpf 2000
# room 0.6 # sz 0.6 # lpf 2000
d11 $ gM3 $ gF3-- Intro doux piano
$ gF3
$ whenmod 8 6 (slice 2 "0*2")
......@@ -96,4 +97,13 @@ d11 $ gM3 $ gF3-- Intro doux piano
# delayt ("<2!3 3>"/3)
# delayfb 0.5
# gain 1.3
d12 $ "hh(3,8) hh(3,8)" # "h2ogmhh"
d12 $ gF1 $ gM1 $ "hh(3,8) hh(3,8)" # "h2ogmhh"
d10
$ mask "<f!24 t!8>"
$ loopAt 8
$ "risers"
# cut 10
# room 0.4
# dry 1.4
# octersubsub 0.5
# gain 0.8
-- Hello world <3
-- This is ParVagues
-- Wait, should start silent!
-- This was just a soundcheck :P
-- T - 20 :rocket:
do
setcps (120/60/4)
-- TODO: Suggestion gM1/2/3 filtres partiels
-- let gM3 =
d1 $ gF1 $ gM2
$ midiOn "^42" (struct "t t t t")
$ midiOff "^42" (struct "t . t(3,8)")
$ "jazz"
# gain 1.5
d2 $ gF1 $ gM1
$ "~ sn ~ sn" # "snare:30"
# gain 1.4
d3 $ gF1 $ gM1
-- $ degradeBy "0.2 0.8"
$ "hh([12 16],16)" # "h2ogmhh:3"
# gain 1.8
d4 $ gF2 $ gM3
$ note (scale "dorian" ("0 0 4 <2 1 2 7>") + "fs2") # "bassWarsaw"
# cut 4
# gain 1.3
# crushbus 41 (range 16 2.5 "^53")
# octerbus 42 (range 0 2.5 "^53")
d5 $ gF3 $ gM3
-- $ degradeBy 0.4
$ slice 8 "<0 1 2 3 4 5 6 7>"
$ "gfunk_lead:5"
# cut 5
# gain 1.7
# octersubbus 51 (range 0 2.5 "^54")
d8 $ gF1 $ gM1
$ midiOff "^60" (mask "t(4,8,1)" . chop 8) -- TECHNO MASK !!
$ chop 8
$ loopAt 2
$ midiOn "^36" (# n 74) -- Savoie <3
$ midiOn "^56" (# n 19)
$ "jungle_breaks:45"
# cut 8 -- 45 orleans rpz <3
# hpf 200
# gain 1.6
d9 $ gF3 $ gM3
$ fix ((# begin 0.15)) (n 0)
$ fix ((# end 0.7)) (n 1)
$ mask "<t!3 f>"
$ "love"
# n (slow 4 "<0 1 2 4>")
# cut 9
# room 0.3 # sz 0.4 # dry 1.3
do
d1 $ gM2 $ gF1
$ midiOn "^42" (struct "t t t <t [~ t] t t*2>")
$ midiOff "^42" (struct "t t(3,8)")
$ "jazz"
# lpf 400
d2 $ gM1 $ gF1
$ midiOff "^43" (struct "~ t")
$ midiOn "^43" (struct "~ t ~ t")
$ "vec1_snare:30"
d3 $ gM1 $ gF1 $ "hh*16" # "h2ogmhh"
d4 $ gM3 $ gF2
-- $ midiOn "^89" (ply "<4 8 8 16>")
$ n (scale "dorian" "<0 0 4 <2 7>>" + "fs")
# s "bassWarsaw"
# octave 2
# gain 1.3
# crushbus 41 (range 16 2.5 "^53")
# octersubbus 42 (range 0 5 "^53")
# leslie 0.85
# lrate (slow 16 $ range 2 16 saw)
# lsize 0.7
# bandf 300
# pan 0.3
# room 0.2 # sz 0.8 # dry 0.8
d5 $ gM3 $ gF3
$ midiOff "^58" (mask "t(<1 2 3 4 5 6 7 8>,16)" . chop 16)
$ midiOn "^90" (ply "4 <4 8 8 16>")
$ slice 8 (slow 2
$ ply "<1!8 2!3 4 2!3 8>"
$ "<0 1 2 3 4 5 6 7>")
$ "gfunk_lead:5"
# gain 1.2 # cut 5
# pan 0.8
# octersubbus 51 (range 0 2.5 "^54")
d8 $ gM1 $ gF1
$ midiOff "^60" (mask "t(4,8,1)" . chop 16)
$ chop 8
$ loopAt 2
$ midiOn "^36" (# n 74) -- Le savoyard
$ midiOn "^56" (# n 19)
$ "jungle_breaks:45"
# cut 8
# hpf 300
# gain 1.3
once $ note "fs2" # "bassWarsaw"
# gain 1.8 # lpf 4000
# octer 0.8
once $ "gfunk_lead:5"
do
setcps (120/60/4)
d1 $ gF1 $ gM2
$ midiOn "^42" (struct "t*4" )
$ midiOff "^42" (struct "t . t(<3 [3 <1 5 [5 3] 8>]>,8)")
$ "jazz" # lpf 300
d2 $ gF1 $ gM1
$ midiOn "^43" (struct "~ t ~ <t t*2 [t!3 ~] t*[4 2]>")
$ midiOff "^43" (struct "~ t")
$ "vec1_snare:25"
-- # hpf 500
d3 $ gF1 $ gM1 $ "hh([<8 12> <8 12 8? 16>],16)" # "h2ogmhh:3"
d4 $ gF2 $ gM3
$ note (scale "dorian" "0@3 0 4@2 <2 7>" + "fs2")
# "bassWarsaw"
d5 $ gF3 $ gM3
$ ply "1 2"
$ slice 8 "<0 1 2 3 4 5 6 7>"
$ "gfunk_lead:5"
# cut 5
d8 $ gF1 $ gM1
$ midiOff "^60" (mask "t(4,8,1)" . chop 16)
$ midiOn "^56" (# n 19)
$ midiOn "^36" (# n 74)
$ chop 8 $ loopAt 2
$ "jungle_breaks:45"
# cut 8
# gain 1.4
d9 $ gF3 $ gM3
$ fix (
(# begin 0.15) . (# att 0.04) . (# rel 1)
) (n 0)
$ fix (
(# begin 0)
. (# att 0.04) . (# rel 4)
) (n 1)
$ "~ ~ ~ <~ love>"
# cut 1
# gain 1.8
# room 0.4 # sz 0.8 # dry 1.5
# n (slow 4 $ "<1 1 1 2 4 2 4>")
once $ "movie_dawn:11" # gain 1.4 # cut 3 # room 0.4 # end 0.5
do
-- resetCycles
let width = pF "width"
let gMask = (midiOn "^41" (mask "t!3 <t!3 [f <t f>]>"))
let gMute = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let dMask = (whenmod 8 7 (mask "t t <t f> f"))
let gM1 = gMask . gMute
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
-- DARK NOIR CHORDS (matching the A->E->D pad progression)
let chords1 = "<Am9 Em7 [Dm9 Dm9]>" -- Section 1: D held 2x
let chords2 = "<Am11 Em9 [Dm11 Dm11]>" -- Section 2: Richer voicings
let chords = whenmod 128 64 (const $ jchord chords2) (jchord chords1) -- Auto-switch at bar 32
let chordsRoot = whenmod 128 64 (const $ jroot chords2) (jroot chords1)
setcps (81/60/4)
d1 $ gF1 $ gM2 -- KICK TECHNO KICK TO DNB
$ fast 2
$ midiOn "^42" (<| "k k k*<1 2 2 [4 2]> k*<1 <2 <4 [4 2]>>>")
$ midiOff "^42" (<|"k . ~ k ~ <~ k>" )
$ "[808bd:13,jazz]"
# gain 1
# lpf 300
d2 $ gF1 $ gM1
$ midiOn "^43" (fast 2)
$ "~ s ~ [s*<1!3 2> <~ <s s*[4 2]>>]"
# "hh27:12"
# cut 2
# gain 1.4
# lpf 1500
# legato 0.5
d3 $ gF1 $ gM1
$ degradeBy (slow 32 $ range 0.8 "-0.2" sine)
$ midiOff "^44" (degradeBy "0 0.2 0.4 0.8 0 <0!4 0.5!4> 0.1 0")
$ "dr*[<32!3 16> . 16 <32 [8 32]>]"
# "h2ogmsn:4"
# gain (0.8 * "1 1 0.9 1 0.8 0.9 0.8 <0.9 0.8 0.9 [1.1|1]>")
d4 $ gF2 $ gM3
$ struct "t ~ t t ~ t ~ t?" -- Offbeat groove with probability
$ chordsRoot -- Auto-switches at bar 32!
|+| n "0 7 0 <4 2> 7 0 <[0 12] [7 4]>" -- Melodic bass line
-- |+| n "0 7 4 <0 2> 7 <0 4> [7|12] 0" -- Alt: More melodic movement
-- |+| n "0 ~ 7 ~ [4|0] ~ 7 <0 2>" -- Alt: Sparser, half-time feel
# "bassWarsaw"
# octave 2
# lpf (slow 16 $ range 300 800 sine) -- Higher range for DNB
# resonance (slow 8 $ range 0.1 0.3 sine)
# room 0.3 # sz 0.4 -- Tighter reverb for punch
# gain (1.3 * "<1 [0.9|1] 1 0.9>") -- Consistent power with subtle variation
# legato (slow 8 $ range 0.5 1 perlin) -- Not always full
# crushbus 41 (range 16 3.5 "^53")
d5 $ gF3 $ gM3
-- $ struct "<[t ~ ~ t? ~ t ~ ~] [t ~ t? ~ ~ ~ t ~]>" -- Alternating patterns + random hits
-- $ struct "t ~ [~|t] t ~ <t t?> ~ ~" -- Alt: More random variation
$ superimpose (id -- TODO ARPEGIATE PLZ)
(midiOn "^90" (stut 4 "e" 0.9)) .
struct "t(12,8)" .
slow 4
. arp "up"
. (# cut 51)
. (|* gain (1.4 * "^34"))
. (|+ octave 1)
. (# pan 0.8)
. (# modIndex 0)
)
$ struct "t(3,8) t(<3 4 5 8>,8,<0!3 1>)"
$ slow 8
$ chords -- Auto-switches at bar 32!
# "FMRhodes1"
# octave 4
# modIndex (slow 8 $ range 0.1 5 sine)
# gain (0.85 * "1 [0.8|1] [0.9|1.1] 1 <1 [0.7|0.9]> [0.8|1|1.2] 1 0.9") -- Human dynamics
# room 0.6 # sz 0.8 # dry 1.2
# lpf (slow 24 $ range 2500 5500 sine)
# pan ("<0.3 0.7 [0.5|0.6]>" + (slow 32 $ range (-0.1) 0.1 sine)) -- Drift + variation
# attack (0.01 + (rand * 0.02)) -- Slight timing humanization
# release (slow 16 $ range 0.8 1.5 sine)
# crushbus 41 (range 16 3.5 "^54")
d7 $ gF3 $ gM3
$ slow 16 $ chordsRoot -- Very slow, ambient
-- |+| n "[0,7] ~ ~ ~ [7,12]? ~ ~ ~" -- Fifth chords, sparse hits
|+| n "[0,7] ~ [0,7,12]? ~ ~ ~ [7,12] ~" -- Alt: More hits, triple voicing
# "cbow"
# octave "<3 3 4 3>" -- Breathe with the progression
# lpf (slow 32 $ range 1200 3000 sine)
# lpq 0.3
# room 0.8 # sz 0.9 # dry 0.8 -- Very ambient
# gain (0.6 * "<1 [0.8|0.9] 1 [0.7|1]>")
# pan (slow 24 $ range 0.2 0.8 sine)
# attack (0.3 + (rand * 0.2)) -- Slow bowed attack
# release 2
d8 $ gF1 $ gM1
$ midiOn "^60" (fast 2)
$ slice 8 "0 1 2 3 4 <5 5*2 0 5> <6 6 3 6*2> <7 <~!3 7*<2 4>>>"
$ midiOn "^36" (# "jungle_breaks:19")
$ midiOn "^56" (# "jungle_breaks:45")
-- $ loopAt 0.5
$ "breaks165"
# bandf 1400
# room 0.3
# dry 1.2 # sz 0.8
# cut 8
# gain 0.93
# delay "<0 [0!3 0.4]>"
# delayfb 0.5
# delayt "[0.25]"
d11 $ gF3 $ gM3
$ degradeBy 0.1
$ "noir_angels:15/4"
# cut 11
# gain 1.2
# pan (slow 16 $ range 0.6 0.1 perlin)
# delay 0.5 # delayt "1.25"
# delayfb 0.8
# hpf (slow 32 $ range 0 5000 cosine)
d12 $ gF3 $ gM3
$ mask "<f f t f>"
$ "noir_angels:4"
# cut 12
# gain 0.7
# pan (slow 4 $ range 0.4 0.9 perlin)
# hpf (slow 32 $ range 0 5000 sine)
# room 0.4 # dry 1.1 # sz 0.8 # lpf 4500
# delay 0.5 # delayt "1.25" # delayfb 0.8
do
setcps (114/60/4)
-- resetCycles
let gMask = (midiOn "^41" (mask "t!3 <t!3 [f <t f>]>"))
let gMute = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let gM1 = gMask . gMute
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
d1 $ gF1 $ gMute2 -- Kick
$ midiOff "^78" (# silence)
$ midiOn "^42" (<| "k k k <k <[~ k] k*2>>")
$ midiOff "^42" (<| "k . ~ k ~ ~ ")
$ "[kick:4]"
# gain 1.8
# lpf 400
d2 $ gF1 $ gM1
$ midiOff "^79" (# silence)
$ midiOff "^43" (slow 2 . (<| "~ ~ ~ s"))
$ midiOn "^43" (<| "~ s ~ s*<1 2 [2 1] [4 <2 8>]>" )
$ "cp" # hpf 1400 # gain 1.3
d3 $ gF1 $ gM1
$ midiOff "^44" (mask "t(4,8,1)")
$ "o([8 . 8 <8 16> 4],8,1)"
# "ho"
# gain 1.2
# att 0.1 # rel 0.9
# room 0.5
# drybus 31 (range 1 0 "^51")
# legato (range "s" 2 "^52")
d5 $ gF2 $ gM3
$ midiOn "^90" (ply 4)
$ midiOn "^58" (# n 1)
-- $ slice 4 (ply 2 $ "<0 1 2 3>" + "0 0*2")
$ slice 4 (ply 2 $ "<0 0 0 3>")
$ "aux_heart"
# cut 4
# gain 1.4
# room 0.4
# pan 0.8
# crushbus 51 (range 16 2.5 "^54")
# octerbus 52 (range 0 1 "^34")
# gain 1.7
d4 $ gF2 $ gM3
$ midiOn "^89" (chop "<8 8 8 8 8 7 8 7>")
$ note ("<a <a [a@7 b]> fs <fs [fs@7 e]>>"
-- + "[0,<0 7>,7,12]"
- "[24]"
)
# "bassWarsaw"
# gain 1.5
# crushbus 41 (range 16 2.5 "^53")
# octersubbus 42 (range 0 2.5 "^33")
d7 $ gF3 $ gM3
$ midiOn "^91" ((ply "8 <16 [16 32]>"))
$ slow 2
$ slice 4 ("<0 1 2 3>")
$ "aux_heart:3"
# cut 7
# gain 1.5
# room 0.5
# sz "<0.3!3 1.2>"
# cut 7
d8 $ gF1 $ gM1
$ midiOn "^92" (ply "1 <2!3 4>")
$ midiOff "^60" (mask "t(4,8,1)") -- Techno drum mask
$ midiOn ("^36" - "^56") ((# n "22")) -- Hmmm Break
$ midiOn "^56" ((# n "23")) -- Raise COMEON!
$ chop 16
$ loopAt 2
$ "jungle_breaks:45"
# cut 8
# gain 1.5
-- d4 $ gF2 $ gM3 -- WAP BASS
-- $ midiOff "^81" (# silence)
-- $ midiOn "^89" (
-- slice 8 ("~ 0 ~ 5 ~ 3 <~!4 5!4> <3!4 [3 0]!4>")
-- -- . (superimpose (# cut 41))
-- )
-- $ midiOn "^57" (
-- slice 8 ("~ 0 <~ ~ 5 5> 3 <~ 0!3> <~!4 0!10 ~ 0*4> 5 <~ 5>")
-- -- $ (0.125 ~>)
-- . (# gain 1.3 )
-- . (# crushbus 43 (range 16 3.4 "^53") )
-- . (# lpf 3000)
-- -- . (# note "-12")
-- -- . ( #octersub 1.2)
-- -- . (# room 0.2) . (# room 0.2) . (# dry 0.9)
-- )
-- -- $ midiOff ("^57" - "^89") ("0.25" ~>) -- TODO: Decalage de Bruno
-- $ "wap/2"
-- # lpf 2400
-- # cut 4
-- # gain 1.9
-- -- # room 0.4
-- # octersubsubbus 42 (range 0 1.4 "^53")
-- # octerbus 41 (range 0 1.4 "^53")
-- d5 $ gF3 $ gMute3 -- WAP HOES v1 magic repeat
-- $ midiOn "^34" (# 7) -- FORCE INTRO
-- $ midiOff ("^34"+"^90") (slow 4)
-- $ stut 4 1 1 -- Four repeats each
-- $ slow 4
-- $ midiOn "^58" (stut "4" 0.9 (fast 4 "e"))
-- $ midiOn "^90" (
-- ply "[1!3 4]*4" . chop 4 . -- Magic Repeat: next segment instead
-- stut "4" 0.9 (fast 4 "s") -- Magic Repeat: repeater
-- . (# att 0.08)
-- . (# rel 10)
-- )
-- $ "wap:0" # n ("<8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31>") -- Rotation complete
-- # cut 5
-- # room 0
-- # sz 0
-- # gain 1.4
-- d5 $ gF3 $ gMute3 -- WAP HOES v1 science of repeat
-- $ midiOn "^90" ((slice 4 "0*4"))
-- $ midiOn "^34" (# 7) -- FORCE INTRO
-- $ midiOff ("^34" + "^90") (slow 4) -- 4 bars
-- $ stut 4 1 1 -- Four repeats each
-- $ slow 4 -- times Four bits
-- $ midiOn "^58" (stut "4" 0.9 (fast 4 "e"))
-- $ "wap:0" # n ("<8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31>") -- Rotation complete
-- # cut 5
-- # room 0
-- # sz 0
-- # gain 1.4
-- d7 $ gF1 $ gM1 --Les WAP DRUMS
-- $ midiOff "^59" (mask "t(4,8,1)" . chop 8)
-- $ midiOn "^91" (ply "2 <2 4>")
-- $ loopAt 2 $ chop 8
-- $ "wap" # n "<3!4 4!4 5!4 6!4>"
-- # cut 7
-- # gain 1.2
-- d8 $ gF1 $ gM1 -- La stack de breaks
-- $ midiOff "^60" (mask "t(4,8,1)" . chop 8 ) -- BREAK JUNGLE
-- $ midiOn "^92" (ply 2) -- BREAK JUNGLE
-- $ midiOn "^36" (# 45) -- BREAK ORLEANS
-- $ midiOn "^56" ((# 7) . (|* gain 0.9)) -- BREAK JUNGLE
-- $ loopAt 2 $ chop 8
-- $ "jungle_breaks:84" # cut 8
-- # gain 1.3
-- d9 $ gF2 $ gM3 $ slow 2
-- $ superimpose ((
-- # "acidOto3091"-- V1 Bass
-- )
-- . (|- note 12)
-- . (|* gain "^18")
-- . (# cut 91))
-- -- $ off 1 (|- note "0 12")
-- $ note (cat [
-- "~ f f f fs f ef f cs@8",
-- "~ f f f fs f ef f cs@8",
-- "~ f f f fs f fs f cs@8",
-- "~ f f f fs f ef f [cs ef f ef]@8"
-- ])
-- -- "[b@3 ~@2 c@3 <cs <[cs@2 ~ g e] [cs@2 ~ g e g e]>>@5]"
-- -- # "bassWarsaw" |- note "[36,24]"
-- -- # "vec2_synth_acid:25" |- note 12-- Alternative2
-- # "vec1_acid:25" -- Alternative
-- # crushbus 91 (range 16 6.5 "^19")
-- # room 0.4
-- # gain 1.4
-- # cut 9
do
let gMask = (midiOn "^41" (mask "t!3 <t!3 [f <t f>]>"))
let gMute = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let dMask = (whenmod 8 7 (mask "t t <t f> f"))
let gM1 = gMask . gMute
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
setcps (140/60/4)
d1 $ gM2 $ gF1
$ superimpose ( -- Technique ine*fable : la basse du kick
(# "vec2_bass_ob:190")
. (# att 0.2) . (# rel 1))
$ midiOff "^42" (mask "t f f t")
$ fix ((|* gain 1.2) . (# lpf 300)) "clubkick:2"
$ fix ((|* gain 1) . (# hpf 300)) "hardkick_rha"
$ speed "1 1 1 [1,[~ -4]]"
# s "[clubkick:2,hardkick_rha:1]"
# gain 1
d2 $ gM1 $ gF1 $ "~ <~!8 s!8> ~ s*<1!6 <2 4> <2 <4 [4 8]>>>"
# "vec1_snare:3"
d3 $ gM1 $ gF1 $ "hh([4 4 4 16],8,1)"
# "h2ogmhh" # n "<1!8 3!8>"
d4 $ gF2 $ gM3
$ freq "102 108 110 ~ 105 130 52 33"
# "bassWarsaw"
# gain 1.3
# crushbus 41 (range 16 3.5 "^53")
d4 $ gF2 $ gM3
$ note ("<[cs ~!3 . gs] [c ~!3 . < g [g@3 c6]>]>" - 24)
# "bassWarsaw"
# pan 0.3
# room 0.3 # gain 1.2
d5 $ gF3 $ gM3
$ note ("cs4"
+ scale "minor" ("<[0 2 3 5] [7 10 12 10] [7 5] [3 2]>"))
# s "moogBass"
# legato 1.2
# room 0.6 # size 0.6
# pan 0.7
# att 0.22
# rel 4
# gain 0.9
d8 $ gM1 $ gF1
$ midiOn "^92" (ply "<1 2 4 8>")
$ midiOff "^60" (mask "t(4,8,1)")
$ chop 16
$ loopAt 2
$ "jungle_breaks:74"
# gain 1.3
# hpf 500
# crush 3.5
# delay 0.2 # delayt "s" # delayfb 0
# room 0.3 # sz 0.4 # dry 1.4
-- GLANES: rhadamanthe_divers:37
do
d1 $ "jazz*4"
d2 $ "~ cp ~ cp"
d3 $ "dr*16"
d4
$ freq "102 108 110 ~ 105 130 52 33"
# "bassWarsaw"
# gain 1.3
once $ note "g3" # "bassWarsaw" # gain 1.3
-- /home/pln/Downloads/PerfectSunriseLoop.gif
do
setcps (104/60/4)
let gMask = (midiOn "^41" (mask "<t f>"))
let gMute1 = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let gM1 = gMask . gMute1
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
let modIndex = pF "modIndex"
d1 $ gF1 $ gMute2
$ midiOn "^42" (struct "t t t*<1!6 2 1> t*<1!7 2>") -- RUN 4/4
$ midiOff "^42" (struct "t . ~ t ~ ~ ") -- OFFBEAT DNB
$ stack [
"kick" # lpf 10000 # cut 1,
"rumble" |* gain 1.3
# lpf 200
# cut 11,
""
]
# "[techno:1,jazz]"
# gain 1.2
d2 $ gF1 $ gM1
$ "~ s ~ s"
# "gretsch:14"
# begin 0.2
# gain 1.4
# room 0.4 # dry 1.14 # sz 0.1
# legato 0.25
# lpf (range 20000 200 $ (fast 4 $ envL))
# lpq 0
d3 $ gF1 $ gM1
$ "dr*[16 16 8 <16 8 64 [128 64]>]"
# gain 0.8
# "gretsch:14"
# begin 0.5
# gain 1.7
d4 $ gF2 $ gM3
$ note ("<bf af ef@2>" - 24)
# "bassWarsaw"
# crushbus 41 (range 16 3.5 "^53")
# room 0.4 # sz 0.5 # dry 1.4
d5 $ gF3 $ gM3
$ mask "<f t f f>"
$ "gfunk_lead:15"
# cut 5
# gain 1.3
once $ arp"up"
$ "FMRhodes1" # note "[c4'min]" # gain 1.8
-- /home/pln/Downloads/PerfectSunriseLoop.gif
do
setcps (124/60/4)
let gMask = (midiOn "^41" (mask "<t f>"))
let gMute1 = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let gM1 = gMask . gMute1
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
let modIndex = pF "modIndex"
let chord = "<Dm79 FM79 CM79 CM79>"
d1 $ gF1 $ gMute2
$ midiOn "^42" (struct "t t t*<1!6 2 1> t*<1!7 2>") -- RUN 4/4
$ midiOff "^42" (struct "t . ~ t ~ ~ ") -- OFFBEAT DNB
$ stack [
"kick" # lpf 10000 # cut 1,
"rumble" |* gain 1.3
# lpf 200
# cut 11,
""
]
# "[techno:1,jazz]"
# gain 0.9
d2 $ gF1 $ gM1
$ "~ s ~ <s!3 [s ~ [~ s ~]]>"
# "gretsch:14"
# begin 0.2
# gain 1.4
# room 0.4 # dry 1.14 # sz 0.1
# rel 0.08
# lpf 2500
d3 $ gF1 $ gM1
$ "dr*[16 16 8 <16 8 64 [128 64]>]"
# gain 0.8
# "gretsch:14"
# begin 0.5
# gain 1.7
d4 $ gF2 $ gM3
-- $ degradeBy "0 0.2 <0.2!3 0.8> 0"
-- $ fast 2
$ slice 3 (
"<0!8 3!8> <0 1> <2 3 0 3> <3 1 2 3>" -- Note
+ "0(3,8) 0(<3 3 1 <5 2>>,8)"
)
$ arp "[updown|thumbupdown|pinkyup]"
-- $ arp "up"
$ jchord chord
# "bassWarsaw"
# octave 2
# crushbus 41 (range 16 3.5 "^53")
# lpfbus 41 (range 40 260 (fast 32 $ ((0.2 ~>) $ sine)))
-- # lpf 340
# lpq 0.3
# legato "1 [1|1|0.6]!7"
# gain 1.2
# cut 4
# legato 0.55
d5 $ gF3 $ gM3
$ jchord (chord)
# octave 3
# "FMRhodes1"
# gain 1.3
d8 $ gF1 $ gM1
$ midiOff "^60" (mask "t(4,8,1)") -- Techno drum mask
$ midiOn "^56" (loopAt 2 . (# "jungle_breaks:23")) -- Raise COMEON!
$ midiOn "^92" ( -- Bouton Nassim <3
slice 16 "[0 .. 7] . <[0 .. 7]!3 [0 1 . [2 3]]>"
. loopAt 1 . (# "breaks165")
-- . (# octer 0.4) . ( octersubsub 4)
. (# lpf 2500)
. (# room 0)
)
$ chop 16
$ "jungle_breaks:45"
# cut 8
# octersub 0.5
# gain 1.2
d1 $ fast 2 $ degradeBy 0.2 $ "hh" # gain 1.4
-- # att 0.05
once $ arp"up"
$ "FMRhodes1" # note "[c4'min]" # gain 1.8
// Full M00N
// Based on 'full moon photography' By Mike Petrucci
// https://unsplash.com/photos/uIf6H1or1nE
s0.initImage("https://git.plnech.fr/pln/Hydra/raw/master/biarritz/fullmoon.avif")
src(s0)
.scale(0.9, 1.05)
.contrast(1.4)
.out(o0)
src(o0)
.out(o1)
src(o1)
.blend( // Dark Night
src(o1)
.sub(
noise(() => 10 + 80 * Math.sin(time / 1000))
.luma(() => Math.sin(time / 23))
.invert())
,
() => 0.8 + 0.65 * Math.sin(time / 42)
)
.out(o2)
src(o2)
.modulateRotate(voronoi(10, 0.05).rotate(() => time /120 % 360)
.mask(shape(30).scale(
() => 1.75 + 0.1 * Math.sin(time / 40),
() => 0.9 + 0.1 * Math.sin(time / 13)
))
)
.scale(1.3)
.out(o3)
render(o3)
......@@ -15,14 +15,13 @@ d1 $ gF1 $ gM2
-- $ "k ~ <~ [~ k*<1 1 2 1>]> [<~!7 k> <~!3 k*<1 2>>]"
$ midiOn "^42" (<| "k k k k*<2 4>")
$ midiOff "^42" (<|"k . ~ k ~ ~")
$ "[clubkick,jazz]"
# att 0.02
# rel 0.5
$ "[jazz,kick:5]"
-- # att 0.02
-- # rel 0.5
# lpf 4000
-- # note "-8"
# gain 1.3
d2 $ gF1 $ gM1 $ "~ s ~ s*<1 2>"
# "snare:42"
# "vec1_snare:40"
-- # lpf 2000
-- # room 0.5 # sz 0.8 # dry 1.1
# gain 1.2
......
......@@ -90,9 +90,9 @@ d5 $ gF2 $ gM3 -- Keys
-- # room 0.4
d7 $ gF3 $ gM3 -- VOICES TODO Refine loops
-- $ midiOn "^91" (ply "<2>" . off 1 id . off 2 id . chop "<1!3 4>" . (# cut 7))
$ midiOn "^91" (ply "8 4" . chop "<1 2>". (# cut 7))
$ midiOn "^91" (ply "8 4" . chop "<1 2>". (# cut 7) . (# room 0.3))
$ midiOn "^19" ( -- Intro: Your love
(>| n "<~!3 [~ 11]>") . (# end "<0.2!3 0.45>"))
(>| n "<~!3 11>") . (# end (slow 4 "<0.2 0.55>")))
$ midiOn ("^59"-"^19") ((>| n "<<7 8 9 10> ~ <~!7 11> ~>") . (|* gain 1.1)) -- CHORUS
$ midiOff ("^59"+"^19") (>| n "<<4 5 <5 6> 6> ~ ~ <~!3 11> ~>") -- LEAD
$ "sogood"
......
do
-- resetCycles
let gF1 = (# djfbus 1 (range 0.1 0.9 "^49"))
let gF2 = (# djfbus 2 (range 0.05 0.95 "^50"))
let gF3 = (# djfbus 3 (range 0.05 0.95 "^51"))
let gMask = (midiOn "^41" (mask "t . <f t f <f t>> <t f f <t f>>"))
let gMute = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let gM1 = gMask . gMute
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
let gMaskEnd16 = mask "<t!7 [<t f> <f t> ]>"
setcps (166/60/4)
-- d1 $ gF1 $ gM2
d1 $ gF1 $ gMute2
-- $ midiOff "^42" (<| "<k [~!7 k*<1 2>]>")
$ midiOff "^42" (<| "k . ~ k*<1 2> ~ <~ k k <~ k*4>>")
$ midiOn "^42" (<| "k k . k <k [~ k] k k*2>")
$ "[jazz]"
-- # lpf 300 -- TODO Sound design this kick <3
# cut 1
# gain 1.5
d2 $ gF1 $ gM1
$ midiOff "^43" (<| "~ s ~ [s*<1!3 2> ~]")
$ midiOn "^43" (<| "~ . s*<1!3 2> ~")
$ "[snare:24,snare:51]"
# "h2ogmcp"
# gain (1.0 * "<[1]!16 [1 <1 <1 [1 0.93] 1 [0.9]>>]!16>")
-- # room 0.5 # dry 1.1
-- # delay "<0!15 0.6!1>"
-- # delayt 0.25
d3 $ gF1 $ gM1
$ "~ h ~ h*<1!8 2!8> ~ h*<1 1 1 2> ~ h*<1 2>"
-- $ "h(3,8) h(3,8)"
# pan "0.2 0.8"
# "h2ogmhh:2"
# gain 1.7
-- # att 0.03 # rel 0.9
# legato (range 0.05 0.9 "^32")
d4 $ gF2 $ gM3
$ midiOn "^57" (
superimpose (("e" ~>) .(|+ note 12) . (# cut 41)))
$ note ("0(3,8) . 0(3,8)" + "f bs c . f bs c"
+ "<0 0 0 0 7 7 5 0>"
)
-- # "moog:1"
# "bassWarsaw" |- note 24
# crushbus 41 (range 16 3.5 "^53")
# pan 0.4
# cut 4
# gain 1.4
d5 $ gF3 $ gM3 -- Les ptites keys de fin de session tranquilou
$ midiOn "^90" (ply "4 <8 16>")
$ slow 2
$ slice 8 "<0 1 2 3 4 5 6 7>"
$ "gfunk_lead:10" # cut 4
# gain 1.8
# crushbus 51 (range 16 3.5 "^54")
# pan 0.9
# room 0.3
d8 $ gF1 $ gM1
$ midiOff "^60" (mask "t(4,8,1)") -- Techno drum mask
$ midiOn "^36 " (loopAt 4 . (# "jungle_breaks:22")) -- Raise COMEON!
$ midiOn "^56" (loopAt 4 . (# "jungle_breaks:23")) -- Raise COMEON!
$ midiOn "^92" ( -- Bouton Nassim <3
slice 16 "[0 .. 7] . <[0 .. 7]!3 [0 1 . [2 3]]>"
. loopAt 1 . (# "breaks165")
-- . (# octer 0.4) . ( octersubsub 4)
. (# lpf 2500)
. (# room 0)
)
$ chop 16
$ "breaks165"
# cut 8
# octersub 0.5
# gain 1.2
d9 $ gF3 $ gM3
$ midiOn "^19" (ply "4 8")
$ midiOff "^18" (mask "<f!3 t>")
$ "ouais" # n (slow 4 "<0 1 2 3>" )
# cut 9
# end "<1!12 0.47!3 1>"
# room 0.4
# gain 1.4
once $ "bogdan:3" # cut 9 # orbit 8 # gain 1.7 -- HEY BRO
once $ "bogdan:5" # cut 9 # orbit 8 # gain 1.7 -- THAT's Right
once $ "bogdan:4" # cut 9 # orbit 8 # gain 1.7 -- Moneyyyy
once $ "bogdan:6" # cut 9 # orbit 8 # gain 1.7 -- ETA
do
setcps (120/60/4)
d1 $ "k k k k*<1 2>" # "jazz"
d2 $ "~ cp"
90s_matrix:0
d8 $ "jungle_breaks"
-- Released as "l'ACID d'abord"
do
-- resetCycles
resetCycles
setcps (135/60/4)
let gMask = (midiOn "^41" (mask "t . <f t f <f t>> <t f f <t f>>"))
let gMute1 = (midiOn "^73" (mask "f*16"))
......
......@@ -67,6 +67,7 @@ d7 $ gF3 $ gM3
# crushbus 41 (range 16 2.5 "^53")
# octerbus 42 (range 0 2.5 "^33")
# gain 1.1
# width (range 0 5 "^19")
d8 $ gF1 $ gM1
$ midiOn ("^60" - "^92") (mask "f(4,8)")
$ midiOn ("^36" - "^92") ((loopAt 2) . (# hpf 1500) . (# "jungle_breaks:45")) -- ORL RPZ
......
do
setcps (160/60/4)
-- resetCycles
let gF1 = (# djfbus 1 (range 0.05 0.95 "^49"))
let gF2 = (# djfbus 2 (range 0.05 0.95 "^50"))
let gF3 = (# djfbus 3 (range 0.05 0.95 "^51"))
let gMask = (midiOn "^41" (mask "t . <f t f <f t>> <t f f <t f>>"))
let gMute = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let gM = gMask . gMute
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
-- Harmonic foundation: 16-bar cycle (each chord = 2 bars)
-- Main Bbm/F vamp with Db/Ebm variation at the end
let rt = slow 2 "<bf3 f3 bf3 f3 bf3 f3 df3 ef3>"
d1 $ gF1 $ gMute2 -- KICK: Deep 4otf house kick
$ midiOn "^42" (<| "k k k <k k*2 k [~ k]>")
$ midiOff "^42" (<| "k")
$ fix ((# att 0.01) . (# rel 0.5) . (# lpf 2000)) "kick:4"
$ "[techno:0,808bd:2,kick:4]"
# gain 1.3
d2 $ gF1 $ gM -- CLAP: h2o natural handclap, reverbed
$ midiOn "^43" (<| "~ cp ~ [cp <~ cp>]")
$ midiOff "^43" (<| "~ cp ~ <~ cp*<1 2>>")
$ "h2ogmcp"
-- # room (slow 32 $ range 0.3 0.6 saw)
-- # sz (slow 32 $ range 0.1 0.45 cosine)
# dry 1
# gain 1.1
d3 $ gF1 $ gM -- HATS: h2o sparse offbeat + light flourish
$ midiOn "^76" (ply 2) -- double time on button
$ midiOff "^44" (mask "t(3,8)")
-- n: 0-4 closed Hard→Soft, 5-9 open, 15-19 semi-open
$ "~ h ~ h ~ h ~ <h!3 h*2>"
# "h2ogmhh"
# n "~ 3 ~ 2 ~ 4 ~ <3!3 [3 6]>" -- occasional open hat flourish
# gain (1.5 * "~ 0.7 ~ 0.8 ~ 0.65 ~ <0.7!3 [0.7 0.5]>")
d4 $ gF3 $ gM3
$ loopAt 16 $ chop 8
$ "gfunk_lead:7"
# gain 1.2
# room 0.3
# crushbus 41 (range 16 3.5 "^53")
# lpfbus 42 (range 300 1200 "^33")
d5 $ gF3 $ gM3 $ loopAt 16 $ chop 8
$ "gfunk_lead:7"
# octersubbus 51 (range 0 2.9 "^34")
# hpf 1000
# gain 1.3
d8 $ gF1 $ gM1
$ loopAt 2 $ chop 8
$ midiOn "^56" ((|* gain 1.2) . loopAt 2 . (>| "jungle_breaks:19"))
$ "jungle_breaks:74"
......@@ -14,15 +14,16 @@ let gMaskEnd16 = mask "<t!7 [<t f> <f t> ]>"
setcps (140/60/4)
-- d1 $ gF1 $ gM2
d1 $ gF1 $ gMute2
$ midiOff "^42" (<| "<k [~!7 k*<1 2>]>")
-- $ midiOn "^42" (<| "k . ~ k*<1 2> ~ <~ k k <~ k*4>>")
-- $ midiOff "^42" (<| "<k [~!7 k*<1 2>]>")
$ midiOff "^42" (<| "k . ~ k*<1 2> ~ <~ k k <~ k*4>>")
$ midiOn "^42" (<| "k k . k <k [~ k] k k*2>")
$ "[kick:5,clubkick]"
# room 0.2 # dry 1.1
# lpf 3000 -- TODO Sound design this kick <3
# cut 1
# gain 1.5
# gain 1.6
d2 $ gF1 $ gM1
$ midiOn "^43" (fast 2)
$ someCyclesBy "<0!16 1!16>" (<| "~ s ~ s*<1!4 1!3 2 1!3 2 2!4>")
$ someCyclesBy "<1!16 0!16>" (<| "~ <~ [<s s*2 s [s*2 ~]>]>")
$ "[snare:24,snare:51]"
......@@ -62,7 +63,7 @@ d8 $ gF1 $ gM1 -- Come on breaks!
$ loopAt 2
$ "jungle_breaks:26"
# cut 8
# gain 1.4
# gain 1.8
d4 $ gF2 $ gMute3 -- Bassline aqualgorithmique
-- $ midiOn "^57" ((# tremdp 1) . (# tremrbus 43 "<[8 4] [<4 8> <2 16>]>"))
$ slow 2 $ note (
......@@ -91,7 +92,7 @@ d5 $ gM3 $ gF3 -- Marimba fondamental
-- # squizbus 51 (range 0 2.5 "^54")
-- # delay 0 # delayfb 0.8 # delayt 0.25
# pan 0.9
# gain 1.4
# gain 1.6
# room 0.3
d10 $ gF3 $ gM3 -- Menace
$ someCyclesBy "<1!16 1!32 0!16>" (>| note "<b3 ~ ~ <[~!7 c4] [~!5 c4 ef4 <c4 fs4>]>>")
......@@ -139,6 +140,7 @@ d8 $ gF1 $ gM1
# cut 8
# octersub 0.5
# gain 1.2
once $ "bogdan:3" # cut 9 # orbit 8 # gain 1.7 -- HEY BRO
......
do
-- resetCycles
setcps (124/60/4)
let gMask = (midiOn "^41" (mask "t . <f t f <f t>> <t f f <t f>>"))
let gMute1 = (midiOn "^73" (mask "f*16"))
......@@ -8,43 +9,57 @@ let gM1 = gMask . gMute1
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
d1 $ gF1 $ gM2
$ midiOn "^42" (<| "k*4")
-- $ midiOff "^42" (<| "k . ~ k")
$ "kick:5"
# gain 1.5
$ midiOn "^42" (<| "k k k <k [<~!3 k> k]>")
$ midiOff "^42" (<| "k . <[~ k] k(<3 5>,8)>")
$ "[techno:0,808bd:2,909,kick:4]"
-- $ "kick:5"
# gain 1.7
# lpf 400
d2 $ gF1 $ gM1
$ "~ s ~ [s*<1 2> <~ s*<2 [4 2]>>]"
# "vec1_claps" # n 10
# gain 1.8
# gain 1.3
# lpf 2000
d3 $ gF1 $ gM1
$ "[~ h*<1!3 <1 2 [4 2] 1?>>]*4"
# "h2ogmhh" # gain 1.4
$ midiOn "^44" (<| "[~ h*<1!3 <1 2 [4 2] 1?>>]*4" )
$ midiOff "^44" (<| "h(4,8,1)")
$ "h2ogmhh"
# gain 1.4
# room 0.3
# dry (slow 16 $ range 0.2 1.8 perlin)
# sz 0.4
d4 $ gF3 $ gM3
$ note "<bf2 bf2 bf2 [bf2@7 cs3]>"
# "bassWarsaw"
$ struct "t . t(<1 3 5>,8)"
$ note (
"<bf2 bf2 bf2 [bf2@7 cs3]>"
+ "[0,12]"
+ (arp "up" "c'min'4")
)
# "bassWarsaw"
-- |+ note 12
# room 0.3
# crushbus 41 (range 16 3.5 "^53")
# room 0.2 # dry 1.2 # sz 0.7
# gain 1.2
# gain 1.4
d5 $ gF3 $ gM3 -- LE PIMENT BRESILIEN
$ midiOn "^90" (ply "<4!3 8>")
$ midiOn "^58" (striate "2" . chop 8)
$ slice 4 "<0 1 2 3>"
$ slice 8 "<[0 1] [2 3] [4 5] <[6 7] 5*<2 4 4 8>>>"
-- $ slice 4 "<0 1 2 3>"
-- $ slice 4 "<0 1 2 3>"
$ "gfunk_lead:2" # cut 5
# gain 1.7
# room 0.3
# octerbus 51 (range 0 1.4 "^54")
# octersubbus 52 (range 0 2 "^34")
d7 $ gF3 $ gM3
$ midiOn "^91" (ply 2)
$ note ("[f3 cs3 c3 cs3 f3 cs3 <c3 f3> <cs3 fs3>]"
-- + "[0,12]"
+"<0!4 12!4 24!4 36!4>"
)
# "FMRhodes2"
# gain 1.5
# gain 1.8
# modIndex (range 0 16 "^55")
-- # cut 9
d10 $ gF3 $ gM3 -- Menace
......
do
setcps (160/60/4)
-- resetCycles
let gMask = (midiOn "^41" (mask "t!3 <t!3 [f <t f>]>"))
let gMute = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let gM1 = gMask . gMute
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
d1 $ gF1 $ gM2 -- Kick
$ midiOn "^42" (<| "k k k <k <[~ k] k*2>>")
$ midiOff "^42" (<| "k . ~. k ~ ~ ")
$ "[kick:4]"
# gain 1.2
# lpf 400
# cps ((range 60 180 "^29")/60/4)
d2 $ gF1 $ gM1
$ midiOn "^43" (<| "~ s ~ s")
$ midiOn "^43" (<| "~ s ~ s*<1 2 [2 1] [4 <2 8>]>" )
$ "cp" # hpf 1400 # gain 1.3
d3 $ gF1 $ gM1$ "hh(3,8) hh(3,8,1)" # "vec1_snare:11"
d5 $ slow 2 $ "playa" # begin "<0.1!4 0.2!4 0.3!4 0.4!4>" # cut 5
d6 $ "playa" # cut 6
d8 $ slice 32 0 $ "playa" # cut 8
d9 $ "playa/4" # begin 0 # end 0.18 # cut 9 # lpf 1200 # room 0.4
once
......@@ -25,7 +25,7 @@
do
-- resetCycles
resetCycles
setcps (140/60/4)
let gMask = (midiOn "^41" (mask "t . <f t f <f t>> <t f f <t f>>"))
let gMute = (midiOn "^73" (mask "f*16"))
......
-- url: "/home/pln/Work/Art/GLITCHWAVE/outputs/decolle.gif"
do
-- resetCycles
setcps (120/60/4)
let gMask = (midiOn "^41" (mask "t . <f t f <f t>> <t f f <t f>>"))
let gMute = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let gM1 = gMask . gMute
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
d1 $ gF1 $ gM2
$ midiOn "^42" (<| "k k . k(<2 2 [2 4] <3 4 3 5>>,8)")
$ midiOff "^42" (<| "k . ~ k ~ <~!3 k*2>")
$ fix ((|* gain 0.9) . (# lpf 1000)) "jazz"
-- $ fix ((# att 0.02) . (# rel 0.5) . (# lpf 400)) "kick:4"
$ "[jazz,kick:4]"
# gain 1.1
# lpf 300
d2 $ gF1 $ gM1
$ midiOff "^43" (<| "~ . s@3 <~ s*<1 <2 [4 2]>>>")
$ midiOn "^43" (<| "~ s ~ <s!3 s*<2 [4 2]>>")
$ fix (# lpf 4000) "snare:30"
$ "[vec1_snare:38]"
# lpf 4800
# gain 1.3
# cut 2
d3 $ gF1 $ gM1 -- Hihat
$ midiOn "^76" (ply "2 <2!3 4>")
$ midiOn "^44" (ply "2 <2!3 4>")
$ "~ h ~ h ~ h*<1 2 1 <1 [4 2]>> ~ h*<1 <1 1 0 2> 1 <2 4>>"
-- # "db:0"
# "h2ogmhh"
-- # attbus 32 (slow 32 $ range 0.4 0.04 saw)
# legato (range 0.1 0.5 "^52")
# room 0.2
# dry 1.3
# gain 2.9
# pan 0.3
d8 $ gF1 $ gM1 -- BROKEN BEAT | BREAKS STACK
$ midiOff "^59" (mask "t(4,8,1)" . chop 4)
$ loopAt 2 $ chop 16
$ midiOn "^92" (ply "<2 [2 4]>")
$ midiOn "^60" ( -- Broken Beat!
whenmod 8 "<7 7 7 3>" rev
. splice 8 "0 3 2 7 . [1 5]*<1!3 2> [4 6]*<1 2>")
$ midiOn "^36" ((|* gain 1.1) . (# n "29"))
$ midiOn "^56" (loopAt 2 . (# n "19"))
$ loopAt 0.5 $ "jungle_breaks:95"
# pan 0.7
# gain 1.45
# lpf 4000
d7 $ gF1 $ gM1
$ midiOff "^59" (mask "t(4,8,1)" . chop 4)
-- $ jux (rev . (# cut 71))
-- $ slice 16 (run 8)
$ loopAt 2
$ chop 8
$ "trance_loops:1"
# pan "0.2 0.8"
# cut 7
# gain 1.3
d10 -- FIXME Other RISER
$ chop 4
$ mask "<f!24 t!8>"
$ loopAt 8
$ "risers:8"
# cut 10
# hpf 2000
d11 $ gF1 $ gM1
$ "~ h ~ [h*2 ~]"
# "h2ogmcy" # n "<1 1 1 1 2 2 3 2 3 4 3 2>"
# gain 1.2
# room 0.4 # sz 0.9
# delay 0.4
# pan (slow 16 $ range 0.2 0.8 sine)
-- # octer 0.5
# cut 11
-- /home/pln/Work/Art/GLITCHWAVE/outputs/digital_flow.gif
do
setcps (80/60/4)
-- resetCycles
let gMute = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let gM1 = gMute
let gM2 = gMute2
let gM3 = gMute3
let width = pF "width"
let lagTime = pF "lagTime"
let rq = pF "rq"
let filterRange = pF "filterRange"
-- lagTime = 0.12, filterRange = 6, width = 0.51, rq = 0.3;
d1 $ gF1 $ gM2
$ midiOn ("^41"-"^42") ((<| "k(3,8) ~"))
$ midiOff ("^42"+"^41") (<| "k*<1!7 2> ~ . ~ <~!7 [k*2 k]>")
$ midiOn "^42" (fast 2 . (<| "k k k*<1!8 2!8> k*<1 <2!2 4>>"). (# "kick:4") . (|* gain 0.54))
$ "[808bd:1,808bd:11]" -- 1 4 6 9 11
# octersubsub 1.2
# gain 2
d2 $ gF1 $ gM2
$ midiOn "^43" (fast 2 . (<| "~ c ~ c*<1!7 <2 [4 2]>>"))
$ midiOff "^43" (<| "~ . ~ c")
$ "vec1_claps:18"
# gain 1.4
d3 $ gF1 $ gM1
$ midiOn "^76" (fast "2 <2 2 4 8>")
$ midiOff "^44" (mask "f(4,32)" . chop 16)
$ (# pan "[0.25 0.75]*4")
$ ply (slow 16 "<2 [2 <4!3 [4 2]>] 4 [4 8 4] [8 4] 8 [8 16 8] 16>")
$ chop 16
$ loopAt 4
$ "trance_loops:2"
# cut 3
# gain 1.4
# room (slow 32 $ range 0 0.4 saw)
# dry 0.4
# sz 0.3
d4 $ gF2 $ gM3
$ midiOn "^89" (struct "t*16")
$ midiOff "^89" (mask "[f [t f t] t t@2]") -- SILENCES
$ midiOn "^57" (stutWith 4 "q" ((|* gain 0.9) . (|+ pan 0.1). (|+ cut 1)))
$ note "[cf4 [f4 cf4 f4] <[<cs4 fs4> cs4]!3 fs4> bf3@2]"
# "giorgio_syn:43" # n (slow 16 $ "<47 48 47 46>")
# cut 40
# crushbus 41 (range 16 2.5 "^53")
# octerbus 42 (range 0 1.5 "^33")
# pan 0.2
# legato 1.5
# room 0.5
# sz 0.4
# dry 1.8
d5 $ gF3 $ gM3
$ midiOn "^90" (# rq (slow 8 $ range 0.1 0.01 saw))
$ fast 2 $ arp "up"
$ note (cat [
"[bf4,cs5,f5,bf4,cs5,f5,bf4,cs5]",
"[bf4,cs5,f5,bf4,cs5,f5,fs5,f5]",
"[bf4,cs5,f5,bf4,cs5,cs6,c6,bf5]",
"[bf4,cs5,f5,bf4,cs5,<cs6!3 f5>,c6,<cs6 <ef6 f6>>]"
--BOOYAH ARPEGE INTENSE!
-- "bf4"
]
- "<12!16 0!16>"
- 12
+ "[0,12]"
)
# "FMRhodes1"
-- # "giorgio_syn:20" |+ note (12 - 2)
# "acidOto3092"
-- lagTime = 0.12, filterRange = 6, width = 0.51, rq = 0.3;
-- 18 │
# width (range 0.02 0.8 "^54") -- /!\ FIXME EXPLOSIF /!\
# filterRange (range 0 8 "^34")
# room 0.4 # dry 0.8
# gain 1.2
# att 0.01 # rel 10
-- # pan "[0.4|0.6]*8"
d8 $ gF1 $ gM1
-- $ midiOff "^60" (mask "f(8,16)" . chop 8)
$ slice 8 "<~!3 0> <1!3 ~> 2 <3!3 ~> 4 <5!3 ~> 6? 7*<1 2>"
$ chop 16
$ loopAt 2
$ "drums_nes:5"
# cut 8
# gain 1.4
d9 $ gF3 $ gM3
$ ((# att 0.45) . (# rel 2))
$ slice 8 "~ ~ ~ 7"
$ "molotov:7"
# cut 9
# gain 1.5
# speed 0.9
d10 $ gF3 $ gM3 -- GIMME THAT
$ "~!3 v" # end 0.1
# "vocal_bordel"
# cut 10
# gain 1.4 # lpf 3000 # room 0.3 # octersub 0.8
d11 $ gF3 $ gM3 -- GIMME THAT
$ ((0.25 ~>) . (# begin 0.1))
$ "~!3 v"
# end 0.245
# "vocal_bordel"
# cut 11
# gain 1.3 # lpf 3000 # room 0.3 # octersub 0.8
......@@ -36,13 +36,14 @@ d4 $ f3 -- Atmospheric synth: aerial questions
$ midiOn "^89" (|+ note "<2 2 4 <4 12>>") $ midiOn "^57" (chop "<[16@3 32] [32@3 64]>")
$ "90s_synatm:8/4" # cut 4 # room 0.8 # legato 4 # dry 1 # pan 0.45
# legato 2
# crushbus 41 (range 16 2.5 "^53")
d5 $ f2 -- Synth: ELECTRONIC ANSWERS
$ midiOn "^90" (ply "1 <1!3 [0 1 <2 0> <0 2>]> <2!3 [[2 0] 1]> <1 2>" .slice 16 ("<0 1 2 3>*8" + "<0!4 4!4>"))
$ midiOn "^58" (chop "<4 8 16 [32 64 . 128]>")
$ "90s_synatm:14/4" # cut 5 # room 0.85 # sz 0.8 # pan 0.43 # dry 1
# delayfb 0.25 # delayt 0.25 # delay 0.8
# panbus 51 (range 0.8 0.65 saw) # crushbus 52 (range 16 2.85 "^54")
# octersubbus 53 (range 0 1.85 "^34") # gain 1.5
# octersubbus 53 (range 0 1.85 "^34") # gain 1.6
d7 $ f3 -- High lead: Winds of truth
$ juxBy 0.5 ((# cut 61) . rev) -- Jux rev <3
$ whenmod 8 6 (swing "<4 2>")
......@@ -73,9 +74,6 @@ d8 $ f1 $ gMute2 -- Breaks divins
# pan "[<0.35!3 0.65> <0.65!3 0.35>]*4"
-- # midiG' "^84" 0 1.2
# pan 0.8
d10 $ f1 -- RANDOM FOREST NOISES
$ fix (
-- kCrush .
......
-- url: "/home/pln/Work/Art/GLITCHWAVE/outputs/decolle.gif"
do
-- resetCycles
resetCycles
setcps (120/60/4)
let gMask = (midiOn "^41" (mask "t . <f t f <f t>> <t f f <t f>>"))
let gMute = (midiOn "^73" (mask "f*16"))
......@@ -17,6 +17,7 @@ d1 $ gF1 $ gM2
-- $ fix ((# att 0.02) . (# rel 0.5) . (# lpf 400)) "kick:4"
$ "[jazz,kick:4]"
# gain 1.1
# lpf 300
d2 $ gF1 $ gM1
$ midiOff "^43" (<| "~ . s@3 <~ s*<1 <2 [4 2]>>>")
$ midiOn "^43" (<| "~ s ~ <s!3 s*<2 [4 2]>>")
......@@ -32,7 +33,7 @@ d3 $ gF1 $ gM1
# att (slow 32 $ range 0.4 0.04 saw)
# rel 2
# room 0.2 # dry 1.3
# gain 1.4
# gain 1.6
d4 $ gF2 $ gM3
$ midiOn "^57" (sometimesBy 0.5 ((|- note 12) . (# cut 41)))
$ midiOn "^89" (ply 2)
......@@ -59,17 +60,17 @@ d5 $ gF3 $ gM3
# room 0.4 # sz 0.8 # dry 1.1
-- # crushbus 51 (range 16 3.5 "^54")
d7 $ gF3 $ gM3
$ midiOn "^91" (ply "<2 4 <8 [16 8]>>")
$ slow 4
-- $ midiOn "^91" (ply "<2 4 <8 [16 8]>>")
-- $ slow 4
$ midiOn "^55" (slow 4)
$ slice 16 (run 6)
$ chop 16
-- $ slice 16 (run 6)
$ slice 16 (8 + (slow 2 $ "<0 4 8 12>"))
$ "airports" # cut 5 # speed 0.5
# gain 1.2
# room 0.4
# att 0.02
# rel 2
# freezebus 71 "^55"
-- # freezebus 71 "^55"
# pan 0.8
d8 $ gF1 $ gM1 -- BROKEN BEAT | BREAKS STACK
$ loopAt 2 $ chop 16
......
......@@ -50,7 +50,7 @@ d4 -- Basse convaincante
# gain 1.4
# pan 0.4
|* gain ("1@5 0.95 0.98 0.95" * 1.1 )
d5 $ gF3 -- Appel oiseau joyeux oiseau joyaux
d5 $ gM3 $ gF3 -- Appel oiseau joyeux oiseau joyaux
$ midiOn "^58" ( -- Oiseau de nuit
rev . (|+ note "<<0 0 [0 -7] [0 -7]>!3 [0!3 -12]>")
)
......@@ -90,7 +90,7 @@ d6 $ gF1 $ gM1 -- HAWKS
# dry 1.025
-- # room 0
-- # midiG' "^31" 0 1.5
d7
d7 $ gM3 $ gF3 -- CHORUS OF HCs
$ gM3 $ gF3 -- High carillon!
$ midiOn "^91" (off "[e,s]" (ply "<1 2>") . (# legato "e"))
$ midiOn "^59" ( -- Basse reponse
......@@ -106,7 +106,7 @@ d7
# octersubbus 72 (range 0 1.4 "^55")
# room 0.2 # dry 1.08 # sz 0.3
# gain 1.4
d9 $ gF3 -- Pads atmospheriques
d9 $ gF3 $ gM3-- Pads atmospheriques
$ off 0.25 ((# pan 0.8) . (# cut 91))
$ note ("<c4 c4 c4 c4 gs3 gs3 b3 b3>"
-9 -- calage
......
......@@ -11,7 +11,7 @@ let gM = gMask . gMute
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
d1 $ gM2 $ gF1
$ midiOn "^42" (fast 2 . (<| "k k k <k [k*2 <k [~ k]>]>"))
$ midiOn "^42" (fast 1 . (<| "k k k <k [k*2 <k [~ k]>]>"))
$ midiOff "^42" (<| "k . k(<3 [3 <5 4 5 8>]>,8)")
$ "[jazz, kick:5,808bd:2]"
# gain 0.8
......
......@@ -46,7 +46,7 @@ d5 $ gF3 $ gM3
$ note ("[0,12]"
- 24
+ "<[f4 [~ g4] [gs4 ~] as4 c5@4] [f5 [~ f5] . ef5 df5 c5@2] [bf4@3 bf4 . gs4 g4 f4@2] f4>" + 12)
# "superfork seewe r5"
# "superfork"
# room 0.3
# pan "0.2 0.8 0.8 0.2"
# octersubbus 52 (range 0 16 "^54")
......
......@@ -37,13 +37,15 @@ d1 $ gF1 $ gM2
$ midiOff "^42" (>| n "0 . ~ [~ <~!2 0!2>]")
$ midiOn "^42" (>| n "0 0 0 0*<1 2 1 4 1 2 2 1>")
$ "[rampleK1,jazz]"
# gain 1.8
d2 $ gF1 $ gM1
$ "~ s ~ s"
$ "~ s ~ s*<1!7 <2 [4 2]>>"
-- $ "~ <s!3 [s s*2 . ~]>"
# "[rampleD4:3,snare:30]"
-- # lpf 2000
# gain 1.4
d3 $ gF1 $ gM1
$ midiOn "^44" (fast 2)
$ "~ h ~ h ~ h ~ h*<1 2>"
# "h2ogmhh:3"
# gain 1.8
......@@ -55,6 +57,7 @@ d4 $ gF2 $ gM3
# octersubbus 42 (range 0 1.5 "^53")
# room 0.4
# lpf 1500
# gain 1.6
d5 $ gF3 $ gM3 -- Synth Marimba
$ superimpose (struct "t(<2 2 3 3>,8) t(<0 1 3 <1 5>>,8)"
. (|+| note (arp "<up!3 down>" "c'min'8")))
......@@ -78,7 +81,7 @@ d7 $ gF3 $ gM3
$ chop 4
$ "leon" # n "<0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 16 17 18!4>"
# cut 7
# gain 1.2
# gain 1.7
# roombus 71 (range 0.0 0.8 saw)
# panbus 72 (slow 4 $ range 0.2 0.8 (sine + (slow 4 $ sine)))
# tremrbus 51 (range 0 8 "^55")
......
do
-- resetCycles
let width = pF "width"
let gMask = (midiOn "^41" (mask "t!3 <t!3 [f <t f>]>"))
let gMute = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let dMask = (whenmod 8 7 (mask "t t <t f> f"))
let gM1 = gMask . gMute
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
setcps (93/60/4)
d1 $ gF1 $ gM1
$ midiOn "^42" (<| "k k k k(<1 [3 1] 3 [3 8]>,8)")
$ midiOff "^42" (<| "k . k(3,8)")
$ "jazz"
# gain 1.4
# lpf 4000
d2 $ gF1 $ gM1
$ "~ s ~ s"
# "vec1_snare:33"
d3 $ gF1 $ gM1 $ fast "1 [1|2]!6 [2|2|4|2]*4" $ "hh*16" # "h2ogmhh"
# gain "1 [1|0.9|0.93|0.97]!14 1"
d4 $ gF2 $ gM3 $ midiOn "^89" (ply 8)
$ slice 4 "<0 1 2 3>" $ "noir_bass:5" # cut 4
# room 0.4 # sz 0.4 # dry 1.1
# crushbus 41 (range 16 2.5 "^53")
# octersubbus 42 (range 0 2.5 "^33")
d7 $ gM3 $ gF3
$ midiOn "^91" (ply 4)
$ midiOn "^35" ((# n "<1 ~>") . (# end "<0.4!3 <0.8 1>>")) -- PUTAINN!!
$ midiOn ("^59" - "^35") ((>| n "<2 ~>") -- THE JUICE
. (# end (slow 2"<0.45 <0.8 1>>"))
. (# begin (slow 2 "<0 <0.45 0.8>>"))
)
$ midiOff ("^59"+"^35") (-- THE MOMENT
# n "<0!3 1 0 0 1 ~>")
$ "alexis"
# cut 7
# pan 0.3
d5 $ gM3 $ gM3
$ (0.5 ~>)
$ midiOn ("^58" - "^34") (>| n "<6 5 6 6*2 10 ~ 11 ~ 12 ~ ~ ~ 12 ~ 13 13>")
$ midiOn "^34" ((>| n "<15 16>") . (# end "<1!4 0.45 0.5 0.45 0.5>"))
$ midiOff "^58" (slow 2 . (>| n "<2 0 1 ~ 2 1 3 ~>"))
$ "sarko"
# pan 0.8
# cut 5
# gain 1.3
d8 $ gF1 $ gM1
$ chop 8
$ loopAt 2
$ midiOn "^56" (# n 45)
$ "jungle_breaks:40"
# cut 8
d12 $ gF3 $ gM3
-- $ gF3 $ gM3
$ note "<[ef4 . ef4@3 d4@2 ef4@2] [ef4 . ef4@3 f4@2 d4@2] [c4 . ef4@3 f4@2 g4@2] [c4]>"
# "FMRhodes1"
# modIndex "[0,0.5]"
# gain 1
# room 0.3 # sz 0.4
once $ "alexis"
# cut 7
once $ "sarko"
-- Bain Electrique, ex Bain Bouillant
do
resetCycles
-- resetCycles
setcps (128/60/4)
let gF1 = (# djfbus 1 (range 0.05 0.95 "^49"))
let gF2 = (# djfbus 2 (range 0.05 0.95 "^50"))
......@@ -40,7 +40,7 @@ d3 $ gF1 $ gM1 -- Contretemps
-- $ "~ h ~ <~!4 h!28> ~ <~!3 h ~!3 h h!8> ~ <h ~ h ~ h!3 <h*2 [~ h*<1 2>]>>"
# "[snare:38]"
# room 0
# gain 0.9
# gain 1.3
d4 $ gO $ gF2 $ gMute3 -- SUBSUB INFRABASS
$ superimpose (
# crushbus 41 (range 12 2 "^53")
......@@ -56,7 +56,7 @@ d4 $ gO $ gF2 $ gMute3 -- SUBSUB INFRABASS
# cut 4
# att 0.1 # rel 1
# octersubsubbus 42 (range 0 1.2 "^33")
# gain 1
# gain 1.8
# pan 0.3
d5
-- $ superimpose ((# distortbus 51 (range 0 1.2 "^34")) . (|+ cut 1))
......
......@@ -44,7 +44,7 @@ d4 $ gF2 $ gM3-- Basse Magie Noire Meta-Programmation. :sorcerer:
# cut 4
# room 0.7
# sz 0.3 # dry 1.5
# gain 1.2
# gain 1.5
d5 $ gF2 $ gM3 -- Giorgio Friendo
$ slow 2
$ stack [
......
......@@ -56,7 +56,7 @@ d4 $ gF2 $ gMute3
-- # distortbus 41 (range 0 5 "^53")
# gain (1.1 - 0.1 * "^33" - 0.1 * "^29")
# room "<0.3!12 0.35 0.4 0.48 0.6>"
d5 $ gF3 $ gM3
d5 $ gF3 $ gM3 -- Mario's 8-bit Harp
$ someCyclesBy "^34" ((|- note 12) . (stut 4 0.5 "e"))
$ midiOn "^58" (superimpose (
(|- note 12) . (# cut 51) . (# pan 0.2))
......@@ -72,13 +72,13 @@ d5 $ gF3 $ gM3
# pan 0.85
# modIndex 0.3
# legato 2
# gain 1.2
# gain 1.5
d7 $ silence -- FIXME add d7, maybe arps/moog?
d9 $ gF2 $ gM3 -- Essouflement amoureux
$ arp "up"
$ note (
-- "<a a g5 g5> ~ <~!24 d6!7 d5> <a a g g> ~ <~!12 d6!4> <a a g g> <~!16 d6!16>"
"<a a g5 e5> ~ <~!0 d6!3 d5> <a a g5 cs6> ~ ~ ~ ~"
"<a a g5 e5> ~ <~!0 d6!3 d5> <a a g5 cs6> ~ ~ <~ <~ e6> ~ g6> ~"
-- "c8'maj'4"
+ 4
+ 12
......@@ -88,7 +88,8 @@ d9 $ gF2 $ gM3 -- Essouflement amoureux
# rel 2
# "jungbass:1" # cut 9
# room 0.3 # dry 1.4 # sz 0.9
d10 $ gF3 -- Angels of constance
# gain 1.5
d10 $ gM3 $ gF3 -- Angels of constance
$ note (slow 2 $ ("<[a5, d6] [g5, <e6 <cs6 [cs6 a5]>>]>" - "[12,24]"))
# "moogBass"
# room 0.2
......@@ -114,3 +115,6 @@ d8 $ gM1 $ gF1
-- # lpf 5000
# cut 8
# gain 0.9
once $ note "d%'maj" # "harpsichord2"
do
-- resetCycles
let gF1 = (# djfbus 1 (range 0.1 0.9 "^49"))
let gF2 = (# djfbus 2 (range 0.05 0.95 "^50"))
let gF3 = (# djfbus 3 (range 0.05 0.95 "^51"))
let gMask = (midiOn "^41" (mask "t . <f t f <f t>> <t f f <t f>>"))
let gMute = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let gM1 = gMask . gMute
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
let gMaskEnd16 = mask "<t!7 [<t f> <f t> ]>"
setcps (110/60/4)
-- d1 $ gF1 $ gM2
d1 $ gF1 $ gMute2
-- $ midiOff "^42" (<| "<k [~!7 k*<1 2>]>")
$ midiOff "^42" (<| "k . ~ k*<1 2> ~ <~ k k <~ k*4>>")
$ midiOn "^42" (<| "k k . k <k [~ k] k k*2>")
$ "jazz"
# gain 1.4
# cut 1
d2 $ gF1 $ gM1
$ midiOff "^43" (<| "~ s ~ [s*<1!3 2> ~]")
$ midiOn "^43" (<| "~ . s*<1!3 2> ~")
$ "[snare:24,snare:51]"
# "h2ogmcp"
# gain (1.0 * "<[1]!16 [1 <1 <1 [1 0.93] 1 [0.9]>>]!16>")
# room 0.5 # dry 1.1
# delay "<0!15 0.6!1>"
# delayt 0.25
d3 $ gF1 $ gM1
$ "~ h ~ h*<1!8 2!8> ~ h*<1 1 1 2> ~ h*<1 2>"
-- $ "h(3,8) h(3,8)"
# pan "0.2 0.8"
# "h2ogmhh:2"
# att (range 0.02 0.5 "^32")
# rel 1
# gain 1.7
# att 0.03 # rel 0.9
# legato (range 0.05 0.9 "^32")
-- d4 $ gF2 $ gM3
-- $ note ("0(3,8) . 0(3,8)" + "f bs c . f bs c")
-- -- # "moog:1"
-- # "bassWarsaw" |- note 24
-- # crushbus 41 (range 16 3.5 "^53")
-- # pan 0.4
-- # cut 1
d4 $ gF3 $ gM3
$ note "d" # "bassWarsaw"
d5 $ gF3 $ gM3
$ "nujazz_keys125"
# n (slow 4 "<37 38 39 40>")
# cut 5
d7 $ gF3 $ gM3
$ chop 8
$ loopAt 8
$ "rhadamanthe_vocal:31"
# cut 7
# gain 1.3 # sz 0.5 # dry 1.1 # room 0.4
d8 $ gF1 $ gM1
$ midiOff "^60" (mask "t(4,8,1)") -- Techno drum mask
$ midiOn "^36 " (loopAt 4 . (# "jungle_breaks:22")) -- Raise COMEON!
$ midiOn "^56" (loopAt 4 . (# "jungle_breaks:23")) -- Raise COMEON!
$ midiOn "^92" ( -- Bouton Nassim <3
slice 16 "[0 .. 7] . <[0 .. 7]!3 [0 1 . [2 3]]>"
. loopAt 1 . (# "breaks165")
-- . (# octer 0.4) . ( octersubsub 4)
. (# lpf 2500)
. (# room 0)
)
$ chop 16
$ "breaks165"
# cut 8
# octersub 0.5
# gain 1.2
d9 $ gF3 $ gM3
$ loopAt 4 $ chop 8
$ "rhadamanthe_vocal:61/2" # cut 9
-- $ midiOn "^19" (ply "4 8")
-- $ midiOff "^18" (mask "<f!3 t>")
-- $ "ouais" # n (slow 4 "<0 1 2 3>" )
-- # cut 9
-- # end "<1!12 0.47!3 1>"
-- # room 0.4
--
--
-- d9 -- Bogdan the Grime sample provider
-- $ whenmod 16 12 ( -- I'm from Cardiff!
-- (# "bogdan_grime:1") . (# begin "<0!3 0.25>") . (# end "<0.5!3 0.25>")
-- )
-- $ whenmod 16 8 ((# begin 0.66) . (# end 1)) -- Pints <3
-- $ end "<~ <0.42 <0.66 1>>>"
-- # "bogdan_grime:3"
-- -- # n 0 # begin 0 # end 1 # cut 9 -- FIXME DEBUG
-- # delay "<0 <0.7 0>>"
-- # delayt "h"
-- # delayfb 0
-- # speed 0.92
-- -- # room 0.4
-- # gain 1.6
-- d8 $ gF1 $ gM1 -- Come on breaks!
-- $ chop 8
-- $ midiOn "^60" (mask "t(4,8,1)" . chop 4)
-- $ midiOn "^92" (ply 4)
-- $ midiOn "^36" (loopAt 2 . (# n "<61>")) --
-- $ midiOn "^56" ((# n "19") . (|* gain 1.2)) -- Pure COMEON!
-- -- $ midiOn "^56" ((# n "23")) -- Raise COMEON!
-- $ midiOff "^60" (mask "t(4,8)")
-- $ loopAt 2
-- $ "jungle_breaks:26"
-- # cut 8
-- # gain 1.8
-- d4 $ gF2 $ gMute3 -- Bassline aqualgorithmique
-- -- $ midiOn "^57" ((# tremdp 1) . (# tremrbus 43 "<[8 4] [<4 8> <2 16>]>"))
-- $ slow 2 $ note (
-- -- "<0!8 0(3,8)!8> 0" + "<d4!3 a3> <fs4 e4 d4 b3>"
-- "<<fs <[fs@15 e] [fs@14 cs e]>> b4>"
-- -- "c g"
-- - 12
-- + 2
-- )
-- # "giorgio_syn:1"
-- -- # "bassWarsaw"
-- # cut 4
-- # pan 0.3
-- # room 0.4
-- # octersubsub 0
-- # crushbus 41 (range 16 3.5 "^53")
-- # octersubsubbus 42 (range 0 2 "^33")
-- # gain 1.7
-- d5 $ gM3 $ gF3 -- Marimba fondamental
-- $ midiOff "^58" (mask "t(<4 <2 4>>,4) t(<3!7 5>,8)")
-- $ juxBy 0.4 rev
-- $ note ("<[b4 [~ d5]. [fs5@3 fs5]] [e5 fs5 e5 fs5. [d5@3 fs5]]>")
-- # "marimba1"
-- -- # att (range 0.8 0.2 "^34")
-- # rel 1
-- -- # squizbus 51 (range 0 2.5 "^54")
-- -- # delay 0 # delayfb 0.8 # delayt 0.25
-- # pan 0.9
-- # gain 1.6
-- # room 0.3
-- d10 $ gF3 $ gM3 -- Menace
-- $ someCyclesBy "<1!16 1!32 0!16>" (>| note "<b3 ~ ~ <[~!7 c4] [~!5 c4 ef4 <c4 fs4>]>>")
-- -- Variante Adrianesque
-- $ someCyclesBy "<0!16 1!32 0!16>" (>| note "<b3 ~ ~ [ c4@2 ~ . ef4 fs4 c4]>")
-- -- Variante Adrianesque Folle
-- $ someCyclesBy "<0!16 1!32 1!12 0!4>" (>| note "<b3 ~ [g4 a4 b4 a4 es4 a4 fs4 a4 c4] [~ ~ as4 ~]>")
-- -- Variante Adrianesque Folle2
-- $ someCyclesBy "<0!16 1!32 0!12 1!4>" (>| note "<[b3 ~] [as3 bs3 g3 cs4 ~ d4] [~ gs4 ~ ~] [~ ~ [as4 as4] ~]>")
-- $ "90s_synatm:10"
-- # room 0.3 # sz 0.8
-- # gain 2
-- # att 0.10
-- # rel 10
-- # crushbus 101 (range 16 3.5 "^14")
-- # legato 2
-- # octersub 1
-- # cut 9
-- d7 $ gM3 $ gF2
-- -- $ ply 2
-- $ midiOn "^59" (# speed "-0.25")
-- $ midiOn "^91" (struct "t*<8!3 [8 4]>")
-- $ someCyclesBy "^19" (slice 4 "<<0 <1 2>>!8 <3 3 3*2 3*<4 8>>!8>")
-- $ chop 16
-- $ loopAt 4 $ "meth_bass:18" # cut 7 # gain 0.6
-- -- # octersubsubbus 73 (range 0 8 "^19")
-- -- # octersubbus 72 (range 0 4 "^35")
-- -- # octerbus 71 (range 0 1.7 "^55")
-- # crushbus 71 (range 16 1.7 "^55")
-- # panbus 72 (range 0.2 0.8 (fast "<2!4 4!4>" sine))
-- # gain 1.3
-- d8 $ gF1 $ gM1
-- $ midiOff "^60" (mask "t(4,8,1)") -- Techno drum mask
-- $ midiOn "^36" (loopAt 2 . (# "jungle_breaks:22")) -- Raise COMEON!
-- $ midiOn "^56" (loopAt 2 . (# "jungle_breaks:23")) -- Raise COMEON!
-- $ midiOn "^92" ( -- Bouton Nassim <3
-- slice 16 "[0 .. 7] . <[0 .. 7]!3 [0 1 . [2 3]]>"
-- . loopAt 1 . (# "breaks165")
-- -- . (# octer 0.4) . ( octersubsub 4)
-- . (# lpf 2500)
-- . (# room 0)
-- )
-- $ chop 16
-- $ "breaks165"
-- # cut 8
-- # octersub 0.5
-- # gain 1.2
--
--
-- once $ "bogdan:3" # cut 9 # orbit 8 # gain 1.7 -- HEY BRO
--
-- once $ "bogdan:5" # cut 9 # orbit 8 # gain 1.7 -- THAT's Right
--
-- once $ "bogdan:4" # cut 9 # orbit 8 # gain 1.7 -- Moneyyyy
--
-- once $ "bogdan:6" # cut 9 # orbit 8 # gain 1.7 -- ETA
--
once $ "rhadamanthe_melo"
--
--
--
--
--
-- 90s_matrix:0
--
-- d8 $ "jungle_breaks"
......@@ -10,12 +10,12 @@ let gM1 = gMask . gMute
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
d1 $ gF1 $ gM2
$ midiOn "^42" (fast 2 . (<| "k k k k*2"))
$ midiOn "^42" (fast 2 . (<| "k k k <k [<k k*2 ~ k*[1|2]> k]>"))
$ midiOff "^42" (<| "k*<1!7 2> ~ . ~ <~!7 [k*2 k]>")
$ fix (# lpf 1200) "kick"
$ "[jazz, kick:3]"
$ "[jazz,kick:3]"
-- # room 0.2 # sz 0.3 # dry 1.4
# gain 1.7
# gain 2
d2 $ gF1 $ gM2
$ midiOn "^42" (fast 2)
$ midiOff "^42" (mask "<f!3 [t <f t>]>")
......@@ -31,12 +31,12 @@ d3 $ gF1 $ gM1
# drumFrom "rolandtr909" "hh:2" # cut 3
# gain 1.8
# legato (range 0.05 0.9 "^32")
d7 $ gF1 $ gM1
d7 $ gF1 $ gM1 -- Breaks Demoniaques
$ midiOn "^91" (ply "2 <2!2 <3 4> <4 8>>")
$ midiOn "^55" (slice 4 "<[0 1 2 3]!6 3*8 3 32 8 8 4]>"
$ midiOn "^55" (slice 4 "<[0 1 2 3]!6 3*8 3*[16 . 32 8 8 4]>"
. (loopAt 1)
. (# "jungle_breaks:19")
. (|* gain 1.2)) -- Pure COMEON!
. (|* gain 1.3)) -- Pure COMEON!
$ slice 4 "0 1 <2 ~ ~ 2*<2 4>> 3*<1!3 <2 [2 <4 8>]>>"
$ loopAt 1
$ "temptation:4"
......@@ -52,7 +52,7 @@ d4 $ gF2 $ gM3 -- TEMPT MY BASS
# crushbus 41 (range 12 3 "^53")
# octersubbus 42 (range 0 2 "^33")
# gain 1.8
d5 $ gF3 $ gM3
d5 $ gF3 $ gM3 -- ANGEL MOOG CHOIR
$ midiOn "^90" (ply "<4 [4 8]>")
$ midiOn "^58" (fast 4 . slice 8 "<0 0 1 1 2 2 3 3>/2")
$ "temptation:0"
......@@ -74,9 +74,9 @@ d8 $ gF1 $ gM1
# gain 1.4
d9 $ gF3 $ gM3 -- TEMPTATION VOICES
$ midiOn "^16" (# n 8) -- Bring it to your knees
$ midiOn "^17" (chop "8 <16!8 64!8>")
$ midiOn "^19" (rev . chop 4)
$ midiOff "^16" (# end "<0.8!8 1!8>")
$ midiOn "^17" (chop "8 <16!8 64!8>")
$ midiOn "^18" (rev . chop 4)
$ n "7/2" -- Base: Listen - I'm the one
# "temptation"
# cut 9
......
......@@ -98,8 +98,10 @@ d5 $ gF3 $ gM3 -- Donne moi ton Private Number <3 FIXME Decalage?
# sz 0.8
# room 0.4
# sz 0.65
# legato "<0.9!7 0.5>"
# gain 1.3
-- # legato "<0.9!7 0.5>"
# gain 1.2
# att 0.15
# rel 2
d7 $ gF3 $ gM3
$ stack [
n "<<~ 22> ~ <21 24 24 33> ~>"
......
do
-- resetCycles
resetCycles
setcps (120/60/4)
let gMask = (midiOn "^41" (mask "t . <f t f <f t>> <t f f <t f>>"))
let gMute1 = (midiOn "^73" (mask "f*16"))
......
do
ydo
-- resetCycles
setcps (124/60/4)
let gMask = (midiOn "^41" (mask "t . <f t f <f t>> <t f f <t f>>"))
......@@ -8,7 +8,7 @@ let gMute3 = (midiOn "^75" (mask "f*16"))
let gM1 = gMask . gMute1
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
let gF1 = (# djfbus 1 (range 0.05 0.95 "^49"))
let gF1 = (y# djfbus 1 (range 0.05 0.95 "^49"))
let gF2 = (# djfbus 2 (range 0.05 0.95 "^50"))
let gF3 = (# djfbus 3 (range 0.05 0.95 "^51"))
d1 $ gMute2 $ gF1 -- Kick solide
......
......@@ -46,7 +46,8 @@ d3 $ gF1 $ gM1
# cut 3
# legato (slow 13 $ range 0.3 2 saw)
# delaybus 31 (range 0 1 "^52") # delayt "e" # delayfbbus 32 "^32"
d4 $ gF2 $ gM3
d4 $ gF2 $ gM3 -- La GROSSE BASSE MOLOTOVAH
$ midiOn "^89" (ply "<4 4 2 4> <4 8>")
$ midiOn "^57" (chop 4)
$ midiOn "^17" ((# n 1) . (|* gain 0.8))
$ "molotov:0/2"
......@@ -57,6 +58,7 @@ d4 $ gF2 $ gM3
# octerbus 42 (range 0 0.8 "^33")
d5 $ gF3 $ gM3
$ midiOff "^58" (mask "t(8,16)")
$ midiOn "^90" (ply 2)
$ note (
"a4!15 <<a4!4 c4!3 d4> <g4 c5>>"
-- + "[0*16]"
......@@ -68,14 +70,13 @@ d5 $ gF3 $ gM3
# filterRange (range 0 7 "^18")
# width (range 0.05 0.5 "^34")
# crushbus 51 (range 16 3.5 "^54")
# legato 0.25
# rq 0.3 -- TODO EXPLORE <3
d7 $ gF3 $ gM3
$ midiOn "^35" (
-- slice 4 "[0 1 2 3]/2"
chop 8 .
(# n 7)
$ midiOn "^35" ( -- A-a-a-a-ACID!
chop 8 . (# n 7)
)
$ midiOn "^91" (
$ midiOn "^91" ( -- DANSE COMME UN CHEVAL
fast 2 . slice 4 "<[0 1 2 3] [0 1 2 3] <[0 1 2 3] [0 2 3 0]> [0*4]>" .
(# n 5)
)
......@@ -89,13 +90,14 @@ d7 $ gF3 $ gM3
d8 $ gF1 $ gM1
$ midiOn "^60" (mask "t(4,8,1)" . chop 4)
$ chop 8
$ midiOn "^56" (loopAt 2 . (# n 16))
$ midiOn "^36" (loopAt 2 . (# n 45))
$ midiOn "^36" (loopAt 2 . (# n 45)) -- Break Orleans
$ midiOn "^56" (loopAt 2 . (# n 16)) -- Classique
$ loopAt 1
$ "jungle_breaks:11"
$ "jungle_breaks" # n "71 <71!3 <72 [72 71*2]>>"
# cut 8
# gain 1.5
d9 $ gF3 $ gF3
$ (0.125 ~>)
$ "molotov:2/2"
# cut 5
# octersub 2
......
resetCycles
do
-- setcps(144/60/4)
setcps(166/60/4)
let gMask = (midiOn "^41" (mask "t . <f t f <f t>> <t f f <t f>>"))
let gMute = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let gM1 = gMask . gMute
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
let gF1 = (# djfbus 1 (range 0.05 0.95 "^49"))
let gF2 = (# djfbus 2 (range 0.05 0.95 "^50"))
let gF3 = (# djfbus 3 (range 0.05 0.95 "^51"))
d1 $ gF1 $ gMute2
$ fix ((# lpf 150) . (|* gain 0.93)) "kick:5"
$ midiOn "^42" (<| "k k k <k <k*2 [k k k ~]>>")
$ midiOff "^42" (<| "k . ~ k ~ ~")
$ "[kick:5,tech:5,jazz]"
# gain 1.8
d2 $ gF1 $ gM1
$ midiOn "^43" (<| "~ c ~ c*<1!3 <2 [2 4]>>")
$ midiOff "^43" (<| "~ . c*<1!3 <2!3 4>> ~")
$ "rampleS37:5"
# gain 1.8
# lpf 2650
d3 $ gF1 $ gM1 -- Highest hats
$ midiOn "^44" (ply 2)
$ midiOn "^76" (ply 2)
$ sometimesBy "0!3 <0 0.5>" (# n 12)
$ sometimesBy "0!3 <0.1 0>" (# n 13)
$ "~ d ~ d d d d*<1 1 2 1> d"
# "rampleS34:6"
# cut 3
# legato (range 0.28 1 sine)
# gain (1.1 * (range 0.85 1.05 (fast 4 perlin)))
# room 0.14 # sz 0.4 # dry 1
# pan 0.8
-- Emphasize "and" of beats
d4 $ gF2 $ gM3
$ superimpose (const $ gF2 $ gM3 -- Second BASS!
$ midiOff "^57" (slow 2)
$ note "~ [a3 c4] ~ [e3 g3] ~ [a3 e3] ~ g3"
# "bassWarsaw" |- note 12
# cut 41 # gain (range 0.5 2 "^33")
# crushbus 43 (range 16 2.5 "^53")
)
$ whenmod 4 3 (ply "1 2")
$ chop 8
$ loopAt 4
$ "no_sunshine:5"
# gain (1.8- 0.6 * "^33")
# lpf 4000
# room 0.4 # sz 0.8
# delay 0.3 # delayt 0.25 # delayfb 0.5
-- # octersubbus 41 (range 0 2 "^53")
# crushbus 42 (range 16 2.5 "^53")
d5 $ gF3 $ gM3
$ midiOn "^58" ( -- I KNOW
(# n "<16 ~!3>")
. (# cut 5)) -- FIXME VOICE OFF
$ midiOff "^58" (>| n ("<~ ~ [~ 0] ~>"
+ (slow 4 "<9 9 10 11 ~ 12 13 14 ~>")))
$ "no_sunshine"
# gain 1.5
# cut 5
# room 0.3 # sz 0.3
d7 $ gF3 $ gM3 -- Guitar Sunshine
$ midiOn "^91" (ply 2)
$ juxBy 0.8 (rev . (#cut 71))
$ midiOn "^59" ( -- SLICE!
ply "1 2" . slow 4 . chop 8 . (# n 24)
)
$ "no_sunshine/2"
# n (slow 2 "<20 20 21 22 23 24 25 26>")
# cut 7
# gain 1.4
# room 0.3
d11 $ gF3 $ gM3
$ chop 4
$ "no_sunshine:4/4"
# cut 5
# room 0.3 # sz 0.5
# gain 1.2
d9 $ gF3 $ gM3
$ "no_sunshine/4" # n (slow 4 "<0 1 2 3>" )
# cut 9
# room 0.3
d8 $ gF1 $ gM1 -- JazzyBelle JazzyBreak
$ juxBy 0.5 (# cut 81)
$ midiOn "^92" (slice 4 "0*2 [1 2] 2*2 3*<1 1 1 2>")
$ chop 16
$ midiOn "^36" (loopAt 1 . (# "org_jungle_breaks:24"))
$ midiOn "^56" (slice 4 "0 <1 1 1 3> <2 2 3 2> <3 3 2 <1 3>>" .
loopAt 1 . (# "breaks165"))
$ loopAt 1
-- $ n "<0!4 1!3 0 2!4 3!3 <2 3>>"
$ "org_jungle_breaks:1"
# pan 0.26
# gain 0.9
# octersub 1.2
# octersubsub 2
# cut 8
# room 0.3 # sz 0.5 # dry 0.9
# gain 1.5
......@@ -77,7 +77,8 @@ d5 $ gF3 $ gM3-- RIFFs <3
# n "<0!12 <32 33 34 35>!4>"
# cut 5 -- RIFF
d7 $ gF3 $ gM3 -- VOICES
$ midiOn "^59" (# n "<24!2 25 <26 27>>")
$ midiOn "^91" (ply "2 <4 4 4 8>")
$ midiOn "^59" (# n "<24!2 25 <26 27>>") -- Real Dogs
$ (midiOff "^59" (superimpose (chop 16)
. (# cut 61)
. (# pan "[0.2 0.8]*2")) )
......@@ -86,8 +87,11 @@ d7 $ gF3 $ gM3 -- VOICES
# cut 7
# gain 1.2
d8 $ gF1 $ gM1
$ midiOff "^60" (mask "t(8,16,1)" . chop 8)
$ chop 8
$ loopAt 0.5
$ midiOn "^36" (loopAt 2 . (# "jungle_breaks:39"))
$ midiOn "^56" (loopAt 2 . (# "jungle_breaks:42"))
$ "breaks165" # bandf 1400 # room 0.3 # dry 1.2 # sz 0.8
# cut 8
# gain 1.4
......
......@@ -14,11 +14,11 @@ let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
let modIndex = pF "modIndex"
d1 $ gF1 $ gM2 -- Kick
$ midiOff "^42" (<| "k k k <k <k*2 [~ k]>>")
$ midiOn "^42" (<| "k . ~ k ~ ~ ")
$ midiOff "^42" (<| "k . ~ k ~ ~ ")
$ midiOn "^42" (<| "k k k <k <k*2 [~ k]>>")
$ "[bskick,jazz]"
# gain 1.2
# gain 1.4
# gain 1.8
d2 $ gF1 $ gM1 -- Snare melancolie fromagere
$ midiOff "^43" (<| "~ <s s <s!3 ~> <~!7 [~ s]>>")
$ midiOn "^43" (<| "~ s ~ s*<1!3 2>")
......@@ -26,7 +26,7 @@ d2 $ gF1 $ gM1 -- Snare melancolie fromagere
# gain 1.45
d3 $ gF1 $ gM1
$ midiOn "^44" (ply 2)
$ midiOn "^76" (ply 2)
$ midiOn "^76" (struct "t*16")
$ "d d d <d [<d ~> d]>" # "drum:2"
# gain 0.8
-- # midiG' "^80" 0 1
......@@ -69,7 +69,7 @@ d7 $ gF2 $ gM3
# delay 0.7
# delayt 0.125
# delayfb 0.5
# gain 1.2
# gain 1.4
d5 $ gF2 $ gM3 $ slow 2 -- V2 -- TODO : Feedback: reverb? un peu creux?
-- $ superimpose ((arp "up") . (|+ note 12))
$ midiOn "^89" (stutWith 4 0.25 ((|* gain 0.85) . (# room 0)))
......@@ -87,7 +87,7 @@ d5 $ gF2 $ gM3 $ slow 2 -- V2 -- TODO : Feedback: reverb? un peu creux?
|+ note 2 -- Adjust to C
# modIndex (range 0 2 "^54")
# room 0.4
# gain 1.1
# gain 1.7
d8 $ gF1 $ gM1
$ midiOff "^60" (mask "f(4,8)" . chop 8)
$ midiOn "^92" (ply 4)
......@@ -99,7 +99,7 @@ d8 $ gF1 $ gM1
$ "break:2"
-- # n 4
# cut 8
# gain 1
# gain 1.5
d9 -- Alright Paris <3
$ begin ("<<0.0 0.08> <~ <0.2!3 0.4 0.4!4>>>")
# end ("<0.2!3 <0.4!2 0.64!2>>") -- 0.2 - 0.35 - 0.4 - 0.6
......
......@@ -95,6 +95,7 @@ d7 $ gF3 -- together yeah!
# crushbus 71 (range 16 "<5 10>" "^55")
# hpfbus 72 (range 0 3500 "^55")
# cut 7
# gain 1.4
d8 $ gM1 $ gF1 -- Angel Breaks
$ midiOn "^92" (ply "<2 2 4 8>")
$ midiOn "^60" (mask "f <t t f t>")
......
......@@ -15,50 +15,99 @@ d1 $ gF1 $ gM2 -- Kick
# gain 1.2
# lpf 400
d2 $ gF1 $ gM1
$ midiOn "^43" (<| "~ s ~ s")
$ midiOff "^43" (slow 2 . (<| "~ ~ ~ s"))
$ midiOn "^43" (<| "~ s ~ s*<1 2 [2 1] [4 <2 8>]>" )
$ "cp" # hpf 1400 # gain 1.3
d3 $ gF1 $ gM1$ "hh(3,8) hh(3,8,1)" # "vec1_snare:11"
d3 $ gF1 $ gM1
$ midiOn "^44" (<| "h(4,8,1)")
$ midiOff "^44" (<| "hh(3,8) hh(<3 [3 5] 8>,8,1)")
$ "vec1_snare:11"
# legato (range 0.25 2 "^52")
d4 $ gF2 $ gM3 -- WAP BASS
$ midiOn "^57" (# n 1)
$ midiOn "^89" (
slice 8 ("~ 0 ~ 5 ~ 3 <~!4 5!4> <3!4 [3 0]!4>")
-- . (superimpose (# cut 41))
)
$ midiOn "^57" (
slice 8 ("~ 0 <~ ~ 5 5> 3 <~ 0!3> <~!4 0!10 ~ 0*4> 5 <~ 5>")
-- $ (0.125 ~>) :
. (# gain 1.3 )
. (# crushbus 43 (range 16 3.4 "^53") )
. (# lpf 3000)
-- . (# note "-12")
-- . ( #octersub 1.2)
-- . (# room 0.2) . (# room 0.2) . (# dry 0.9)
)
-- $ midiOff ("^57" - "^89") ("0.25" ~>) -- TODO: Decalage de Bruno
$ "wap/2"
# bandf 400 # cut 4
# lpf 2400
# cut 4
# gain 1.9
# room 0.4
-- # room 0.4
# octersubsubbus 42 (range 0 1.4 "^53")
# octerbus 41 (range 0 1.4 "^53")
d5 $ gF3 $ gM3 -- WAP HOES
d5 $ gF3 $ gMute3 -- WAP HOES v1 magic repeat
$ midiOn "^34" (# 7) -- FORCE INTRO
$ midiOff ("^34"+"^90") (slow 4)
$ stut 4 1 1 -- Four repeats each
$ slow 4
$ midiOn "^58" (stut "4" 0.9 (fast 4 "e"))
$ midiOn "^90" (ply "[1!3 4]*4" . chop 4 . stut "4" 0.9 (fast 4 "s") . (# att 0.08) . (# rel 10))
$ midiOn "^90" (
ply "[1!3 4]*4" . chop 4 . -- Magic Repeat: next segment instead
stut "4" 0.9 (fast 4 "s") -- Magic Repeat: repeater
. (# att 0.08)
. (# rel 10)
)
$ "wap:0" # n ("<8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31>") -- Rotation complete
# cut 5
# room 0
# sz 0
# gain 1.4
d5 $ gF3 $ gMute3 -- WAP HOES v1 science of repeat
$ midiOn "^90" ((slice 4 "0*4"))
$ midiOn "^34" (# 7) -- FORCE INTRO
$ midiOff ("^34" + "^90") (slow 4) -- 4 bars
$ stut 4 1 1 -- Four repeats each
$ slow 4 -- times Four bits
$ midiOn "^58" (stut "4" 0.9 (fast 4 "e"))
$ "wap:0" # n ("<8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31>") -- Rotation complete
# cut 5
# room 0
# sz 0
# gain 1.4
d7 $ gF1 $ gM1 --Les WAP DRUMS
$ midiOff "^60" (mask "t(4,8,1)" . chop 8)
$ midiOff "^59" (mask "t(4,8,1)" . chop 8)
$ midiOn "^91" (ply "2 <2 4>")
$ loopAt 2 $ chop 8
$ "wap" # n "<3!4 4!4 5!4 6!4>"
# cut 7 # gain 1.8
# cut 7
# gain 1.2
d8 $ gF1 $ gM1 -- La stack de breaks
$ midiOff "^60" (mask "t(4,8,1)" . chop 8 ) -- BREAK JUNGLE
$ midiOn "^92" (ply 2) -- BREAK JUNGLE
$ midiOn "^36" (# 45) -- BREAK ORLEANS
$ midiOn "^56" (# 7) -- BREAK JUNGLE
$ midiOn "^56" ((# 7) . (|* gain 0.9)) -- BREAK JUNGLE
$ loopAt 2 $ chop 8
$ "jungle_breaks:84" # cut 8
# gain 1.6
# gain 1.3
d9 $ gF2 $ gM3 $ slow 2
$ fast 2 $ off 1 (|- note "0 12")
$ note "[b@3 ~@2 c@3 <cs <[cs@2 ~ g e] [cs@2 ~ g e g e]>>@5]"
$ superimpose ((
# "acidOto3091"-- V1 Bass
)
. (|- note 12)
. (|* gain "^18")
. (# cut 91))
-- $ off 1 (|- note "0 12")
$ note (cat [
"~ f f f fs f ef f cs@8",
"~ f f f fs f ef f cs@8",
"~ f f f fs f fs f cs@8",
"~ f f f fs f ef f [cs ef f ef]@8"
])
-- "[b@3 ~@2 c@3 <cs <[cs@2 ~ g e] [cs@2 ~ g e g e]>>@5]"
-- # "bassWarsaw" |- note "[36,24]"
# "acidOto3091" -- V1 Bass
# "vec2_synth_acid:25" -- Alternative2
-- # "vec2_synth_acid:25" |- note 12-- Alternative2
# "vec1_acid:25" -- Alternative
# crushbus 91 (range 16 6.5 "^19")
# room 0.4
......
do
setcps (140/60/4)
let gMask = (midiOn "^41" (mask "t!7 f"))
let gMute1 = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let gM1 = gMask . gMute1
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
let giantA = jchord "<Bmaj7 D7 Gmaj7 Bb7 Ebmaj7 [Am7 D7] Gmaj7 [Bb7 Ebmaj7] [F#7 Bmaj7] [Fm7 Bb7] Ebmaj7 [Am7 D7] Gmaj7 [C#m7 F#7] Bmaj7 [Fm7 Bb7]>"
let giantB = jchord "<Ebmaj7 [Am7 D7] Gmaj7 [C#m7 F#7] Bmaj7 [Fm7 Bb7] Ebmaj7 [C#m7 F#7] Bmaj7>"
let giantSimple = jchord "<Bmaj7 Gmaj7 Ebmaj7 Bmaj7>"
let giantVar1 = slow 2 $ jchord "<Bmaj7 Bmaj7 D7 Gmaj7 Gmaj7 Bb7 Ebmaj7 F#7>"
let giantFull = slow 8 $ giantA
let giantBass = slow 8 $ jroot "<Bmaj7 D7 Gmaj7 Bb7 Ebmaj7 [Am7 D7] Gmaj7 [Bb7 Ebmaj7] [F#7 Bmaj7] [Fm7 Bb7] Ebmaj7 [Am7 D7] Gmaj7 [C#m7 F#7] Bmaj7 [Fm7 Bb7]>"
d1 $ gF1 $ gM2 $ midiOn "^42" (struct "t t*<1 2> t t*<1 2 [2 4]>") $ "808bd:13" # gain 0.95 # lpf 250
d2 $ gF1 $ gM1 $ "~ s ~ [s <~ s*2>]" # "hh27:12" # gain 1.3 # lpf 2000 # legato 0.4
d3 $ gF1 $ gM1 $ degradeBy 0.5 $ "dr*16" # "h2ogmsn:4" # gain 0.7
d4 $ gF2 $ gM3
$ struct "t ~ t? ~ t ~ t? ~"
$ fast 4 $ giantBass |+| n "<0 7> <0 12> [0 7] 0"
# "bassWarsaw"
# octave 2
# lpf (slow 16 $ range 200 600 sine)
# resonance 0.2 # room 0.2 # sz 0.3 # gain (1.4 * "<1 0.9 1 [0.9|1.1]>")
# legato 0.6 # crushbus 41 (range 16 4 "^53")
d5 $ gF3 $ gM3
$ superimpose (
(struct "t f t") . (|+ note 12) . arp "pinkyup")
$ fast 4
$ giantFull # "superpiano"
# octave 4
-- # modIndex (slow 8 $ range 0.5 4 sine)
-- # gain (0.9 * "1 [0.8|1] 0.9 1 [0.7|0.9] 0.9 1 0.8") # room 0.5 # sz 0.7 # dry 1.1 # lpf (slow 16 $ range 3000 6000 sine) # pan (slow 32 $ range 0.3 0.7 sine)
-- # attack (0.01 + (rand * 0.015))
-- # release (slow 12 $ range 0.9 1.4 sine)
-- # crushbus 41 (range 16 4 "^54")
d7 $ gF3 $ gM3
$ fast 4 $ giantBass
# "cbow"
# octave 4
# lpf (slow 24 $ range 1500 4000 sine)
# room 0.7 # sz 0.8
# gain (0.65 * "<1 0.8 0.9 1>")
# pan (slow 16 $ range 0.2 0.8 sine)
# attack 0.04 # release 1
# legato 0.85
s0.initVideo("/home/pln/Videos/HARDKORRIGANS/Dancers/C'mon and Swim - Bobby Freeman (480p_30fps_H264-128kbit_AAC).mp4")
s2.initVideo("/home/pln/Videos/HARDKORRIGANS/Dancers/Best 60s Dancer Boy Ever - The Nitty Gritty (480p_30fps_H264-128kbit_AAC).mp4")
s1.initVideo("/home/pln/Videos/HARDKORRIGANS/Dancers/Keep on Dancing - The Gentrys (480p_30fps_H264-128kbit_AAC).mp4")
s2.initVideo("/home/pln/Videos/HARDKORRIGANS/animation_WTF_trip_bonnenuitlespetits.mp4")
s0.src.playbackRate = 1.4
s0.src.currentTime = 10
s0.src.loop = true
s2.src.playbackRate = 0
s2.src.currentTime = 0
s2.src.loop = true
a.setSmooth(0)
a.show()
a.setScale(14)
src(s0)
.scale(() => 1 + 0.5 * a.fft[0])
.saturate(() => 0.1 + 2 * a.fft[2] + 0.5 * a.fft[3])
.out(o0)
src(o0)
.modulate(src(s0).scale(() => 1.09 + a.fft[0]))
.diff(src(s1).scale(() => 0.2 + 0.5 * a.fft[3])
.kaleid(() => 2.4 + 4 * a.fft[2])
)
.colorama(() => 0.4 * a.fft[2])
// .rotate(() => (time * (a.fft[0]) % 360))
.out(o1)
src(s1)
// .modulateRotate(src(s1).scale(0.8))
// .add(src(s2).scale(2))
.out(o2)
src(s2)
// .colorama(() => 0.5 * a.fft[2])
// .diff(src(o0).mask(shape(4).scale(() => 1.2 + 0.5 * a.fft[1] + 0.82 * a.fft[3])))
.out(o3)
render(o1)
once $ "gfunk_lead"
do
setcps (60/60/4)
-- resetCycles
let width = pF "width"
let gMask = (midiOn "^41" (mask "t!3 <t!3 [f <t f>]>"))
let gMute = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let dMask = (whenmod 8 7 (mask "t t <t [f t]> f"))
let gM1 = gMask . gMute
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
d1 $ gF1 $ gM2
$ midiOn "^42" ((|> "808bd:4") . fast "<2!6 4 8>" . (<|"k k k k"))
$ midiOff "^42" ((|> "808bd:4") . (<|"k . k(<3 [3 5] [5 3] [8 <8 16>]>,8)"))
-- $ fast 2
$ "808bd:4"
# gain 1.4
d2 $ gF2 $ gM2
$ fast "<1!8 4!24>" $ "~ s*<1!7 [4 <2 4>]>"
# "snare:32"
# gain 1.3 # legato 0.35
# hpf 1300
d3 $ gF1 $ gM1
$ midiOn "^44" (fast 2 . (>| "~ hh ~ hh ~ hh ~ hh"))
$ midiOff "^44" (<| "dr*[8 <8 8 16 [32 16 32 16]>]")
$ "dr"
d4 $ gF2 $ gM2
$ midiOn "^57" (
(|+| note ("0 . [<0 2 0 0> <7 7 8 7>](<3!3 5>,8)"))
)
$ midiOn "^89" (struct "t . t(3,8)")
$ note "<fs3 d3 cs3 <b2 e2>>"
# "bassWarsaw"
# crushbus 41 (range 16 2 "^53")
# octerbus 42 (range 0 1.5 "^33")
# octersubbus 43 (range 0 2.5 "^33")
# room 0.4
# gain 1.2
d5 $ gF3 $ dMask $ gM3 -- Evasif
$ superimpose (const
$ (0.125 ~>)
$ midiOn "^42" (fast 2)
$ slice 4 "<0 1 2 3>"
$ "numb:27/2"
# room 0.3
# cut 51
# lpf 3000
|* gain ("^34")
)
$ midiOn "^90" (ply "<4!3 [8 8 16 <8 16>]>")
-- $ slow 16 $ mask "t(8,16) t(8,16)"
$ chop 8
$ "numb/2"
# crushbus 51 (range 16 4.1 "^54")
# octersubbus 52 (range 0 1.1 "^34")
# cut 5
# room 0.3
d6 $ gF3 $ gM3 -- MoRE LIKE ME // LESS LIKE YOU
$ whenmod 64 32 (stut 2 0.7 "e")
$ (0.625 ~>)
$ "numb/2" # n (slow 2 $ ply 2 $ "<20 21>")
# end 0.9
-- # cut 6
# room 0.4
d7 $ gF3 $ gM3 -- SO NUMB
$ midiOn "^91" (superimpose (
const
$ slow 8
$ ply 4 $ chop 4 $ "numb:11"
# cut 71 # hpf 5000 # pan "<0.8 0.2>" # gain 1.3)
)
$ slice 16 (slow 2 $ run 16)
$ n "<1 2>/2"
# "numb"
# gain 0.55
# room 0.3
d8 $ gF1 $ gM1 $ chop 8
$ midiOff "^60" (mask "t(8,16,1)" . chop 16)
$ midiOn "^36" (loopAt 2 . (>| "jungle_breaks:44"))
$ midiOn "^56" (loopAt 0.5 . (>| "jungle_breaks:19"))
$ loopAt 2 $ "jungle_breaks:42"
# cut 8
# gain 1.4
d9 $ gF3 $ gF3
$ "numb:18"
# cut 9
# begin "<0!3 0.32>"
# end "<0.32!3 <0.6 1>>"
d10 $ gF3 $ gM3 -- Keys cloche
$ "numb:24"
# cut 10
d11 $ gF3 $ gM3
$ "numb:25/2" -- Keys joie
# cut 11
# room 0.4
d12 $ gF3 $ gM3 $ "numb:26" -- KEYS ORAGE
# cut 12
# octerbus 120 (slow 32 $ range 0 "^16" perlin)
# room 0.2
# freezebus 121 (range 0 1 "^31")
-- Chester Bennington]
-- I'm tired of being what you want me to be
-- Feeling so faithless, lost under the surface
-- I don't know what you're expecting of me
-- Put under the pressure of walking in your shoes
--
-- [Pre-Chorus: Chester Bennington & Mike Shinoda]
-- Caught in the undertow, just caught in the undertow
-- Every step that I take is another mistake to you
-- Caught in the undertow, just caught in the undertow
--
-- [Chorus: Chester Bennington]
-- I've become so numb, I can't feel you there
-- Become so tired, so much more aware
-- I'm becoming this, all I want to do
-- Is be more like me and be less like you
--
-- [Verse 2: Chester Bennington]
-- Can't you see that you're smothering me?
-- Holding too tightly, afraid to lose control
-- 'Cause everything that you thought I would be
-- Has fallen apart, right in front of you
--
-- [Pre-Chorus: Chester Bennington & Mike Shinoda]
-- Caught in the undertow, just caught in the undertow
-- Every step that I take is another mistake to you
-- Caught in the undertow, just caught in the undertow
-- And every second I waste is more than I can take
-- You might also like
-- In the End
-- Linkin Park
-- Heavy Is the Crown
-- Linkin Park
-- ROSÉ & Bruno Mars - APT. (Romanized)
-- Genius Romanizations
-- [Chorus: Chester Bennington]
-- I've become so numb, I can't feel you there
-- Become so tired, so much more aware
-- I'm becoming this, all I want to do
-- Is be more like me and be less like you
--
-- [Bridge: Chester Bennington]
-- And I know
-- I may end up failing too
-- But I know
-- You were just like me with someone disappointed in you
--
-- [Chorus: Chester Bennington]
-- I've become so numb, I can't feel you there
-- Become so tired, so much more aware
-- I'm becoming this, all I want to do
-- Is be more like me and be less like you
--
-- [Outro: Chester Bennington]
-- I've become so numb, I can't feel you there
-- I'm tired of being what you want me to be
-- I've become so numb, I can't feel you there
-- I'm tired of being what you want me to be
do
setcps (65/60/4)
let width = pF "width"
let gMask = (midiOn "^41" (mask "t!3 <t!3 [f <t f>]>"))
let gMute = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let dMask = (whenmod 8 7 (mask "t t <t [f t]> f"))
let gM1 = gMask . gMute
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
d1 $ gF1 $ gM2
$ midiOn "^42" (fast 2 . (<| "k k k k"))
$ midiOff "^42" (<| "<k ~> . ~ ~ ~ <~ [<k ~ ~ k> <k <~ k>>]>")
$ "[jazz,kick:5,808bd:3]"
# room 0.3 # sz 0.9 # dry 1
d2 $ gF1 $ gM1 $ dMask
-- $ fix (
-- (# lpf 800) .
-- (|* gain (slow 16 $ range 0.5 1.35 saw))
-- ) "cp"
$ fast 2 "~ cp ~ cp*<1!3 2>"
# "[snare:29]"
# gain 0.9
d3 $ gF1 $ gM1 $ dMask
$ "[~ h]*8"
# "h2ogmhh:19"
# legato "<0.33!16 0.5!16 0.75!16 1!16>"
# hpf (slow 32 $ range 200 8000 sine)
d4 $ gF2 $ gM2
$ note (
"<g g <gf bf> g g g bf d>" + (fast 2 $ arp "pinkyup" ("<c!7 g>" + "c'min'4"))
- 36
) # "bassWarsaw"
# crushbus 41 (range 16 4.5 "^53")
# octersubbus 42 (range 0 1.5 "^33")
# gain 1.3
d5
$ gF3 $ gM3
$ midiOn "^90" (off 25 id . ply "4 8")
$ midiOn "^58" (ply 4 . slice 4 "<0 1 2 3>")
$ "law_adri"
# n "<1!24 2!8>"
# cut 5
# gain 1.5
# room 0.4
d7 $ gM3 $ gF3
$ midiOn "^91" (off 0.25 (id) . ply 4)
$ midiOff "^59" (chop 8)
$ "law_adri"
# n "<5 6 5 6 5 6 5 6 7 8 7 8 9 10 9 10>"
# cut 7
# delay "<0!6 0.8 0.9>"
# delayt 0.25
# delayfb 0.5
# gain 1.5
d8 $ gF1 $ gM1
$ midiOn "^92" (ply "2 2 4 2")
$ chop 8
$ loopAt 1
$ midiOn "^36" (# n "23")
$ midiOn "^56" (# n "45")
$ "jungle_breaks:22"
# gain 1.3
# room 0.4 # sz 0.9
# hpf 400
# pan "[0.2 0.8]*4"
once $ "law_adri" # cut 1 # n 21
-- # room 0.2
-- # lpf 2000
-- # octer 0.
d8 $ gF1 $ gM1
$ loopAt 1 $ chop 8
$ "jungle_breaks:45"
# cut 8 # hpf 500
d4 $ gF2 $ gM3
$ midiOn "^57" (superimpose ((0.25 ~>)
. (|+| note (
"[0 7 0 12]*2" +
"0 0 0*<1!4 2!4> 0*<1 2 1 2 2!3 4>"
+ "<12!6 24 [24 . 12 0]>"
))))
$ midiOn "^89" (ply "<4!3 [4 8] [4 8] 8 [4 8] [4 1] [16 8]*2!8>")
$ note "<g3 g3 bf3 d3>"
# "bassWarsaw"
# gain 1.2
# crushbus 41 (range 16 4 "^53")
# octersubbus 42 (range 0 2.5 "^33")
# room 0.2
# sz 0.2
d5 $ gF3 $ gM3
$ midiOn "^90" (ply "4 8")
$ n "<[0 0 1 0]!3 0 0 ~ 0 1 2 ~ 2 ~ 2 ~ 2 2*<1 2>>"
# "law_adri"
# cut 5
# pan 0.8
d7 $ gF3 $ gM3
$ midiOn "^91" (ply "<2 2 [4 2] 8>")
$ "law_adri"
# n "<4!4 5!4 5!4 8 8 5 89 10 9*2 9*2 11 12 13 14>"
# room 0.3
# pan 0.3
# cut 7
d8 $ gF1 $ gM1
$ midiOff "^60" (mask "t(4,8,1)")
$ chop 16
$ midiOn "^36" (loopAt 2 . (# "jungle_breaks:45"))
$ midiOn "^56" (loopAt 2 . (# "jungle_breaks:19"))
$ loopAt 1 $ "breaks165"
# gain 1.1
-- /home/pln/Work/Art/GLITCHWAVE/outputs/digital_flow.gif
-- L'Été a MauerPark <3
do
setcps (120/60/4)
let gF = (# djfbus 1 (range 0.05 0.95 "^49"))
let gF2 = (# djfbus 2 (range 0.05 0.95 "^50"))
let gF3 = (# djfbus 3 (range 0.05 0.95 "^51"))
let gMask = (midiOn "^41" (mask "t . <f t f <f t>> <t f f <t f>>"))
let gMute = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let gM = gMask . gMute
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
let gLPF = whenmod 64 48 (# lpfbus 4 (slow 16 $ range 20000 200 saw))
let gLPFSoft = whenmod 64 48 (# lpfbus 5 (slow 16 $ range 20000 2000 saw))
let chorus = pF "chorus"
let lagamount = pF "lagamount"
let dec = pF "dec"
let sus = pF "sus"
let cutoff = pF "cutoff"
d1 $ gF $ gMute2
$ fix (|* gain 0.9)"kick:4"
$ midiOn "^42" (struct "t t t t") -- Le Run
$ midiOff "^42" (struct "~ <t!3 ~>") -- L'attente
$ "[techno:0,808bd:2,909,kick:4]"
# rel 0.5
# att 0.015
# lpf 4000
# gain 1.5
d2 $ gF $ gMute -- Clap timer
$ midiOn "^43" ((|* gain "0 1 <0.9 0.8> 1") . (<| "~ c <~ [~ c]> c"))
$ midiOff "^43" ((|* gain "1 0.8") . (<| "c . ~ ~ ~ <~!3 c>"))
$ drumFrom "[sakatadpm48,rolandr8]" "cp"
# lpf 2000
# gain 1.2
d3 $ gF $ gMute
$ midiOff "^44" (mask "t([8 4 <4 <8 16>>],16)")
$ midiOn "^76" (struct "t*[8 <8 16> <16 8 8 16> <16 [32 <64 128>]>]")
$ fix ((|* gain (slow 32 $ range 0.3 1.3 saw))) "oh"
$ "~ h ~ h ~ h*<1!3 2 1 1 2 2> ~ h*<1!7 2>" # drumFrom "sakatadpm48" "[hh,oh]"
# n "0!3 <0!3 1>"
-- # midiG' "^80" 0 1.6
# gain 1.1
d4 $ gM3 $ gF2
$ midiOn "^89" (# n "20")
$ midiOn "^57" (ply "4 4 <1 1 1 4> <1 2 2 4>")
$ "zombie" # n "<4 6 4 6 11 11 11 11>"
# cut 4
# begin "<0!4 0 0.2 0.2 0.4>"
# gain 1.3
# pan 0.4 # room 0.3
# crushbus 41 (range 16 3.5 "^53")
d5 $ gF3 $ gM3
$ "zombie" # n "<12!4 6!4 2!3 1 2 2 1 2>"
# cut 5
# pan 0.8
# crushbus 51 (range 16 4.5 "^54")
# octerbus 52 (range 0 1.5 "^34")
# octersubbus 53 (range 0 2.5 "^34")
# room 0.4
# gain 1.2
d7 $ gF3 $ gM3
$ midiOn "^59" (chop 4)
$ midiOn "^91" (ply "2 2 2 4")
$ "zombie:24"
# cut 7
d8 $ gM $ gF -- Breaks divins
$ midiOn "^92" (off "e" id)
$ midiOff "^60" (("e" ~>) . mask "t(<4 [4!3 8]>,16)")
$ chop 16
$ someCyclesBy "^36" (loopAt 1 . (# n 34))
$ someCyclesBy "^56" (chop 8 . loopAt 1 . (# "fbreak120:3"))
$ loopAt 2
$ "jungle_breaks:1"
# cut 8
# pan "[<0.35!3 0.65> <0.65!3 0.35>]*4"
# gain 1
d9 $ gF2 $ gM2
$ fix ((# cut 91)
. ply "<1!4 2 2 1 [4 8]>"
. (|* gain 1.1)
. (# legato 0.9)) "cbow"
$ note ("<e e g c>"
- 24)
# "[90s_matrix:4,cbow:2]"
-- # cut 9
# gain 1.3
# crushbus 91 (range 16 3.5 "^19")
# room 0.2 # sz 0.8 # dry 1.1
d10 $ gF3 $ gM3
$ midiOn "^29" (slow 4 . ply 4)
$ slice 16 "<[0 1 2 3] [4 5 6 7] [8 9 10 11] [12 13 14 15]>" $ "zombie:19"
# cut 10
# gain 1.4 # room 0.3
d11 $ gF2 $ gM3
$ mask "<t!4 f!3 t>"
$ "zombie:22" # cut 11
# pan (slow 32 $ range 0.3 0.7 sine)
# gain 1.4
# room 0.4
# hpf (slow 32 $ range 500 8500 perlin)
d12 $ gF3 $ gM3
$ mask "<t t t f>"
$ "zombie:23" # cut 12
# pan (slow 32 $ range 0.7 0.3 sine)
# hpf (slow 16 $ range 500 8500 perlin)
# gain 1.4
......@@ -58,7 +58,7 @@ d7 $ gF3
$ "aoc_fr"
# cut 7
# octerbus 71 (range 0 0.9 "^55")
# gain 1.2
# gain 1.5
# room 0.4 # sz 0.8 # dry 1
d8 $ gF1 $ gM1
$ chop 8
......
do
setcps (91/60/4)
-- resetCycles
let width = pF "width"
let gMask = (midiOn "^41" (mask "t!3 <t!3 [f <t f>]>"))
let gMute = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let dMask = (whenmod 8 7 (mask "t t <t f> f"))
let gM1 = gMask . gMute
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
d1 $ gF1 $ gM2
$ midiOn "^42" (<| "k k k <k k*2 k <k [~ k] k*2 [~ . k*2 k*<1 2>]>>")
$ midiOff "^42" (<| "<k ~>")
$ fix (|* gain 0.6) "jazz"
$ "[808bd:13,jazz]"
# gain 1.8
d2 $ gF1 $ gM1
$ sometimesBy "<0!3 [0 1]>" (superimpose (("s" <~) . (|* gain 0.9)))
$ "~ s ~ s"
# "vec1_snare:31"
d3 $ gF1 $ gM1 $ often (ply 2) $ "hh*8" # "h2ogmhh"
d4 $ gF2 $ gM3
$ (0.125 ~>) -- Decalade de Bruno
$ struct "t(<[12 12 12 <12 16>]!3 16>,16)"
$ note (
"<g3 d4 g3 bf3 g3 a3 g3 d3>" + (fast 4 $ arp "up" "<c'min'4!7 c'maj'4>")
)
# "bassWarsaw"
# crushbus 41 (range 16 2.5 "^53")
# gain 1.4
d5 $ gF3 $ gM3 -- Handmade grinder piano
$ slow 2
$ note ("<[~ d5@2 c5@2 <bf4 bf4 f5 f5>@2 <c5 c5 ef4 ef5> <a4 <ef5 d5>>@8]>" )
# "FMRhodes2"
# modIndex (range 0 12 "^54")
# gain 1.5
d12 $ gF3 $ "gfunk_lead:19/4" # cut 12 # room 0.4 # panbus 120 (slow 16 $ range 0.2 0.8 sine) # octersub 2.5
d10 $ gF3 $ "gfunk_lead:17/2" # cut 10 # pan 0.2 # gain 1.2
d9 $ gF3 $ "gfunk_lead:18/2" # cut 9 # pan 0.8 # sz 0.4 # room 0.3 # dry 0.5
d8 $ gF1 $ gM1
$ midiOn "^92" ( -- Bouton Nassim <3
slice 16 "[0 .. 7] . <[0 .. 7]!3 [0 1 . [2 3]]>"
. loopAt 0.5 . (# "breaks165")
-- . (# octer 0.4) . ( octersubsub 4)
. (# lpf 2500)
. (# room 0)
)
$ midiOff ("^60" + "^92") (mask "t(<4!3 <6 [4 <8 16>]>>,8,1)") -- TECHNOO
$ chop 16
$ midiOn "^56" (chop 2 . (loopAt 1) . (# "break:3") . (|* gain 0.9)) --
$ loopAt 2
$ "jungle_breaks:45"
# cut 8
# att 0.04
# rel 2
# gain 1.2
# hpf 1200
do
-- resetCycles
let gF1 = (# djfbus 1 (range 0.1 0.9 "^49"))
let gF2 = (# djfbus 2 (range 0.05 0.95 "^50"))
let gF3 = (# djfbus 3 (range 0.05 0.95 "^51"))
let gMask = (midiOn "^41" (mask "t . <f t f <f t>> <t f f <t f>>"))
let gMute = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let gM1 = gMask . gMute
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
let gMaskEnd16 = mask "<t!7 [<t f> <f t> ]>"
setcps (125/60/4)
-- d1 $ gF1 $ gM2
d1 $ gF1 $ gMute2
-- $ midiOff "^42" (<| "<k [~!7 k*<1 2>]>")
$ midiOff "^42" (<| "k . ~ k*<1 2> ~ <~ k k <~ k*4>>")
$ midiOn "^42" (<| "k k . k <k [~ k] k k*2>")
$ "jazz"
# gain 1.4
# cut 1
d2 $ gF1 $ gM1
$ midiOff "^43" (<| "~ s ~ [s*<1!3 2> ~]")
$ midiOn "^43" (<| "~ . s*<1!3 2> ~")
$ "[snare:24,snare:51]"
# "h2ogmcp"
# gain (1.0 * "<[1]!16 [1 <1 <1 [1 0.93] 1 [0.9]>>]!16>")
# room 0.5 # dry 1.1
# delay "<0!15 0.6!1>"
# delayt 0.25
d3 $ gF1 $ gM1
$ "~ h ~ h*<1!8 2!8> ~ h*<1 1 1 2> ~ h*<1 2>"
-- $ "h(3,8) h(3,8)"
# pan "0.2 0.8"
# "h2ogmhh:2"
# gain 1.7
-- # att 0.03 # rel 0.9
# legato (range 0.05 0.9 "^32")
-- d4 $ gF2 $ gM3
-- $ note ("0(3,8) . 0(3,8)" + "f bs c . f bs c")
-- -- # "moog:1"
-- # "bassWarsaw" |- note 24
-- # crushbus 41 (range 16 3.5 "^53")
-- # pan 0.4
-- # cut 1
d5 $ gF3 $ gM3 -- Phone line
-- $ midiOn "^90" (ply "4 <8 16>")
-- $ slow 2
-- $ fast 2 $ slice 8 "<0 1 2 3 4 5 6 7>"
$ "nujazz_keys125" # n "<21!16 22!6 21 21 23!8>"
# cut 5
# gain 1.8
# crushbus 51 (range 16 3.5 "^54")
# pan 0.9
# room 0.3
d7 $ gF3 $ gM3 -- Laser!!!
-- $ midiOn "^90" (ply "4 <8 16>")
-- $ slow 2
$ midiOn "^59" (ply 2)
$ slice 8 "<0 1 2 3 4 5 6 7>"
$ "nujazz_keys125:10"
# cut 7
# gain 1.8
# crushbus 71 (range 16 2.7 "^55")
# pan 0.9
# room 0.3
d8 $ gF1 $ gM1
$ midiOff "^60" (mask "t(4,8,1)") -- Techno drum mask
$ midiOn "^36 " (loopAt 4 . (# "jungle_breaks:22")) -- Raise COMEON!
$ midiOn "^56" (loopAt 4 . (# "jungle_breaks:23")) -- Raise COMEON!
$ midiOn "^92" ( -- Bouton Nassim <3
slice 16 "[0 .. 7] . <[0 .. 7]!3 [0 1 . [2 3]]>"
. loopAt 1 . (# "breaks165")
-- . (# octer 0.4) . ( octersubsub 4)
. (# lpf 2500)
. (# room 0)
)
$ chop 16
$ "breaks165"
# cut 8
# octersub 0.5
# gain 1.2
-- d9 $ gF3 $ gM3
-- $ midiOn "^19" (ply "4 8")
-- $ midiOff "^18" (mask "<f!3 t>")
-- $ "ouais" # n (slow 4 "<0 1 2 3>" )
-- # cut 9
-- # end "<1!12 0.47!3 1>"
-- # room 0.4
--
--
-- d9 -- Bogdan the Grime sample provider
-- $ whenmod 16 12 ( -- I'm from Cardiff!
-- (# "bogdan_grime:1") . (# begin "<0!3 0.25>") . (# end "<0.5!3 0.25>")
-- )
-- $ whenmod 16 8 ((# begin 0.66) . (# end 1)) -- Pints <3
-- $ end "<~ <0.42 <0.66 1>>>"
-- # "bogdan_grime:3"
-- -- # n 0 # begin 0 # end 1 # cut 9 -- FIXME DEBUG
-- # delay "<0 <0.7 0>>"
-- # delayt "h"
-- # delayfb 0
-- # speed 0.92
-- -- # room 0.4
-- # gain 1.6
-- d8 $ gF1 $ gM1 -- Come on breaks!
-- $ chop 8
-- $ midiOn "^60" (mask "t(4,8,1)" . chop 4)
-- $ midiOn "^92" (ply 4)
-- $ midiOn "^36" (loopAt 2 . (# n "<61>")) --
-- $ midiOn "^56" ((# n "19") . (|* gain 1.2)) -- Pure COMEON!
-- -- $ midiOn "^56" ((# n "23")) -- Raise COMEON!
-- $ midiOff "^60" (mask "t(4,8)")
-- $ loopAt 2
-- $ "jungle_breaks:26"
-- # cut 8
-- # gain 1.8
-- d4 $ gF2 $ gMute3 -- Bassline aqualgorithmique
-- -- $ midiOn "^57" ((# tremdp 1) . (# tremrbus 43 "<[8 4] [<4 8> <2 16>]>"))
-- $ slow 2 $ note (
-- -- "<0!8 0(3,8)!8> 0" + "<d4!3 a3> <fs4 e4 d4 b3>"
-- "<<fs <[fs@15 e] [fs@14 cs e]>> b4>"
-- -- "c g"
-- - 12
-- + 2
-- )
-- # "giorgio_syn:1"
-- -- # "bassWarsaw"
-- # cut 4
-- # pan 0.3
-- # room 0.4
-- # octersubsub 0
-- # crushbus 41 (range 16 3.5 "^53")
-- # octersubsubbus 42 (range 0 2 "^33")
-- # gain 1.7
-- d5 $ gM3 $ gF3 -- Marimba fondamental
-- $ midiOff "^58" (mask "t(<4 <2 4>>,4) t(<3!7 5>,8)")
-- $ juxBy 0.4 rev
-- $ note ("<[b4 [~ d5]. [fs5@3 fs5]] [e5 fs5 e5 fs5. [d5@3 fs5]]>")
-- # "marimba1"
-- -- # att (range 0.8 0.2 "^34")
-- # rel 1
-- -- # squizbus 51 (range 0 2.5 "^54")
-- -- # delay 0 # delayfb 0.8 # delayt 0.25
-- # pan 0.9
-- # gain 1.6
-- # room 0.3
-- d10 $ gF3 $ gM3 -- Menace
-- $ someCyclesBy "<1!16 1!32 0!16>" (>| note "<b3 ~ ~ <[~!7 c4] [~!5 c4 ef4 <c4 fs4>]>>")
-- -- Variante Adrianesque
-- $ someCyclesBy "<0!16 1!32 0!16>" (>| note "<b3 ~ ~ [ c4@2 ~ . ef4 fs4 c4]>")
-- -- Variante Adrianesque Folle
-- $ someCyclesBy "<0!16 1!32 1!12 0!4>" (>| note "<b3 ~ [g4 a4 b4 a4 es4 a4 fs4 a4 c4] [~ ~ as4 ~]>")
-- -- Variante Adrianesque Folle2
-- $ someCyclesBy "<0!16 1!32 0!12 1!4>" (>| note "<[b3 ~] [as3 bs3 g3 cs4 ~ d4] [~ gs4 ~ ~] [~ ~ [as4 as4] ~]>")
-- $ "90s_synatm:10"
-- # room 0.3 # sz 0.8
-- # gain 2
-- # att 0.10
-- # rel 10
-- # crushbus 101 (range 16 3.5 "^14")
-- # legato 2
-- # octersub 1
-- # cut 9
-- d7 $ gM3 $ gF2
-- -- $ ply 2
-- $ midiOn "^59" (# speed "-0.25")
-- $ midiOn "^91" (struct "t*<8!3 [8 4]>")
-- $ someCyclesBy "^19" (slice 4 "<<0 <1 2>>!8 <3 3 3*2 3*<4 8>>!8>")
-- $ chop 16
-- $ loopAt 4 $ "meth_bass:18" # cut 7 # gain 0.6
-- -- # octersubsubbus 73 (range 0 8 "^19")
-- -- # octersubbus 72 (range 0 4 "^35")
-- -- # octerbus 71 (range 0 1.7 "^55")
-- # crushbus 71 (range 16 1.7 "^55")
-- # panbus 72 (range 0.2 0.8 (fast "<2!4 4!4>" sine))
-- # gain 1.3
-- d8 $ gF1 $ gM1
-- $ midiOff "^60" (mask "t(4,8,1)") -- Techno drum mask
-- $ midiOn "^36" (loopAt 2 . (# "jungle_breaks:22")) -- Raise COMEON!
-- $ midiOn "^56" (loopAt 2 . (# "jungle_breaks:23")) -- Raise COMEON!
-- $ midiOn "^92" ( -- Bouton Nassim <3
-- slice 16 "[0 .. 7] . <[0 .. 7]!3 [0 1 . [2 3]]>"
-- . loopAt 1 . (# "breaks165")
-- -- . (# octer 0.4) . ( octersubsub 4)
-- . (# lpf 2500)
-- . (# room 0)
-- )
-- $ chop 16
-- $ "breaks165"
-- # cut 8
-- # octersub 0.5
-- # gain 1.2
--
--
-- once $ "bogdan:3" # cut 9 # orbit 8 # gain 1.7 -- HEY BRO
--
-- once $ "bogdan:5" # cut 9 # orbit 8 # gain 1.7 -- THAT's Right
--
-- once $ "bogdan:4" # cut 9 # orbit 8 # gain 1.7 -- Moneyyyy
--
-- once $ "bogdan:6" # cut 9 # orbit 8 # gain 1.7 -- ETA
--
--
--
--
--
--
-- 90s_matrix:0
--
-- d8 $ "jungle_breaks"
once $ "gfunk_lead"
do
setcps (120/60/4)
-- resetCycles
let width = pF "width"
let gMask = (midiOn "^41" (mask "t!3 <t!3 [f <t f>]>"))
let gMute = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let dMask = (whenmod 8 7 (mask "t t <t [f t]> f"))
let gM1 = gMask . gMute
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
d1 $ gF1 $ gM2
$ "[jazz,kick:5]*4"
d2 $ gF1 $ gM1 $ dMask $ "~ cp ~ cp*<1!3 2>" # "h2ogmcp" # gain 1.3
d3 $ gF1 $ gM1 $ dMask
$ midiOn "^44" ((# "vec1_snare") -- Mechant drum-snare!!
. (struct "~ t ~ t ~ t*<1 2 1 1> ~ t*<1!3 2>")
)
$ midiOff "^44"(<| "~ h ~ h ~ h*2 ~ h*<1!15 2>" )
$ "h2ogmhh:19"
# hpf (slow 32 $ range 200 8000 sine)
d4 $ gF2 $ gM3
$ midiOn "^57" (ply 2)
$ midiOn "^89" (slice 8 "<6>*<2 2 2 4 2 2 4 8 2 8 8 16 8 16 16 16>")
$ chop (8 * 8) -- 8 chops times 8 loops
$ loopAt 8
$ "gfunk_bass:1"
# cut 4
# room 0.8 # sz 0.5 # dry 1.2
# crushbus 41 (range 16 3.5 "^53")
# octersubbus 42 (range 0 1.5 "^33")
# gain 1.3
d9 $ gF3 $ gM3
$ midiOn "^18" (superimpose (
(# n "2") . (# cut 91) . (# room 0) . (|* gain 0.9))
)
$ note "<b b b g>@7 <cs6!3 fs6>"
# "moog" # cut 9
# crushbus 91 (range 16 1.5 "^19")
# pan 0.8
d5 $ gF3 $ gM3
$ midiOn "^58" (superimpose (("s" ~>) . (|+ note 12)))
$ note ("b4!4 . <[b4 b4 <b4 a4 g4 g4> <b4!7 fs4>] [b4 b4 d5 cs5]>")
# "acidOto3092"
# width (range 0.05 0.5 "^54")
# crushbus 51 (range 16 3.5 "^34")
# room 0.3
d7 $ gF1 $ gM1 $ dMask -- Tracey Trancey's loop art
$ midiOff "^59" (mask "t(4,8,1)" . chop 16) -- TECHNO MASK
$ midiOn "^55" (# n 2) -- UPDOWN
$ chop 8
$ loopAt 4
$ "trance_loops:0"
# cut 7
# gain 1.3
d8 $ gF1 $ gM1 $ dMask -- BYOB: Bring your own Breaks
$ midiOn "^92" ( -- Bouton Nassim <3
slice 16 "[0 .. 7]"
. loopAt 0.5 . (# "breaks165")
-- . (# octer 0.4) . ( octersubsub 4)
. (# lpf 2500)
. (# room 0)
)
$ midiOff "^60" (mask "t([4!3 8],8,1)" . chop 16) -- TECHNO MASK
$ midiOn "^36" (loopAt 2 . (# n 23))
$ midiOn "^56" (loopAt 2 . (# n 19))
$ midiOff "^56" (slice 4 "0 <~ 1> 2*<1 2 4 <4 [8 <8 4>]>> 3*<1 2>")
$ chop 4
$ loopAt 1 $ "jungle_breaks:78"
# gain 1.4
d10 $ gF3 $ gF3
$ iter "1 4"
$ note ((scale "mixolydian" "0 1 2 3 3 4 5 6") + "<a4!4 a5!4>")
# s "giorgio_syn:5"
# cut 10
# gain 1.4
# room 0.4 # sz 0.3 # dry 0.8
-- TODO: FIND FRIENDS 10-12
d11 $ gF3 $ gM3
$ struct "t(3,8) t(<3 5>,8)"
$ arp (slow 4 "<up down updown converge>" )
$ note ((scale "mixolydian" "[0,2,4] [1,3,5] [2,4,6]") + "a")
# s "giorgio_syn:14" -- 13
# cut 11
# gain 1.1
# room 0.6 # sz 0.4
-- Pinky up arpeggio with faster movement
d11 $ every 4 (fast 2)
$ arp "pinkyup thumbupdown"
$ note ((scale "mixolydian" "[0,2,4,6] [3,5,0]") + "a")
# s "giorgio_syn:8"
# cut 11
# lpf 1200 # gain 1.0
-- Diverging arpeggio pattern
d11 $ arp "diverge disconverge"
$ note ((scale "mixolydian" "[0,2,4] [5,3,1] [6,4,2]") + "a")
# s "giorgio_syn:17"
# cut 11 # octave 5
--
--
--
do
-- setcps (134/60/4)
-- resetCycles
setcps (123/60/4)
let width = pF "width"
let gMask = (midiOn "^41" (mask "t!3 <t!3 [f <t f>]>"))
let gMute = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let dMask = (whenmod 8 7 (mask "t t <t f> f"))
let gM1 = gMask . gMute
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
d1 $ gF1 $ gM2
$ midiOn "^42" (<| "k k k <k k*2 k <k [~ k] k*2 [~ . k*2 k*<1 2>]>>")
$ midiOff "^42" (<| "<k [~ <~!7 k*4>]>")
-- $ fix (|* gain 0.6) "jazz"
$ "[808bd:13,jazz,kicklinn]"
# gain 1.4
d2 $ gF1 $ gM1
$ midiOn "^43" ((whenmod 4 3 (superimpose (("e" <~) . ply "<1 2 [4 2] [8 4]>" . (|* gain 0.95)))) . (<| "~ s ~ s*<1 <2 [2 4]>>") . (# legato 0.5))
$ midiOff "^43" (<| "~ <s <~ [~ s]>>")
$ "vec1_claps"
# gain 1
# room (slow 16 $ range 0 0.8 perlin)
# sz 0.67
# dry 0.9
-- # att 0.03 # rel 2
d3 $ gF1 $ gM1
$ midiOff "^44" (mask "t(4,8,1)")
$ "h h h h*<1!4 2 1 <1 2 [4 2]>> h h h h*<1 2 1 <1 2>>"
# "h2ogmhh:4"
# gain 1.5
# room 0.3 # dry 0.8
d4 $ gF2 $ gM3
$ midiOn "^89" (off "0.125" (struct "t*4"))
$ midiOn "^57" ( -- OFFBEAT FIFTH DANCE
(off 0.125 (|+ note 7))
. (struct "t(4,8,1)")
. (|+ pan 0.2)
. (|* gain 0.9)
)
$ note "<<g3 [g3@2 g3 a3@2]> <e3!3 [e3 c3]>>"
# "bassWarsaw"
# gain 1.4
# crushbus 41 (range 16 3.5 "^53")
# octersubbus 42 (range 0 2.5 "^33")
# room 0.4
# sz 0.5
# pan 0.6
-- SOLEIL DU SOIR <3
d7 $ gF3 $ gM3
$ midiOn "^91" (ply 2 . (# legato 0.25))
$ midiOn "^59" ((|+ note 12))
$ fast 2
$ note "e3 b3 <e3 <c4 e4>> <b3!15 ~>"
# "FMRhodes1"
# modIndex (range 0 2.4 "^35")
# crushbus 71 (range 16 2.4 "^55")
# gain 1.8
# room 0.5 # dry 1.3 # sz 0.9
-- # crushbus 41 (range 16 3.5 "^53")
d5 $ gF3 $ gM3 -- guitar+synth mariés pour toujours
$ midiOn "^90" (ply "<4!4 [[4 8 4 8] <8 [16 <8 16>]>]!4>")
$ midiOn "^58" (iter 4 . chop 8)
$ chop 8
$ "gfunk_lead:4/8"
# cut 5
# gain 1.3
# bandfbus 51 (range 200 6800 "^54")
# crushbus 52 (range 16 5.7 "^34")
# room 0.4 # sz 0.8 # dry 0.5
d8 $ gF1 $ gM1
$ midiOn "^92" (ply "1 <2!3 4>")
$ midiOff "^60" (mask "t(4,8,1)") -- Techno drum mask
$ midiOn ("^36" - "^56") ((# n "22")) -- Hmmm Break
$ midiOn "^56" ((# n "23")) -- Raise COMEON!
$ chop 16
$ loopAt 2
$ "jungle_breaks:45"
# cut 8
# gain 1.5
d9 $ gF3 $ gM3 -- Gong de la Rentrée
$ superimpose ((|- note 12) . (# pan 0.4))
$ slow 2 $ note (
"<[b@3 a@5 <b b b e b!4 e!4 e e b e>@3 g@5] [b@3 a@5 a b ~ g@5]>"
+5 -- calage
)
# pan 0.7
# room 0.4
# "giorgio_syn:70"
-- # cut 9
d11 $ gF3 $ gM3 -- Sunset pianos
$ n "<[11 ~] ~ ~ ~ 12 ~ 12 ~ 12 ~ 12 ~ 13 ~!3 13 ~!3 14 ~!3 14 ~!3 15 ~ 15 ~>"
# "fepiano"
# room 0.3 # cut 11
# hpfbus 110 (slow 16 $ range 200 6800 perlin)
# hpqbus 111 (range 0.2 0.6 perlin)
# lpf 5000
# gain 0.9
d10 -- Woosh
$ mask "<f!12 t!4>"
$ loopAt 4
$ "risers:10" # cut 10
......@@ -21,7 +21,7 @@ d1 $ gF1 $ gM2
$ fix ((# att 0.02) . (# rel 0.5) . (# lpf 400)) "kick:4"
$ "[kick:4,jazz]"
# lpf 5000
# gain 1.4
# gain 1.6
d2 $ gF1 $ gM
$ "~ sn <~ [~ sn]> sn*<1!3 2>"
-- # note "0 0 -1 0"
......@@ -62,6 +62,7 @@ d4 $ gF2 $ gMute3 $ chop 8 -- La super sunny bass on the other side of the sunny
# delay "<0!3 [0 0.8]>"
# delayt 0.25 # delayfb 0
# pan 0.4
-- # bandf 400
# octersubbus 42 (range 0 2.5 "^33")
# octersubsubbus 43 (range 0 2.5 "^33")
d5 $ gF3 $ gM3 -- On the Sunny side of the sample
......@@ -108,7 +109,7 @@ d7 $ gM3 $ gF2 -- LA ACID BASS ARE YOU SUNNY NOW ?? <3
# room 0.5
# pan 0.3
# sz 0.5
# gain 1.3
# gain 1.6
d8 $ gF1 $ gM
$ midiOn ("^60" - "^92") (mask "f(4,8)")
$ midiOn ("^36" - "^92") ((loopAt 2) . (# hpf 1500) . (# "jungle_breaks:45")) -- ORL RPZ
......@@ -123,7 +124,7 @@ d8 $ gF1 $ gM
-- $ loopAt 2
$ "jungle_breaks:28" -- BREAKS LOVER <3
# room 0
# gain 1.3
# gain 1
d11 $ gM3 $ gF3-- Sunny doux piano c'est cadeau
$ gF3
$ (slice 2 "0*2")
......
do
setcps (124/60/4)
let gMask = (midiOn "^41" (mask "t . <f t f <f t>> <t f f <t f>>"))
let gMute1 = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let gM1 = gMask . gMute1
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
d1 $ gF1 $ gM2
$ midiOn "^42" (<| "k k k <k [<~!3 k> k]>")
$ midiOff "^42" (<| "k . <[~ k] k(<3 5>,8)>")
$ "[techno:0,808bd:2,909,kick:4]"
-- $ "kick:5"
# gain 1.5
# lpf 400
d2 $ gF1 $ gM1
$ midiOn "^43" (<| "~ s ~ [s*<1 2> <~ s*<2 [4 2]>>]")
$ midiOff "^43" (<| "~ s")
$ "vec1_claps:10"
# gain 1.3
# lpf 2000
d3 $ gF1 $ gM1
$ midiOn "^44" (<| "[~ h*<1!3 <1 2 [4 2] 1?>>]*4" )
$ midiOff "^44" (<| "h(4,8,1)")
$ "h2ogmhh"
# gain 1.4
# room 0.5
# dry (slow 16 $ range 0.2 1.8 perlin)
# sz 0.4
# legato (range 0.3 2 "^52")
d5 $ gF3 $ gM3
$ midiOn "^18" (fast 2)
$ midiOn "^90" (ply "<2 2 1 2 2 4 [4 2 8 4] 8>")
$ slice 4 "<0 1 2 3*<1!3 <2 4 [4 1]>>>"
$ midiOn "^34" (
mask "<t <f!4 t!4> <f t t t> <f!8 t!6 f t>>" .
(>| n (slow 8 $ "<18 19 20 21 22 23 24 26>"))
)
$ midiOn ("^58" - "^34") (>| n (slow 4 $ "<10 11 12 13 13 13 14 13 14 15 15 13 15 16 15 13>"))
$ midiOff ("^58" + "^34") (>| n (slow 4 $ "<9 9 10 9>"))
$ fix (|* gain 1.2) "take5:9"
$ "take5"
# cut 5
# gain 1.5
# room (slow 64 $ range 0 0.8 sine)
# sz (slow 1312 $ range 0.2 0.95 cosine)
# dry (slow 4 $ 1 + 0.4 * perlin)
# pan 0.8
d4 -- BASSLINE GENERATIVE
$ gF3 $ gM3
$ midiOn "^57" (superimpose (
degradeBy "0 <0!3 0.2>!6 <0.2!3 0.5>" .
(|+| note "[0 7 2 12]*4")
. (|+ note 12)
. (|* gain (slow 32 $ range 0.6 1.1 saw))
. (
# octersubbus 42 (range 0 3.5 "^33")
)
))
$ struct "[t,[~ . t(<1 3 5>,8)]]"
$ note ("<ef2 ef2 <fs2 fs2 cs2 bf2> ef2>" + "[0,12]")
# "bassWarsaw"
# pan 0.4
# gain 1.4
# room 0.3
# crushbus 41 (range 16 3.5 "^53")
# room 0.2 # dry 1.2 # sz 0.7
# gain 1.8
d7 -- CHOEUR GENERATIF ALONG THE BASS
$ gF3 $ gM3
$ midiOn "^59" (superimpose (
arp "up <up <converge pinkyup>>"
. (ply 2)
. (# pan "0.85 0.15")
. (|* gain (range 0.2 1.5 "^55"))
. (|+ note 12)
)
)
$ note ("<ef3 ef3 <fs3 fs3 cs3 bf3> ef3>" + "c6'maj'4")
# "moogBass"
-- # pan 0.4
# gain 1.4
# room 0.3
# crushbus 41 (range 16 3.5 "^53")
# room 0.2 # dry 1.2 # sz 0.7
# gain 1.4
# pan 0.4
d11 $ gF3 $ gM3 -- THE FLUTIST
$ slice 4 "<0 1 2 3>"
$ n (slow 8 $ "<13 14>")
# "take5" # cut 11
# room 0.3 # sz 0.5 # dry 0.2
# gain 1.3
d12 $ gF3 $ gM3 -- THE SLEEPWALKER
$ slice 4 "<0 1 2 3>"
$ n (slow 8 $ "<18 19 20 31 22 23 24 24>")
# "take5" # cut 11
# room 0.3 # sz 0.5 # dry 0.2
# gain 1.5
d8 $ gF1 $ gM1 -- La Boite à breaks de ParVagues <3
$ midiOn "^92" (ply "1 <2!3 4>")
$ midiOff "^60" (mask "t(4,8,1)") -- Techno drum mask
$ midiOn ("^36" - "^56") (loopAt 0.5 . (# "jungle_breaks:22")) -- Hmmm Break
$ midiOn "^56" (loopAt 0.5 . (# "jungle_breaks:23")) -- Raise COMEON!
$ chop 8
$ midiOff ("^56" + "^36") (-- DEFAULT TO RUN AND THUNDER VARIATION
# n "<0!16 1 1 2 1 1 2 1 3 2 3 4 5 6 7 8 8>"
)
$ chop 16
$ loopAt 4
$ "take5:0"
# cut 8
# gain 1.4
d10 -- A FAIR RISER
$ mask "<f!24 t!8>"
$ loopAt 8
$ "risers"
# cut 10
# room 0.4
# dry 1.4
# octersubsub 0.5
# gain 0.8
--
--
--
--
--
--
--
--
--
do
resetCycles
-- resetCycles
setcps(120/60/4)
let gMask = (midiOn "^41" (mask "t . <f t f <f t>> <t f f <t f>>"))
let gMute = (midiOn "^73" (mask "f*16"))
......@@ -51,13 +51,13 @@ d4 $ gF2 $ gM3 -- TODO: Varier basse?
# crushbus 41 (range 16 4 "^53")
# gain 1.4
d5 $ gF3 $ gM3 -- NuJazz Keys
$ midiOn "^58" ((# freeze 0.2))
$ midiOn "^58" ((# freeze 0.1))
$ midiOn "^90" (chop "4 <2 4 4 8>")
$ chop 8
$ loopAt 4
$ "nujazz_keys120"
# n (slow 4 "<5 6 7 8>")
# gain 1.4
# gain 1.6
# cut 5
# crushbus 51 (range 16 6.4 "^54")
# octerbus 52 (range 0 0.7 "^34")
......
......@@ -58,6 +58,7 @@ d5 $ gM3 $ gF3
# pan 0.6
# gain 1.4
d7 $ gM3 $ gF3
$ midiOn "^59" (ply "<2 2 <4 8> <8 4>>")
$ chop 8
$ loopAt 2
$ "nujazz_keys125" # n "<66!4 67!4>"
......
......@@ -28,7 +28,7 @@ d2 $ gF1 $ gM1
$ midiOff "^43" (<| "~ s")
$ "cp"
-- # note "-2"
# gain 1.4
# gain 1.8
d6 $ gF1 $ gM1 -- Cymbales sol
$ midiOn "^44" (<| "~ cy ~ cy ~ cy ~ <cy [~ cy]>")
$ midiOff "^44" (<| "~!7 <~ <cy ~> ~ cy>")
......
once $ "gfunk_lead"
do
setcps (60/60/4)
-- resetCycles
let width = pF "width"
let gMask = (midiOn "^41" (mask "t!3 <t!3 [f <t f>]>"))
let gMute = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let dMask = (whenmod 8 7 (mask "t t <t [f t]> f"))
let gM1 = gMask . gMute
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
d1 $ gF1 $ gM2
$ fast 2
$ midiOn "^42" (<| "k k k k")
$ midiOff "^42" (<| "k . <~ k(3,8)>")
$ "[jazz]"
d2 $ gF1 $ gM1 $ dMask
$ fast 2
$ "~ cp ~ cp*<1!3 2>"
# "h2ogmcp"
# gain 1.3
d3 $ gF1 $ gM1 $ dMask
$ fast 2
$ midiOn "^44" ((# "vec1_snare") -- Mechant drum-snare!!
. (struct "~ t ~ t ~ t*<1 2 1 1> ~ t*<1!3 2>")
)
$ midiOff "^44"(<| "~ h ~ h ~ h*2 ~ h*<1!15 2>" )
$ "h2ogmhh:19"
# hpf (slow 32 $ range 200 8000 sine)
d4 $ gF2 $ gM3 -- NUMB TO WEATHER
$ midiOn "^89" (ply 8)
$ slow 2
$ chop 8
-- $ loopAt 4
$ "numb" # n "<1!4 4 5 6 6>"
# cut 4
# octerbus 42 (range 0 1.5 "^33")
# crushbus 41 (range 16 2 "^53")
# room 0.4
# sz 0.4
# dry 1.9
d5 $ gF3 $ gM3
$ chop 8
$ "zombie:0/2"
# cut 5
d7 $ gF3 $ gM3 -- ZOMBIE GUITAR INFECTION
$ ply 8
$ chop 4
$ midiOff "^90" (slow 4)
$ midiOn "^59" (>| n "<0 1 2 3>")
$ midiOff "^59" ((>| n "<5 7 9 10>"))
$ "zombie"
# cut 7
# gain 1.4
d9 $ gF3 $ gM3
$ slow 2
$ chop 4
$ n "<11!4 12!4 18 19 20 21 18 19 20 21>"
# "numb" # cut 9
d11 $ gM3 $ gF3
$ n "<22 23>/2" # "zombie"
# cut 11
# gain 1.3
# room 0.4
# sz 0.45
d12 $ gM3 $ gF3
$ "zombie:22"
# cut 11
# gain 1.3
d8 $ gF1 $ gM1 $ dMask -- BYOB: Bring your own Breaks
$ midiOn "^92" ( -- Bouton Nassim <3
slice 16 "[0 .. 7]"
. loopAt 0.5 . (# "breaks165")
-- . (# octer 0.4) . ( octersubsub 4)
. (# lpf 2500)
. (# room 0)
)
$ midiOff "^60" (mask "t([4!3 8],8,1)" . chop 16) -- TECHNO MASK
$ midiOn "^36" (loopAt 2 . (# n 23))
$ midiOn "^56" (loopAt 1 . (# n 19))
$ midiOff "^56" (slice 4 "0 <~ 1> 2*<1 2 4 <4 [8 <8 4>]>> 3*<1 2>")
$ chop 4
$ loopAt 1 $ "jungle_breaks:78"
# gain 1.4
-- d4 $ gF2 $ gM3
-- $ midiOn "^57" (ply 2)
-- $ midiOn "^89" (slice 8 "<6>*<2 2 2 4 2 2 4 8 2 8 8 16 8 16 16 16>")
-- $ chop (8 * 8) -- 8 chops times 8 loops
-- $ loopAt 8
-- $ "gfunk_bass:1"
-- # cut 4
-- # room 0.8 # sz 0.5 # dry 1.2
-- # crushbus 41 (range 16 3.5 "^53")
-- # octersubbus 42 (range 0 1.5 "^33")
-- # gain 1.3
-- d9 $ gF3 $ gM3
-- $ midiOn "^18" (superimpose (
-- (# n "2") . (# cut 91) . (# room 0) . (|* gain 0.9))
-- )
-- $ note "<b b b g>@7 <cs6!3 fs6>"
-- # "moog" # cut 9
-- # crushbus 91 (range 16 1.5 "^19")
-- # pan 0.8
-- d5 $ gF3 $ gM3
-- $ midiOn "^58" (superimpose (("s" ~>) . (|+ note 12)))
-- $ note ("b4!4 . <[b4 b4 <b4 a4 g4 g4> <b4!7 fs4>] [b4 b4 d5 cs5]>")
-- # "acidOto3092"
-- # width (range 0.05 0.5 "^54")
-- # crushbus 51 (range 16 3.5 "^34")
-- # room 0.3
-- d7 $ gF1 $ gM1 $ dMask -- Tracey Trancey's loop art
-- $ midiOff "^59" (mask "t(4,8,1)" . chop 16) -- TECHNO MASK
-- $ midiOn "^55" (# n 2) -- UPDOWN
-- $ chop 8
-- $ loopAt 4
-- $ "trance_loops:0"
-- # cut 7
-- # gain 1.3
-- d10 $ gF3 $ gF3
-- $ iter "1 4"
-- $ note ((scale "mixolydian" "0 1 2 3 3 4 5 6") + "<a4!4 a5!4>")
-- # s "giorgio_syn:5"
-- # cut 10
-- # gain 1.4
-- # room 0.4 # sz 0.3 # dry 0.8
-- -- TODO: FIND FRIENDS 10-12
-- d11 $ gF3 $ gM3
-- $ struct "t(3,8) t(<3 5>,8)"
-- $ arp (slow 4 "<up down updown converge>" )
-- $ note ((scale "mixolydian" "[0,2,4] [1,3,5] [2,4,6]") + "a")
-- # s "giorgio_syn:14" -- 13
-- # cut 11
-- # gain 1.1
-- # room 0.6 # sz 0.4
--
-- -- Pinky up arpeggio with faster movement
-- d11 $ every 4 (fast 2)
-- $ arp "pinkyup thumbupdown"
-- $ note ((scale "mixolydian" "[0,2,4,6] [3,5,0]") + "a")
-- # s "giorgio_syn:8"
-- # cut 11
-- # lpf 1200 # gain 1.0
--
-- -- Diverging arpeggio pattern
-- d11 $ arp "diverge disconverge"
-- $ note ((scale "mixolydian" "[0,2,4] [5,3,1] [6,4,2]") + "a")
-- # s "giorgio_syn:17"
-- # cut 11 # octave 5
once $ "menthe:0" # cut 4 -- INTRO VOIX
# room 0.5
# sz 0.9
# gain 1
once $ "menthe:1" # cut 4 -- LONGUE MULTIPLE
# gain 1.3
do
resetCycles
let gMask = (midiOn "^41" (mask "t . <f t f <f t>> <t f f <t f>>"))
let gMute1 = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let gM1 = gMask . gMute1
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
let gF1 = (# djfbus 1 (range 0.05 0.95 "^49"))
let gF2 = (# djfbus 2 (range 0.05 0.95 "^50"))
let gF3 = (# djfbus 3 (range 0.05 0.95 "^51"))
let double = (midiOn "^29" $ fast 2)
setcps (80/60/4)
d1 $ gF1 $ gM2 $ double
$ "k . ~ k ~ <~ k*<1 2>>"
# "[techno:0,kick:4]"
-- # "[cpu,kick:4]"
d2 $ gF1 $ gM1 $ double $ "~ s ~ s*<1!3 2>"
# "vec1_snare:26"
d3 $ gF1 $ gM1 $ "~ h ~ h ~ h ~ h ~ h ~ h ~ h h? h*<1!3 2>"
# "ho:1" # gain 0.5 # cut 3
d4 $ gF2 $ gMute3
$ midiOn "^89" (loopAt "<0.5!7 0.25>")
$ midiOn "^57" (# n "<3!8 4!8>")
$ chop 8
$ loopAt 2
$ "menthe" # n "<2!16 5!16>"
# room 0.3
# cut 1
d8 $ gF1 $ gM1
$ loopAt 0.5
$ chop 8
$ midiOn "^36" (loopAt 4 . (|> "jungle_breaks:75"))
$ midiOn "^56" (loopAt 2 . (|> "jungle_breaks:19"))
-- $ whenmod 8 7 (striate "1 <2 4>")
$ "breaks165"
......@@ -38,7 +38,7 @@ d3 $ gF1 $ gM1 -- Highest hats
-- $ "d*<8 [8 [16 <8 16> 16 <8 4 <16 32>>]]>"
$ sometimesBy "0!3 <0 0.5>" (# n 12)
$ sometimesBy "0!3 <0.1 0>" (# n 13)
$ "d*[4 2]"
$ "~ d ~ d d d d*<1 1 2 1> d"
# "h2ogmsn:14"
# cut 3
# legato (range 0.28 1 sine)
......
......@@ -20,21 +20,26 @@ d1 $ gF1 $ gMute2
$ "[jazz,clubkick]"
# cut 1
# gain 1.5
d2
d2 $ gF2 $ gM1
$ midiOn "^43" (<| "~ s ~ [s*<1 2> <~!7 [~ s]>]")
$ midiOff "^43" (<| "~ s")
$ "snare:45"
# "h2ogmcp" # gain 1.3
# "h2ogmcp"
# gain 1.5
# room 0.08 # sz 0.3
d3 $ gF1 $ gM1
$ midiOn "^44" (ply "2 <2!3 [2|4|[4 8]]>")
$ "~ h ~ h ~ h*<1!3 2> ~ h*<1 [1|2]>"
# "h2ogmhh" # n "<0!4 1!3 2>"
# gain (1.4 * (range 0.9 1.2 perlin))
d4 $ gF2 $ gM3
$ midiOn "^89" (ply 4) -- HIGHER
$ chop 8
$ loopAt 4
$ midiOn "^57" ( -- HIGHER
slow 2 . ply 2 .
(# n "<1 1 2 2 6 6 6 1 16 16 17 18>" )
. (|* gain 0.9)
)
$ midiOff "^57" ( -- LOWER
(# n "<5 5 5 6>")
......@@ -47,16 +52,16 @@ d4 $ gF2 $ gM3
# octersubbus 42 (range 0 2.5 "^33")
# octersubbus 43 (range 0 5 "^17")
# cut 4
# gain 1.4
# gain 1.5
d5 $ gF3 $ gM3 -- COUNT TO SUPERSTARDOM
-- $ slow 2
$ midiOn "^29" (
slice 16 "<<[0 1 2 3] [<0 10> <1 11> 10 11]> <[8 9 10 11] [<12!3 15> <13!3 15> <14 12> <15 13>]>>"
. (>| "perfect")
)
$ midiOn "^90" (ply "<2 4>")
$ midiOn ("^34" - "^18") ( -- THE HIPS THE FACE THE LIPS THE MICROPHONE
slice 4 (fast 2
. ply "<1!16 <2 1>!16>" $ "<0 1 2 3>")
slice 4 "<0 1 0 1 2 2 [2 2] 3>"
. (# n 14) . (|* gain 0.8)
)
$ midiOn "^18" -- SUPERSTAR
......@@ -68,18 +73,18 @@ d5 $ gF3 $ gM3 -- COUNT TO SUPERSTARDOM
. mask "<t!4 t f t t>"
. (# end "<0.18!3 0.45 1!4>")
. (# begin "<0!4 0.5!4>")
. (|* gain 1.3)
. (|* gain 0.9)
)
$ midiOn ("^58") ( -- Slice 1 2 3 4!
slice 8 "<[0 1] [0 1] [0 0 <0 1> <1 0>] [2 3]>" )
$ midiOff ("^58"+"^29") ( -- WATCH ME WORK IT
$ midiOff ("^58"+"^29" + "^34") ( -- WATCH ME WORK IT
slice 8 "<[0 1] [2 3] [4 5] [6 <7 <6 6*2>>]>"
)
$ "perfect"
# cut 5
# room 0.4 # sz 0.39
# pan "0.2 0.8 0.2 0.8"
# gain 1.8
# gain 1.5
# octersub 0.8
d6 $ gF1 $ gM3
$ mask "f t"
......@@ -91,7 +96,7 @@ d6 $ gF1 $ gM3
# delay 0.8 # delayt 0.125 # delayfb 0.5
# gain 1.4
# cut 6
d7 -- $ gF3 $ gM3
d7 $ gF3 $ gM3
$ midiOn "^59" (off (1/16) (|+ note 7))
$ note (
fast 2
......
once $ "coffee" # cut 1
do
-- resetCycles
setcps(140/60/4)
let gMask = (midiOn "^41" (mask "t . <f t f <f t>> <t f f <t f>>"))
let gMute = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let gM1 = gMask . gMute
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
let gF1 = (# djfbus 1 (range 0.05 0.95 "^49"))
let gF2 = (# djfbus 2 (range 0.05 0.95 "^50"))
let gF3 = (# djfbus 3 (range 0.05 0.95 "^51"))
d1 $ gF1 $ gMute2
$ midiOn "^42" (<| "k k k <k!3 <[~ k*<1!3 2>]!3 k*2>>")
$ midiOff "^42" (<| "k . ~ <~!4 k!12> ~ ~")
$ fix ((# lpf 1400)) "kick:4"
-- $ "[techno:0,kick:4]"
$ "jazz"
# gain 1.2
# room 0.2
# dry 1
d2 $ gF1 $ gM1
$ midiOn "^43" (<| "~ c ~ c*<1!3 2>")
$ midiOff "^43" (<| "~ . ~ c*<1!3 <2!3 4>>")
-- $ "[rampleM2:12,rampleD3:1,rampleD4:1]"
$ "[snare:10,snare:20]"
-- # note "-4"
# lpf 2000
# gain 1.5
# pan 0.6
# rel (slow 16 $ range 0.6 0.2 saw)
d3 $ gF1 $ gM1 -- Highest hats
$ whenmod 32 16 (swingBy (slow 16 $ range 0.08 0.01 saw) 4)
$ midiOn "^44" (off "s" id)
$ midiOn "^76" (ply "<2!2 4 8>")
$ fix (# legato 0.25) "rampleD2:3"
$ "~ h ~ h ~ h*<1 2> ~ h*<1!3 2>"
# "rampleD2:2!6 <rampleD2:2!3 rampleD2:3> rampleD2:3"
# cut 3
# gain (1.4 * (range 0.85 1.05 (fast 4 perlin)))
# room 0.2 # dry 0.99 # sz 0.25
d4 $ gF2 $ gM3
$ note (
"0 0(<3 3 5 [3 8]>,8)" +
"<ef4!4 gs4!4 fs4!4 ef!4>"
+ (arp "up" "c'maj'4" )
- 12
)
# "giorgio_syn:9"
# cut 4
# room 0.3
# bandf 400
# gain 1.1
# crushbus 41 (range 16 3.5 "^53")
d5 $ gF3 $ gM3
$ midiOn "^90" (slice 4 "0 0 <0 0*2 1 2> <0*2 0 2 3>*<1!3 2>")
$ midiOn "^58" (>| n "2/4")
$ midiOff "^58" (>| n "1/2")
$ "coffee"
# cut 5
d7 $ gF3 $ gM3
$ midiOn "^91" (ply 8)
$ (0.25 ~>)
$ slow 8
$ ply 4
$ n "<3 4 5 6>"
# "coffee"
# cut 7
# room 0.4
# dry 1.3
# gain 1.4
# sz 0.4
d8 $ gF1 $ gM1
$ midiOn "^92" (ply "1 <2!3 4>")
$ midiOff "^60" (mask "t(4,8,1)") -- Techno drum mask
$ midiOn ("^36" - "^56") ((# n "22")) -- Hmmm Break
$ midiOn "^56" ((# n "23")) -- Raise COMEON!
$ chop 16
$ loopAt 2
$ "jungle_breaks:45"
# cut 8
# gain 1.5
-- d4 $ gF2 $ gMute3 -- BASSLINE VIOLENTE PAR VALENTIN <3
-- $ superimpose (
-- (# crushbus 41 (range 16 3.5 "^53"))
-- . (# hpf 500)
-- )
-- $ midiOn "^89" (ply "2 <2 <4 8>>")
-- $ fast (4/3) -- Le fameux
-- $ midiOff "^57" -- L'attente
-- (sometimesBy "<1!3 [0 <0 1>]>" (mask "t(<5!3 <5 8>>,8) t(<5!3 5>,8)"))
-- $ ("e" ~>) -- Decalage
-- $ note ("<[fs4 <a5!2 gs!4 fs5!4 <[a6 gs6 fs6]!3 [fs6 gs6 a6]>>@3]*4>")
-- # "bassWarsaw" |- note 24
-- # pan 0.4
-- # octersubbus 42 (range 0 2 "^33")
-- # octerbus 43 (range 0 0.52 "^33")
-- # gain 2
-- # legato "[0.8 0.5]*4"
-- d5 $ gM3 $ gF3 -- Suns of Gold Keys, samples
-- $ midiOn "^90" (ply "2 <2 <4 8>>")
-- $ midiOn "^58" (slice 8 "<0 1 2 3>(<3 <5 [5 3]> <3!3 [1]> <8!3 [8 4]>>,8)")
-- $ midiOff "^58" (slice 8 "<0 1 2 3 4 5 6 7>")
-- $ "suns_keys" # n "<0 <1 2> 3 3>"
-- # pan 0.8
-- # room 0.8 # sz 0.5
-- # hpf 500
-- # cut 5
-- # tremrbus 51 (range 0 "<0 8>" "^78")
-- # tremdp 2
-- # gain 1.2
-- d7 $ gMute3 $ gF3 -- Suns of Gold Guitars, sampled and cut
-- $ superimpose ((# cut 71) .
-- (# crushbus 73 (range 16 2.9 "^55")) -- CRASH THIS GUITAR
-- )
-- $ midiOn "^91" (ply "1 . 2 <2 <4 8>>")
-- $ slice 8 "0 0 0 <0 <1 2>>"
-- $ "suns_guitar:0/2"
-- # cut 7
-- # octersubbus 71 (range 0 1.9 "^35") -- BURN THIS GUITAR
-- # lpfbus 72 (range 10000 200 "^35")
-- # pan 0.2
-- # gain 1.1
-- d8 $ gF1 $ gM1
-- $ midiOn "^92" ( -- Bouton Nassim <3
-- slice 16 "[0 .. 7] . <[0 .. 7]!3 [0 1 . [2 3]]>"
-- . loopAt 0.5 . (# "breaks165")
-- -- . (# octer 0.4) . ( octersubsub 4)
-- . (# lpf 2500)
-- . (# room 0)
-- )
-- $ midiOff ("^60" + "^92") (ply "t(<4!3 <6 [4 <8 16>]>>,8,1)") -- TECHNOO
-- $ midiOn "^36" ((loopAt 1) . (# "jungle_breaks:19")) -- Clochettes?
-- $ midiOn "^56" ((loopAt 1) . (# "jungle_breaks:60")) -- Clochettes?
-- $ chop 16
-- $ loopAt 2
-- $ "jungle_breaks:45"
-- # cut 8
-- # att 0.04
-- # rel 2
-- # gain 1.6
-- # hpf 1200
-- -- # room 0.52 # sz 0.04 # dry 1.01
-- d9 $ gF3 $ gMute3 -- Voice of the Father
-- $ someCyclesBy "<0!16 1!16>" (slice 10 "<5 5 <2 2 7 2> <7 4>>")
-- $ someCyclesBy "<1!16 0!16>" (slice 10 "<0 0 2 <4 5 5 4>>")
-- $ "suns_voice:0"
-- # octerbus 91 (slow 16 $ range 0.5 0.2 sine)
-- # hpf 1500
-- # cut 9
-- d10 -- CUES AND NOISES TODO Rework following
-- $ fix (# lpf 2000) "rampleD5:3" -- Porte spaciale
-- $ fix ((# legato 4) . (# cut 101) . mask "<f!3 t>" . slow 8) "risers"
-- $ "[<~!3 rampleD5:3>,risers:5]"
-- # gain 1.2
-- -- # cut 10
-- d11 $ gM3 $ gF2 -- Flying triplet guitar
-- $ slice 8 ("<0 1 2 3>(3,8)")
-- $ "suns_guitar:2"
-- # cut 11
-- # room 0.8
-- # sz 0.5
-- # dry 1.2
-- # pan "<0.3!16 0.7!16>"
-- # legato 4
-- d12 $ gM3 $ gF3 -- Falling angel guitar
-- $ whenmod 16 8 (ply "<4 2 [4 2] [4 8]>")
-- $ slice 2 ("<0 1>")
-- $ "suns_guitar:1"
-- # cut 12
-- # pan "<0.7!16 0.3!16>"
-- # room 0.4
-- # sz 0.5
-- # hpf 1500
-- # dry 1.2
-- # gain 1.8
-- # legato 1.2
--
-- once
-- $ sound "suns_keys:0"
--
-- once $ "jazz"
--
-- setcps 0.25
--
-- d1 $ fastcat ["bd:0*2", "hh()", "dr*4", "[cp*<1 2> . ~]"]
-- -- # ""
-- # gain 1.8
-- -- # hpf 5000
......@@ -2,6 +2,7 @@
-- L'Été a MauerPark <3
do
setcps (120/60/4)
-- resetCycles
let gF = (# djfbus 1 (range 0.05 0.95 "^49"))
let gF2 = (# djfbus 2 (range 0.05 0.95 "^50"))
let gF3 = (# djfbus 3 (range 0.05 0.95 "^51"))
......@@ -27,13 +28,13 @@ d1 $ gF $ gMute2
# rel 0.5
# att 0.015
# lpf 4000
# gain 1.2
# gain 1.5
d2 $ gF $ gMute -- Clap timer
$ midiOn "^43" ((|* gain "0 1 0.8 1") . (<| "~ c <~!3 [~ c]> c"))
$ midiOff "^43" ((|* gain "1 0.8") . (<| "c . ~ ~ ~ <~!3 c>"))
$ drumFrom "[sakatadpm48,rolandr8]" "cp"
# lpf 2000
# gain 1.2
# gain 1.6
d7 $ gF3 $ gM3 -- High Cello Dauphin
$ midiOn "^91" (ply 2)
$ midiOn (1 - "^35") (struct "t . f")
......@@ -48,7 +49,7 @@ d7 $ gF3 $ gM3 -- High Cello Dauphin
# pan 0.9
# crushbus 71 (range 16 2.5 "^55")
-- # midiG' "^83" 0 1.2
# gain 0.7
# gain 1.2
d3 $ gF $ gMute
$ midiOff "^44" (mask "t([8 4 <4 <8 16>>],16)")
$ midiOn "^76" (struct "t*[8 <8 16> <16 8 8 16> <16 [32 <64 128>]>]")
......@@ -74,6 +75,7 @@ d4 $ gF2 $ gM3 $ slow 2 -- Basse Germanique
# room 0.2
# pan 0.4
# crushbus 41 (range 16 2.5 "^53")
# octersubbus 42 (range 0 5 "^33")
# gain 1.6
# cut 4
d5 $ gF3 $ gMute3 -- Leads reponse TODO moins carre?
......@@ -107,7 +109,7 @@ d8 $ gM $ gF -- Breaks divins
$ "jungle_breaks:1"
# cut 8
# pan "[<0.35!3 0.65> <0.65!3 0.35>]*4"
# gain 1
# gain 1.3
d9 $ gF3 -- Nano-angels chorus of machines
$ sometimesBy "^19" (superimpose (
(# cut 101)
......
do
setcps (100/60/4)
let width = pF "width"
let gMask = (midiOn "^41" (mask "t!3 <t!3 [f <t f>]>"))
let gMute = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let dMask = (whenmod 8 7 (mask "t t <t [f t]> f"))
let gM1 = gMask . gMute
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
d1 $ "jazz*4" # lpf 3000
d1 $ gF1 $ gM2
$ fast 2 $ "k . ~ k ~ ~"
# "[jazz,kick:5]"
d2 $ gF1 $ gM1
$ fast 2
$ "~ c ~ [c*<1!3 2> <~!7 c>]"
# "vec1_snare:3"
d3 $ gF1 $ gM1
$ "~ h ~ h ~ h ~ h*<1 2>"
# "ho:1" # gain 0.8
d4 $ gF2 $ gM3
$ note ("<g f c d>" - 24)
# "bassWarsaw"
# gain 1.4 # room 0.3 # sz 0.3
# octersub 1.2
d5 $ gF2 $ gM3
$ "g/4" # "gfunk_lead:0"
# cut 5
# gain 1.4
# room 0.4
d8 $ gF1 $ gM1
$ loopAt 1
$ chop 8
-- $ midiOn "^56" ()
$ "jungle_breaks:50"
# gain 0.9
-- ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
-- ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⢻⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
-- ⠀⠀⠀⠀⠀⠀⠀⠀⢤⣄⣀⣀⣀⣰⡇⠈⣧⣀⣀⣀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀
-- ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⢦⡀⠀⠀⠀⠀⢀⣠⠾⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀
-- ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣹⠃⠀⡀⠀⢿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
-- ⠀⠀⠀⠀⠀⣠⠔⠂⠀⠀⠀⢠⣏⣴⠞⠛⢦⣜⣧⠀⠀⠀⠀⠢⣄⡀⠀⠀⠀⠀
-- ⠀⠀⢠⣖⡿⡋⠀⠀⠀⠀⠀⠾⠋⠀⠀⠀⠀⠉⠻⡄⠀⠀⠀⠀⢝⢿⣱⣄⠀⠀
-- ⠀⡜⣿⣨⡾⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠲⣤⡀⠀⠀⠀⠀⠀⠈⢳⣇⣿⢡⠀
-- ⢰⣇⣟⣵⠃⠀⠀⠀⠀⠀⠀⢀⣴⣦⡤⠀⠀⠈⠻⣷⡀⠀⠀⠀⠀⠈⣯⡻⢸⡆
-- ⡆⣿⡾⡅⠀⠀⠀⠀⠀⢀⣴⣿⣿⣏⠀⠀⠀⠀⠀⠹⣿⡆⠀⠀⠀⠀⢨⢻⣾⢱
-- ⣷⡘⣱⠇⠀⠀⠀⠀⠀⠀⠹⠋⠈⠻⣷⣄⠀⠀⠀⠀⣿⣿⠀⠀⠀⠀⠘⣧⢋⣾
-- ⡼⣷⡿⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣷⣄⠀⢀⣿⣿⠀⠀⠀⠀⢰⢻⣾⢇
-- ⢳⣌⠇⣿⠀⠀⠀⠀⠀⠀⣴⢶⣤⣀⡀⠀⠈⢻⣷⣾⣿⠏⠀⠀⠀⠀⣿⠸⣡⡞
-- ⠀⡿⢷⣿⡸⣄⠀⢀⣴⡾⠉⠀⠈⠛⠿⢿⣿⣿⡿⠿⣷⣄⠀⠀⢠⡇⣿⡾⢛⠀
-- ⠀⠘⢦⣝⡣⢿⡦⡈⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠋⢀⣴⡿⣘⣭⡶⠃⠀
-- ⠀⠀⠀⠹⣛⠿⠷⡹⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⢟⠾⠟⣛⠝⠀⠀⠀
-- ⠀⠀⠀⠀⠈⠛⡿⠿⠶⢛⣫⣤⡶⣒⡶⠶⣖⠶⣶⣍⣛⠚⠿⣟⠛⠁⠀⠀⠀⠀
-- ⠀⠀⠀⠀⠀⠀⠈⠙⠛⠛⠋⢡⠞⠁⠀⠀⠈⠻⣮⠙⠛⠛⠋⠁⠀⠀⠀⠀⠀⠀
--
do
resetCycles
setcps (128/60/4)
let gMask = (midiOn "^41" (mask "t . <f t f <f t>> <t f f <t f>>"))
let gMute1 = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let gM1 = gMask . gMute1
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
let gF1 = (# djfbus 1 (range 0.05 0.95 "^49"))
let gF2 = (# djfbus 2 (range 0.05 0.95 "^50"))
let gF3 = (# djfbus 3 (range 0.05 0.95 "^51"))
let modIndex = pF "modIndex"
d1 $ gMute2 $ gF1 -- Kick solide
$ fix ((|* gain 0.9) . (# lpf 1000)) "jazz"
$ fix ((# att 0.02) . (# rel 0.5) . (# lpf 5000)) "kick:4"
$ midiOn "^42" (struct "t t t t*<1!6 2 2>")
$ midiOff "^42" (<| "k . ~ <~!3 k> ~ ~")
$ "[jazz,kick:4]"
# gain 1.2
-- # midiG' "^78" 0 1.5
d2 $ gMute1 $ gF1 -- snare contretemps variable
$ fix ((|* gain 0.8) . (# legato 0.05)) "cp"
$ midiOn "^43" (<| "~ cp ~ cp*<1 1 2 <1 2>>")
$ midiOff "^43" (<| "~ [cp*<1!3 <2 <4 [4 2]>>> ~]")
$ "[cp,vec1_snare:40]"
# pan 0.65
# gain 1.4
-- # legato 0.22
d3 $ gM1 $ gF1
$ "~ d ~ d ~ d ~ <d d*2>"
# gain "1!7 [<1!3 0.85> <0.85!3 1>]"
# "snare:34"
# hpf 7000
d6 $ gF1 $ gM1 -- HAWKS
$ "~ [s s*2] ~ [s*<1!3 2> <~!3 s*<1 2>>]"
# "armora:1"
# legato "<0.5>"
# note "<c10!3 d10 d10 d10 e10 [e10!3 c10]>"
# pan 0.9
# hpf (slow 8 $ range 5000 "<8000!32 800!32>" saw)
# room 1.0
# sz 0.01
# dry 1.025
d4 $ gF3 $ gM3
$ fix (
(|* gain (1 - "^53"))
. (# legato 0.8)
) ("bass1")
$ superimpose ( -- CRUSH LAYER
(# "vec2_bass_ob:73")
. (|- note 12)
. (# cut 41)
. (|* gain (range 0 2 "^53"))
)
$ midiOn "^89" (off "0.5" id)
-- $ superimpose ((|+ note 12) . (# cut 41))
$ midiOn "^57" ( -- Pattern 3: 8-cycle harmonic movement
(+| note "[c3 ~ ef3 ~] [<c3 f3 af3 g3> ~ <g2 c2 ef2 d2> ~] [~ [ef3 g3]/2 ~ <af2 bf2 c3 b2>] [<c2!2 f2!2 af2!2 g2!2> ~ <g3 af3 bf3 g3> ~]" ))
$ midiOn "^33" ( -- Pattern 4: 16-cycle call-response-build-decay
(+| note "[c2 ~ ~ ~] [~ ~ g3 ~] [ef2 ~ <~!4 g2!4 ef3!4 c3!4> <~!4 ef3!4 g3!4 af3!4>] [<c3!4 [~ ef3 g3]!4 [c2 ~ g3 ~]!4 [c2 ~ ~ ~]!4> <~!8 bf2!8> <~!12 [ef3 c3]!4> ~]" ))
$ midiOff ("^57" + "^33") ( -- Pattern 1: 8-cycle arc from sparse to dense
+| note "[c2 ~ ~ ~] [~ ef2 ~ g2] [c3 ~ <~ ef3 ~ af3> ~] [<g2 f2 ef2 d2> ~ bf2 <~ c3 ~ ef3>]"
)
-- $ note (
-- Pattern 1: 8-cycle arc from sparse to dense
-- "[c2 ~ ~ ~] [~ ef2 ~ g2] [c3 ~ <~ ef3 ~ af3> ~] [<g2 f2 ef2 d2> ~ bf2 <~ c3 ~ ef3>]"
-- Pattern 2: 16-cycle rhythmic evolution
-- "[~ c3 ~ ~] [g2 ~ ~ <c2 ef2 f2 g2>] [[~ ef3 g3] <~ [af3 bf3] [c4 bf3] [d4 c4]>] [<c2!4 g2!4 ef2!4 c2!4> ~ bf2 ~]"
-- Pattern 3: 8-cycle harmonic movement
-- "[c3 ~ ef3 ~] [<c3 f3 af3 g3> ~ <g2 c2 ef2 d2> ~] [~ [ef3 g3]/2 ~ <af2 bf2 c3 b2>] [<c2!2 f2!2 af2!2 g2!2> ~ <g3 af3 bf3 g3> ~]"
-- Pattern 4: 16-cycle call-response-build-decay
-- "[c2 ~ ~ ~] [~ ~ g3 ~] [ef2 ~ <~!4 g2!4 ef3!4 c3!4> <~!4 ef3!4 g3!4 af3!4>] [<c3!4 [~ ef3 g3]!4 [c2 ~ g3 ~]!4 [c2 ~ ~ ~]!4> <~!8 bf2!8> <~!12 [ef3 c3]!4> ~]"
-- )
-- $ "trance_blips:37" |+ note 24
$ "bass1:2" |+ note 36
# gain 1.2
# pan 0.4
-- # room 0.8
-- # sz 0.73
-- # dry 1.1
-- # octersubbus 42 (range 0 2.5 "^33")
# room 0 # cut 4
# gain 1.4
d5 $ gM3 $ gF3
$ midiOn "^90" (fast "4 <4!3 16>")
$ midiOff "^58" (slow 4)
$ midiOff "^58" (mask "<t t t t t f!3 t f!3 t f!3 t f!3>")
$ "russia" # n "<0!4 1!4 2!4 3!4 4!4 5!4 6!4 7 8 9 9>"
# cut 5
# gain 1.3
# room 0.3 # sz 0.5 # dry 1.5
d7 $ gM3 $ gF3 -- Russian Horns
$ midiOn "^59" (fast 4)
$ midiOn "^91" (ply "<4 [4 8]>")
$ slice 4 "<0 1 2 3>"
$ "russia"
# n (11 + "<0!4 1!4 2!4 3!4 4!4 5!4 6!4 7 8 9 9>")
# cut 5
# gain 2
# room 0.3 # sz 0.5 # dry 1.5
d8 $ gF1 $ gM1
$ midiOff "^60" (mask "t(4,8,1)" . chop 4)
$ chop 8 $ loopAt 2
$ midiOn "^36" (loopAt 1 . (# n 79))
$ midiOn "^56" (# n 45)
$ "jungle_breaks:24"
# gain 1.4
# cut 8
d9 $ gF2 $ gM3
$ superimpose (
(|+ note 12) . (# cut 91))
$ whenmod 32 0 (
(# delay 0.5) . (# delayt 0.125) . (# delayfb 0.5))
$ note ("[<c5 c5 g5 g5>,[~!7 <~!8 [<ef ef bf bf>]!24>]]")
# "giorgio_syn:23"
# gain 1.3
# crushbus 91 (range 16 2.5 "^19")
# room 0.3
# cut 9
# pan 0.3
d10 $ gF3 $ gM3
$ mask "<f f f t>"
$ "bogdan:24"
-- # end "<0.5!3 1>"
# gain 1.4
d11 $ gF3 $ gM3
-- $ mask "<f!6 t t>"
$ slow 4 $ slice 4 "<0 1 2 3>"
$ "movie_tyrant" # n (slow 8 $ "<62 63>")
# begin (slow 4 "<0 0.3 0.5 0.6 0.8 0.9>")
# gain 1.4
# cut 11
# pan 0.4
once $ "russia:0"
......@@ -26,7 +26,7 @@ d1 $ gF1 $ gMute2
# room 0.4 # size 0.4 # dry 0.95
d2 $ gF1 $ gM1
$ midiOn "^43" (<|"~ s ~ s*<1 2>")
$ midiOff "^43" (<| "~ s")
$ midiOff "^43" (<| "~ ~ s ~")
-- $ "[vec1_snare:3]"
$ "[snare:33]"
-- # note "<-0!12 -2 -2 -3 0>"
......@@ -45,7 +45,7 @@ d3 $ gF1 $ gM1
(# delayfb 0.5)
)
$ chop 8
$ n "<1 2 3>"
$ n (slow 4 $ ply 4 $ "<1 2 3>")
# "orage"
# cut 3
# gain 1.4
......@@ -113,14 +113,14 @@ d7 $ gF3 $ gM3 -- Voices
-- $ fix (# start 0.1) (n 5)
-- $ n ("<~!0 0 ~ 1 ~ 2 ~ 3 ~ 0 6 ~ ~ 0 6 0 6>"
-- TODO MAKE THE TOP N EXPRESSION FROM BOTTOM ONES
$ slow 4 -- TODO on/off
-- $ slow 4 -- TODO on/off
-- $ (# end "<0.5 0.13 0.5 1>") -- TODO FOR n 11 LOVE IS SOFT
$ n (cat [
-- "<0 ~ 1 ~ 2 ~ 3 ~>" -- Riders 1
-- "<0 ~ ~ ~ 1 ~ ~ ~ 4 ~ ~ 4 5 ~ ~ ~>" -- Riders 2
-- "<<0 6> ~ ~ ~>" -- Road Killer
-- "<~ ~ <0 1 7 ~> ~>" -- Squirming Brain
"<8 8 9 8>" -- Children Holiday
"<~ ~ <0 1 7 ~> ~>" -- Squirming Brain
-- "<8 8 9 8>" -- Children Holiday
-- "<11!6 12 <~ 13>>" -- Love
-- "11" -- Love
]
......
......@@ -19,17 +19,31 @@ MIDIClient.init;
MIDIIn.connectAll;
// Initial: sends velocity on note's channel
// Disabled in favor of launchpad control.
// on = MIDIFunc.noteOn({ |val, num, chan, src|
// osc.sendMsg("/ctrl", num.asString, val/127);
// });
// on = MIDIFunc.noteOn({ |val, num, chan, src|
// // it will be passed the arguments val, num, chan, and src, corresponding to the message value (e.g. velocity, control value, etc.)
// osc.sendMsg("/ctrl", "note", (num - 60));
// });
//
// off = MIDIFunc.noteOff({ |val, num, chan, src|
// osc.sendMsg("/ctrl", "note", 0);
// });
//
// cc = MIDIFunc.cc({ |val, num, chan, src|
// osc.sendMsg("/ctrl", num.asString, val/127);
// });
//
// Simple MIDI->OSC bridge - passes CC numbers directly as control names
on = MIDIFunc.noteOn({ |val, num, chan, src|
// it will be passed the arguments val, num, chan, and src, corresponding to the message value (e.g. velocity, control value, etc.)
osc.sendMsg("/ctrl", "note", (num - 60));
osc.sendMsg("/ctrl", num.asString, val/127);
});
off = MIDIFunc.noteOff({ |val, num, chan, src|
osc.sendMsg("/ctrl", "note", 0);
osc.sendMsg("/ctrl", num.asString, 0);
});
cc = MIDIFunc.cc({ |val, num, chan, src|
......@@ -53,11 +67,10 @@ if (~stopMidiToOsc != nil, {
//~midiOut = MIDIOut.newByName("iO4", "iO4 iO4"); // Alesis iO4
//~midiOut = MIDIOut.newByName("HAPAX", "HAPAX MIDI 1");
/*
This is an example startup file. You can load it from your startup file
(to be found in Platform.userAppSupportDir +/+ "startup.scd")
*/
// Load/compile all SynthDef files in the synthdefs directory
PathName("~/.local/share/SuperCollider/synthdefs").entries.do({ |file|
if(file.extension == "scd", { file.fullPath.load });
});
(
......@@ -82,16 +95,16 @@ s.waitForBoot {
~dirt.loadSoundFiles("/home/pln/Work/Sound/Samples/extra/*");
// DRUM MACHINES
~drumMachinesDir = PathName.new("/home/pln/Work/Sound/Samples/tidal-drum-machines/machines");
~machines = ~drumMachinesDir.folders; //All drum machines
//*~machines = ['Linn9000','RolandTR909']; //Selected drum machines
~drumMachinesDir = PathName.new("/home/pln/Work/Sound/Samples/tidal-drum-machines/machines");
~machines = ~drumMachinesDir.folders; //All drum machines
//*~machines = ['Linn9000','RolandTR909']; //Selected drum machines
(
~machines.do({
arg machine;
var folders = machine.folders;
// postln("Loading machine: "++machine.folderName);
//postln("Loading machine: "++machine.folderName);
folders.do({
arg folder;
~dirt.loadSoundFiles(folder.fullPath,namingFunction: { |x| x.basename.replace("-","")});
......@@ -119,24 +132,46 @@ s.waitForBoot {
// Setup SCLOrK Synths (installed via Quark)
SCLOrkSynths.load;
// Setup Mutable synths
// Verb as a global effect: https://club.tidalcycles.org/t/mutable-instruments-ugens/2730/22
// (1..SuperDirt.maxSampleNumChannels).do { |numChannels|
// SynthDef("global_mi_verb" ++ numChannels, { |dryBus, effectBus, verbwet=0, verbtime=0, verbdamp=0, verbhp=0, verbfreeze=0, verbdiff=0, verbgain=0|
// var signal = In.ar(dryBus, ~dirt.numChannels);
// signal = MiVerb.ar(signal, verbwet, verbtime, verbdamp, verbhp, verbfreeze, verbdiff);
// Out.ar(effectBus, signal * verbgain)
// }, [\ir, \ir]).add;
// };
// ~dirt.orbits.do { |x|
// // var clouds = GlobalDirtEffect(\global_mi_clouds, [\cloudspitch, \cloudspos, \cloudssize, \cloudsdens, \cloudstex, \cloudswet, \cloudsgain, \cloudsspread, \cloudsrvb, \cloudsfb, \cloudsfreeze, \cloudsmode, \cloudslofi]);
// var verb = GlobalDirtEffect(\global_mi_verb, [\verbwet, \verbtime, \verbdamp, \verbhp, \verbfreeze, \verbdiff, \verbgain]);
// x.globalEffects = ~dirt.orbits[0].globalEffects.addFirst(verb);
// x.initNodeTree;
// // x.set(\fadeTime, 0.01); // What was that for again? :think:
// };
// =============================================
// Mutable Instruments Global Effects
// https://club.tidalcycles.org/t/mutable-instruments-ugens/2730/22
// =============================================
// MiVerb - global reverb per orbit
(1..SuperDirt.maxSampleNumChannels).do { |numChannels|
SynthDef("global_mi_verb" ++ numChannels, { |dryBus, effectBus, verbwet=0, verbtime=0.7, verbdamp=0.5, verbhp=0.05, verbfreeze=0, verbdiff=0.625, verbgain=0|
var signal = In.ar(dryBus, ~dirt.numChannels);
signal = MiVerb.ar(signal, verbtime, verbwet, verbdamp, verbhp, verbfreeze, verbdiff);
Out.ar(effectBus, signal * verbgain);
}, [\ir, \ir]).add;
};
// MiClouds - global granular processor per orbit
(1..SuperDirt.maxSampleNumChannels).do { |numChannels|
SynthDef("global_mi_clouds" ++ numChannels, { |dryBus, effectBus, cloudspitch=0, cloudspos=0.5, cloudssize=0.25, cloudsdens=0.4, cloudstex=0.5, cloudswet=0, cloudsgain=0, cloudsspread=0.5, cloudsrvb=0, cloudsfb=0, cloudsfreeze=0, cloudsmode=0, cloudslofi=0|
var signal = In.ar(dryBus, ~dirt.numChannels);
signal = MiClouds.ar(signal, cloudspitch, cloudspos, cloudssize, cloudsdens, cloudstex, cloudswet, 1, cloudsspread, cloudsrvb, cloudsfb, cloudsfreeze, cloudsmode, cloudslofi);
Out.ar(effectBus, signal * cloudsgain);
}, [\ir, \ir]).add;
};
// MiRipples - global resonant filter per orbit
(1..SuperDirt.maxSampleNumChannels).do { |numChannels|
SynthDef("global_mi_ripples" ++ numChannels, { |dryBus, effectBus, ripplescf=0.5, ripplesreson=0, ripplesdrive=1, ripplesgain=0|
var signal = In.ar(dryBus, ~dirt.numChannels);
signal = MiRipples.ar(signal, ripplescf, ripplesreson, ripplesdrive);
Out.ar(effectBus, signal * ripplesgain);
}, [\ir, \ir]).add;
};
// Register global effects on all orbits
~dirt.orbits.do { |x|
var verb = GlobalDirtEffect(\global_mi_verb, [\verbwet, \verbtime, \verbdamp, \verbhp, \verbfreeze, \verbdiff, \verbgain]);
var clouds = GlobalDirtEffect(\global_mi_clouds, [\cloudspitch, \cloudspos, \cloudssize, \cloudsdens, \cloudstex, \cloudswet, \cloudsgain, \cloudsspread, \cloudsrvb, \cloudsfb, \cloudsfreeze, \cloudsmode, \cloudslofi]);
var ripples = GlobalDirtEffect(\global_mi_ripples, [\ripplescf, \ripplesreson, \ripplesdrive, \ripplesgain]);
x.globalEffects = x.globalEffects.addFirst(verb).addFirst(clouds).addFirst(ripples);
x.initNodeTree;
};
};
s.volume = 1;
......
do
setcps (120/60/4)
d1 $ "break:2"
# cut 1
......@@ -62,7 +62,7 @@ d11 $ gF3 $ gM3 -- FIXME NOTES
# gain 0.7
# room 0.8 # sz 0.8 # dry 1.9
d8 $ gF1 $ gM1 -- Break danse orleanaise
$ midiOff "^60" (mask "t(<4!3 [4 8]>,8)")
$ midiOff "^60" (mask "t(<4!3 [4 8]>,8,1)")
$ chop 16
$ midiOn "^92" (ply "<2 [2!3 <4 8>]>")
$ midiOn "^36" (loopAt 2 . (# n "<44!7 [44 48]>"))
......
......@@ -80,9 +80,11 @@ d3 $ "dr*4"
--
-- # crush 4.5
d1 $ "bd"
do
setcps (120/60/4)
d1 $ "k k k k64" # "bd"
once $ "orage"
once $ "bd"
once $ note "c@2 [c c]@1 ds g" # "giorgio_syn:6" # cut 1
......@@ -109,15 +111,17 @@ once $ "jungle_breaks:45" # cut 1 # gain 0.8
d3
-- $ gF1 $ gM $ gDelay -- Contretemps
$ midiOn "^76" (slow 2)
$ midiOff "^44" (slow 2)
-- $ midiOff "^44" (slow 2)
$ "~ h ~ <~!4 h!28> ~ <~!3 h ~!3 h h!8> ~ <h ~ h ~ h!3 <h*2 [~ h*<1 2>]>>"
# "rampleA2:23"
# midiG' "^80" 0 1.2
-- # midiG' "^80" 0 1.2
d1 $ "dr"
# gain "^78"
-- DRUM MACHINES
once $ drumFrom "rolandtr808" "[hh:1]"
once $ "impulseSync"
once $ note "[c4 g4 c4 d4]*4" # "acidOto3091"
......
-- Mutable Instruments UGens test file
-- Restart SC after installing to pick up new SynthDefs
-- Test each synth one at a time with d1, hush between tests
-- =============================================
-- MiPlaits - Macro oscillator (16 engines)
-- =============================================
-- Engine 0: Virtual analog pair
d1 $ n "c5 e5 g5 c6" # s "miplaits"
# engine 0 # timbre 0.5 # morph 0.3 # harm 0.2
-- Engine 2: Waveshaping
d1 $ n "c4 [ef4 g4] af4 bf4" # s "miplaits" # engine 2 # timbre (slow 4 $ range 0.1 0.9 saw) # morph 0.5
-- Engine 4: FM
d1 $ n "c3 g3 c4 ef4" # s "miplaits" # engine 4 # harm (range 0.1 0.5 sine) # timbre 0.6 # morph 0.3
-- Engine 6: Chord
d1 $ slow 2 $ n "c4 f4 g4 c5" # s "miplaits" # engine 6 # harm 0.5 # timbre 0.5 # morph 0.3
-- Engine 8: Wavetable
d1 $ n "c4*4" # s "miplaits" # engine 8 # timbre (range 0 1 sine) # morph (slow 2 $ range 0 1 tri)
-- Engine 14: Modal
d1 $ n "c5 e5 g5 b5" # s "miplaits" # engine 14 # timbre 0.4 # morph 0.7 # harm 0.3
-- With internal LPG (set level > 0 to activate the built-in LPG)
d1 $ n "c4*8" # s "miplaits" # engine 0 # level 1 # decay 0.3 # lpg_colour 0.5 # timbre (range 0.2 0.8 sine)
hush
-- =============================================
-- MiRings - Resonator
-- =============================================
-- Model 0: Modal (bells / mallet)
d1 $ n "c5 e5 g5 c6" # s "mirings" # model 0 # struct 0.3 # bright 0.6 # damp 0.5 # pos 0.25
-- Model 1: Sympathetic strings
d1 $ slow 2 $ n "c4 g4 c5 e5" # s "mirings" # model 1 # struct 0.5 # bright 0.7 # damp 0.3
-- Model 2: Inharmonic strings
d1 $ n "c3 [~ g3] ef4 [~ c4]" # s "mirings" # model 2 # struct (range 0.1 0.5 sine) # bright 0.5
-- Model 3: FM
d1 $ n "c4 e4 g4 b4" # s "mirings" # model 3 # struct 0.4 # bright 0.6
-- Poly mode
d1 $ n "c4 e4 g4 b4" # s "mirings" # model 0 # poly 4 # struct 0.25 # bright 0.5 # damp 0.7
hush
-- =============================================
-- MiElements - Physical modeling
-- =============================================
-- Blow exciter (flute-like)
d1 $ slow 2 $ n "c4 e4 g4 c5" # s "mielements" # blow_level 0.8 # blow_timb 0.5 # flow 0.4 # geom 0.3 # bright 0.6
-- Strike exciter (mallet-like)
d1 $ n "c4 e4 g4 c5" # s "mielements" # strike_level 0.9 # strike_timb 0.5 # mallet 0.6 # geom 0.25 # bright 0.5
-- Both exciters
d1 $ slow 2 $ n "c3 g3 c4 e4" # s "mielements" # blow_level 0.4 # strike_level 0.6 # space 0.5
hush
-- =============================================
-- MiOmi - Dual oscillator FM + filters
-- =============================================
-- Clean FM
d1 $ slow 2 $ n "c4 ef4 g4 bf4" # s "miomi" # level1 0.5 # level2 0.3 # fm1 0.2 # omicutoff 0.7
-- Detuned pad
d1 $ slow 4 $ n "c3 f3 g3 bf3" # s "miomi" # detune 0.3 # level1 0.5 # level2 0.5 # omicutoff 0.5 # reson 0.2
-- Aggressive FM
d1 $ n "c3*4" # s "miomi" # fm1 (range 0 0.8 sine) # fm2 0.3 # fb 0.2 # omicutoff (range 0.3 0.9 sine)
hush
-- =============================================
-- MiWarps - Wave folder / ring mod
-- =============================================
-- Crossfade algo
d1 $ n "c4 e4 g4 c5" # s "miwarps" # algo 0 # timb (range 0 1 sine)
-- Frequency shift algo
d1 $ n "c3 g3 c4 e4" # s "miwarps" # algo 2 # timb 0.4 # lev1 0.6 # lev2 0.4
hush
-- =============================================
-- MiTides - Complex waveshaping oscillator
-- =============================================
d1 $ n "c4 e4 g4 c5" # s "mitides" # shape (range 0.2 0.8 sine) # slope 0.5 # smooth 0.5
hush
-- =============================================
-- Global Effects Tests
-- Apply on any orbit / pattern
-- =============================================
-- MiVerb (set verbgain > 0 to activate)
d1 $ n "c5 e5 ~ g5" # s "mirings" # model 0 # struct 0.3 # verbgain 1 # verbwet 0.7 # verbtime 0.8 # verbdamp 0.3
-- MiClouds granular (set cloudsgain > 0 to activate)
d1 $ n "c4 e4 g4 c5" # s "mirings" # cloudsgain 1 # cloudswet 0.5 # cloudssize 0.5 # cloudsdens 0.6 # cloudstex 0.7 # cloudspitch 0
-- MiRipples filter (set ripplesgain > 0 to activate)
d1 $ n "c3*8" # s "miplaits" # engine 0 # ripplesgain 1 # ripplescf (range 0.1 0.9 sine) # ripplesreson 0.5 # ripplesdrive 1.5
-- Stacking: MiPlaits through MiClouds
d1 $ slow 2 $ n "c4 ef4 g4 bf4" # s "miplaits" # engine 6 # timbre 0.5 # cloudsgain 1 # cloudswet 0.7 # cloudssize 0.8 # cloudsdens 0.5 # cloudsfb 0.3
hush
-- =============================================
-- Musical combos (on your Ardour stems)
-- =============================================
-- d1 kick, d4 bass: MiPlaits sub bass
d4 $ n "c2 ~ c2 [~ c2]" # s "miplaits" # engine 0 # timbre 0.1 # morph 0.1 # harm 0.05
# lpg_colour 0.2 # level 1 # decay 0.4
-- d5 melody: MiRings bells
d5 $ n "c5 e5 g5 [b5 c6]" # s "mirings" # model 0 # struct 0.3 # bright 0.6 # damp 0.5
# verbgain 0.5 # verbwet 0.6 # verbtime 0.7
-- d6 pad: MiOmi pad
d6 $ slow 4 $ n "<c4'min7 f4'maj7 g4'dom7 c4'min7>" # s "miomi"
# detune 0.3 # level1 0.5 # level2 0.4 # omicutoff 0.5
# verbgain 0.3 # verbwet 0.5 # verbtime 0.9
hush
/**
* Background class - Improved version
* Background class - Dark version
*
* Creates a dynamic cyberpunk background with subtle animations
* Reduced visual noise for better event visibility
* Creates a true dark background with minimal elements
*/
class Background {
// Background properties
......@@ -10,20 +9,20 @@ class Background {
color accentColor1;
color accentColor2;
// Movement properties
float noiseScale = 0.01; // Reduced from 0.02 for subtler pattern
// Movement properties - minimal
float noiseScale = 0.003;
float noiseOffset = 0;
float noiseSpeed = 0.003; // Reduced from 0.005 for slower movement
float noiseSpeed = 0.0008;
// Timing
float cps = 0.5;
float lastCycleTime = 0;
Background() {
// Darker cyberpunk colors for better contrast with events
bgColor = color(5, 7, 12); // Darker than original
accentColor1 = color(0, 50, 80); // More subtle
accentColor2 = color(40, 0, 60); // More subtle
// Almost black background
bgColor = color(1, 2, 5); // Near black
accentColor1 = color(0, 20, 40); // Very dark blue
accentColor2 = color(15, 0, 30); // Very dark purple
}
void update() {
......@@ -39,63 +38,27 @@ class Background {
}
void display() {
// Create gradient background
noiseDetail(4, 0.4); // Simplified noise
// Fill with base color - more transparent for more visible motion trails
// Fill with near-black color for clean slate
// This completely covers previous frames
noStroke();
fill(bgColor, 30); // Reduced from 40
fill(bgColor, 240); // High alpha to clear previous frames
rect(0, 0, width, height);
// Add subtle noise pattern
float motionFactor = sin(millis() * 0.0005) * 0.5 + 0.5; // Slowed from 0.001
// Reduced noise pattern density - iterate every 8 pixels instead of 4
for (int y = 0; y < height; y += 8) {
for (int x = 0; x < width; x += 8) {
float noiseVal = noise(x * noiseScale, y * noiseScale, noiseOffset);
// Only draw higher noise values (reduced density)
if (noiseVal > 0.8) { // Increased from 0.7
color pixelColor;
// Create different zones
if (noiseVal > 0.9) { // Increased from 0.85
// Highlight areas
pixelColor = lerpColor(accentColor1, accentColor2,
sin(x * 0.005 + millis() * 0.0002) * 0.5 + 0.5);
pixelColor = color(red(pixelColor), green(pixelColor), blue(pixelColor),
15 + 10 * motionFactor); // Reduced from 20+20
} else {
// Subtle accent
pixelColor = lerpColor(bgColor, accentColor1, 0.2); // Reduced from 0.3
pixelColor = color(red(pixelColor), green(pixelColor), blue(pixelColor), 8); // Reduced from 10
}
// Draw 8x8 pixel block for better performance and subtler texture
fill(pixelColor);
rect(x, y, 8, 8);
}
}
}
// Add minimal accent elements - just a few dots
float motionFactor = sin(millis() * 0.0001) * 0.5 + 0.5;
// Draw horizontal scan lines - fewer and more subtle
drawScanlines();
}
void drawScanlines() {
// Fewer scan lines (every 8 pixels instead of 4)
stroke(255, 5); // Reduced from 8
strokeWeight(1);
for (int y = 0; y < height; y += 8) {
line(0, y, width, y);
// Draw just 5 accent dots
for (int i = 0; i < 5; i++) {
float x = noise(i * 0.3, noiseOffset) * width;
float y = noise(i * 0.3, noiseOffset + 5) * height;
float size = 3 + noise(i * 0.3, noiseOffset + 10) * 8;
color dotColor = lerpColor(accentColor1, accentColor2, noise(i * 0.3, noiseOffset + 15));
fill(dotColor, 30 * motionFactor);
ellipse(x, y, size, size);
}
// Draw brighter scanline that moves
float movingScanline = (millis() % 8000) / 8000.0 * height; // Slower movement (5000 to 8000)
stroke(255, 10); // Reduced from 15
strokeWeight(2);
line(0, movingScanline, width, movingScanline);
// No horizontal scanlines at all
}
void setCPS(float newCps) {
......
/**
* Grid class - Improved version
* Grid class - Cleaner version
*
* Creates a cyberpunk grid with pulse effects that react to the music
* Reduced number of lines for cleaner visuals
* Creates a minimal cyberpunk grid with pulse effects
* Dramatically reduced horizontal lines for better visibility
*/
class Grid {
// Grid properties
int gridStyle = 0; // 0: standard, 1: polar, 2: hexagonal
int gridStyle = 0; // 0: minimal, 1: polar, 2: hexagonal
int numStyles = 3;
// Timing properties
......@@ -17,18 +17,18 @@ class Grid {
color gridColor;
color accentColor;
// Reduced line counts for cleaner visuals
int verticalLines = 10; // reduced from 20
int horizontalLines = 8; // reduced from 15
int polarCircles = 5; // reduced from 10
int polarRadials = 8; // reduced from 16
// Minimal line counts
int verticalLines = 6; // dramatically reduced
int horizontalLines = 2; // dramatically reduced
int polarCircles = 3; // reduced
int polarRadials = 6; // reduced
// Alpha values for better visibility
int defaultAlpha = 30; // reduced from 50
// Alpha values for subtle grid
int defaultAlpha = 15; // reduced for subtlety
Grid() {
gridColor = color(0, 150, 180, defaultAlpha);
accentColor = color(0, 255, 255, 80);
gridColor = color(0, 100, 150, defaultAlpha);
accentColor = color(0, 200, 255, 60);
}
void update() {
......@@ -39,7 +39,7 @@ class Grid {
void display() {
switch(gridStyle) {
case 0:
drawStandardGrid();
drawMinimalGrid();
break;
case 1:
drawPolarGrid();
......@@ -50,46 +50,36 @@ class Grid {
}
}
void drawStandardGrid() {
void drawMinimalGrid() {
strokeWeight(1);
// Draw vertical lines (reduced count)
// Draw only a few vertical lines
float verticalSpacing = width / (float)verticalLines;
for (int i = 0; i <= verticalLines; i++) {
for (int i = 1; i < verticalLines; i++) {
float x = i * verticalSpacing;
float intensity = pulseIntensity * (1 - abs((x / width) - 0.5) * 2);
// Only draw lines with enough visibility
if (intensity > 0.05 || i % 2 == 0) {
stroke(lerpColor(gridColor, accentColor, intensity));
line(x, 0, x, height);
}
}
// Draw horizontal lines (reduced count)
float horizontalSpacing = height / (float)horizontalLines;
for (int i = 0; i <= horizontalLines; i++) {
float y = i * horizontalSpacing;
float intensity = pulseIntensity * (1 - abs((y / height) - 0.5) * 2);
// Only draw lines with enough visibility
if (intensity > 0.05 || i % 2 == 0) {
stroke(lerpColor(gridColor, accentColor, intensity));
line(0, y, width, y);
}
stroke(lerpColor(gridColor, accentColor, intensity));
line(x, 0, x, height);
}
// Draw horizon line with stronger pulse
stroke(lerpColor(gridColor, accentColor, pulseIntensity));
strokeWeight(2 + pulseIntensity * 3);
// Draw only 1-2 horizontal lines (dramatically reduced)
// Draw midline
stroke(lerpColor(gridColor, accentColor, pulseIntensity * 0.3));
strokeWeight(1 + pulseIntensity * 2);
line(0, height * 0.5, width, height * 0.5);
// Optional bottom line for grounding
stroke(lerpColor(gridColor, accentColor, pulseIntensity * 0.1));
strokeWeight(1);
line(0, height * 0.9, width, height * 0.9);
}
void drawPolarGrid() {
pushMatrix();
translate(width / 2, height / 2);
// Draw circular grid (reduced count)
// Draw minimal circular grid
noFill();
for (int i = 1; i <= polarCircles; i++) {
float radius = i * (min(width, height) / (polarCircles * 2.0));
......@@ -100,10 +90,10 @@ class Grid {
ellipse(0, 0, radius * 2, radius * 2);
}
// Draw radial lines (reduced count)
// Draw minimal radial lines
for (int i = 0; i < polarRadials; i++) {
float angle = i * TWO_PI / polarRadials;
float intensity = pulseIntensity * 0.8;
float intensity = pulseIntensity * 0.6;
stroke(lerpColor(gridColor, accentColor, intensity));
strokeWeight(1 + intensity * 2);
......@@ -116,24 +106,28 @@ class Grid {
}
void drawHexGrid() {
float hexSize = 60; // Increased from 40 for fewer hexagons
float hexSize = 120; // Increased size for fewer hexagons
float horizontalSpacing = hexSize * 1.5;
float verticalSpacing = hexSize * sqrt(3);
stroke(lerpColor(gridColor, accentColor, pulseIntensity * 0.5));
stroke(lerpColor(gridColor, accentColor, pulseIntensity * 0.3));
strokeWeight(1 + pulseIntensity * 2);
noFill();
for (int row = -1; row < height / verticalSpacing + 1; row += 2) { // Skip rows
for (int col = -1; col < width / horizontalSpacing + 1; col += 2) { // Skip columns
// Draw just a few hexagons for subtle effect
for (int row = 0; row < 3; row++) { // Only 3 rows
for (int col = 0; col < 3; col++) { // Only 3 columns
float xCenter = col * horizontalSpacing + ((row % 2 == 0) ? 0 : horizontalSpacing / 2);
xCenter += width/2 - horizontalSpacing; // Center on screen
float yCenter = row * verticalSpacing;
yCenter += height/2 - verticalSpacing; // Center on screen
// Intensity based on distance from center
float distFromCenter = dist(xCenter, yCenter, width/2, height/2) / (width/2);
float intensity = pulseIntensity * (1 - distFromCenter * 0.7);
if (intensity > 0.05 || (row % 4 == 0 && col % 4 == 0)) {
if (intensity > 0.05) {
stroke(lerpColor(gridColor, accentColor, intensity));
drawHexagon(xCenter, yCenter, hexSize);
}
......
......@@ -152,7 +152,7 @@ void draw() {
drawDebugInfo();
}
// Draw metadata overlay if enabled
// Draw metadata overlay if enabled - always check this variable
if (showMetadata) {
drawMetadataOverlay();
}
......@@ -287,38 +287,151 @@ void updateCPS(OscMessage msg) {
}
}
// Handle keyboard inputs
// Replace the keyPressed function to properly handle all keys
void keyPressed() {
if (key == 'd' || key == 'D') {
debug = !debug;
println("Debug mode: " + (debug ? "ON" : "OFF"));
} else if (key == 'h' || key == 'H') {
showHelp = !showHelp;
println("Help: " + (showHelp ? "ON" : "OFF"));
} else if (key == 'g' || key == 'G') {
grid.toggleStyle();
println("Grid style changed");
println("Grid style changed to: " + grid.gridStyle);
} else if (key == 'f' || key == 'F') {
// Use the compatible fullscreen toggle
handleFullscreenToggle();
toggleFullScreen();
println("Toggled fullscreen");
} else if (key == 'r' || key == 'R') {
// Reset all visuals
trackManager.reset();
particleSystem.reset();
resetVisualizer();
println("Visualization reset");
// Generate test pattern after reset
generateTestPattern();
} else if (key == 'm' || key == 'M') {
// Toggle metadata display
showMetadata = !showMetadata;
println("Metadata display: " + (showMetadata ? "ON" : "OFF"));
} else if (key == 't' || key == 'T') {
// Generate test pattern
generateTestPattern();
println("Test pattern generated");
}
}
// Improved fullscreen toggle that works properly
void toggleFullScreen() {
if (surface.isVisible()) {
if (width == displayWidth && height == displayHeight) {
// Currently fullscreen, switch to windowed
surface.setSize(1280, 720);
surface.setLocation(displayWidth/2 - 640, displayHeight/2 - 360);
} else {
// Currently windowed, switch to fullscreen
surface.setSize(displayWidth, displayHeight);
surface.setLocation(0, 0);
}
}
}
// Completely reset the visualizer
void resetVisualizer() {
// Clear all active tracks and events
trackManager = new TrackManager();
particleSystem = new ParticleSystem();
// Reset other components
grid = new Grid();
glitchEffect = new GlitchEffect();
// Clear the screen
background(0);
}
// Generate a visible test pattern
void generateTestPattern() {
// First clear existing events
resetVisualizer();
// Create events for different tracks with clear visibility
for (int orbit = 0; orbit < 12; orbit++) {
String sound = "";
float gain = 1.0; // Increased from 0.8
float pan = random(0.3, 0.7); // Random position
float delta = 0.25;
// Create appropriate sample names for each orbit
switch(orbit) {
case 0:
sound = "kick";
break;
case 1:
sound = "snare";
break;
case 2:
sound = "hihat";
break;
case 3:
sound = "bass";
break;
case 4:
sound = "keys";
break;
case 5:
sound = "synth";
break;
case 6:
sound = "voice";
break;
case 7:
sound = "jungle_breaks";
break;
case 8:
sound = "weird";
break;
case 9:
sound = "riser";
break;
case 10:
sound = "fx";
break;
case 11:
sound = "808";
break;
default:
sound = "sample" + orbit;
}
// Create test event - add events with delay to make them more visible
Thread eventThread = new Thread(new Runnable() {
public void run() {
// Get local copies of the variables
int localOrbit = orbit;
String localSound = sound;
float localGain = gain;
float localPan = pan;
float localDelta = delta;
try {
// Add delay based on orbit to spread out events
Thread.sleep(localOrbit * 200);
// Create the event on the main thread
trackManager.addEvent(localOrbit, localSound, localGain, localPan, localDelta);
metadataSystem.updateFromSample(localOrbit, localSound);
// Add particles too
particleSystem.addParticles(localOrbit, localPan, localGain);
} catch (Exception e) {
println("Error in test pattern thread: " + e.getMessage());
}
}
});
eventThread.start();
}
// Trigger effects
grid.trigger(0.6);
glitchEffect.trigger(0.3);
}
// Debug information display
void drawDebugInfo() {
fill(0, 180);
......@@ -443,47 +556,3 @@ void drawHelp() {
text(helpText[i], width/2 - 180, height/2 - 100 + i * 20);
}
}
// Generate a test pattern to verify visualization is working
void generateTestPattern() {
// Create events for different tracks to check visualization
for (int orbit = 0; orbit < 12; orbit++) {
String sound = "";
float gain = 0.8;
float pan = 0.5;
float delta = 0.25;
// Create appropriate sample names for each orbit
switch(orbit) {
case 0:
sound = "kick";
break;
case 1:
sound = "snare";
break;
case 2:
sound = "hihat";
break;
case 3:
sound = "bass";
break;
case 7:
sound = "jungle_breaks";
break;
default:
sound = "sample" + orbit;
}
// Create test event
trackManager.addEvent(orbit, sound, gain, pan, delta);
metadataSystem.updateFromSample(orbit, sound);
// Add test metadata
TrackMetadata metadata = metadataSystem.getMetadata(orbit);
metadata.name = "Test d" + (orbit + 1);
}
// Trigger effects
grid.trigger(0.5);
glitchEffect.trigger(0.2);
}
/**
* TrackManager class - Improved version
* Track class - Improved version
*
* Handles the management and visualization of TidalCycles tracks (d1-d16)
* Enhanced visibility for events and track visualization
* Replace this entire class in TrackManager.pde
*/
class TrackManager {
ArrayList<Track> tracks;
ArrayList<SoundEvent> activeEvents;
class Track {
int orbit;
color trackColor;
boolean active;
float activity;
float lastTriggerTime;
String lastSound;
ArrayList<Float> historyGain;
// Visual properties
float baseHeight;
float targetHeight;
float currentHeight;
TrackManager() {
tracks = new ArrayList<Track>();
activeEvents = new ArrayList<SoundEvent>();
Track(int orbit) {
this.orbit = orbit;
this.trackColor = orbitColors[orbit];
this.active = false;
this.activity = 0;
this.lastTriggerTime = -1000;
this.lastSound = "";
// Initialize tracks for all possible orbits (0-15)
for (int i = 0; i < 16; i++) {
tracks.add(new Track(i));
}
this.historyGain = new ArrayList<Float>();
// Visual initialization
this.baseHeight = height / 20.0; // Changed from 24.0
this.targetHeight = baseHeight;
this.currentHeight = baseHeight;
}
void update() {
// Update all tracks
for (Track track : tracks) {
track.update();
}
// Faster decay for better responsiveness to new events
activity *= 0.95;
// Update active events and remove completed ones
for (int i = activeEvents.size() - 1; i >= 0; i--) {
SoundEvent event = activeEvents.get(i);
event.update();
if (event.isDone()) {
activeEvents.remove(i);
}
// Update height with smooth animation
currentHeight = lerp(currentHeight, targetHeight, 0.15);
// Reset target height if activity is low
if (activity < 0.02) {
targetHeight = baseHeight;
active = false;
}
}
void display() {
// Display active events first (behind tracks)
for (SoundEvent event : activeEvents) {
event.display();
}
// Only display if activity is above threshold
if (activity < 0.02) return;
// Display all tracks
for (Track track : tracks) {
track.display();
}
}
void addEvent(int orbit, String sound, float gain, float pan, float delta) {
// Get appropriate track
Track track = tracks.get(orbit);
// Better vertical distribution
float yPos = map(orbit, 0, 15, height * 0.05, height * 0.95);
float trackWidth = width * 0.9;
float xOffset = width * 0.05;
// Update track state
track.onSound(sound, gain);
// Draw minimal track background - VERY subtle
noStroke();
fill(red(trackColor), green(trackColor), blue(trackColor), activity * 40); // Very low alpha
rect(xOffset, yPos - currentHeight/2, trackWidth, currentHeight, 5);
// Create new event with appropriate visualization style based on orbit and sound
SoundEvent event = createEvent(orbit, sound, gain, pan, delta);
activeEvents.add(event);
// Draw minimal edge - just one subtle stroke
stroke(trackColor, activity * 80); // Low alpha
strokeWeight(1); // Thin line
noFill();
rect(xOffset, yPos - currentHeight/2, trackWidth, currentHeight, 5);
// Draw activity meter - the most visible part
float meterWidth = map(activity, 0, 1, 0, trackWidth * 0.8); // 80% of track width
noStroke();
fill(trackColor, activity * 180); // Higher alpha for visibility
rect(xOffset + (trackWidth * 0.1), yPos - currentHeight/4, meterWidth, currentHeight/4, 3);
// Debug output to help identify events
if (debug) {
println("Added event: orbit=" + orbit + ", sound=" + sound + ", gain=" + gain);
// Add orbit label for active tracks
if (activity > 0.2) { // Lower threshold for visibility
fill(255, activity * 220);
textAlign(LEFT, CENTER);
textSize(12);
text("d" + (orbit + 1), xOffset + 10, yPos);
}
}
SoundEvent createEvent(int orbit, String sound, float gain, float pan, float delta) {
// Different visualization based on orbit (track number)
// ENHANCED: Increased default size and visibility for all event types
void onSound(String sound, float gain) {
// Update track state
active = true;
lastTriggerTime = millis();
lastSound = sound;
activity = 1.0;
if (sound.contains("break") || sound.contains("jungle")) {
return new BreakbeatEvent(orbit, sound, gain, pan, delta);
// Store gain history (for visual patterns)
historyGain.add(gain);
if (historyGain.size() > 16) {
historyGain.remove(0);
}
switch(orbit) {
case 0: // d1 - typically kick
return new KickEvent(orbit, sound, gain * 1.5, pan, delta);
case 1: // d2 - typically snare
return new SnareEvent(orbit, sound, gain * 1.5, pan, delta);
case 2: // d3 - typically hats or percussion
return new HihatEvent(orbit, sound, gain * 1.3, pan, delta);
case 3: // d4 - typically bass
return new BassEvent(orbit, sound, gain * 1.5, pan, delta);
case 7: // d8 - typically breaks
return new BreakbeatEvent(orbit, sound, gain * 1.2, pan, delta);
default: // Other instruments
if (sound.contains("suns") || sound.contains("key")) {
return new MelodicEvent(orbit, sound, gain * 1.4, pan, delta);
} else if (sound.contains("voice") || sound.contains("voc")) {
return new VoiceEvent(orbit, sound, gain * 1.3, pan, delta);
} else if (sound.contains("riser") || sound.contains("fx")) {
return new FXEvent(orbit, sound, gain * 1.5, pan, delta);
} else {
return new SoundEvent(orbit, sound, gain * 1.4, pan, delta);
}
}
}
int getActiveTrackCount() {
int count = 0;
for (Track track : tracks) {
if (track.isActive()) {
count++;
}
}
return count;
// Update visual properties - more dramatic height change
targetHeight = baseHeight + (gain * baseHeight * 3);
}
ArrayList<Integer> getActiveOrbits() {
ArrayList<Integer> activeOrbits = new ArrayList<Integer>();
// Add orbits of all active tracks
for (int i = 0; i < tracks.size(); i++) {
if (tracks.get(i).isActive()) {
activeOrbits.add(i);
}
}
return activeOrbits;
boolean isActive() {
return active;
}
void reset() {
activeEvents.clear();
for (Track track : tracks) {
track.reset();
}
activity = 0;
historyGain.clear();
currentHeight = baseHeight;
targetHeight = baseHeight;
active = false;
}
}
......@@ -179,36 +162,34 @@ class Track {
}
}
void display() {
if (activity < 0.02) return; // Lower threshold for visibility - Changed from 0.05
if (activity < 0.02) return; // Lower threshold for visibility
// Better vertical distribution - Changed from 0.1 and 0.9 to 0.05 and 0.95
// Better vertical distribution
float yPos = map(orbit, 0, 15, height * 0.05, height * 0.95);
float trackWidth = width * 0.9; // Wider tracks - Changed from 0.8
float xOffset = width * 0.05; // Changed from 0.1
float trackWidth = width * 0.9;
float xOffset = width * 0.05;
// Draw track background with trail effect
// Draw track background with trail effect - MUCH subtler
noStroke();
fill(red(trackColor), green(trackColor), blue(trackColor), activity * 180); // Increased from 150
fill(red(trackColor), green(trackColor), blue(trackColor), activity * 60); // Reduced from 180
rect(xOffset, yPos - currentHeight/2, trackWidth, currentHeight, 5);
// Draw glowing edge
stroke(trackColor, activity * 255);
strokeWeight(2 + activity); // Increased from 2
// Draw glowing edge - subtler
stroke(trackColor, activity * 160); // Reduced from 255
strokeWeight(1 + activity); // Reduced from 2+activity
noFill();
rect(xOffset, yPos - currentHeight/2, trackWidth, currentHeight, 5);
// Add glow effect
drawGlow(xOffset, yPos, trackWidth, currentHeight);
// Draw activity meter
// Draw activity meter - MORE prominent than track
float meterWidth = map(activity, 0, 1, 0, trackWidth);
noStroke();
fill(trackColor, activity * 220); // Increased from 200
fill(trackColor, activity * 200); // Actually brighter than track background
rect(xOffset, yPos - currentHeight/3, meterWidth, currentHeight/3, 5);
// Add label for active tracks
if (activity > 0.5) {
// Add orbit label for active tracks
if (activity > 0.3) { // Lower threshold from 0.5
fill(255, activity * 255);
textAlign(LEFT, CENTER);
textSize(12);
......@@ -217,11 +198,11 @@ class Track {
}
void drawGlow(float x, float y, float w, float h) {
// Enhanced glow effect
for (int i = 0; i < 5; i++) {
float alpha = map(i, 0, 4, activity * 150, 0); // Increased from 100
// More subtle glow effect
for (int i = 0; i < 3; i++) { // Reduced from 5 layers
float alpha = map(i, 0, 2, activity * 70, 0); // Reduced from 150
stroke(red(trackColor), green(trackColor), blue(trackColor), alpha);
strokeWeight(i * 2 + 3); // Increased from i*2+2
strokeWeight(i * 2 + 2); // Reduced from i*2+3
noFill();
rect(x, y - currentHeight/2, w, currentHeight, 5);
}
......@@ -258,9 +239,9 @@ class Track {
}
/**
* SoundEvent class - Improved version
* SoundEvent class - Enhanced version
*
* Base class for visualizing individual sound events
* Replace this in TrackManager.pde to make events much more visible
*/
class SoundEvent {
int orbit;
......@@ -276,6 +257,7 @@ class SoundEvent {
float size;
float alpha;
PVector position;
PVector velocity; // Add movement to events
SoundEvent(int orbit, String sound, float gain, float pan, float delta) {
this.orbit = orbit;
......@@ -284,101 +266,145 @@ class SoundEvent {
this.pan = pan;
this.delta = delta;
this.birthTime = millis();
this.lifespan = 800 + (gain * 700); // Longer duration - Changed from 500
this.lifespan = 1200 + (gain * 800); // Longer lifespan
// Initialize visuals
// Initialize visuals with enhanced properties
this.eventColor = orbitColors[orbit];
this.size = 30 + (gain * 80); // Larger size - Changed from 20+(gain*60)
this.size = 40 + (gain * 100); // Much larger size
this.alpha = 255;
// Better spread across the screen - Changed from width*0.3/0.7 to 0.2/0.8
float xPos = map(pan, 0, 1, width * 0.2, width * 0.8);
// Better spread across the screen
float xPos = map(pan, 0, 1, width * 0.15, width * 0.85);
float yPos = map(orbit, 0, 15, height * 0.1, height * 0.9);
this.position = new PVector(xPos, yPos);
// Add some gentle movement to the events
float angle = random(TWO_PI);
float speed = random(0.1, 0.5); // Slow drift
this.velocity = new PVector(cos(angle) * speed, sin(angle) * speed);
}
void update() {
// Calculate age
float age = millis() - birthTime;
float progress = age / lifespan;
// Update position with velocity for gentle movement
position.add(velocity);
// Slow down over time
velocity.mult(0.98);
// Bounce off screen edges
if (position.x < width * 0.1 || position.x > width * 0.9) {
velocity.x *= -0.9;
}
if (position.y < height * 0.05 || position.y > height * 0.95) {
velocity.y *= -0.9;
}
// Slower fade out
alpha = map(age, 0, lifespan, 255, 0);
// Grow size slightly over time
size = 30 + (gain * 80) * (1 + (age / lifespan) * 0.6); // Changed from 20+(gain*60)*(1+(age/lifespan)*0.5)
size = (40 + (gain * 100)) * (1 + (progress * 0.3));
}
void display() {
if (alpha <= 0) return;
// Draw the event
fill(red(eventColor), green(eventColor), blue(eventColor), alpha);
// Draw the event with enhanced glow
noStroke();
ellipse(position.x, position.y, size, size);
// Add glow effect
drawGlow(position.x, position.y, size);
}
void drawGlow(float x, float y, float s) {
for (int i = 0; i < 5; i++) {
float glowAlpha = map(i, 0, 4, alpha * 0.7, 0); // Increased from 0.5
// Draw outer glow layers
for (int i = 5; i > 0; i--) {
float glowSize = size * (1 + i * 0.15);
float glowAlpha = alpha * (0.1 + (1.0 - i/5.0) * 0.2);
fill(red(eventColor), green(eventColor), blue(eventColor), glowAlpha);
noStroke();
ellipse(x, y, s + (i * 12), s + (i * 12)); // Increased from i*10
ellipse(position.x, position.y, glowSize, glowSize);
}
// Draw core with full brightness
fill(red(eventColor), green(eventColor), blue(eventColor), alpha * 0.8);
ellipse(position.x, position.y, size, size);
// Add bright center
fill(255, alpha * 0.6);
ellipse(position.x, position.y, size * 0.3, size * 0.3);
}
boolean isDone() {
return (millis() - birthTime) > lifespan;
}
}
/**
* Specialized event classes with enhanced visuals
*
* Add these to TrackManager.pde
*/
/**
* Specialized sound event classes for different orbits/instruments
* KickEvent - Enhanced for strong impact
*/
class KickEvent extends SoundEvent {
KickEvent(int orbit, String sound, float gain, float pan, float delta) {
super(orbit, sound, gain, pan, delta);
lifespan = 400 + (gain * 200); // Shorter for kicks
lifespan = 800 + (gain * 400); // Longer for kicks
}
@Override
void display() {
if (alpha <= 0) return;
// Specialized kick visualization (more impactful)
float age = millis() - birthTime;
float progress = age / lifespan;
// Draw shock wave effect
noFill();
stroke(red(eventColor), green(eventColor), blue(eventColor), alpha * (1-progress));
strokeWeight(3 * (1-progress));
ellipse(position.x, position.y, size * (1 + progress * 3), size * (1 + progress * 3));
// Draw multiple shock wave rings
for (int i = 0; i < 3; i++) {
float waveProgress = constrain(progress - (i * 0.1), 0, 1);
if (waveProgress > 0) {
noFill();
stroke(red(eventColor), green(eventColor), blue(eventColor),
alpha * (1 - waveProgress) * 0.7);
strokeWeight(3 + (gain * 3) * (1 - waveProgress));
ellipse(position.x, position.y,
size * (1 + waveProgress * 3),
size * (1 + waveProgress * 3));
}
}
// Draw core
fill(red(eventColor), green(eventColor), blue(eventColor), alpha);
// Draw solid core
noStroke();
ellipse(position.x, position.y, size * (1-progress*0.5), size * (1-progress*0.5));
fill(red(eventColor), green(eventColor), blue(eventColor), alpha);
ellipse(position.x, position.y, size * (1 - progress * 0.5), size * (1 - progress * 0.5));
// Add bright center
fill(255, alpha * 0.7);
ellipse(position.x, position.y, size * 0.3 * (1 - progress * 0.5), size * 0.3 * (1 - progress * 0.5));
}
}
/**
* SnareEvent - Enhanced with particles
*/
class SnareEvent extends SoundEvent {
ArrayList<PVector> particles;
ArrayList<Float> particleSizes;
SnareEvent(int orbit, String sound, float gain, float pan, float delta) {
super(orbit, sound, gain, pan, delta);
lifespan = 600; // Longer for snares
lifespan = 1000 + (gain * 500); // Longer for snares
// Create particles for snare effect
particles = new ArrayList<PVector>();
int particleCount = int(10 + (gain * 20));
particleSizes = new ArrayList<Float>();
int particleCount = int(15 + (gain * 25)); // More particles
for (int i = 0; i < particleCount; i++) {
float angle = random(TWO_PI);
float speed = random(1, 5);
float speed = random(1, 6); // Faster particles
particles.add(new PVector(cos(angle) * speed, sin(angle) * speed));
particleSizes.add(random(3, 8 + (gain * 6))); // Varied sizes
}
}
......@@ -391,98 +417,41 @@ class SnareEvent extends SoundEvent {
// Draw particles
noStroke();
for (PVector p : particles) {
float x = position.x + (p.x * age * 0.1);
float y = position.y + (p.y * age * 0.1);
float particleSize = size * 0.2 * (1-progress);
for (int i = 0; i < particles.size(); i++) {
PVector p = particles.get(i);
float size = particleSizes.get(i);
float x = position.x + (p.x * age * 0.15); // Faster movement
float y = position.y + (p.y * age * 0.15);
float particleSize = size * (1 - progress * 0.8);
// Draw particle with glow
fill(red(eventColor), green(eventColor), blue(eventColor), alpha * 0.2);
ellipse(x, y, particleSize * 2, particleSize * 2);
fill(red(eventColor), green(eventColor), blue(eventColor), alpha * 0.7);
ellipse(x, y, particleSize, particleSize);
}
// Draw core
fill(red(eventColor), green(eventColor), blue(eventColor), alpha);
ellipse(position.x, position.y, size * (1-progress*0.7), size * (1-progress*0.7));
}
}
class HihatEvent extends SoundEvent {
HihatEvent(int orbit, String sound, float gain, float pan, float delta) {
super(orbit, sound, gain, pan, delta);
lifespan = 300; // Very short for hihats
}
@Override
void display() {
if (alpha <= 0) return;
float age = millis() - birthTime;
float progress = age / lifespan;
// Draw star-like shape
fill(red(eventColor), green(eventColor), blue(eventColor), alpha);
noStroke();
pushMatrix();
translate(position.x, position.y);
rotate(progress * PI);
beginShape();
for (int i = 0; i < 6; i++) {
float angle = i * TWO_PI / 6;
float x1 = cos(angle) * size * 0.5 * (1-progress*0.5);
float y1 = sin(angle) * size * 0.5 * (1-progress*0.5);
vertex(x1, y1);
angle += TWO_PI / 12;
float x2 = cos(angle) * size * 0.2 * (1-progress*0.5);
float y2 = sin(angle) * size * 0.2 * (1-progress*0.5);
vertex(x2, y2);
}
endShape(CLOSE);
fill(red(eventColor), green(eventColor), blue(eventColor), alpha * 0.8);
ellipse(position.x, position.y, size * 0.5 * (1 - progress * 0.7), size * 0.5 * (1 - progress * 0.7));
popMatrix();
// Add bright center
fill(255, alpha * 0.6);
ellipse(position.x, position.y, size * 0.2 * (1 - progress * 0.7), size * 0.2 * (1 - progress * 0.7));
}
}
class BassEvent extends SoundEvent {
BassEvent(int orbit, String sound, float gain, float pan, float delta) {
super(orbit, sound, gain, pan, delta);
lifespan = 800 + (gain * 400); // Longer for bass
}
@Override
void display() {
if (alpha <= 0) return;
float age = millis() - birthTime;
float progress = age / lifespan;
// Draw ripple effect
for (int i = 0; i < 3; i++) {
float rippleProgress = (progress + (i * 0.2)) % 1.0;
float rippleSize = size * (0.5 + rippleProgress * 2);
float rippleAlpha = alpha * (1 - rippleProgress);
noFill();
stroke(red(eventColor), green(eventColor), blue(eventColor), rippleAlpha);
strokeWeight(3 * (1-rippleProgress));
ellipse(position.x, position.y, rippleSize, rippleSize * 0.5); // Oval for bass
}
// Draw core
fill(red(eventColor), green(eventColor), blue(eventColor), alpha);
noStroke();
ellipse(position.x, position.y, size * 0.8, size * 0.4);
}
}
class MelodicEvent extends SoundEvent {
/**
* HihatEvent - Enhanced with star pattern
*/
class HihatEvent extends SoundEvent {
float rotation;
MelodicEvent(int orbit, String sound, float gain, float pan, float delta) {
HihatEvent(int orbit, String sound, float gain, float pan, float delta) {
super(orbit, sound, gain, pan, delta);
lifespan = 1000 + (gain * 500);
lifespan = 600 + (gain * 300); // Longer for hihats
rotation = random(TWO_PI);
}
......@@ -493,130 +462,51 @@ class MelodicEvent extends SoundEvent {
float age = millis() - birthTime;
float progress = age / lifespan;
// Draw star-like shape with rotation
pushMatrix();
translate(position.x, position.y);
rotate(rotation + (progress * TWO_PI * 0.5));
rotate(rotation + (progress * PI * 2)); // Spin as it fades
// Draw geometric shape
fill(red(eventColor), green(eventColor), blue(eventColor), alpha);
// Draw rays
noStroke();
fill(red(eventColor), green(eventColor), blue(eventColor), alpha);
float sizeScale = 1 - (progress * 0.3);
// Create polygon shape
beginShape();
int sides = 5;
for (int i = 0; i < sides; i++) {
float angle = i * TWO_PI / sides;
float x = cos(angle) * size * 0.5 * sizeScale;
float y = sin(angle) * size * 0.5 * sizeScale;
vertex(x, y);
}
endShape(CLOSE);
// Add inner detail
fill(0, alpha * 0.5);
beginShape();
for (int i = 0; i < sides; i++) {
float angle = i * TWO_PI / sides;
float x = cos(angle) * size * 0.3 * sizeScale;
float y = sin(angle) * size * 0.3 * sizeScale;
vertex(x, y);
}
endShape(CLOSE);
popMatrix();
// Add glow
drawGlow(position.x, position.y, size * sizeScale);
}
}
class BreakEvent extends SoundEvent {
ArrayList<PVector> chunks;
BreakEvent(int orbit, String sound, float gain, float pan, float delta) {
super(orbit, sound, gain, pan, delta);
lifespan = 700;
// Create chunks for break visualization
chunks = new ArrayList<PVector>();
int chunkCount = int(5 + (gain * 10));
for (int i = 0; i < chunkCount; i++) {
float angle = random(TWO_PI);
float distance = random(size * 0.2, size * 0.6);
float chunkSize = random(size * 0.1, size * 0.3);
chunks.add(new PVector(cos(angle) * distance, sin(angle) * distance, chunkSize));
}
}
@Override
void display() {
if (alpha <= 0) return;
float age = millis() - birthTime;
float progress = age / lifespan;
// Draw chunks
rectMode(CENTER);
for (PVector chunk : chunks) {
float x = position.x + (chunk.x * (0.5 + progress));
float y = position.y + (chunk.y * (0.5 + progress));
float chunkSize = chunk.z * (1 - progress * 0.5);
int points = 8; // 8-point star
for (int i = 0; i < points; i++) {
float angle = i * TWO_PI / points;
float innerRadius = size * 0.2 * (1 - progress * 0.6);
float outerRadius = size * 0.5 * (1 - progress * 0.3);
fill(red(eventColor), green(eventColor), blue(eventColor), alpha * 0.8);
noStroke();
rect(x, y, chunkSize, chunkSize, 2);
beginShape();
// Outer point
vertex(cos(angle) * outerRadius, sin(angle) * outerRadius);
// Inner point 1
vertex(cos(angle + TWO_PI/(points*2)) * innerRadius,
sin(angle + TWO_PI/(points*2)) * innerRadius);
// Next outer point
vertex(cos(angle + TWO_PI/points) * outerRadius,
sin(angle + TWO_PI/points) * outerRadius);
// Inner point 2
vertex(cos(angle + TWO_PI/(points*2) + TWO_PI/points) * innerRadius,
sin(angle + TWO_PI/(points*2) + TWO_PI/points) * innerRadius);
endShape(CLOSE);
}
rectMode(CORNER);
// Draw center
fill(red(eventColor), green(eventColor), blue(eventColor), alpha);
noStroke();
ellipse(position.x, position.y, size * 0.4 * (1-progress), size * 0.4 * (1-progress));
}
}
class VoiceEvent extends SoundEvent {
VoiceEvent(int orbit, String sound, float gain, float pan, float delta) {
super(orbit, sound, gain, pan, delta);
lifespan = 1200;
}
@Override
void display() {
if (alpha <= 0) return;
fill(255, alpha * 0.7);
ellipse(0, 0, size * 0.2 * (1 - progress * 0.5), size * 0.2 * (1 - progress * 0.5));
float age = millis() - birthTime;
float progress = age / lifespan;
// Waveform visualization
stroke(red(eventColor), green(eventColor), blue(eventColor), alpha);
noFill();
strokeWeight(2);
beginShape();
for (int i = 0; i < 20; i++) {
float x = position.x - (size/2) + (i * (size/20));
float waveHeight = sin(i * 0.5 + (millis() * 0.005)) * size * 0.2 * (1-progress*0.7);
float y = position.y + waveHeight;
vertex(x, y);
}
endShape();
// Draw central point
fill(red(eventColor), green(eventColor), blue(eventColor), alpha);
noStroke();
ellipse(position.x, position.y, size * 0.2, size * 0.2);
popMatrix();
}
}
class FXEvent extends SoundEvent {
FXEvent(int orbit, String sound, float gain, float pan, float delta) {
/**
* BassEvent - Enhanced with ripple effect
*/
class BassEvent extends SoundEvent {
BassEvent(int orbit, String sound, float gain, float pan, float delta) {
super(orbit, sound, gain, pan, delta);
lifespan = 1500;
size *= 1.5; // Larger for FX
lifespan = 1200 + (gain * 800); // Much longer for bass
}
@Override
......@@ -626,35 +516,33 @@ class FXEvent extends SoundEvent {
float age = millis() - birthTime;
float progress = age / lifespan;
// Lightning effect
stroke(red(eventColor), green(eventColor), blue(eventColor), alpha * (1-progress*0.5));
// Draw multiple lightning bolts
for (int j = 0; j < 3; j++) {
float offsetX = random(-size/4, size/4);
float offsetY = random(-size/4, size/4);
// Draw multiple ripple effects
for (int i = 0; i < 4; i++) { // More ripples
float rippleProgress = (progress + (i * 0.15)) % 1.0;
float rippleSize = size * (0.6 + rippleProgress * 2.5); // Larger ripples
float rippleAlpha = alpha * (1 - rippleProgress) * 0.5;
strokeWeight(3 * (1-progress));
noFill();
beginShape();
vertex(position.x + offsetX, position.y - size/2);
// Create jagged lines
int segments = 5;
for (int i = 1; i < segments; i++) {
float segmentY = position.y - size/2 + (i * size/segments);
float segmentX = position.x + offsetX + random(-size/4, size/4);
vertex(segmentX, segmentY);
// Only draw visible ripples
if (rippleAlpha > 5) {
noFill();
stroke(red(eventColor), green(eventColor), blue(eventColor), rippleAlpha);
strokeWeight(2 + (4 * (1 - rippleProgress))); // Thicker lines
ellipse(position.x, position.y, rippleSize, rippleSize * 0.5); // Oval for bass
}
vertex(position.x + offsetX, position.y + size/2);
endShape();
}
// Draw core
fill(red(eventColor), green(eventColor), blue(eventColor), alpha * 0.7);
// Draw core with pulsing effect
float pulseScale = 0.7 + sin(age * 0.01) * 0.2;
noStroke();
ellipse(position.x, position.y, size * 0.3 * (1-progress*0.5), size * 0.3 * (1-progress*0.5));
fill(red(eventColor), green(eventColor), blue(eventColor), alpha * 0.8);
ellipse(position.x, position.y,
size * 0.6 * pulseScale,
size * 0.3 * pulseScale);
// Add bright center
fill(255, alpha * 0.6);
ellipse(position.x, position.y,
size * 0.3 * pulseScale,
size * 0.15 * pulseScale);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment