From a48633741e46db17b4a2741244334fca22aee99b Mon Sep 17 00:00:00 2001 From: "soroush.asadi" Date: Tue, 23 Jun 2026 20:03:50 +0330 Subject: [PATCH] docs(remotion): audio sourcing catalog (CC0 music/SFX, Iran-aware) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From the audio-sourcing-sweep (45 sources verified). The load-bearing test — can a paid SaaS render the audio into customers' MP4s AND vendor the file — rules out almost all "royalty-free" libraries; only CC0/PD passes cleanly. - USE (CC0, vendorable): FreePD (music; site dead → archive.org/details/freepd), Kenney.nl (SFX; the one clean-from-Iran source), Freesound-CC0, OpenGameArt-CC0. - CAUTION: incompetech CC-BY (needs attribution pipeline), aggregators (verify per-track), Sonniss/Pixabay (render-input-only, never vendor raw). - AVOID/reference-only: Mixkit/Uppbeat/Bensound/Envato/Zapsplat/… (clauses + OFAC). - Persian = no clean CC0 bulk source → commission + self-CC0 long-term. Real files need a VPN/non-Iran fetch (acquire-once-then-vendor makes the licence perpetual); only the 4 self-authored ffmpeg stubs are vendored today. Firewall rules mirror the illustration assets.json + check-assets guard (already scans audio). Co-Authored-By: Claude Opus 4.8 --- services/remotion/docs/AUDIO_LIBRARY.md | 342 ++++++++++++++++++++++++ 1 file changed, 342 insertions(+) create mode 100644 services/remotion/docs/AUDIO_LIBRARY.md diff --git a/services/remotion/docs/AUDIO_LIBRARY.md b/services/remotion/docs/AUDIO_LIBRARY.md new file mode 100644 index 0000000..a1c5492 --- /dev/null +++ b/services/remotion/docs/AUDIO_LIBRARY.md @@ -0,0 +1,342 @@ +# FlatRender — Curated AUDIO Library Catalog + +> Synthesized from the `flatrender-audio-sweep` source set (33 source-rows surveyed → +> adversarial license + Iran-access verification per source). Mirrors the firewall +> discipline of `services/remotion/docs/ASSET_LIBRARY.md`. **Read §7 (Reality Check) +> before treating any source as "done".** Today only **4 self-authored CC0 stubs** are +> vendored (`public/audio/`); everything below is an **acquisition plan**, not a shipped +> library. + +**Product context:** Persian-first paid template SaaS. Audio is **vendored into the repo** +(`services/remotion/public/audio/`) AND **rendered into customer-downloadable MP4s** +(`FlexStory.tsx` already muxes `audio/music-ambient.mp3` + `sfx-whoosh/chime` via +`staticFile()`). This dual requirement — *vendor the raw file* AND *bake it into a paid +customer output* — is the load-bearing test every source below is graded against. + +--- + +## 0. THE LOAD-BEARING QUESTION: "Can a paid SaaS render + vendor this?" + +FlatRender does two things that most "free music/SFX" licenses quietly forbid: + +1. **Vendors the raw file** — commits the `.mp3`/`.wav` into the repo and serves it at render time. +2. **Bakes it into a paid customer MP4** that the customer downloads. + +Only **three license classes** clear BOTH halves cleanly: + +| Class | Render-into-MP4 | Vendor raw file | Attribution | Notes | +|---|---|---|---|---| +| **CC0 / Public Domain** | ✅ | ✅ | none | The only friction-free tier. Vendor + render + resell, zero conditions. | +| **CC-BY** | ✅ | ✅ | **REQUIRED, travels with file** | Legal but the credit must be auto-injected into every render + a notices file. Operational burden. | +| **MIT** (rare for audio) | ✅ | ✅ | notice file | n/a here — no audio source is MIT. | + +Everything else fails on at least one of these recurring traps: + +- **"No standalone-file redistribution"** (Pixabay, Mixkit, 99Sounds, Sonniss, Zapsplat, Bensound, Tunetank, Storyblocks, Patrick de Arteaga, Envato) → you may render-into-MP4 but **may NOT vendor the raw file**. Fatal under FlatRender's vendor-the-file architecture. +- **"No competing/stock-basis product"** (Mixkit, Uppbeat, Envato, Storyblocks) → a paid template SaaS *is* the competing product. Hard NO. +- **NonCommercial (-NC)** (BBC RemArc, Jamendo-via-Openverse, FMA -NC slice) → paid SaaS is commercial. Hard NO. +- **ShareAlike (-SA) / NoDerivatives (-ND)** (FMA slices) → SA forces your paid MP4 to be released CC-BY-SA (fatal); ND treats sync-to-video as a prohibited derivative (fatal). +- **Aggregator disclaimer** (FMA, Openverse, Chosic, ccMixter "Free for Commercial") → the platform licenses nothing; the per-track upstream license governs and must be verified per file. +- **Iran payment wall** (Uppbeat, Bensound, Tunetank, Envato, Storyblocks, Patrick de Arteaga paid tier, incompetech/CreatorChords no-attribution upgrade) → the *only compliant tier* requires a foreign card/contract Iran cannot execute. + +**Net:** the vendorable library must be built on the **CC0 tier first** (FreePD via archive.org, Freesound-CC0, Kenney, OpenGameArt-CC0), with **CC-BY as a credit-pipeline tier** (incompetech, ccMixter-CC0/BY, FMA-CC0/BY, Chosic-CC0). Persian/traditional is the hardest gap and has **no clean CC0 bulk source** — see §3. + +--- + +## 1. MUSIC — per-source verdicts + +### 1.1 FreePD.com (Kevin MacLeod CC0 catalog) — ⭐ PRIMARY MUSIC SOURCE +- **License:** CC0 1.0 — full public-domain dedication, verified against CC legal code. Zero conditions: vendor + render + resell, no attribution. **The cleanest tier for FlatRender's exact use case.** +- **Iran-access:** **freepd.com is DEAD (closed 2025).** Catalog survives as a complete CC0 mirror at **`archive.org/details/freepd`** (1,025+ MP3, torrent + M3U). archive.org is intermittently reachable from Iran (VPN/Psiphon) — **mirror NOW, don't depend on live access.** +- **Vibe:** uplifting/corporate, calm/ambient, cinematic, playful. **WEAK on Persian/traditional.** +- **Verdict:** **USE** (CC0 clean). Rated "caution" in source only because the official host is dead and acquisition runs through a third-party archive.org mirror — license is spotless. **Vendor the FreePD/CC0 version, never the Incompetech/CC-BY twin of the same track.** + +### 1.2 Freesound.org (CC0 filter) — ⭐ PRIMARY SFX + music-loop source +- **License:** per-sound; **CC0 subset only.** CC0 = "you could even sell the sound," no attribution, standalone redistribution OK. CC-BY usable with attribution. **Hard-exclude CC-BY-NC + Sampling+.** +- **Acquisition catch:** the **Freesound API is NON-COMMERCIAL** unless you sign a UPF agreement → acquire **manually** (individual downloads), governed only by the CC license, not the API TOS. Never scrape. +- **Iran-access:** UPF/Barcelona (EU, not OFAC). Cloudflare-fronted + login-to-download → acquire once via non-Iran box/VPN, then vendor (CC grant is perpetual). +- **Vibe:** best-in-class SFX (UI/whoosh/transition/ambience/foley); some thin Persian instrument samples (santoor/tar/daf). +- **Verdict:** **USE** (CC0-filtered, manual download). Mandatory: re-verify license per file at download, log CC0 proof in ledger, loudness-normalize (no upstream QC). + +### 1.3 incompetech (Kevin MacLeod) — CC-BY, attribution pipeline +- **License:** CC-BY 4.0 (free tier). Commercial + redistribution OK, **but attribution travels with every file** — exact credit string must appear in each render's credits + a notices file. Paid Standard License removes attribution but needs a **foreign card (Iran-blocked)**. +- **Iran-access:** GOOD (static Cloudflare site, no login; archive.org mirror as fallback). The no-attribution *upgrade* is payment-blocked. +- **Vibe:** EXCELLENT breadth (~2,000 tracks: uplifting/corporate/ambient/cinematic/playful). No Persian. +- **Verdict:** **CAUTION / USE-with-pipeline.** **Cleaner path: pull the SAME MacLeod tracks from FreePD where they are CC0 (no attribution).** Reserve incompetech CC-BY only for tracks not on FreePD, gated behind an attribution-injection pipeline. + +### 1.4 ccMixter (dig.ccMixter "Free for Commercial") — per-track CC, supplement +- **License:** per-track. **CC0 subset = vendor freely.** CC-BY = vendor + mandatory in-output attribution (title + artist + ccMixter URL + CC-BY link). **HARD-AVOID:** CC-BY-NC, ccPlus (paid), Sampling/Sampling-plus. Remix community → tracks may sample other-licensed material. +- **Iran-access:** OK via VPN; documented IP-based download rate-limiting → throttle, no bulk scrape. +- **Vibe:** electronic/ambient/cinematic, community quality varies. No reliable Persian. +- **Verdict:** **CAUTION.** Use CC0 subset for vendoring; CC-BY only with attribution pipeline. Supplement, not primary. + +### 1.5 Free Music Archive (FMA) — aggregator, per-track minefield +- **License:** aggregator, licenses nothing. **Safe set = CC0 + CC-BY ONLY.** **Reject ALL -NC, -SA, -ND** (verified stricter: FMA treats sync-to-video as a derivative → ND prohibited; SA would force your paid MP4 under CC-BY-SA). Terms 6(e) bans scraping → manual per-track download. +- **Iran-access:** OK (Tribe of Noise BV, Netherlands — not US). VPN fallback. +- **Vibe:** all vibes; has a **"World" section with some Persian-adjacent material** (best of the aggregators for Persian discovery, but per-track license verification mandatory). +- **Verdict:** **CAUTION.** Discovery layer → filter to CC0/CC-BY → re-verify each track's license page → vendor. + +### 1.6 Openverse — aggregator, CC0 discovery funnel only +- **License:** aggregates Jamendo/Freesound/Wikimedia; licenses nothing, disclaims verification. **CRITICAL TRAP: Jamendo free tracks are CC-BY-NC (non-commercial) → forbidden.** Only the CC0 slice (Freesound/Wikimedia) is usable, confirmed on the source page. +- **Iran-access:** portal reachable; download happens on source (Wikimedia best, Freesound login-gated, **exclude Jamendo entirely**). +- **Verdict:** **CAUTION** — CC0 discovery funnel into Freesound/Wikimedia. Never trust the Openverse tag. + +### 1.7 Chosic — aggregator, CC0 "no-attribution" funnel +- **License:** not a rights holder; has restrictive in-house terms. The `?attribution=no` filter is a **discovery hint, NOT a CC0 guarantee** (mixes CC-BY where artists sell paid no-attribution licenses). Trace each track to its origin, confirm genuine CC0 there. +- **Iran-access:** GOOD (no login, direct MP3, no hard geoblock). +- **Vibe:** cinematic/ambient/uplifting/playful; thin Persian. +- **Verdict:** **CAUTION** — CC0 discovery funnel; per-track human sign-off; provenance = named upstream artist + verified CC0, never "Chosic". + +### 1.8 CreatorChords (Alexander Nakarada / ex-Serpent Sound) — best CINEMATIC/EPIC +- **License:** dual. Free = CC-BY 4.0 (attribution travels + Content-ID auto-claim risk). Clean path = **paid attribution-free Single License ($20/track)** — but **USD checkout is Iran-blocked.** +- **Iran-access:** free CC-BY downloads work; the paid clean tier is **payment-blocked from Iran.** +- **Vibe:** **best cinematic/epic/fantasy** on the list; folk/medieval/calm. No Persian. +- **Verdict:** **CAUTION.** Bake into render only (the "can't redistribute music alone" clause bars bare-file vendoring). Practically blocked from Iran for the clean tier. + +### 1.9 Pixabay Music — ⚠️ vendoring TRAP (best Persian vibe, wrong architecture) +- **License:** Pixabay Content License (NOT CC0). **Render-into-MP4 = permitted** (adds value). **Vendoring the raw .mp3 = PROHIBITED** ("distribution of Content as music files on a standalone basis"). ToS also bans scraping/bulk. Third-party-sample caveat bites Persian/sampled tracks hardest. +- **Iran-access:** Cloudflare-blocked from Iran (ECONNREFUSED confirmed); acquire once via non-Iran box/VPN — license is perpetual. +- **Vibe:** **best practical Persian/Middle-Eastern coverage of the free sources** (`pixabay.com/music/search/persian` → santoor/oud), plus broad corporate/ambient/cinematic/playful. +- **Verdict:** **CAUTION / AVOID for vendoring.** Usable **ONLY if architecture changes** to mux-into-MP4 with **no standalone raw-file exposed/served**. Under FlatRender's vendor-the-file requirement it effectively disqualifies — but it is the **least-bad Persian source** if you adopt the bake-only, never-serve-raw discipline (screen each Persian track for sampled-recording rights, prefer original compositions). + +### 1.10 Mixkit (Envato) — ❌ AVOID +- **License:** proprietary. Bans raw-file redistribution, stock/inventory basis, AND competing products. A paid template SaaS is exactly the prohibited case. Music also barred from CDs/DVDs/games/TV. +- **Iran-access:** Envato enforces US sanctions, locks Iranian accounts. POOR. +- **Verdict:** **AVOID** — textbook "free but forbids redistribution/competition" trap. + +### 1.11 Uppbeat — ❌ AVOID +- **License:** single-use, no redistribution/resell/"make available as part of a competing platform." SaaS routed to a negotiated Music Vine custom license. +- **Iran-access:** GBP/USD billing, Iranian cards declined. POOR. +- **Verdict:** **AVOID** — license is the opposite of what FlatRender needs + Iran-payment-blocked. + +### 1.12 Bensound — ❌ AVOID +- **License:** all standard tiers forbid standalone distribution + stock-library inclusion. SaaS requires a mandatory **Enterprise license** (explicitly "SaaS/platform integrations"). +- **Iran-access:** Enterprise = signed EUR/USD contract with a Belgian company → **hard blocker from Iran.** +- **Verdict:** **AVOID** — cleanest written SaaS guidance, but mandatory paid tier is unobtainable from Iran. + +### 1.13 Tunetank — ❌ AVOID +- **License:** ToS 8.2 bars download/distribution/sublicense/derivatives except in-conjunction-with-Tunetank. Resale explicitly banned. No SaaS path. +- **Iran-access:** USD/PayPal only → blocked. +- **Verdict:** **AVOID.** + +### 1.14 Patrick de Arteaga — reference-only +- **License:** raw-file redistribution **forbidden at ALL tiers** (incl. paid). Free tier requires attribution. +- **Iran-access:** free CC works via VPN; paid tiers payment-blocked (and still forbid vendoring). +- **Verdict:** **REFERENCE-ONLY** — game-leaning cinematic/fantasy/chiptune; fails the vendor-into-repo requirement. + +### 1.15 Internet Archive (durable host + Persian classical) — per-item, mostly TRAP +- **License:** per-item, uploader-set; platform disclaims all rights. **Safe slice = items explicitly CC0/PD** (e.g. `archive.org/details/freepd` rehost, pre-1929 PD orchestral). **The "Iranian/Persian classical" uploads are user-uploaded COMMERCIAL recordings with NO valid PD/CC0 basis** (e.g. 1974 Nonesuch "A Persian Heritage", Smithsonian Folkways Dastgah LP — both still actively sold) → downloadable but **illegal to vendor.** +- **Iran-access:** FAVORABLE for acquisition (not Cloudflare-gated like Pixabay); but "PD-in-Iran" gives zero legal cover (Iran not in Berne/Rome → collapses the moment a customer downloads the MP4 in a Berne country). +- **Verdict:** **USE as durable host for already-cleared CC0 (FreePD mirror) + pre-1929 PD.** **REFERENCE-ONLY** for Persian classical — **the biggest Persian-license trap in the whole set.** Never equate downloadable with vendorable. + +### 1.16 Envato Elements / AudioJungle — ❌ AVOID (double-blocked) +- **License:** 3-way prohibition (single-use, on-demand/build-it-yourself ban, redistribution/extraction ban). Best commercial Persian/santoor coverage, all unusable. +- **Iran-access:** **hard geo/OFAC block + foreign-card-only.** +- **Verdict:** **AVOID** — listed to rule out. + +### 1.17 Storyblocks / Taketones / StockTune — ❌ AVOID +- **License:** Storyblocks = explicit standalone-audio + competing-library ban (subscription-gated). Taketones = resale ban. StockTune = AI-generated, unverifiable provenance, 403 ToS. None grant vendor-raw-file. +- **Iran-access:** paid tiers foreign-card-blocked; free tiers' licenses already forbid the use case. +- **Verdict:** **AVOID for vendoring.** Reference-only for Persian vibe-sourcing → commission original audio instead. + +--- + +## 2. SFX — per-source verdicts + +### 2.1 Kenney.nl (Audio packs) — ⭐ PRIMARY UI/SFX SOURCE +- **License:** CC0 1.0, confirmed on asset pages. No restrictions, no attribution, vendor raw OK. +- **Iran-access:** **CLEAN via kenney.nl** (Dutch host, not US/OFAC; no login). **NOT the GitHub/itch mirrors** (US, Iran-suspendable). +- **Vibe:** UI/click/pop/chime/toggle/select, playful/digital. Weak on cinematic whoosh; zero Persian. +- **Verdict:** **USE** — the spine of FlatRender's UI SFX kit. Lowest-risk source on the entire list. + +### 2.2 Freesound.org (CC0) — see §1.2 (top SFX well by volume) +- **Verdict:** **USE** (CC0-filtered, manual download). + +### 2.3 OpenGameArt.org (CC0 packs) — bulk CC0 supplement +- **License:** per-submission; **CC0-filtered packs only** ("100 CC0 SFX" #1/#2, "80 CC0 RPG SFX", etc.). **Reject CC-BY-SA/GPL/CC-BY/OGA-BY.** OGA disclaims credit-file accuracy → verify each file + provenance. +- **Iran-access:** no barrier (community static host, no payment). +- **Vibe:** game/UI clicks, impacts, RPG/fantasy, metal/wood foley, loops. No cinematic-premium, no Persian. +- **Verdict:** **USE** (CC0-filtered, per-file verified) — bulk supplement to Kenney. + +### 2.4 Sonniss GameAudioGDC — caution (server-side render input only) +- **License:** permits "embedded into licensee project" (bake into MP4 = OK). **Bars standalone-file redistribution + competing libraries + AI/ML training.** Defensible ONLY if raw .wav never leaves the server as a downloadable asset. +- **Iran-access:** UK-based, free torrent; multi-GB size is the only friction. +- **Vibe:** premium cinematic/foley/impact/whoosh/ambience. Zero Persian. +- **Verdict:** **CAUTION** — **private object storage (MinIO) render-input ONLY**, never committed to a public repo, never served as raw, never fed to AI training. + +### 2.5 99Sounds — caution (render input only) +- **License:** commercial use OK; **bars redistributing files "on their own / as a separate attachment."** Render-into-MP4 = OK; commit-raw-into-repo = violation. +- **Iran-access:** Gumroad $0 checkout, VPN. Achievable. +- **Vibe:** **strongest free source for premium cinematic TRANSITION/whoosh/riser/boom.** No UI-micro, no Persian. +- **Verdict:** **CAUTION** — render-time input only; enforce render-yes / commit-no boundary. + +### 2.6 Pixabay (SFX) — ⚠️ vendoring trap (same as §1.9) +- **Verdict:** **AVOID for vendoring** ("no standalone redistribution"); render-input only if you never persist/serve the raw file. + +### 2.7 Mixkit (SFX) — ❌ AVOID (same clauses as §1.10) +- **Verdict:** **AVOID** + Envato Iran-sanctions exposure. + +### 2.8 Zapsplat — ❌ AVOID (most explicit prohibition) +- **License:** Standard tier names "sound effects app" + "apps" as **forbidden redistribution targets**; bans sharing/transfer/sub-license to any third party on free AND Gold. Free tier requires visible "ZapSplat" credit. +- **Iran-access:** UK, not OFAC-blocked, but the license is the dealbreaker. +- **Verdict:** **AVOID** — direct collision with FlatRender's model. + +### 2.9 BBC Sound Effects (RemArc) — ❌ AVOID (non-commercial) +- **License:** RemArc = **non-commercial/personal/education only.** Commercial = paid Pro Sound Effects (US, Iran-closed). +- **Verdict:** **AVOID** — known "free BBC sounds" trap. + +--- + +## 3. PERSIAN / TRADITIONAL — the honest gap + +There is **no clean CC0 bulk source** for authentic Persian/Middle-Eastern music. The realistic options, worst-to-best for a vendor-the-file SaaS: + +- **Internet Archive Persian classical** (Payvar santur, Dastgah LPs) — perfect vibe, **almost always wrong license** (commercial recordings, no PD/CC0 basis, still sold by Warner/Smithsonian). **REFERENCE-ONLY. The biggest Persian-license trap.** +- **Envato / Storyblocks / Taketones** ("Ambient Persian Santoor" etc.) — best commercial coverage, but license forbids the SaaS pattern AND Iran-payment-blocked. **AVOID.** +- **Pixabay Persian subset** — least-bad real option, but **only under bake-into-MP4, never-serve-raw** discipline + per-track sampled-rights screening. Not a clean vendor-the-file source. +- **Freesound-CC0 Persian instrument samples** (santoor/tar/daf) — thin but **genuinely CC0 and vendorable.** Best clean building block; needs manual curation. +- **✅ The only truly firewall-clean path: COMMISSION original santoor/tar/setar recordings (or self-author/synthesize) and self-dedicate CC0.** This mirrors how the illustration library self-authors Persian/seasonal motifs (`Nowruz3D.tsx`). For a Persian-first paid product this is the recommended long-term answer. + +--- + +## 4. License firewall — `assets.json` ledger rules (mirrors the illustration firewall) + +The CI guard (`services/remotion/scripts/check-assets.mjs`) **already scans `public/audio/`** +against `public/illustrations/assets.json`. **Every vendored audio file gets one ledger row. +No row → build fails (exit 1).** Reference-only sources are **never vendored** (no file → no row). + +Ledger key convention (verified): audio rows carry the `audio/` prefix +(e.g. `"audio/freepd-epic-01.mp3"`). + +```jsonc +{ + "audio/freepd-cinematic-01.mp3": { + "source": "FreePD (Kevin MacLeod) via archive.org/details/freepd", + "license": "CC0-1.0", "license_class": "CC0", + "commercial_ok": true, "attribution_required": false, "ai_training_allowed": true, + "vibe": "cinematic", "url": "https://archive.org/details/freepd", + "provenance": "CC0; FreePD twin (NOT Incompetech/CC-BY)", "vendored": "2026-06-23" + }, + "audio/freesound-whoosh-01.wav": { + "source": "Freesound.org (CC0 filter, manual download)", + "license": "CC0-1.0", "license_class": "CC0", + "commercial_ok": true, "attribution_required": false, "ai_training_allowed": true, + "vibe": "sfx/transition", "url": "https://freesound.org/s//", + "provenance": "license re-verified at download; NOT via commercial API", "vendored": "2026-06-23" + }, + "audio/kenney-ui-click-01.wav": { + "source": "Kenney.nl Interface Sounds", + "license": "CC0-1.0", "license_class": "CC0", + "commercial_ok": true, "attribution_required": false, "ai_training_allowed": true, + "vibe": "sfx/ui", "url": "https://kenney.nl/assets/interface-sounds", "vendored": "2026-06-23" + }, + "audio/incompetech-corporate-01.mp3": { + "source": "incompetech (Kevin MacLeod)", + "license": "CC-BY-4.0", "license_class": "CC-BY", + "commercial_ok": true, "attribution_required": true, "ai_training_allowed": true, + "attribution": "Title — Kevin MacLeod (incompetech.com) — Licensed under Creative Commons: By Attribution 4.0", + "vibe": "uplifting/corporate", "notice_file": "audio/CREDITS.md", "vendored": "2026-06-23" + } +} +``` + +**Hard rules (audio):** +1. **Only CC0/PD vendored as raw `public/audio/` files** (FreePD, Freesound-CC0, Kenney, OpenGameArt-CC0). These get `attribution_required:false`. +2. **CC-BY vendored ONLY with an attribution pipeline** — `attribution_required:true` + an exact `attribution` string + a `notice_file` (`audio/CREDITS.md`) that the render bakes into the output. No pipeline → don't vendor (prefer the FreePD/CC0 twin). +3. **"Render-input-only" sources (Sonniss, 99Sounds, Pixabay-mux-only) are NEVER committed to the public repo** — store in **private MinIO**, mux into MP4 server-side, never serve/persist a standalone raw file. They get **no `public/audio/` row** (the ledger is for vendored files only). +4. **`ai_training_allowed:false`** on anything that touches FlatRender's future AI-video pipeline unless the license explicitly permits ML training (Sonniss explicitly forbids it). +5. **Never-vendored reference-only** (Mixkit, Uppbeat, Bensound, Tunetank, Zapsplat, BBC RemArc, Envato, Storyblocks, Patrick de Arteaga, IA-Persian-classical): no file, no row, design-time reference only. +6. **Persian tracks** carry an extra `provenance` note: `"vetted original-composition"` or `"CC0 instrument sample"` — never vendor sampled-commercial-recording-based tracks. + +--- + +## 5. Vendoring manifest — concrete starter set + +All under `services/remotion/public/audio/`. For Cloudflare/archive.org/Gumroad-gated +sources, acquire via a **non-Iran box / VPN once**, then commit — render-time is CDN-free. + +```bash +# 0. Folder already exists (4 self-authored CC0 stubs vendored). Keep them. +# public/audio/{music-ambient,sfx-whoosh,sfx-pop,sfx-chime}.mp3 ✅ already ledgered + +# 1. MUSIC — FreePD CC0 (⭐ primary). freepd.com is DEAD → pull the archive.org mirror. +# [NON-IRAN FETCH] VPN/Psiphon; mirror the whole collection, it is PD forever. +# archive.org/details/freepd → pick ~8–10 beds across vibes: +# uplifting/corporate ×3, calm/ambient ×3, cinematic ×2, playful ×2 +# → public/audio/freepd--NN.mp3 (license_class:"CC0", attribution:false) + +# 2. SFX — Kenney.nl CC0 (⭐ primary, CLEAN from Iran via kenney.nl, NOT GitHub mirror) +# Interface Sounds + UI Audio packs → pick click/pop/chime/toggle/select/whoosh +# → public/audio/kenney-ui-.wav (CC0, no firewall concern) + +# 3. SFX — Freesound CC0 (manual download, NOT the commercial API) +# [NON-IRAN FETCH] login required → VPN once. Filter license:"Creative Commons 0" +# re-verify per file → cinematic whoosh/riser + ambience beds Kenney lacks +# → public/audio/freesound-.wav (CC0; log source URL + CC0 proof) + +# 4. SFX — OpenGameArt CC0 packs (bulk supplement, per-file verified) +# "100 CC0 SFX" #1/#2 → extra UI/impact loops; reject any CC-BY-SA/GPL/CC-BY +# → public/audio/oga-.ogg + +# 5. (OPTIONAL) MUSIC — incompetech CC-BY ONLY for vibes FreePD lacks, WITH pipeline +# Build audio/CREDITS.md + render-time credit injection FIRST. Otherwise skip. + +# 6. PERSIAN — no clean bulk source. Short term: curate Freesound-CC0 santoor/tar/daf +# samples (vendorable). Long term: COMMISSION original Persian recordings → self-CC0. +# Do NOT vendor Internet Archive Persian classical (commercial, illegal to vendor). + +# 7. Verify firewall: +npm run check:assets # fails if any public/audio/*.mp3|wav|ogg lacks a ledger row +``` + +**Then add one `assets.json` row per vendored file** (§4 templates). The CI guard already +covers `public/audio/`, so an un-ledgered drop fails the build automatically. + +**Iran-mirror flags:** FreePD/archive.org = VPN/Psiphon (intermittent). Freesound = +Cloudflare + login → non-Iran box once. Kenney = clean from Iran (use kenney.nl, not GitHub). +Pixabay = Cloudflare-blocked → non-Iran box, and **mux-only never vendor.** Envato/Mixkit/ +Uppbeat/Bensound/Tunetank/Storyblocks = OFAC payment-blocked, don't pursue. + +--- + +## 6. Best vendorable source per vibe + +| Vibe | Best CLEAN vendorable source | License | Note | +|---|---|---|---| +| **Uplifting / corporate** | FreePD (archive.org mirror) | CC0 | incompetech CC-BY backup (w/ pipeline) | +| **Calm / ambient** | FreePD + Freesound-CC0 ambience | CC0 | self-authored `music-ambient.mp3` already vendored | +| **Cinematic** | FreePD (cinematic/epic categories) | CC0 | CreatorChords better quality but Iran-payment-blocked | +| **Playful** | FreePD playful + OpenGameArt-CC0 | CC0 | Kenney for playful UI blips | +| **UI / transition SFX** | **Kenney.nl** ⭐ | CC0 | clean from Iran; Freesound-CC0 for whoosh/riser | +| **Persian / traditional** | **Freesound-CC0 instrument samples** (thin) → **commission + self-CC0** | CC0 | Pixabay Persian = bake-only, never-vendor; IA classical = trap | + +--- + +## 7. ⚠️ Reality Check — honest status + +- **Truly USE-tier + vendorable TODAY (CC0, clean):** **4 sources** — + **FreePD** (via archive.org), **Freesound-CC0**, **Kenney.nl**, **OpenGameArt-CC0**. + Plus the **4 self-authored CC0 stubs already in `public/audio/`** (these are the only + audio files actually vendored right now). +- **CAUTION (usable with friction/pipeline/architecture-constraint):** **6** — incompetech + (CC-BY pipeline), ccMixter (CC0/BY subset), FMA (CC0/BY, manual), Chosic & Openverse + (CC0 funnels), Internet Archive (CC0/PD-host only). Plus **Sonniss / 99Sounds / Pixabay** + as **render-input-only** (NOT vendorable — private MinIO, mux-only). +- **AVOID / reference-only:** **the rest** — Mixkit, Uppbeat, Bensound, Tunetank, Zapsplat, + BBC RemArc, Envato, Storyblocks, Taketones, StockTune, Patrick de Arteaga, and the + Internet Archive Persian-classical uploads (license trap). +- **Needs a NON-IRAN / VPN fetch:** FreePD (archive.org intermittent), Freesound (Cloudflare + + login), Pixabay (Cloudflare ECONNREFUSED from Iran). **Kenney is the one clean-from-Iran + source.** Acquisition-once-then-vendor makes the CC0/CC-BY grant perpetual and Iran-access + irrelevant at render time. +- **Persian honest verdict:** **NO clean CC0 bulk source exists.** Best clean path = + Freesound-CC0 instrument samples (thin) + **commission original recordings and self-dedicate + CC0** (matches the project's self-authored Persian-illustration discipline). Everything with + rich Persian vibe (Pixabay, Envato, Internet Archive) is either bake-only-never-vendor, + Iran-payment-blocked, or an outright license trap. +- **Bottom line:** Build the vendorable audio library on **FreePD + Freesound-CC0 + Kenney + + OpenGameArt-CC0**; add **incompetech CC-BY only behind an attribution pipeline**; keep + **Sonniss/99Sounds/Pixabay as private render-inputs**; **self-commission Persian audio**; + and treat **everything else as design-time reference only.** Today's true deliverable is not + "a music library downloaded" — it's the §5 starter set (≈20 CC0 files) vendored + ledgered, + growing on the proven firewall pipeline.