Pure Web Audio, zero deps (site/decks.js, self-contained UI):
- deck A/B with waveform (client-computed peaks), click-to-seek, play/pause, CUE
- ±8% varispeed pitch (playbackRate — turntable behaviour, deliberately no keylock)
- channel gains + equal-power crossfader, DynamicsCompressor master limiter
- AudioContext lazily created on first load (autoplay policy safe)
Sources:
- local preview MP3s: PREVIEWS_DIR (default ./previews, gitignored) served at
/previews, discovered via GET /shop/local-previews/{release_id}
({release_id}.mp3 / {release_id}-*.mp3|.m4a); on prod bind-mount the collection
- Apple 30s previews: GET /shop/preview-proxy?u= (STRICT whitelist
*.itunes.apple.com / *.mzstatic.com) — Apple CDN sends no CORS, Web Audio needs it
- YouTube/Beatport/Bandcamp embeds untouched: iframes can never enter a mixer
release.html: A/B load buttons per track preview + local-cut rows.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
19 lines
593 B
Plaintext
19 lines
593 B
Plaintext
__pycache__/
|
|
*.pyc
|
|
.env
|
|
.venv/
|
|
venv/
|
|
# distro raw dumps — saved scrapes/spreadsheets for manual ingest. Never commit:
|
|
# they carry supplier PII + live account tokens (e.g. a RareWaves buyer JWT). Local-only.
|
|
ingest_raw/
|
|
rarw*.txt
|
|
inertia.txt
|
|
*.xlsx
|
|
# live-site MariaDB dumps for 3D-store/editor data work — full site export, carries customer/
|
|
# order PII. Local-only; another lane consumes it for robotmonster.party/store racks + editor.
|
|
site-update.sql
|
|
customers*.sql
|
|
*-dump.sql
|
|
# local preview MP3s for the DECKS mixer — John's rips, served at /previews. Never commit audio.
|
|
previews/
|