From c9bdef40942339ec86f1811e6e809f77187fcb25 Mon Sep 17 00:00:00 2001 From: Matteo Benedetto Date: Wed, 24 Jun 2026 20:27:42 +0200 Subject: [PATCH] Title music: brano complesso e ricco di pathos (112 note, 3 canali) Riscritta completamente la title music. Ora e' un brano di 112 note (~56 sec, in loop) su 3 canali invece del precedente semplice 32-note su 2 canali: - CH1 melodia: 112 note con envelope sostenuto (NR12=0x87, fade up lungo) per un suono haunting/cantabile. Progressione armonica ricca: Dm - Bb - F - C - Dm - A7(con C#, tensione) - Dm(climb al C5) - Gm - A7 - discesa cromatica finale nell'abisso. - CH2 basso: linea indipendente (title_bass[112]) che segue gli accordi con movimento, non piu' semplice ottava sotto. Envelope deep plucked. - CH4 noise: rintocchi sparsi (toll) ad ogni cambio d'accordo (ogni 8 step) per atmosfera desolata stile Metroid II / Castlevania. Struttura: intro sparso (Dm) - lamento (Bb-F-C-Dm) - tensione/climax (A7 con leading tone, climb al C5) - crollo cromatico e discesa nell'abisso (D3...A2). Ispirazione: Castlevania (arpeggi gotici), Metroid II (desolazione sparsa), Link's Awakening (melancolia onirica). --- assets/bg.png | Bin 12254 -> 9706 bytes src/sound.c | 84 ++++++++++++++++++++++++++++++++++---------------- 2 files changed, 58 insertions(+), 26 deletions(-) diff --git a/assets/bg.png b/assets/bg.png index 677cb2fd3d1f55ff30bfcb7f8156808a9e01e47e..ceff098e377c3f4a31f8ecff4278a568a3d35b79 100644 GIT binary patch literal 9706 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 tEHqFefPv@hev#DI5hCBMD1d)OSU== 30) { // 30 frames per note + if (title_music_timer >= 30) { // 30 frames per note (somber) title_music_timer = 0; - uint16_t n = title_melody[title_music_step]; - NR10_REG = 0; - NR11_REG = 0x80; - NR12_REG = 0x63; // soft fade - NR13_REG = n & 0xFF; - NR14_REG = (n >> 8) | 0x80; - - // Add a slow bass note every 4 steps - if (title_music_step % 4 == 0) { - NR21_REG = 0x80; - NR22_REG = 0x77; - uint16_t bn = n / 2; // Octave lower (divide frequency logic) - NR23_REG = bn & 0xFF; - NR24_REG = (bn >> 8) | 0x80; + uint8_t step = title_music_step; + // CH1: melody (sustained, haunting envelope) + uint16_t n = title_melody[step]; + if (n != R) { + NR10_REG = 0; + NR11_REG = 0x80; + NR12_REG = 0x87; // vol 8, fade up, period 7 (sustained) + NR13_REG = n & 0xFF; + NR14_REG = (n >> 8) | 0x80; + } + // CH2: independent bass line (deep plucked) + uint16_t b = title_bass[step]; + if (b != R) { + NR21_REG = 0x80; + NR22_REG = 0xA3; // vol 10, fade down, period 3 (deep plucked) + NR23_REG = b & 0xFF; + NR24_REG = (b >> 8) | 0x80; + } + // CH4: sparse toll at chord changes (every 8 steps) for atmosphere + if (step % 8 == 0) { + NR41_REG = 0x01; + NR42_REG = 0x82; // soft, slow fade + NR43_REG = 0x70; // deep low toll + NR44_REG = 0x80; } - title_music_step++; - if (title_music_step >= 32) title_music_step = 0; + if (title_music_step >= 112) title_music_step = 0; } return; }