From 7cc61b582ad8b2c8ee22fa616387b256071f78f9 Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Thu, 2 Apr 2026 00:25:06 -0400 Subject: [PATCH] Deep Time: tingsha + singing bowls throughout, changelog update Tingsha strikes every 4-6 bars through bar 48 (was silent after 16). Bowl_low strikes every 8 bars through all 48 (was only first 16). Both fade in velocity as the piece progresses. Co-Authored-By: Claude Opus 4.6 (1M context) --- CHANGELOG.md | 1 + tracks/deep_time.py | 34 +++++++++++++++++++++------------- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a5198b..6cc1435 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## 2026-04-01 - **Track 12: The Observatory** — G minor, 112 BPM. Chapel through shortwave static. Square-wave organ, choir, saw arp, supersaw halo pad, theremin signal. Contributed by ChatGPT. +- Deep Time: stereo spread across 17 parts, three reverb spaces (taj_mahal/cathedral/algorithmic), long delays on percussion, tingsha and singing bowls extended through full track - Raga Midnight: doubled to 56 bars (~2:30). Proper raga form (alap→jor→gat→jhala→tabla solo). 808 drop with Re→Ga→Re→Pa(-36) bass pattern. Delay on tabla/dhol. Velocity list fades. - Chakra: stereo spread (uke left, Rhodes right, theremin far right), sitar louder/drier, opening reverbs pulled back - Silk Road: stereo caravan (east→west = left→right), dry-to-wet koto, tabla grows with caravan, sitar dried out, play_phrases() helper diff --git a/tracks/deep_time.py b/tracks/deep_time.py index 60f84fd..576387e 100644 --- a/tracks/deep_time.py +++ b/tracks/deep_time.py @@ -43,9 +43,18 @@ tingsha.rest(Duration.WHOLE) tingsha.add(Fs.add(12), Duration.WHOLE, velocity=42) tingsha.rest(Duration.WHOLE) tingsha.rest(Duration.WHOLE) -# Rest of track: silent -for _ in range(32): - tingsha.rest(Duration.WHOLE) +# Bars 17-48: continues throughout — one strike every 4-6 bars +tingsha_strikes = { + 18: (B.add(12), 45), 22: (Fs.add(12), 40), 26: (D.add(12), 42), + 30: (B.add(12), 38), 34: (E.add(12), 35), 38: (Fs.add(12), 38), + 42: (B.add(12), 32), 46: (D.add(12), 28), +} +for bar in range(17, 49): + if bar in tingsha_strikes: + note, vel = tingsha_strikes[bar] + tingsha.add(note, Duration.WHOLE, velocity=vel) + else: + tingsha.rest(Duration.WHOLE) # ── RAINSTICK — slow texture wash ────────────────────────────── rain = score.part("rain", volume=0.15, reverb=0.5, reverb_type="cathedral", @@ -107,16 +116,15 @@ bowl_low = score.part("bowl_low", instrument="singing_bowl_ring", volume=0.45, delay=0.15, delay_time=1.5, delay_feedback=0.2, pan=-0.15) -# One deep strike every 8 bars -bowl_low.add(B.add(-24), Duration.WHOLE, velocity=70) -for _ in range(7): - bowl_low.rest(Duration.WHOLE) -bowl_low.add(B.add(-24), Duration.WHOLE, velocity=62) -for _ in range(7): - bowl_low.rest(Duration.WHOLE) -# Rest of track -for _ in range(32): - bowl_low.rest(Duration.WHOLE) +# Strike every 8 bars throughout — the deep pulse of the earth +bowl_strikes = [ + (B.add(-24), 70), (B.add(-24), 62), (Fs.add(-24), 58), + (B.add(-24), 55), (D.add(-12), 50), (B.add(-24), 45), +] +for note, vel in bowl_strikes: + bowl_low.add(note, Duration.WHOLE, velocity=vel) + for _ in range(7): + bowl_low.rest(Duration.WHOLE) # ── DIDGERIDOO — primal opening, first voice heard ────────────── didge = score.part("didge", instrument="didgeridoo", volume=0.08,