From a9b356f5cc4983421c2e02d21fffccb1d91304f1 Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Fri, 3 Apr 2026 13:55:52 -0400 Subject: [PATCH] =?UTF-8?q?New=20synths=20across=2010=20more=20tracks=20?= =?UTF-8?q?=E2=80=94=20mellotron,=20drift,=20wavefold,=20granular?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Silk Road: mellotron_flute in finale. The Dialogue: drift pad, mellotron ending. Acid Reign: wavefold in breakdown. Chakra: drift at crown. Raga Midnight: mellotron_strings over 808 drop. The Temple: granular_pad texture. Sleight of Hand: mellotron_choir. Gravity: drift tambura. Ghost Protocol: NES pulled back. An Exception: psycho bass 0.3. Co-Authored-By: Claude Opus 4.6 (1M context) --- tracks/acid_reign.py | 18 ++++++++++++++++++ tracks/an_exception_occurred.py | 2 +- tracks/chakra.py | 17 +++++++++++++++++ tracks/ghost_protocol.py | 2 +- tracks/gravity.py | 2 +- tracks/raga_midnight.py | 15 +++++++++++++++ tracks/silk_road.py | 13 +++++++++++++ tracks/sleight_of_hand.py | 2 +- tracks/the_dialogue.py | 21 ++++++++++++++++++++- tracks/the_temple.py | 20 ++++++++++++++++++++ 10 files changed, 107 insertions(+), 5 deletions(-) diff --git a/tracks/acid_reign.py b/tracks/acid_reign.py index dc321f8..fa96acc 100644 --- a/tracks/acid_reign.py +++ b/tracks/acid_reign.py @@ -297,6 +297,24 @@ for _ in range(12): for bar in range(8): rhodes.rest(Duration.WHOLE) +# ── WAVEFOLD — metallic sustain in the breakdown ─────────────── +wavefold = score.part("wavefold", synth="wavefold", volume=0.2, + lowpass=2000, distortion=0.15, distortion_drive=2.0, + reverb=0.12, reverb_type="spring", + pan=-0.2) + +# Bars 1-32: silent +for _ in range(32): + wavefold.rest(Duration.WHOLE) + +# Bars 33-40: sustained A whole notes through the breakdown +for _ in range(8): + wavefold.add(A, Duration.WHOLE, velocity=70) + +# Bars 41-64: silent +for _ in range(24): + wavefold.rest(Duration.WHOLE) + # ═════════════════════════════════════════════════════════════════ import sys diff --git a/tracks/an_exception_occurred.py b/tracks/an_exception_occurred.py index b801d46..9009be3 100644 --- a/tracks/an_exception_occurred.py +++ b/tracks/an_exception_occurred.py @@ -594,7 +594,7 @@ for _ in range(8): organ.rest(Duration.WHOLE) # ── PSYCHOSIS BASS — deep, menacing, bars 23-32 ──────────────── -psycho_bass = score.part("psycho_bass", synth="sine", envelope="pad", volume=0.7, +psycho_bass = score.part("psycho_bass", synth="sine", envelope="pad", volume=0.3, lowpass=180, distortion=0.25, distortion_drive=3.5, sub_osc=0.6, saturation=0.4) diff --git a/tracks/chakra.py b/tracks/chakra.py index 244fa06..88d2e06 100644 --- a/tracks/chakra.py +++ b/tracks/chakra.py @@ -556,6 +556,23 @@ theremin.add(su[0].add(12), Duration.WHOLE, velocity=45, bend=1.0) for _ in range(5): theremin.rest(Duration.WHOLE) +# ── CROWN DRIFT — dissolving shimmer for the crown chakra ────── +crown_drift = score.part("crown_drift", synth="drift", envelope="pad", volume=0.08, + reverb=0.4, reverb_type="taj_mahal", + chorus=0.3, chorus_rate=0.03, chorus_depth=0.015, + pan=0.1) + +# Bars 1-48: silent (first 6 chakra sections) +for _ in range(48): + crown_drift.rest(Duration.WHOLE) + +# Bars 49-56: crown chakra — velocity fading +for vel in [35, 32, 28, 22, 18, 12, 8, 0]: + if vel > 0: + crown_drift.add(su[0], Duration.WHOLE, velocity=vel) + else: + crown_drift.rest(Duration.WHOLE) + # ═════════════════════════════════════════════════════════════════ import sys diff --git a/tracks/ghost_protocol.py b/tracks/ghost_protocol.py index c862b1c..d2264cd 100644 --- a/tracks/ghost_protocol.py +++ b/tracks/ghost_protocol.py @@ -297,7 +297,7 @@ for bar in range(32): hats.hit(CH, Duration.EIGHTH, velocity=vel) # ── NES MELODY — emotional square wave, the heart of the peak ─── -nes = score.part("nes", synth="square", envelope="organ", volume=0.28, +nes = score.part("nes", synth="square", envelope="organ", volume=0.18, reverb=0.5, reverb_type="taj_mahal", delay=0.35, delay_time=0.234, delay_feedback=0.45, lowpass=4000, pan=-0.1, humanize=0.05) diff --git a/tracks/gravity.py b/tracks/gravity.py index a68810e..43b9ffc 100644 --- a/tracks/gravity.py +++ b/tracks/gravity.py @@ -286,7 +286,7 @@ for vel in [60, 52, 44, 36, 28, 22, 15, 0]: hats.rest(Duration.WHOLE) # ── TAMBURA — buried drone, barely there, just warmth ────────── -tambura = score.part("tambura", synth="sine", envelope="pad", volume=0.08, +tambura = score.part("tambura", synth="drift", envelope="pad", volume=0.08, reverb=0.5, reverb_type="taj_mahal", chorus=0.3, chorus_rate=0.06, chorus_depth=0.01, lowpass=800, pan=-0.3) diff --git a/tracks/raga_midnight.py b/tracks/raga_midnight.py index eabb03e..381c77b 100644 --- a/tracks/raga_midnight.py +++ b/tracks/raga_midnight.py @@ -501,6 +501,21 @@ for _ in range(2): for _ in range(8): tabla.rest(Duration.WHOLE) +# ── MELLOTRON — strings layer over the 808 drop ─────────────── +mello = score.part("mellotron", instrument="mellotron_strings", volume=0.12, + reverb=0.3, reverb_type="taj_mahal", + pan=0.1) + +# Bars 1-48: silent +for _ in range(48): + mello.rest(Duration.WHOLE) + +# Bars 49-56: whole note chords over the drop +mello_prog = key.progression("i", "VII", "VI", "iv") +for _ in range(2): + for chord in mello_prog: + mello.add(chord, Duration.WHOLE, velocity=42) + # ═════════════════════════════════════════════════════════════════ import sys diff --git a/tracks/silk_road.py b/tracks/silk_road.py index 5e07a43..7797ed7 100644 --- a/tracks/silk_road.py +++ b/tracks/silk_road.py @@ -368,6 +368,19 @@ for _ in range(4): for chord in prog: pad.add(chord, Duration.WHOLE, velocity=60) +# ── MELLOTRON — ghostly flute layer in the finale ────────────── +mello = score.part("mellotron", instrument="mellotron_flute", volume=0.15, + reverb=0.3, reverb_type="taj_mahal", + pan=0.1, humanize=0.08) + +for _ in range(64): + mello.rest(Duration.WHOLE) + +# Bars 65-80: plays the progression as whole notes +for _ in range(4): + for chord in prog: + mello.add(chord, Duration.WHOLE, velocity=48) + # ═════════════════════════════════════════════════════════════════ import sys diff --git a/tracks/sleight_of_hand.py b/tracks/sleight_of_hand.py index 9abec02..934c3a3 100644 --- a/tracks/sleight_of_hand.py +++ b/tracks/sleight_of_hand.py @@ -317,7 +317,7 @@ for _ in range(32): theremin.rest(Duration.WHOLE) # ── CHOIR — swells from nowhere, bar 41 ────────────────────── -choir = score.part("choir", instrument="choir", volume=0.15, +choir = score.part("choir", instrument="mellotron_choir", volume=0.15, reverb=0.8, reverb_type="cathedral", chorus=0.3, chorus_rate=0.08, chorus_depth=0.012, pan=0.2) diff --git a/tracks/the_dialogue.py b/tracks/the_dialogue.py index b1b3366..75e1391 100644 --- a/tracks/the_dialogue.py +++ b/tracks/the_dialogue.py @@ -544,7 +544,7 @@ for _ in range(8): harmonium.rest(Duration.WHOLE) # ── PAD — the shared understanding ───────────────────────────── -pad = score.part("pad", synth="supersaw", envelope="pad", volume=0.1, +pad = score.part("pad", synth="drift", envelope="pad", volume=0.1, reverb=0.7, reverb_type="taj_mahal", chorus=0.4, chorus_rate=0.15, chorus_depth=0.01, lowpass=1500) @@ -569,6 +569,25 @@ for vel in [45, 38, 30, 22, 15, 10, 5, 0]: for _ in range(8): pad.rest(Duration.WHOLE) +# ── MELLOTRON — ghostly flute underneath the shared understanding ── +mello = score.part("mellotron", instrument="mellotron_flute", volume=0.12, + reverb=0.3, reverb_type="taj_mahal", + pan=-0.15) + +# Bars 1-64: silent +for _ in range(64): + mello.rest(Duration.WHOLE) + +# Bars 65-72: plays the progression as whole notes +mello_prog = key.progression("i", "VII", "VI", "iv") +for _ in range(2): + for chord in mello_prog: + mello.add(chord, Duration.WHOLE, velocity=42) + +# Bars 73-80: silence +for _ in range(8): + mello.rest(Duration.WHOLE) + # ── ROOM TONE — the space itself ─────────────────────────────── room = score.part("room", synth="noise", envelope="pad", volume=0.025, reverb=1.0, reverb_type="taj_mahal", diff --git a/tracks/the_temple.py b/tracks/the_temple.py index 2df3c4b..7bb7218 100644 --- a/tracks/the_temple.py +++ b/tracks/the_temple.py @@ -46,6 +46,26 @@ room.lfo("volume", rate=0.008, min=0.015, max=0.04, bars=72, shape="triangle") for _ in range(72): room.add(Sa, Duration.WHOLE, velocity=25) +# ── GRAIN — granular pad, subliminal texture ─────────────────── +grain = score.part("grain", instrument="granular_pad", volume=0.05, + reverb=0.4, reverb_type="taj_mahal", + pan=0.25) + +# Bars 1-8: silent +for _ in range(8): + grain.rest(Duration.WHOLE) + +# Bars 9-64: Sa drone an octave below, whole notes +for _ in range(56): + grain.add(Sa.add(-12), Duration.WHOLE, velocity=28) + +# Bars 65-72: fade out +for vel in [22, 18, 14, 10, 6, 0, 0, 0]: + if vel > 0: + grain.add(Sa.add(-12), Duration.WHOLE, velocity=vel) + else: + grain.rest(Duration.WHOLE) + # ── SINGING BOWL — the space itself ───────────────────────────── bowl = score.part("bowl", instrument="singing_bowl", volume=0.55, reverb=1.0, reverb_type="taj_mahal",