m3te sound effects
==================

The nine shipped cues (swap, match, combo1..5, win, lose) are best-fit
selections from the user-provided "Triple Treat SFX" pack
(Triple_Treat_SFX.zip, ~30 MB, 280 files, Unity-style with .meta sidecars),
chosen per game event and converted for the candy match-3 feel (P10.8).

  >>> The full pack is NOT committed — only the selected, converted cues live
  >>> here. The pack was supplied directly by the user for this game; its source
  >>> archive is Triple_Treat_SFX.zip (kept outside the repo, in ~/Downloads).

All files are delivered in exactly the format iOS System Sound Services loads
directly via audio.sx: WAVE / mono / 44100 Hz / signed-16-bit PCM. The pack's
sources are 24-bit / 48 kHz / stereo; each was down-mixed to mono, trimmed to
its punchy window, peak-normalized, and re-wrapped to the canonical container.

The bank is deliberately GENTLE (the user rejected aggressive SFX twice): every
cue is peak-normalized to a quiet, consistent -15 dBFS, eases in with a short
fade to tame the attack transient, and rounds out with a cosine fade-out tail.
The pack's candy character is preserved — the cues are not re-synthesized.

Provenance: the user-provided "Triple Treat SFX" pack
-----------------------------------------------------
Each cue below names the EXACT source file within the pack it was selected from
(paths relative to the pack's "Triple Treat SFX/" root). Because the pack came
from the user for this game, no external license was hunted; provenance is the
supplied Triple_Treat_SFX.zip.

swap.wav    — soft, light SWIPE matching the swap gesture (fires on every swipe,
              so kept subtle). Distinct timbre from the candy pops.
              Source: Transition SFX/Swipe FX 1-RCM.wav
              Trimmed to the swipe body (~0.44 s), faded, peak-normalized -15 dBFS.

match.wav   — bright, juicy candy POP (the satisfying first-clear reward).
              Source: Pop:Bubble SFX/Pop FX 5-RCM.wav
              Trimmed to the single pop (~0.44 s), faded, peak-normalized -15 dBFS.

combo1..5.wav — the candy-cascade ladder: ONE clean pop pitch-laddered up a
              major-pentatonic run (+0/+2/+4/+7/+9 semitones) so deeper cascades
              pop higher. The pack's Match FX set does NOT ascend monotonically,
              so a single good pop was real-resample pitch-shifted instead.
              Source: Pop:Bubble SFX/Pop FX 3-RCM.wav
              Real DSP (linear-interpolation resample) per step; trimmed
              (~0.36 s down to ~0.21 s as pitch rises), faded, peak-normalized
              -15 dBFS. Measured fundamentals (tools/measure_pitch.py), strictly
              ascending:
                combo1 687 Hz < combo2 771 < combo3 865 < combo4 1029 < combo5 1155

win.wav     — short, triumphant POWER-UP cue (level won).
              Source: Success:Power-Up SFX/Power Up FX 1-RCM.wav
              Trimmed to the front-loaded body (~0.60 s), faded, peak-normalized
              -15 dBFS.

lose.wav    — soft, gentle tonal FAIL (level lost) — not boomy or harsh.
              Source: Fail SFX/Fail FX 2-RCM.wav
              Trimmed to the body (~0.58 s) with a long cosine fade-out, peak-
              normalized -15 dBFS.

clear.wav   — "confirmation_001" from Kenney "Interface Sounds" (CC0).
              https://kenney.nl/assets/interface-sounds
              NOT loaded by the shipped game; kept as a CC0 reference clip
              (tools/measure_pitch.py uses its ~784 Hz fundamental as a baseline).

Processing
----------
Each chosen pack cue was decoded, down-mixed to mono, trimmed to its transient
window, optionally pitch-shifted with real resample DSP (combos only), eased in
with a short fade and rounded out with a cosine fade-out, peak-normalized to
-15 dBFS, and re-wrapped to the canonical WAVE/LEI16/44100/mono container with
afconvert. The shipped game never runs any build tool; it only loads the
finished WAVs. The 30 MB pack and its .meta / __MACOSX cruft are not committed.
