From 61b7ce9389c2ad8e6fa0a386da219610a158cece Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Mon, 30 Mar 2026 04:36:48 -0400 Subject: [PATCH] Chakra: 432 Hz tuning, scale tones for bowl, no more dissonant Solfeggio MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaced exact Solfeggio frequencies with scale-consonant tones at A=432 Hz reference pitch. Bowl ascends through G4 → C5 → E5 → E6 following the key centers. Just intonation + 432 Hz = pure warmth. Co-Authored-By: Claude Opus 4.6 (1M context) --- tracks/chakra.py | 70 +++++++++++++++--------------------------------- 1 file changed, 22 insertions(+), 48 deletions(-) diff --git a/tracks/chakra.py b/tracks/chakra.py index 323046d..70ef04f 100644 --- a/tracks/chakra.py +++ b/tracks/chakra.py @@ -20,36 +20,10 @@ from pytheory.rhythm import DrumSound # We'll use Tone objects at specific frequencies via .from_hz() # and also use scale tones for melodic content -score = Score("4/4", bpm=60, temperament="just") +score = Score("4/4", bpm=60, temperament="just", reference_pitch=432.0) -# Helper: find the nearest tone to a frequency -def chakra_tone(hz): - """Create a tone near the target chakra frequency.""" - return Tone.from_frequency(hz) - -# Chakra frequencies -ROOT_HZ = 396 -SACRAL_HZ = 417 -SOLAR_HZ = 528 -HEART_HZ = 639 -THROAT_HZ = 741 -THIRD_EYE_HZ = 852 -CROWN_HZ = 963 - -root_tone = chakra_tone(ROOT_HZ) -sacral_tone = chakra_tone(SACRAL_HZ) -solar_tone = chakra_tone(SOLAR_HZ) -heart_tone = chakra_tone(HEART_HZ) -throat_tone = chakra_tone(THROAT_HZ) -third_eye_tone = chakra_tone(THIRD_EYE_HZ) -crown_tone = chakra_tone(CROWN_HZ) - -print(f"Chakra tones:") -for name, t in [("Root", root_tone), ("Sacral", sacral_tone), - ("Solar", solar_tone), ("Heart", heart_tone), - ("Throat", throat_tone), ("Third Eye", third_eye_tone), - ("Crown", crown_tone)]: - print(f" {name:10s}: {t} ({t.frequency:.0f} Hz)") +# Bowl tones — root note of each section's key, ascending through octaves +# At A=432 Hz, everything sits in the "healing" frequency space # ── Keys for each chakra section ──────────────────────────────── # Root/Sacral: G major (grounding) @@ -103,13 +77,13 @@ bowl = score.part("bowl", instrument="singing_bowl", volume=0.4, reverb=0.9, reverb_type="taj_mahal") # Strike every 2 bars — let it ring -bowl.add(root_tone, Duration.WHOLE, velocity=90) +bowl.add(sl[0], Duration.WHOLE, velocity=90) bowl.rest(Duration.WHOLE) -bowl.add(root_tone, Duration.WHOLE, velocity=85) +bowl.add(sl[0], Duration.WHOLE, velocity=85) bowl.rest(Duration.WHOLE) -bowl.add(root_tone, Duration.WHOLE, velocity=80) +bowl.add(sl[0], Duration.WHOLE, velocity=80) bowl.rest(Duration.WHOLE) -bowl.add(root_tone, Duration.WHOLE, velocity=75) +bowl.add(sl[0], Duration.WHOLE, velocity=75) bowl.rest(Duration.WHOLE) # ── Rhodes — sparse, warm ────────────────────────────────────── @@ -146,7 +120,7 @@ for _ in range(2): # Bowl shifts to 417 Hz for _ in range(4): - bowl.add(sacral_tone, Duration.WHOLE, velocity=80) + bowl.add(sl[0].add(2), Duration.WHOLE, velocity=80) bowl.rest(Duration.WHOLE) # Rhodes — fuller arps @@ -200,7 +174,7 @@ for _ in range(2): # Bowl at 528 Hz — the "love frequency" for _ in range(4): - bowl.add(solar_tone, Duration.WHOLE, velocity=85) + bowl.add(sm[0], Duration.WHOLE, velocity=85) bowl.rest(Duration.WHOLE) # Rhodes — more active @@ -270,7 +244,7 @@ for _ in range(2): # Bowl at 639 Hz for _ in range(4): - bowl.add(heart_tone, Duration.WHOLE, velocity=88) + bowl.add(sm[0].add(7), Duration.WHOLE, velocity=88) bowl.rest(Duration.WHOLE) # Rhodes — flowing arps @@ -327,7 +301,7 @@ for _ in range(2): # Bowl at 741 Hz for _ in range(4): - bowl.add(throat_tone, Duration.WHOLE, velocity=85) + bowl.add(su[0], Duration.WHOLE, velocity=85) bowl.rest(Duration.WHOLE) # Rhodes — staccato arps, rhythmic @@ -412,7 +386,7 @@ for chord in eye_prog: # Bowl at 852 Hz for _ in range(4): - bowl.add(third_eye_tone, Duration.WHOLE, velocity=90) + bowl.add(su[0].add(7), Duration.WHOLE, velocity=90) bowl.rest(Duration.WHOLE) # Rhodes — 16th note arps @@ -487,13 +461,13 @@ for _ in range(4): harmonium.rest(Duration.WHOLE) # Bowl at 963 Hz — the crown. Rings alone. -bowl.add(crown_tone, Duration.WHOLE, velocity=95) -bowl.add(crown_tone, Duration.WHOLE, velocity=90) -bowl.add(crown_tone, Duration.WHOLE, velocity=80) -bowl.add(crown_tone, Duration.WHOLE, velocity=65) -bowl.add(crown_tone, Duration.WHOLE, velocity=50) -bowl.add(crown_tone, Duration.WHOLE, velocity=35) -bowl.add(crown_tone, Duration.WHOLE, velocity=20) +bowl.add(su[0].add(12), Duration.WHOLE, velocity=95) +bowl.add(su[0].add(12), Duration.WHOLE, velocity=90) +bowl.add(su[0].add(12), Duration.WHOLE, velocity=80) +bowl.add(su[0].add(12), Duration.WHOLE, velocity=65) +bowl.add(su[0].add(12), Duration.WHOLE, velocity=50) +bowl.add(su[0].add(12), Duration.WHOLE, velocity=35) +bowl.add(su[0].add(12), Duration.WHOLE, velocity=20) bowl.rest(Duration.WHOLE) # Rhodes — one last arp, dissolving @@ -516,9 +490,9 @@ for _ in range(7): tabla.rest(Duration.WHOLE) # Theremin — highest note, dissolving into the cosmos -theremin.add(crown_tone, Duration.WHOLE, velocity=90, bend=3.0) -theremin.add(crown_tone, Duration.WHOLE, velocity=70, bend=2.0) -theremin.add(crown_tone, Duration.WHOLE, velocity=45, bend=1.0) +theremin.add(su[0].add(12), Duration.WHOLE, velocity=90, bend=3.0) +theremin.add(su[0].add(12), Duration.WHOLE, velocity=70, bend=2.0) +theremin.add(su[0].add(12), Duration.WHOLE, velocity=45, bend=1.0) for _ in range(5): theremin.rest(Duration.WHOLE)