Commit af0637a7 by PLN (Algolia)

feat(copycat): deep drum rework from onset+envelope analysis

Full NTO drum character applied:
- d1 kick: att 0.05 (round thud), lpf darkening over time (saw 800→300)
- d2 clap: quiet (gain 0.7), dry (room 0.1), hpf 800 — mid-snap only
- d3 OH: evolving brightness (n6→n8), att 0.04 (soft onset),
  ^44 toggles whisper-shimmer mode (gain 0.3, hpf 6000, legato 0.15)
- Header: full drum voice analysis with centroid evolution,
  attack/decay times, peak levels per section
parent 43e0a477
...@@ -60,22 +60,40 @@ ...@@ -60,22 +60,40 @@
-- 0-10s: Pad only (other stem: Bb3, rms=0.07) -- 0-10s: Pad only (other stem: Bb3, rms=0.07)
-- 10-30s: Bass enters (86Hz/F2, rms=0.19-0.26), pad continues -- 10-30s: Bass enters (86Hz/F2, rms=0.19-0.26), pad continues
-- 30-50s: Arp synth fades in (guitar stem: 172-183Hz), piano first stabs -- 30-50s: Arp synth fades in (guitar stem: 172-183Hz), piano first stabs
-- 50-60s: Build (all melodic voices growing) -- 40-50s: KICK enters — 8th note pulse, kick only, no hats yet
-- 60-90s: Drums enter big (kick 54Hz/93% sub at 65Hz), full groove -- 60s: OH enters on upbeat 8ths (warm, centroid 4000Hz)
-- 90-120s: Piano peaks (237Hz, rms=0.05), all voices at full -- 70-80s: Full groove: K↑OH alternating 8ths, OH brightening (→4900Hz)
-- 120s: Breakdown — bass drops to C2 (65Hz), arp peaks, drums thin -- 90s: Pre-drop: kick gets ghost DOUBLES, OH→ride brightness (→7700Hz)
-- 150s: Piano reprise, mid-frequency evolution -- 90s bar4: KICK DROPS OUT — pure cymbal shimmer (centroid 8200Hz, QUIET)
-- 200s+: Climax sections, pad shifts bright (560Hz), full energy -- 100-120s: Cymbal break — whisper-quiet shimmer on upbeat 8ths only
-- 150s: Kick returns + OH-mid (centroid 6000Hz), groove restored
-- 200s+: Full: kick + bright OH/ride + CLAP on beats 1&3 (contretemps)
--
-- DRUM VOICES (demucs onset + envelope analysis)
-- ================================================
-- KICK: dom=86Hz, sub=58-70%, att=48-56ms (SLOW round thud), dec=3ms
-- No click, no snap. Gets DEEPER over time (centroid 1100→200Hz).
-- Pattern: 8th notes on every downbeat eighth. Ghost doubles pre-drop.
--
-- OPEN HAT → CYMBAL (one evolving voice, not separate samples):
-- centroid evolves: 4000Hz(warm) → 4900(bright) → 8400Hz(shimmer)
-- Groove: peak=0.55-0.61, att=38-42ms, on every upbeat 8th
-- Breakdown: peak=0.05-0.07 (QUIET whisper!), att=7-10ms (tick)
-- Post-drop: peak=0.62, centroid 6000-7200Hz (bright ride character)
--
-- CLAP: enters at climax (~200s), contretemps (beats 1&3)
-- peak=0.13 (quiet accent!), att=10ms, dec=12ms, dom=1292Hz
-- Dry thin mid-snap. Not a fat backbeat — more rimshot/finger snap.
-- --
-- SOUND DESIGN -- SOUND DESIGN
-- ============ -- ============
-- KICK: 54Hz/93% sub (demucs). Deep techno sub-kick, NOT a bright 808 -- KICK: Round sub thud (att 50ms!), 8th pulse. Gets deeper over time.
-- BASS: Bb1-F2 sub (58-87Hz). Moog-like, melodic root movement + answer -- BASS: F2/A2/C2 (V chord tones only!). Rhythmic, not held notes.
-- ARPEGGIO: 2-note 16th Bb4↔F4, FM synth. Magic = timbre not notes -- ARPEGGIO: 2-note 16th Bb4↔F4, FM synth. Magic = timbre not notes.
-- PIANO: Rhodes stabs, Bb3/F4 area, enters ~40s, peaks at 90s -- PIANO: Rapid A3/F3 repeated stabs (16th-ish), sparse, enters ~40s.
-- PAD: ~Bb3 warm bed, evolves brighter. Generous reverb, slow filter -- PAD: ~Bb3 warm bed, evolves brighter. Generous reverb, slow filter.
-- HATS: h2o velocity-layered, sparse offbeat + flourish -- OH/CY: One voice that brightens: warm OH → bright ride → shimmer.
-- CLAP: h2o natural handclap, reverbed -- CLAP: Late entry (~200s), contretemps, dry quiet mid-snap.
-- --
-- NTO'S KNOWN GEAR: -- NTO'S KNOWN GEAR:
-- Moog Subsequent 37, Arturia MicroFreak, Akai APC40 MKII, -- Moog Subsequent 37, Arturia MicroFreak, Akai APC40 MKII,
...@@ -105,50 +123,50 @@ let gM3 = gMask . gMute3 ...@@ -105,50 +123,50 @@ let gM3 = gMask . gMute3
-- Main Bbm/F vamp with Db/Ebm variation -- Main Bbm/F vamp with Db/Ebm variation
-- Demucs evidence: bass at Bb1(58Hz)/F2(87Hz), C2(65Hz) passing tone at breakdown -- Demucs evidence: bass at Bb1(58Hz)/F2(87Hz), C2(65Hz) passing tone at breakdown
let rt = slow 2 "<bf2 f2 bf2 f2 bf2 f2 df2 ef2>" -- root sequence (for d6 piano, pad, etc) let rt = slow 2 "<bf2 f2 bf2 f2 bf2 f2 df2 ef2>" -- root sequence (for d6 piano, pad, etc)
d1 $ gF1 $ gMute2 -- KICK: 8th note pulse (demucs: kick on EVERY downbeat 8th) d1 $ gF1 $ gMute2 -- KICK: Round sub thud, 8th pulse (att 50ms, no click)
-- NTO pattern: kick+OH alternating 8ths, NOT 4otf! -- NTO: kick on every downbeat 8th, gets DEEPER over time
-- ^42 ON: full 8th kicks (groove). OFF: sparse intro kick -- Ghost doubles before drop. Centroid 1100→200Hz = more sub as track progresses.
-- Before drop: ghost doubles appear (flam at +0.15 beat) $ midiOn "^42" (<| "k*8") -- ON: full 8th pulse (NTO groove)
$ midiOn "^42" (<| "k*8") -- the real NTO groove: 8th kicks $ midiOff "^42" (<| "k ~ ~ <~!3 k>") -- OFF: sparse intro
$ midiOff "^42" (<| "k ~ ~ <~!3 k>") -- intro: sparse $ sometimesBy "^29" ( -- ^29: ghost doubles (pre-drop energy)
$ sometimesBy "^29" ( -- ^29 mid knob: kick ghost doubles (pre-drop energy)
superimpose (("0.07" <~) . (|* gain 0.7)) superimpose (("0.07" <~) . (|* gain 0.7))
) )
$ fix ((# att 0.01) . (# rel 0.5) . (# lpf 2000)) "kick:4" $ "[techno:0,808bd:2]"
$ "[techno:0,808bd:2,kick:4]" # att 0.05 -- 50ms attack = round thud, no click
# rel 0.2
# lpf (slow 64 $ range 800 300 saw) -- gets darker/deeper over time
# gain 1.3 # gain 1.3
d2 $ gF1 $ gM -- CLAP: Dry snap, contretemps (demucs: enters at climax ~200s) d2 $ gF1 $ gM -- CLAP: Dry quiet snap, contretemps (enters late, ~200s)
-- NTO clap: beats 1&3 (contretemps), ~1200Hz, dry mid+hi_mid snap -- NTO clap: peak=0.13 (QUIET!), att=10ms, dec=12ms, dom=1292Hz
-- Appears late in arrangement for climax energy -- On beats 1&3 (contretemps), dry mid-snap, not a fat backbeat
$ midiOn "^43" (<| "cp ~ cp ~") -- ON: contretemps (beats 1&3, NTO climax pattern) $ midiOn "^43" (<| "cp ~ cp ~") -- ON: contretemps (NTO climax)
$ midiOff "^43" (<| "~ cp ~ <~ cp*<1 2>>") -- OFF: classic backbeat (our interpretation) $ midiOff "^43" (<| "~ cp ~ <~ cp*<1 2>>") -- OFF: backbeat (our touch)
$ sometimesBy "^30" ( -- ^30 mid knob: flam probability $ sometimesBy "^30" ( -- ^30: flam probability
superimpose (("e" <~) . (|* gain 0.7)) superimpose (("e" <~) . (|* gain 0.6))
) )
$ "h2ogmcp" $ "h2ogmcp"
# room (slow 32 $ range 0.3 0.6 saw) # hpf 800 -- cut the low end: NTO clap is 0% sub, pure mid
# sz (slow 32 $ range 0.1 0.45 cosine) # lpf 4000
# dry 1 # room 0.1 # dry 1.5 -- very dry
# gain 1.1 # gain 0.7 -- QUIET accent, not a slam (NTO peak=0.13)
# pan 0.55 # pan 0.55
d3 $ gF1 $ gM -- HATS/CY: Open hat 8ths → cymbal morph at drop (demucs confirmed) d3 $ gF1 $ gM -- OH/CY: One evolving voice — warm OH → bright shimmer
-- NTO: OH on every upbeat 8th (alternating with kick) -- NTO: upbeat 8ths that BRIGHTEN over time (centroid 4000→8400Hz)
-- At drop (~2:20): hats morph to high cymbals, kick drops out -- Groove: peak=0.55, att=40ms (soft). Breakdown: peak=0.05 (whisper!), att=7ms
-- ^44 ON: cymbal mode (breakdown). OFF: open hat groove -- ^44 ON: cymbal shimmer (breakdown mode, quiet). OFF: warm open hat (groove)
-- ^76 push: rolls -- ^76 push: rolls. ^52: legato/tightness. ^32: roll probability
$ midiOn "^76" (stut 3 0.6 "s") -- push: hat rolls $ midiOn "^76" (stut 3 0.6 "s") -- push: rolls
$ midiOn "^44" ( -- state ON: cymbal breakdown (no kick, shimmering) $ midiOn "^44" ( -- ON: cymbal shimmer breakdown (quiet, bright, short)
(<| "[~ cy]*4") . (# "h2ogmcy:1") . (# legato 0.6) (|* gain 0.3) . (# legato 0.15) . (# "h2ogmcy:1") . (# hpf 6000)
) )
$ sometimesBy "^32" ( -- ^32 mid knob: roll probability $ sometimesBy "^32" (ply "<2!3 [2 4]>") -- ^32: roll probability
ply "<2!3 [2 4]>" $ "[~ h]*4" -- upbeat 8ths (every upbeat, alternating with kick)
)
$ "[~ h]*4" -- base: open hat on every upbeat 8th
# "h2ogmhh" # "h2ogmhh"
# legato (range 0.1 0.8 "^52") -- ^52 bot knob: hat tightness # n "<6!6 [6 8] 8>" -- OH brightening: n6=open → n8=more open over bars
# legato (range 0.2 0.9 "^52") -- ^52: tightness
# att 0.04 -- 40ms soft onset (NTO OH is not a tick)
# pan 0.42 # pan 0.42
# n "<6!3 [6 8]>" -- 6=open hat, 8=more open. vary per bar # gain 1.4
# gain 1.5
d4 $ gF2 $ gM3 -- BASS: V chord tones (F2/A2/C2), rhythmically alive d4 $ gF2 $ gM3 -- BASS: V chord tones (F2/A2/C2), rhythmically alive
-- onset analysis: NTO bass = ALWAYS F2/A2/C2 (V chord), never sits on Bb! -- onset analysis: NTO bass = ALWAYS F2/A2/C2 (V chord), never sits on Bb!
-- hits every ~2 beats with variation, answer at beat 2.7→3.7→next bar 0.2 -- hits every ~2 beats with variation, answer at beat 2.7→3.7→next bar 0.2
......
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