Replace the pitch-laddered single-pop combo ladder with FIVE distinct REAL
Match FX cues from the user's Triple Treat SFX pack (Match SFX/), ordered to
convey cascade escalation by spectral brightness / high-frequency energy
(combo1 dullest -> combo5 sparkliest):
combo1 <- Match SFX/Match FX 2-RCM.wav (dark/full, centroid ~1.7 kHz)
combo2 <- Match SFX/Match FX 4-RCM.wav (warm mid, centroid ~2.1 kHz)
combo3 <- Match SFX/Match FX 6-RCM.wav (bright mid, centroid ~3.2 kHz)
combo4 <- Match SFX/Match FX 7-RCM.wav (rich+bright, centroid ~4.7 kHz)
combo5 <- Match SFX/Match FX 3-RCM.wav (sparkly, centroid ~6.8 kHz)
The Match FX set does not cleanly pitch-ascend, so brightness is the ordering
signal; spectral centroid ascends monotonically 1.68 < 2.09 < 3.18 < 4.70 <
6.77 kHz. Each down-mixed to mono, trimmed to a 0.50 s onset window, eased in
(~6 ms) and rounded out with a 150 ms cosine fade-out, peak-normalized -15 dBFS.
Pure drop-in: audio.sx and all wiring are untouched; swap/match/win/lose are
byte-identical to P10.8. The depth->cue-index mapping (cascade_cue, fx_combo)
locks the integer mapping, not the audio content, so both tests stay valid.
LICENSE.txt combo provenance updated to the real Match FX sources.
Replace the 9-cue bank with best-fit selections from the user-provided
Triple_Treat_SFX.zip, converted to the engine format (mono / 44100 / Int16,
<= ~600 ms) and peak-normalized to a gentle, consistent -15 dBFS. Drop-in:
audio.sx and all wiring are untouched; only assets/audio/** changes.
Per-cue source within the pack:
swap <- Transition SFX/Swipe FX 1 (light swipe = the swap gesture)
match <- Pop:Bubble SFX/Pop FX 5 (juicy candy pop, first clear)
combo1..5 <- Pop:Bubble SFX/Pop FX 3 (one pop pitch-laddered +0/+2/+4/+7/+9
semitones; the pack's Match set does not ascend monotonically)
win <- Success:Power-Up SFX/Power Up FX 1 (short triumphant)
lose <- Fail SFX/Fail FX 2 (gentle tonal, not boomy)
combo1..5 ascend in fundamental: 687 < 771 < 865 < 1029 < 1155 Hz. The 30 MB
pack and its .meta/__MACOSX cruft are not committed; LICENSE.txt records the
exact per-cue source file within the pack.
DSP-soften the existing P10.6 CC0 bank in place — same filenames, same
canonical WAVE/mono/44100/Int16 format, drop-in (engine untouched):
- Onset eased in: short qsin fade-in (8-14 ms) tames the attack transient
so pops bloop instead of snap (onset peak in first 20 ms down 5.6-8.7 dB
per cue; combo attack-to-peak 1.4-2.4 ms -> 15-26 ms).
- Highs rolled off: warm two-pole low-pass (2.6 kHz swap/lose, 3.0 kHz
match/combo, 3.6 kHz win) for a rounded tone. Spectral centroid down
~40-60%; >4 kHz energy collapses (win 76%->28%, combos ~10%->0.5%).
- Quieter: re-normalized to -15.5 dBFS (swap/lose -17.5), down from ~-9/-12,
lowering both peak and RMS on every cue.
Candy character retained; cascade ladder preserved (combo1..5 fundamentals
still ascend 1045<1173<1317<1566<1758 Hz). LICENSE provenance updated.
QA: "the sfx is too loud and scratchy." Drop-in asset swap — no engine change.
Replace the 9 synthesized cues (swap, match, combo1..combo5, win, lose) with
real free-licensed (CC0 1.0) sound effects from Kenney's Interface Sounds /
Digital Audio packs:
swap <- pluck_002 match <- confirmation_002
win <- powerUp7 lose <- minimize_006
combo1..5 <- glass_001 pitch-laddered up a pentatonic run (0,+2,+4,+7,+9 st)
via resample DSP -> ascending fundamentals 1918..3226 Hz.
Every cue: mono / 44100 Hz / Int16 PCM, <=0.54 s. Whole bank peak-normalized to
-9 dBFS, so peak AND RMS are well below the old synth (old peak -0.7..-2.9 dB,
mean -5.8..-9.3 dB; new peak -9.0 dB, mean -22..-30 dB). Audibly cleaner — no
synth harmonics.
LICENSE.txt rewritten with real per-file provenance (source URL + CC0). clear.wav
(already a CC0 Kenney clip, not loaded by the engine) left unchanged. Engine
(audio.sx/board_view.sx/main.sx) untouched; sim build loads all 9 cues, zero
"load failed".
Produce the first deliverable of the Candy-Crush vibe pass: a bank of bright,
glossy, higher-pitched SFX WAVs under assets/audio/, all in the exact canonical
iOS System-Sound format clear.wav uses (mono, 44100 Hz, signed-16-bit PCM).
Bank: swap, match, combo1..combo5 (ascending pentatonic run C6 D6 E6 G6 A6),
win (ascending arpeggio), lose (descending stinger). Every cue sits above
clear.wav's ~784 Hz fundamental; combo1<..<combo5 step strictly upward
(1047<1175<1319<1568<1760 Hz). Each loads via AudioServicesCreateSystemSoundID
with status 0.
Synthesized by the build-time tools/synth_audio.py (pure-Python additive
synthesis; the app never runs it) and converted with afconvert. Pitch verified
with tools/measure_pitch.py. Provenance (CC0) recorded in LICENSE.txt. No sx
code changes — engine wiring is P10.2/P10.3.