sfx/manifest.json
{
"version": 1,
"created": "2026-10-12",
"format": "OGG Vorbis 48 kHz (q4; ambience q3 mono); mono where channels were identical",
"normalisation": "one-shots: leading silence trimmed, max 4s (risers 6s), peak-normalised to -3 dBFS. ambience: 20s, 1s fades, -35 LUFS. Repo copies: trailing silence below -60 dB trimmed, converted from WAV to OGG.",
"category_map": {
"movement": "whoosh",
"scene_cut": "whoosh",
"appear": "pop",
"click": "click",
"typing": "typing",
"build_up": "riser",
"reveal": "impact",
"success": "pop",
"error_or_tech": "glitch",
"hover_or_small_ui": "tick",
"bed": "ambience"
},
"bundled": [
{
"file": "whoosh/fs-264777-swoosh.ogg",
"category": "whoosh",
"duration_s": 4.0,
"length": "long",
"source_url": "https://freesound.org/people/Shinplaster/sounds/264777/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Shinplaster via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "whoosh/fs-169867-swoosh.ogg",
"category": "whoosh",
"duration_s": 2.21,
"length": "long",
"source_url": "https://freesound.org/people/Halgrimm/sounds/169867/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Halgrimm via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "whoosh/fs-127197-fast-simple-chop-5-aif.ogg",
"category": "whoosh",
"duration_s": 0.48,
"length": "short",
"source_url": "https://freesound.org/people/dave.des/sounds/127197/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "dave.des via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "whoosh/fs-683101-quick-woosh.ogg",
"category": "whoosh",
"duration_s": 1.86,
"length": "long",
"source_url": "https://freesound.org/people/florianreichelt/sounds/683101/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "florianreichelt via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "pop/fs-447910-plop.ogg",
"category": "pop",
"duration_s": 0.24,
"source_url": "https://freesound.org/people/Breviceps/sounds/447910/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Breviceps via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "pop/fs-467951-ui-button-click.ogg",
"category": "pop",
"duration_s": 0.12,
"source_url": "https://freesound.org/people/benzix2/sounds/467951/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "benzix2 via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "pop/fs-258269-mouth-pop.ogg",
"category": "pop",
"duration_s": 0.32,
"source_url": "https://freesound.org/people/jcallison/sounds/258269/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "jcallison via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "pop/fs-514833-user-interface-menu-sounds-wav.ogg",
"category": "pop",
"duration_s": 4.0,
"source_url": "https://freesound.org/people/oussamaben/sounds/514833/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "oussamaben via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "pop/fs-824189-pop-in-sfx.ogg",
"category": "pop",
"duration_s": 0.45,
"source_url": "https://freesound.org/people/Sadiquecat/sounds/824189/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Sadiquecat via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "typing/fs-323432-typing.ogg",
"category": "typing",
"duration_s": 4.0,
"source_url": "https://freesound.org/people/Alivvie/sounds/323432/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Alivvie via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "typing/fs-79388-keyboard-typing-wav.ogg",
"category": "typing",
"duration_s": 4.0,
"source_url": "https://freesound.org/people/j1987/sounds/79388/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "j1987 via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "typing/fs-416777-digital-typing-wav.ogg",
"category": "typing",
"duration_s": 1.0,
"source_url": "https://freesound.org/people/Sky_Motion/sounds/416777/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Sky_Motion via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "typing/fs-511418-data-reveal-sound.ogg",
"category": "typing",
"duration_s": 2.03,
"source_url": "https://freesound.org/people/Sky_Motion/sounds/511418/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Sky_Motion via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "typing/fs-447909-keyboard-typing.ogg",
"category": "typing",
"duration_s": 3.8,
"source_url": "https://freesound.org/people/Breviceps/sounds/447909/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Breviceps via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "riser/fs-685256-riser-sound-effect-short-wav.ogg",
"category": "riser",
"duration_s": 2.46,
"source_url": "https://freesound.org/people/syntheffects/sounds/685256/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "syntheffects via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "riser/fs-396161-scary-hits-risers-001.ogg",
"category": "riser",
"duration_s": 6.0,
"source_url": "https://freesound.org/people/Xinematix/sounds/396161/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Xinematix via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "riser/fs-396160-scary-hits-risers-002.ogg",
"category": "riser",
"duration_s": 6.0,
"source_url": "https://freesound.org/people/Xinematix/sounds/396160/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Xinematix via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "riser/fs-174363-rewind.ogg",
"category": "riser",
"duration_s": 6.0,
"source_url": "https://freesound.org/people/kasa90/sounds/174363/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "kasa90 via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "riser/fs-464250-echo-chromatic-riser-wav.ogg",
"category": "riser",
"duration_s": 6.0,
"source_url": "https://freesound.org/people/DylanTheFish/sounds/464250/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "DylanTheFish via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "impact/fs-177242-cinematic-impact.ogg",
"category": "impact",
"duration_s": 4.0,
"source_url": "https://freesound.org/people/deleted_user_3277771/sounds/177242/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "deleted_user_3277771 via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "impact/fs-222517-dramatic-hit.ogg",
"category": "impact",
"duration_s": 4.0,
"source_url": "https://freesound.org/people/qubodup/sounds/222517/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "qubodup via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "impact/fs-347561-micheal-bay-hit.ogg",
"category": "impact",
"duration_s": 4.0,
"source_url": "https://freesound.org/people/Kinoton/sounds/347561/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kinoton via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "ding/fs-349504-triangle-open-04.ogg",
"category": "ding",
"duration_s": 4.0,
"source_url": "https://freesound.org/people/cabled_mess/sounds/349504/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "cabled_mess via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "ding/fs-634690-lil-pip.ogg",
"category": "ding",
"duration_s": 0.07,
"source_url": "https://freesound.org/people/adh.dreaming/sounds/634690/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "adh.dreaming via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "ding/fs-571513-soft-notifications-bell-ding-d.ogg",
"category": "ding",
"duration_s": 0.76,
"source_url": "https://freesound.org/people/LegitCheese/sounds/571513/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "LegitCheese via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "transition/fs-702773-swipe-wav.ogg",
"category": "transition",
"duration_s": 0.84,
"length": "medium",
"source_url": "https://freesound.org/people/LilMati/sounds/702773/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "LilMati via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "transition/fs-786514-swoosh-v2.ogg",
"category": "transition",
"duration_s": 0.3,
"length": "short",
"source_url": "https://freesound.org/people/migoreng1/sounds/786514/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "migoreng1 via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "transition/fs-856168-cyberpunk-glitch-hologram-tran.ogg",
"category": "transition",
"duration_s": 2.99,
"length": "long",
"source_url": "https://freesound.org/people/brktkrgll/sounds/856168/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "brktkrgll via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "transition/fs-816262-broomstick-whoosh-3-quiet-okm1.ogg",
"category": "transition",
"duration_s": 0.41,
"length": "short",
"source_url": "https://freesound.org/people/Sadiquecat/sounds/816262/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Sadiquecat via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "transition/fs-850347-swipe-various.ogg",
"category": "transition",
"duration_s": 4.0,
"length": "long",
"source_url": "https://freesound.org/people/Gravy42/sounds/850347/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Gravy42 via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "transition/fs-683096-woosh.ogg",
"category": "transition",
"duration_s": 1.59,
"length": "long",
"source_url": "https://freesound.org/people/florianreichelt/sounds/683096/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "florianreichelt via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "glitch/fs-402451-fast-forward.ogg",
"category": "glitch",
"duration_s": 4.0,
"source_url": "https://freesound.org/people/plasterbrain/sounds/402451/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "plasterbrain via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "glitch/fs-339521-vhs-rewind-forward-and-eject.ogg",
"category": "glitch",
"duration_s": 4.0,
"source_url": "https://freesound.org/people/lucaslima/sounds/339521/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "lucaslima via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "glitch/fs-144546-touchs-wav.ogg",
"category": "glitch",
"duration_s": 4.0,
"source_url": "https://freesound.org/people/garogourou/sounds/144546/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "garogourou via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "ambience/fs-329533-room-tone-in-an-apartment-livi.ogg",
"category": "ambience",
"duration_s": 17.31,
"source_url": "https://freesound.org/people/leonelmail/sounds/329533/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "leonelmail via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "ambience/fs-426767-apartment-room-tone-wav.ogg",
"category": "ambience",
"duration_s": 20.0,
"source_url": "https://freesound.org/people/cMilan/sounds/426767/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "cMilan via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "ambience/fs-329569-roomtone-bedroom-yew.ogg",
"category": "ambience",
"duration_s": 20.0,
"source_url": "https://freesound.org/people/leonelmail/sounds/329569/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "leonelmail via Freesound (CC0; credit optional)",
"note": "Freesound HQ preview of a CC0 sound",
"bundled": true
},
{
"file": "click/kenney-interface-click-001.ogg",
"category": "click",
"duration_s": 0.1,
"source_url": "https://kenney.nl/assets/interface-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney interface-sounds pack",
"bundled": true,
"original_file": "kenney_interface-sounds.zip \u2192 Audio/click_001.ogg"
},
{
"file": "click/kenney-interface-select-001.ogg",
"category": "click",
"duration_s": 0.04,
"source_url": "https://kenney.nl/assets/interface-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney interface-sounds pack",
"bundled": true,
"original_file": "kenney_interface-sounds.zip \u2192 Audio/select_001.ogg"
},
{
"file": "click/kenney-interface-select-002.ogg",
"category": "click",
"duration_s": 0.04,
"source_url": "https://kenney.nl/assets/interface-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney interface-sounds pack",
"bundled": true,
"original_file": "kenney_interface-sounds.zip \u2192 Audio/select_002.ogg"
},
{
"file": "click/kenney-interface-select-003.ogg",
"category": "click",
"duration_s": 0.37,
"source_url": "https://kenney.nl/assets/interface-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney interface-sounds pack",
"bundled": true,
"original_file": "kenney_interface-sounds.zip \u2192 Audio/select_003.ogg"
},
{
"file": "click/kenney-interface-tick-001.ogg",
"category": "click",
"duration_s": 0.04,
"source_url": "https://kenney.nl/assets/interface-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney interface-sounds pack",
"bundled": true,
"original_file": "kenney_interface-sounds.zip \u2192 Audio/tick_001.ogg"
},
{
"file": "click/kenney-interface-toggle-001.ogg",
"category": "click",
"duration_s": 0.14,
"source_url": "https://kenney.nl/assets/interface-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney interface-sounds pack",
"bundled": true,
"original_file": "kenney_interface-sounds.zip \u2192 Audio/toggle_001.ogg"
},
{
"file": "click/kenney-interface-toggle-002.ogg",
"category": "click",
"duration_s": 0.14,
"source_url": "https://kenney.nl/assets/interface-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney interface-sounds pack",
"bundled": true,
"original_file": "kenney_interface-sounds.zip \u2192 Audio/toggle_002.ogg"
},
{
"file": "ui-blip/kenney-ui-rollover1.ogg",
"category": "ui-blip",
"duration_s": 0.22,
"source_url": "https://kenney.nl/assets/ui-audio",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney ui-audio pack",
"bundled": true,
"original_file": "kenney_ui-audio.zip \u2192 Audio/rollover1.ogg"
},
{
"file": "ui-blip/kenney-ui-rollover2.ogg",
"category": "ui-blip",
"duration_s": 0.05,
"source_url": "https://kenney.nl/assets/ui-audio",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney ui-audio pack",
"bundled": true,
"original_file": "kenney_ui-audio.zip \u2192 Audio/rollover2.ogg"
},
{
"file": "ui-blip/kenney-ui-rollover3.ogg",
"category": "ui-blip",
"duration_s": 0.07,
"source_url": "https://kenney.nl/assets/ui-audio",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney ui-audio pack",
"bundled": true,
"original_file": "kenney_ui-audio.zip \u2192 Audio/rollover3.ogg"
},
{
"file": "ui-blip/kenney-ui-rollover4.ogg",
"category": "ui-blip",
"duration_s": 0.07,
"source_url": "https://kenney.nl/assets/ui-audio",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney ui-audio pack",
"bundled": true,
"original_file": "kenney_ui-audio.zip \u2192 Audio/rollover4.ogg"
},
{
"file": "ui-blip/kenney-digital-twotone1.ogg",
"category": "ui-blip",
"duration_s": 0.61,
"source_url": "https://kenney.nl/assets/digital-audio",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney digital-audio pack",
"bundled": true,
"original_file": "kenney_digital-audio.zip \u2192 Audio/twoTone1.ogg"
},
{
"file": "ui-blip/kenney-digital-twotone2.ogg",
"category": "ui-blip",
"duration_s": 0.63,
"source_url": "https://kenney.nl/assets/digital-audio",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney digital-audio pack",
"bundled": true,
"original_file": "kenney_digital-audio.zip \u2192 Audio/twoTone2.ogg"
},
{
"file": "ui-blip/kenney-digital-threetone1.ogg",
"category": "ui-blip",
"duration_s": 0.76,
"source_url": "https://kenney.nl/assets/digital-audio",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney digital-audio pack",
"bundled": true,
"original_file": "kenney_digital-audio.zip \u2192 Audio/threeTone1.ogg"
},
{
"file": "ui-blip/kenney-digital-threetone2.ogg",
"category": "ui-blip",
"duration_s": 0.76,
"source_url": "https://kenney.nl/assets/digital-audio",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney digital-audio pack",
"bundled": true,
"original_file": "kenney_digital-audio.zip \u2192 Audio/threeTone2.ogg"
},
{
"file": "ui-blip/kenney-digital-pepsound1.ogg",
"category": "ui-blip",
"duration_s": 0.4,
"source_url": "https://kenney.nl/assets/digital-audio",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney digital-audio pack",
"bundled": true,
"original_file": "kenney_digital-audio.zip \u2192 Audio/pepSound1.ogg"
},
{
"file": "ui-blip/kenney-digital-pepsound2.ogg",
"category": "ui-blip",
"duration_s": 0.45,
"source_url": "https://kenney.nl/assets/digital-audio",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney digital-audio pack",
"bundled": true,
"original_file": "kenney_digital-audio.zip \u2192 Audio/pepSound2.ogg"
},
{
"file": "ui-blip/kenney-digital-pepsound3.ogg",
"category": "ui-blip",
"duration_s": 0.36,
"source_url": "https://kenney.nl/assets/digital-audio",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney digital-audio pack",
"bundled": true,
"original_file": "kenney_digital-audio.zip \u2192 Audio/pepSound3.ogg"
},
{
"file": "glitch/kenney-interface-glitch-002.ogg",
"category": "glitch",
"duration_s": 0.03,
"source_url": "https://kenney.nl/assets/interface-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney interface-sounds pack",
"bundled": true,
"original_file": "kenney_interface-sounds.zip \u2192 Audio/glitch_002.ogg"
},
{
"file": "glitch/kenney-sci-computernoise-000.ogg",
"category": "glitch",
"duration_s": 4.0,
"source_url": "https://kenney.nl/assets/sci-fi-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney sci-fi-sounds pack",
"bundled": true,
"original_file": "kenney_sci-fi-sounds.zip \u2192 Audio/computerNoise_000.ogg"
},
{
"file": "glitch/kenney-sci-computernoise-001.ogg",
"category": "glitch",
"duration_s": 4.0,
"source_url": "https://kenney.nl/assets/sci-fi-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney sci-fi-sounds pack",
"bundled": true,
"original_file": "kenney_sci-fi-sounds.zip \u2192 Audio/computerNoise_001.ogg"
},
{
"file": "glitch/kenney-sci-computernoise-002.ogg",
"category": "glitch",
"duration_s": 4.0,
"source_url": "https://kenney.nl/assets/sci-fi-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney sci-fi-sounds pack",
"bundled": true,
"original_file": "kenney_sci-fi-sounds.zip \u2192 Audio/computerNoise_002.ogg"
},
{
"file": "impact/kenney-impact-impactpunch-heavy-000.ogg",
"category": "impact",
"duration_s": 0.65,
"source_url": "https://kenney.nl/assets/impact-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney impact-sounds pack",
"bundled": true,
"original_file": "kenney_impact-sounds.zip \u2192 Audio/impactPunch_heavy_000.ogg"
},
{
"file": "impact/kenney-impact-impactpunch-heavy-001.ogg",
"category": "impact",
"duration_s": 0.54,
"source_url": "https://kenney.nl/assets/impact-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney impact-sounds pack",
"bundled": true,
"original_file": "kenney_impact-sounds.zip \u2192 Audio/impactPunch_heavy_001.ogg"
},
{
"file": "impact/kenney-impact-impactsoft-heavy-000.ogg",
"category": "impact",
"duration_s": 0.53,
"source_url": "https://kenney.nl/assets/impact-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney impact-sounds pack",
"bundled": true,
"original_file": "kenney_impact-sounds.zip \u2192 Audio/impactSoft_heavy_000.ogg"
},
{
"file": "impact/kenney-impact-impactsoft-heavy-001.ogg",
"category": "impact",
"duration_s": 0.57,
"source_url": "https://kenney.nl/assets/impact-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney impact-sounds pack",
"bundled": true,
"original_file": "kenney_impact-sounds.zip \u2192 Audio/impactSoft_heavy_001.ogg"
},
{
"file": "impact/kenney-sci-lowfrequency-explosion-000.ogg",
"category": "impact",
"duration_s": 1.99,
"source_url": "https://kenney.nl/assets/sci-fi-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney sci-fi-sounds pack",
"bundled": true,
"original_file": "kenney_sci-fi-sounds.zip \u2192 Audio/lowFrequency_explosion_000.ogg"
},
{
"file": "impact/kenney-sci-lowfrequency-explosion-001.ogg",
"category": "impact",
"duration_s": 0.99,
"source_url": "https://kenney.nl/assets/sci-fi-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney sci-fi-sounds pack",
"bundled": true,
"original_file": "kenney_sci-fi-sounds.zip \u2192 Audio/lowFrequency_explosion_001.ogg"
},
{
"file": "ding/kenney-interface-confirmation-001.ogg",
"category": "ding",
"duration_s": 0.29,
"source_url": "https://kenney.nl/assets/interface-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney interface-sounds pack",
"bundled": true,
"original_file": "kenney_interface-sounds.zip \u2192 Audio/confirmation_001.ogg"
},
{
"file": "ding/kenney-interface-confirmation-002.ogg",
"category": "ding",
"duration_s": 0.54,
"source_url": "https://kenney.nl/assets/interface-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney interface-sounds pack",
"bundled": true,
"original_file": "kenney_interface-sounds.zip \u2192 Audio/confirmation_002.ogg"
},
{
"file": "ding/kenney-interface-confirmation-003.ogg",
"category": "ding",
"duration_s": 0.32,
"source_url": "https://kenney.nl/assets/interface-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney interface-sounds pack",
"bundled": true,
"original_file": "kenney_interface-sounds.zip \u2192 Audio/confirmation_003.ogg"
},
{
"file": "ding/kenney-interface-bong-001.ogg",
"category": "ding",
"duration_s": 0.12,
"source_url": "https://kenney.nl/assets/interface-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney interface-sounds pack",
"bundled": true,
"original_file": "kenney_interface-sounds.zip \u2192 Audio/bong_001.ogg"
},
{
"file": "ding/kenney-interface-glass-001.ogg",
"category": "ding",
"duration_s": 0.28,
"source_url": "https://kenney.nl/assets/interface-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney interface-sounds pack",
"bundled": true,
"original_file": "kenney_interface-sounds.zip \u2192 Audio/glass_001.ogg"
},
{
"file": "ding/kenney-interface-glass-002.ogg",
"category": "ding",
"duration_s": 0.12,
"source_url": "https://kenney.nl/assets/interface-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney interface-sounds pack",
"bundled": true,
"original_file": "kenney_interface-sounds.zip \u2192 Audio/glass_002.ogg"
},
{
"file": "pop/kenney-interface-drop-001.ogg",
"category": "pop",
"duration_s": 0.13,
"source_url": "https://kenney.nl/assets/interface-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney interface-sounds pack",
"bundled": true,
"original_file": "kenney_interface-sounds.zip \u2192 Audio/drop_001.ogg"
},
{
"file": "pop/kenney-interface-drop-002.ogg",
"category": "pop",
"duration_s": 0.19,
"source_url": "https://kenney.nl/assets/interface-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney interface-sounds pack",
"bundled": true,
"original_file": "kenney_interface-sounds.zip \u2192 Audio/drop_002.ogg"
},
{
"file": "pop/kenney-interface-drop-003.ogg",
"category": "pop",
"duration_s": 0.19,
"source_url": "https://kenney.nl/assets/interface-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney interface-sounds pack",
"bundled": true,
"original_file": "kenney_interface-sounds.zip \u2192 Audio/drop_003.ogg"
},
{
"file": "pop/kenney-interface-pluck-001.ogg",
"category": "pop",
"duration_s": 0.1,
"source_url": "https://kenney.nl/assets/interface-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney interface-sounds pack",
"bundled": true,
"original_file": "kenney_interface-sounds.zip \u2192 Audio/pluck_001.ogg"
},
{
"file": "pop/kenney-interface-pluck-002.ogg",
"category": "pop",
"duration_s": 0.16,
"source_url": "https://kenney.nl/assets/interface-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney interface-sounds pack",
"bundled": true,
"original_file": "kenney_interface-sounds.zip \u2192 Audio/pluck_002.ogg"
},
{
"file": "pop/kenney-interface-maximize-001.ogg",
"category": "pop",
"duration_s": 0.25,
"source_url": "https://kenney.nl/assets/interface-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney interface-sounds pack",
"bundled": true,
"original_file": "kenney_interface-sounds.zip \u2192 Audio/maximize_001.ogg"
},
{
"file": "pop/kenney-interface-maximize-002.ogg",
"category": "pop",
"duration_s": 0.25,
"source_url": "https://kenney.nl/assets/interface-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney interface-sounds pack",
"bundled": true,
"original_file": "kenney_interface-sounds.zip \u2192 Audio/maximize_002.ogg"
},
{
"file": "transition/kenney-interface-maximize-005.ogg",
"category": "transition",
"duration_s": 0.5,
"length": "short",
"source_url": "https://kenney.nl/assets/interface-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney interface-sounds pack",
"bundled": true,
"original_file": "kenney_interface-sounds.zip \u2192 Audio/maximize_005.ogg"
},
{
"file": "transition/kenney-interface-maximize-006.ogg",
"category": "transition",
"duration_s": 0.38,
"length": "short",
"source_url": "https://kenney.nl/assets/interface-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney interface-sounds pack",
"bundled": true,
"original_file": "kenney_interface-sounds.zip \u2192 Audio/maximize_006.ogg"
},
{
"file": "transition/kenney-interface-minimize-001.ogg",
"category": "transition",
"duration_s": 0.26,
"length": "short",
"source_url": "https://kenney.nl/assets/interface-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney interface-sounds pack",
"bundled": true,
"original_file": "kenney_interface-sounds.zip \u2192 Audio/minimize_001.ogg"
},
{
"file": "transition/kenney-interface-minimize-002.ogg",
"category": "transition",
"duration_s": 0.26,
"length": "short",
"source_url": "https://kenney.nl/assets/interface-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney interface-sounds pack",
"bundled": true,
"original_file": "kenney_interface-sounds.zip \u2192 Audio/minimize_002.ogg"
},
{
"file": "transition/kenney-interface-scroll-001.ogg",
"category": "transition",
"duration_s": 1.0,
"length": "medium",
"source_url": "https://kenney.nl/assets/interface-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney interface-sounds pack",
"bundled": true,
"original_file": "kenney_interface-sounds.zip \u2192 Audio/scroll_001.ogg"
},
{
"file": "transition/kenney-interface-scroll-002.ogg",
"category": "transition",
"duration_s": 1.0,
"length": "medium",
"source_url": "https://kenney.nl/assets/interface-sounds",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney interface-sounds pack",
"bundled": true,
"original_file": "kenney_interface-sounds.zip \u2192 Audio/scroll_002.ogg"
},
{
"file": "riser/kenney-digital-phaserup1.ogg",
"category": "riser",
"duration_s": 0.42,
"source_url": "https://kenney.nl/assets/digital-audio",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney digital-audio pack",
"bundled": true,
"original_file": "kenney_digital-audio.zip \u2192 Audio/phaserUp1.ogg"
},
{
"file": "riser/kenney-digital-phaserup2.ogg",
"category": "riser",
"duration_s": 0.33,
"source_url": "https://kenney.nl/assets/digital-audio",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney digital-audio pack",
"bundled": true,
"original_file": "kenney_digital-audio.zip \u2192 Audio/phaserUp2.ogg"
},
{
"file": "riser/kenney-digital-phaserup3.ogg",
"category": "riser",
"duration_s": 0.46,
"source_url": "https://kenney.nl/assets/digital-audio",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney digital-audio pack",
"bundled": true,
"original_file": "kenney_digital-audio.zip \u2192 Audio/phaserUp3.ogg"
},
{
"file": "riser/kenney-digital-powerup1.ogg",
"category": "riser",
"duration_s": 1.11,
"source_url": "https://kenney.nl/assets/digital-audio",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney digital-audio pack",
"bundled": true,
"original_file": "kenney_digital-audio.zip \u2192 Audio/powerUp1.ogg"
},
{
"file": "riser/kenney-digital-powerup2.ogg",
"category": "riser",
"duration_s": 0.35,
"source_url": "https://kenney.nl/assets/digital-audio",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney digital-audio pack",
"bundled": true,
"original_file": "kenney_digital-audio.zip \u2192 Audio/powerUp2.ogg"
},
{
"file": "riser/kenney-digital-powerup3.ogg",
"category": "riser",
"duration_s": 1.01,
"source_url": "https://kenney.nl/assets/digital-audio",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Kenney (kenney.nl), CC0; credit optional",
"note": "Kenney digital-audio pack",
"bundled": true,
"original_file": "kenney_digital-audio.zip \u2192 Audio/powerUp3.ogg"
},
{
"file": "whoosh/fs830856.ogg",
"category": "whoosh",
"duration_s": 0.35,
"source_url": "https://freesound.org/people/MeanRaccoon/sounds/830856/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "MeanRaccoon via Freesound (CC0; credit given voluntarily)",
"note": "whoosh low by MeanRaccoon",
"bundled": true
},
{
"file": "whoosh/fs810485.ogg",
"category": "whoosh",
"duration_s": 0.58,
"source_url": "https://freesound.org/people/CVLTIV8R/sounds/810485/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "CVLTIV8R via Freesound (CC0; credit given voluntarily)",
"note": "Analog Bass, Sweeps, and FX-001 by CVLTIV8R",
"bundled": true
},
{
"file": "whoosh/fs393811.ogg",
"category": "whoosh",
"duration_s": 0.2,
"source_url": "https://freesound.org/people/deleted_user_6479820/sounds/393811/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "deleted_user_6479820 via Freesound (CC0; credit given voluntarily)",
"note": "Swish Single 4 by deleted_user_6479820",
"bundled": true
},
{
"file": "click/fs788933.ogg",
"category": "click",
"duration_s": 0.13,
"source_url": "https://freesound.org/people/Mediasaur/sounds/788933/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Mediasaur via Freesound (CC0; credit given voluntarily)",
"note": "Mouse_Click_1 by Mediasaur",
"bundled": true
},
{
"file": "pop/fs527522.ogg",
"category": "pop",
"duration_s": 0.08,
"source_url": "https://freesound.org/people/Narjara/sounds/527522/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Narjara via Freesound (CC0; credit given voluntarily)",
"note": "ppop.wav by Narjara",
"bundled": true
},
{
"file": "pop/fs323738.ogg",
"category": "pop",
"duration_s": 0.08,
"source_url": "https://freesound.org/people/Reitanna/sounds/323738/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Reitanna via Freesound (CC0; credit given voluntarily)",
"note": "mouth pop4.wav by Reitanna",
"bundled": true
},
{
"file": "pop/fs202230.ogg",
"category": "pop",
"duration_s": 0.22,
"source_url": "https://freesound.org/people/deraj/sounds/202230/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "deraj via Freesound (CC0; credit given voluntarily)",
"note": "Pop sound by deraj",
"bundled": true
},
{
"file": "riser/fs867126.ogg",
"category": "riser",
"duration_s": 2.01,
"source_url": "https://freesound.org/people/Diim_1/sounds/867126/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Diim_1 via Freesound (CC0; credit given voluntarily)",
"note": "Short Glitch Riser SFX by Diim_1",
"bundled": true
},
{
"file": "impact/fs524817.ogg",
"category": "impact",
"duration_s": 0.66,
"source_url": "https://freesound.org/people/DeVern/sounds/524817/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "DeVern via Freesound (CC0; credit given voluntarily)",
"note": "Oil Drum Soft Impact.wav by DeVern",
"bundled": true
},
{
"file": "impact/fs745291.ogg",
"category": "impact",
"duration_s": 0.29,
"source_url": "https://freesound.org/people/SamsterBirdies/sounds/745291/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "SamsterBirdies via Freesound (CC0; credit given voluntarily)",
"note": "Ceramic clack / glass hit by SamsterBirdies",
"bundled": true
},
{
"file": "tick/fs528561.ogg",
"category": "tick",
"duration_s": 0.11,
"source_url": "https://freesound.org/people/Jummit/sounds/528561/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "Jummit via Freesound (CC0; credit given voluntarily)",
"note": "Soft UI Button Click by Jummit",
"bundled": true
},
{
"file": "tick/fs384187.ogg",
"category": "tick",
"duration_s": 0.13,
"source_url": "https://freesound.org/people/malle99/sounds/384187/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "malle99 via Freesound (CC0; credit given voluntarily)",
"note": "Click Tick.wav by malle99",
"bundled": true
},
{
"file": "tick/fs721514.ogg",
"category": "tick",
"duration_s": 0.04,
"source_url": "https://freesound.org/people/BaggoNotes/sounds/721514/",
"license": "CC0 1.0",
"license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
"attribution": "BaggoNotes via Freesound (CC0; credit given voluntarily)",
"note": "Points_Tick2 by BaggoNotes",
"bundled": true
}
],
"runtime": [
{
"category": "whoosh",
"mixkit_id": "1489",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/1489/1489-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/whoosh/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Download at runtime into the user project; never commit (no standalone redistribution). Listen before use; titles not recorded."
},
{
"category": "whoosh",
"mixkit_id": "1492",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/1492/1492-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/whoosh/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Download at runtime into the user project; never commit (no standalone redistribution). Listen before use; titles not recorded."
},
{
"category": "whoosh",
"mixkit_id": "1491",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/1491/1491-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/whoosh/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Download at runtime into the user project; never commit (no standalone redistribution). Listen before use; titles not recorded."
},
{
"category": "whoosh",
"mixkit_id": "1714",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/1714/1714-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/whoosh/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Download at runtime into the user project; never commit (no standalone redistribution). Listen before use; titles not recorded."
},
{
"category": "transition",
"mixkit_id": "166",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/166/166-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/transition/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Download at runtime into the user project; never commit (no standalone redistribution). Listen before use; titles not recorded."
},
{
"category": "transition",
"mixkit_id": "1490",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/1490/1490-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/transition/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Download at runtime into the user project; never commit (no standalone redistribution). Listen before use; titles not recorded."
},
{
"category": "typing",
"mixkit_id": "1386",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/1386/1386-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/typing/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Download at runtime into the user project; never commit (no standalone redistribution). Listen before use; titles not recorded."
},
{
"category": "typing",
"mixkit_id": "2531",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/2531/2531-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/typing/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Download at runtime into the user project; never commit (no standalone redistribution). Listen before use; titles not recorded."
},
{
"category": "typing",
"mixkit_id": "2532",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/2532/2532-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/typing/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Download at runtime into the user project; never commit (no standalone redistribution). Listen before use; titles not recorded."
},
{
"category": "typing",
"mixkit_id": "1393",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/1393/1393-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/typing/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Download at runtime into the user project; never commit (no standalone redistribution). Listen before use; titles not recorded."
},
{
"category": "click",
"mixkit_id": "1133",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/1133/1133-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/click/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Download at runtime into the user project; never commit (no standalone redistribution). Listen before use; titles not recorded."
},
{
"category": "click",
"mixkit_id": "275",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/275/275-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/click/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Download at runtime into the user project; never commit (no standalone redistribution). Listen before use; titles not recorded."
},
{
"category": "click",
"mixkit_id": "900",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/900/900-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/click/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Download at runtime into the user project; never commit (no standalone redistribution). Listen before use; titles not recorded."
},
{
"category": "click",
"mixkit_id": "1109",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/1109/1109-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/click/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Download at runtime into the user project; never commit (no standalone redistribution). Listen before use; titles not recorded."
},
{
"category": "pop",
"mixkit_id": "2358",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/2358/2358-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/pop/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Download at runtime into the user project; never commit (no standalone redistribution). Listen before use; titles not recorded."
},
{
"category": "pop",
"mixkit_id": "2364",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/2364/2364-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/pop/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Download at runtime into the user project; never commit (no standalone redistribution). Listen before use; titles not recorded."
},
{
"category": "pop",
"mixkit_id": "2354",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/2354/2354-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/pop/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Download at runtime into the user project; never commit (no standalone redistribution). Listen before use; titles not recorded."
},
{
"category": "pop",
"mixkit_id": "3005",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/3005/3005-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/pop/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Download at runtime into the user project; never commit (no standalone redistribution). Listen before use; titles not recorded."
},
{
"category": "glitch",
"mixkit_id": "2595",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/2595/2595-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/glitch/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Download at runtime into the user project; never commit (no standalone redistribution). Listen before use; titles not recorded."
},
{
"category": "glitch",
"mixkit_id": "2566",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/2566/2566-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/glitch/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Download at runtime into the user project; never commit (no standalone redistribution). Listen before use; titles not recorded."
},
{
"category": "glitch",
"mixkit_id": "1457",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/1457/1457-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/glitch/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Download at runtime into the user project; never commit (no standalone redistribution). Listen before use; titles not recorded."
},
{
"category": "glitch",
"mixkit_id": "1033",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/1033/1033-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/glitch/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Download at runtime into the user project; never commit (no standalone redistribution). Listen before use; titles not recorded."
},
{
"category": "ding",
"mixkit_id": "2870",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/2870/2870-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/notification/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Download at runtime into the user project; never commit (no standalone redistribution). Listen before use; titles not recorded."
},
{
"category": "ding",
"mixkit_id": "933",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/933/933-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/notification/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Download at runtime into the user project; never commit (no standalone redistribution). Listen before use; titles not recorded."
},
{
"category": "impact",
"mixkit_id": "1143",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/1143/1143-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/impact/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Download at runtime into the user project; never commit (no standalone redistribution). Listen before use; titles not recorded."
},
{
"category": "impact",
"mixkit_id": "2908",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/2908/2908-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/impact/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Download at runtime into the user project; never commit (no standalone redistribution). Listen before use; titles not recorded."
},
{
"category": "impact",
"mixkit_id": "788",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/788/788-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/impact/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Download at runtime into the user project; never commit (no standalone redistribution). Listen before use; titles not recorded."
},
{
"category": "impact",
"mixkit_id": "2198",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/2198/2198-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/impact/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Download at runtime into the user project; never commit (no standalone redistribution). Listen before use; titles not recorded."
},
{
"category": "click",
"mixkit_id": "3124",
"title": "Modern technology select",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/3124/3124-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/click/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Runtime download only."
},
{
"category": "click",
"mixkit_id": "1113",
"title": "Mouse click close",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/1113/1113-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/click/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Runtime download only."
},
{
"category": "typing",
"mixkit_id": "1372",
"title": "Old typewriter typing",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/1372/1372-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/typing/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Runtime download only."
},
{
"category": "typing",
"mixkit_id": "2538",
"title": "Hard laptop keyboard typing",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/2538/2538-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/typing/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Runtime download only."
},
{
"category": "typing",
"mixkit_id": "1387",
"title": "Fast keyboard typing",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/1387/1387-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/typing/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Runtime download only."
},
{
"category": "pop",
"mixkit_id": "2925",
"title": "Soap bubble sound",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/2925/2925-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/pop/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Runtime download only."
},
{
"category": "riser",
"mixkit_id": "790",
"title": "Cinematic trailer riser",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/790/790-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/riser/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Runtime download only."
},
{
"category": "riser",
"mixkit_id": "2719",
"title": "Cinematic riser helicopter engine",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/2719/2719-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/riser/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Runtime download only."
},
{
"category": "riser",
"mixkit_id": "794",
"title": "Tech choir cinematic riser",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/794/794-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/riser/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Runtime download only."
},
{
"category": "riser",
"mixkit_id": "1144",
"title": "Short space stutter intro riser",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/1144/1144-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/riser/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Runtime download only."
},
{
"category": "riser",
"mixkit_id": "632",
"title": "Cinematic drama riser",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/632/632-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/riser/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Runtime download only."
},
{
"category": "impact",
"mixkit_id": "1687",
"title": "Dramatic metal explosion impact",
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/1687/1687-preview.mp3",
"source_page": "https://mixkit.co/free-sound-effects/impact/",
"license": "Mixkit Sound Effects Free License",
"license_url": "https://mixkit.co/license/#sfxFree",
"bundled": false,
"note": "Runtime download only."
}
],
"paths": "file paths are relative to this manifest",
"default_kit": [
{
"category": "whoosh",
"title": "Whoosh",
"creator": "qubodup",
"source": "Freesound (CC0)",
"source_url": "https://freesound.org/people/qubodup/sounds/60013/",
"license": "CC0 1.0",
"credit": "\"Whoosh\" by qubodup (https://freesound.org/people/qubodup/sounds/60013/), CC0",
"file": "kit/whoosh.ogg",
"bundled": true
},
{
"category": "click",
"title": "Classic Click",
"creator": "adh.dreaming",
"source": "Freesound (CC0)",
"source_url": "https://freesound.org/people/adh.dreaming/sounds/671105/",
"license": "CC0 1.0",
"credit": "\"Classic Click\" by adh.dreaming (https://freesound.org/people/adh.dreaming/sounds/671105/), CC0",
"file": "kit/click.ogg",
"bundled": true
},
{
"category": "typing",
"title": "Fast laptop keyboard typing",
"creator": "Mixkit",
"source": "Mixkit",
"source_url": "https://mixkit.co/free-sound-effects/typing/",
"license": "Mixkit SFX Free License (use in videos OK; no redistribution)",
"credit": "\"Fast laptop keyboard typing\" by Mixkit (https://mixkit.co/free-sound-effects/typing/), Mixkit Free License",
"file": null,
"bundled": false,
"runtime_url": "https://assets.mixkit.co/active_storage/sfx/1392/1392-preview.mp3",
"download_to": "sound-effects-cache/typing.mp3",
"note": "Mixkit: download at runtime into the user project; never commit."
},
{
"category": "pop",
"title": "POP SFX Neutral",
"creator": "ethernel0",
"source": "Freesound (CC0)",
"source_url": "https://freesound.org/people/ethernel0/sounds/776016/",
"license": "CC0 1.0",
"credit": "\"POP SFX Neutral\" by ethernel0 (https://freesound.org/people/ethernel0/sounds/776016/), CC0",
"file": "kit/pop.ogg",
"bundled": true
},
{
"category": "riser",
"title": "Cinematic Riser #3 subtle",
"creator": "BeaconStudio",
"source": "Freesound (CC0)",
"source_url": "https://freesound.org/people/BeaconStudio/sounds/859482/",
"license": "CC0 1.0",
"credit": "\"Cinematic Riser #3 subtle\" by BeaconStudio (https://freesound.org/people/BeaconStudio/sounds/859482/), CC0",
"file": "kit/riser.ogg",
"bundled": true
},
{
"category": "impact",
"title": "soft_impact3",
"creator": "peoplearehappy",
"source": "Freesound (CC0)",
"source_url": "https://freesound.org/people/peoplearehappy/sounds/841274/",
"license": "CC0 1.0",
"credit": "\"soft_impact3\" by peoplearehappy (https://freesound.org/people/peoplearehappy/sounds/841274/), CC0",
"file": "kit/impact.ogg",
"bundled": true
},
{
"category": "tick",
"title": "Click / Tick",
"creator": "Squirrel_404",
"source": "Freesound (CC0)",
"source_url": "https://freesound.org/people/Squirrel_404/sounds/683048/",
"license": "CC0 1.0",
"credit": "\"Click / Tick\" by Squirrel_404 (https://freesound.org/people/Squirrel_404/sounds/683048/), CC0",
"file": "kit/tick.ogg",
"bundled": true
}
],
"kit_note": "default_kit is used first (one sound per category, chosen by Bart 12 Oct 2026). Other bundled files are alternatives.",
"alt_categories": {
"tick": [
"tick",
"ui-blip",
"click"
],
"click": [
"click",
"tick"
],
"pop": [
"pop",
"ding"
],
"whoosh": [
"whoosh",
"transition"
],
"riser": [
"riser"
],
"impact": [
"impact"
],
"typing": [
"typing"
]
},
"originals_note": "Bundled files are compressed OGG previews. Every bundled and default_kit entry has source_url: the Freesound sound page (download the original from there, free account needed) or the Kenney pack page (the pack zip has the original files)."
}scripts/sound_pass.py
#!/usr/bin/env python3
"""Measured sound pass for a motion-graphics video.
Approach credit: Vox (@Voxyz_ai), x.com/Voxyz_ai/status/2109358372873183564
Usage: sound_pass.py --video silent.mp4 --cues cues.json --music track.mp3 --manifest ../sfx/manifest.json --out outdir
Needs ffmpeg, python libs: librosa soundfile numpy scipy matplotlib.
"""
import argparse,json,os,re,subprocess,random
import numpy as np,librosa,soundfile as sf
from scipy.signal import butter,sosfiltfilt,find_peaks
import matplotlib; matplotlib.use('Agg'); import matplotlib.pyplot as plt
SR=48000
ap=argparse.ArgumentParser()
for a in ['video','cues','music','manifest','out']: ap.add_argument('--'+a,required=True)
ap.add_argument('--music-db',type=float,default=-12.0)
ap.add_argument('--music-source',default=None,help='where the music came from (track, artist, link), for CREDITS.txt')
ap.add_argument('--music-license',default=None,help='the music licence the user confirmed, e.g. "Mixkit Stock Music Free License"')
ap.add_argument('--use-case',default=None,help='where the video will be published, e.g. "YouTube and Instagram"; checked against known licence limits')
ap.add_argument('--seed',type=int,default=7)
ap.add_argument('--swaps',default=None,help='swaps.json from report.html: {cue_index: file|runtime_url|"auto"}')
A=ap.parse_args(); os.makedirs(A.out,exist_ok=True); os.makedirs(f'{A.out}/checks',exist_ok=True)
random.seed(A.seed)
run=lambda c:subprocess.run(c,capture_output=True,text=True)
dur=float(run(['ffprobe','-v','error','-show_entries','format=duration','-of','csv=p=0',A.video]).stdout)
fps=eval(run(['ffprobe','-v','error','-select_streams','v:0','-show_entries','stream=r_frame_rate','-of','csv=p=0',A.video]).stdout.strip())
cues=json.load(open(A.cues)); man=json.load(open(A.manifest)); base=os.path.dirname(os.path.abspath(A.manifest))
log=[]
# 1. beat grid + sub-120Hz check
y,_=librosa.load(A.music,sr=SR,mono=True)
tempo,bf=librosa.beat.beat_track(y=y,sr=SR); beats=librosa.frames_to_time(bf,sr=SR); period=float(np.median(np.diff(beats)))
low=sosfiltfilt(butter(4,120,'low',fs=SR,output='sos'),y)
env=np.abs(low); hop=240; envd=env[:len(env)//hop*hop].reshape(-1,hop).max(1); te=np.arange(len(envd))*hop/SR
pk,_=find_peaks(envd,height=envd.max()*0.5,distance=int(period*0.6*SR/hop)); kicks=te[pk]
def offs(g): return np.array([kicks[np.argmin(np.abs(kicks-b))]-b for b in g if kicks.size])
o=offs(beats); med=float(np.median(o)) if o.size else 0.0
grid=beats.copy(); shifted=False
if abs(med)>0.03:
grid=beats+med; shifted=True
log.append(f"librosa tempo {float(np.atleast_1d(tempo)[0]):.1f} BPM, beat period {period:.3f}s. Kicks (<120 Hz) vs librosa grid: median offset {med*1000:+.0f} ms -> {'SHIFTED whole grid' if shifted else 'grid OK'}.")
fig,ax=plt.subplots(2,1,figsize=(12,5),sharex=True); w=4*4*period; m=te<w
for a_,g,lab in [(ax[0],beats,'librosa grid'),(ax[1],grid,'checked grid')]:
a_.plot(te[m],envd[m],lw=.8); [a_.axvline(b,color='r',lw=1) for b in g if b<w]; a_.set_title(f'{lab}: waveform <120 Hz vs beat lines (first 4 bars)')
plt.tight_layout(); plt.savefig(f'{A.out}/beatgrid.png',dpi=90); plt.close()
# 2. align music so hard cuts land on beats (can't change the animation -> move where the music starts)
hard=[c['t'] for c in cues if c['type'] in('scene_cut','reveal')]
best=None
for s in np.arange(0,min(period*8,len(y)/SR-dur),0.005):
e=sum(min(abs((grid-s)-t)) for t in hard)
if best is None or e<best[0]: best=(e,s)
mstart=float(best[1]); vgrid=grid-mstart
resid={t:float(min(abs(vgrid-t))) for t in hard}
log.append(f"Music starts {mstart:.3f}s into the track. Cut-to-beat error: "+', '.join(f'{t:.2f}s={r*1000:.0f}ms' for t,r in resid.items()))
# 3. choose one SFX per cue: default kit first, then swaps (--swaps), alternatives for the report
cmap=man['category_map']; lib={}
for e in man.get('bundled',[]): lib.setdefault(e['category'],[]).append({**e,'path':os.path.join(base,e['file'])})
for e in man.get('runtime',[]): lib.setdefault(e['category'],[]).append({**e,'path':None})
kit={e['category']:e for e in man.get('default_kit',[])}
cache=os.path.join(A.out,'sound-effects-cache'); os.makedirs(cache,exist_ok=True)
def fetch(e):
if e.get('path') and os.path.exists(e['path']): return e['path']
url=e.get('runtime_url'); f=os.path.join(cache,(e.get('category','x'))+'-'+os.path.basename(url))
if not os.path.exists(f):
r=run(['curl','-fsSL','-o',f,url])
if r.returncode!=0:
if os.path.exists(f): os.remove(f)
raise SystemExit(f"Could not download runtime sound for '{e.get('category')}' from {url} (curl exit {r.returncode}: {r.stderr.strip()}). Check your connection, or pick a bundled sound via --swaps.")
return f
def kit_entry(cat):
k=kit.get(cat)
if not k: return None
return {**k,'path':os.path.join(base,k['file']) if k.get('file') else None}
def alts(cat):
out=[]
for c in man.get('alt_categories',{}).get(cat,[cat]): out+=lib.get(c,[])
return out
swaps=json.load(open(A.swaps)) if A.swaps else {}
def pick(cat,want=None,idx=None):
sw=swaps.get(str(idx))
pool=alts(cat)
if sw and sw!='auto':
for e in pool+[kit_entry(cat)]:
if e and (e.get('file')==sw or e.get('runtime_url')==sw): return e
if sw=='auto' or not kit_entry(cat):
c=[e for e in pool if not want or e.get('length') in (None,want)] or pool
return random.choice(c)
return kit_entry(cat)
mix=np.zeros((int(dur*SR)+SR,2),dtype=np.float32); placed=[]
def load(p):
a,_=librosa.load(p,sr=SR,mono=False); a=np.atleast_2d(a)
if a.shape[0]==1: a=np.vstack([a,a])
return a.T
for idx,c in enumerate(cues):
cat=cmap[c['type']]; want={'movement':'short','scene_cut':'short'}.get(c['type'])
e=pick(cat,want,idx); a=load(fetch(e))
gain=0.0; pre=0.0
if c['type'] in('movement','scene_cut'): pre=2/fps; gain=-4
if c['type']=='typing':
need=int(c.get('dur',1)*SR); a=np.tile(a,(need//len(a)+1,1))[:need]; f=int(.05*SR); a[-f:]*=np.linspace(1,0,f)[:,None]; gain=-8
if c['type']=='build_up':
need=int(c.get('dur',.8)*SR); a=a[-need:] if len(a)>need else a; gain=-6; start=c['t']+c.get('dur',.8)-len(a)/SR
else: start=c['t']-pre
if c['type'] in('appear','click','hover_or_small_ui'): gain=-6
i=max(0,int(start*SR)); a=a*10**(gain/20); n=min(len(a),len(mix)-i); mix[i:i+n]+=a[:n]
placed.append({**c,'idx':idx,'category':cat,'sfx':e.get('file') or e.get('runtime_url'),'sfx_path':fetch(e),'source_url':e.get('source_url') or e.get('source_page'),'license':e.get('license'),'credit':e.get('credit') or e.get('attribution') or 'Mixkit','start':round(start,3),'gain_db':gain,'alternatives':[{'id':x.get('file') or x.get('runtime_url'),'play':(os.path.relpath(x['path'],A.out) if x.get('path') else x.get('runtime_url')),'source_url':x.get('source_url') or x.get('source_page'),'license':x.get('license'),'label':x.get('note') or x.get('title') or os.path.basename(x.get('file') or x.get('runtime_url'))} for x in alts(cat)][:12]})
# music bed
yt,_=librosa.load(A.music,sr=SR,mono=False); yt=np.atleast_2d(yt); yt=(np.vstack([yt,yt]) if yt.shape[0]==1 else yt).T
seg=yt[int(mstart*SR):int(mstart*SR)+len(mix)]; seg=seg*10**(A.music_db/20)
f=int(.6*SR); seg[-f:]*=np.linspace(1,0,f)[:,None]; mix[:len(seg)]+=seg
mix=mix[:int(dur*SR)]; sf.write(f'{A.out}/mix_raw.wav',mix,SR)
# 4. loudness: measure the exported MP4, adjust, repeat
def export(gain_db,limit):
af=f"volume={gain_db}dB"+(f",alimiter=limit={limit}:level=false" if limit else "")
run(['ffmpeg','-y','-v','error','-i',A.video,'-i',f'{A.out}/mix_raw.wav','-map','0:v','-map','1:a','-c:v','copy','-af',af,'-c:a','aac','-b:a','256k','-shortest',f'{A.out}/after.mp4'])
def measure(p,mono=False):
cmd=['ffmpeg','-nostats','-i',p]+(['-ac','1'] if mono else [])+['-af','ebur128=peak=true','-f','null','-']
o=run(cmd).stderr; I=float(re.findall(r'I:\s+([-\d.]+) LUFS',o)[-1]); P=float(re.findall(r'Peak:\s+([-\d.]+) dBFS',o)[-1]); return I,P
g=0.0; lim=False
for it in range(10):
export(g,lim); I,P=measure(f'{A.out}/after.mp4'); log.append(f"pass {it+1}: gain {g:+.1f} dB, limiter {lim if lim else 'off'} -> {I:.1f} LUFS, true peak {P:.1f} dBFS")
if abs(I+16)<=0.5 and P< -4: break
if P>=-4: lim=round((lim or 0.6)*0.9,3)
if abs(I+16)>0.5: g+=(-16-I)
Im,Pm=measure(f'{A.out}/after.mp4',mono=True)
log.append(f"FINAL after.mp4: {I:.1f} LUFS integrated, true peak {P:.1f} dBFS. Mono downmix: {Im:.1f} LUFS, peak {Pm:.1f} dBFS.")
# 5. proof: frames before/after each cue + waveform window
run(['ffmpeg','-y','-v','error','-i',f'{A.out}/after.mp4','-ac','1','-ar',str(SR),'/tmp/after_audio.wav']); au,_=librosa.load('/tmp/after_audio.wav',sr=SR,mono=True)
for k,c in enumerate(placed):
for tag,dt in (('a',-0.1),('b',0.15)):
run(['ffmpeg','-y','-v','error','-ss',f"{max(0,c['t']+dt):.3f}",'-i',f'{A.out}/after.mp4','-frames:v','1','-vf','scale=320:-1',f'/tmp/cue{k}{tag}.png'])
fig,ax=plt.subplots(1,3,figsize=(12,2.6),gridspec_kw={'width_ratios':[1,1,2]})
for j,tag in enumerate('ab'): ax[j].imshow(plt.imread(f'/tmp/cue{k}{tag}.png')); ax[j].axis('off'); ax[j].set_title(('before ' if tag=='a' else 'after ')+'cue')
s0=max(0,c['t']-0.5); s1=min(dur,c['t']+0.8); seg=au[int(s0*SR):int(s1*SR)]
ax[2].plot(np.linspace(s0,s1,len(seg)),seg,lw=.4); ax[2].axvline(c['t'],color='r'); ax[2].set_title(f"cue {k} @ {c['t']:.2f}s {c['type']} <- {os.path.basename(c['sfx'])}",fontsize=8)
plt.tight_layout(); plt.savefig(f"{A.out}/checks/cue-{k:02d}.png",dpi=80); plt.close()
# credits + licence check: only CC0 and Mixkit Free License count as known free licences; anything else is named as unknown
allman={}
for e in man.get('bundled',[])+man.get('runtime',[])+man.get('default_kit',[]): allman[e.get('file') or e.get('runtime_url')]=e
def free(lic): l=(lic or ''); return 'CC0' in l or ('Mixkit' in l and 'Free License' in l and 'Restricted' not in l)
def credit_line(c):
e=allman.get(c['sfx'],{}); lic=c.get('license') or e.get('license') or 'licence unknown'
if e.get('title') and e.get('creator'): name,who,src=e['title'],e['creator'],e.get('source','Freesound').split(' (')[0]
elif str(c['sfx']).startswith('http'): name,who,src='Mixkit #'+str(e.get('mixkit_id') or ''),'Mixkit','Mixkit'
else:
b=os.path.basename(c['sfx']).rsplit('.',1)[0]; kenney=b.startswith('kenney-')
name=re.sub(r'^kenney-','',re.sub(r'^fs-?\d+-?','',b)).replace('-',' ').strip().capitalize() or 'Freesound '+(re.findall(r'\d+',b) or [''])[0]
a=e.get('attribution') or ''; who='Kenney' if kenney else (a.split(' via ')[0].strip() or 'unknown creator'); src='kenney.nl' if kenney else (a.split(' via ')[1].split(' (')[0].strip() if ' via ' in a else 'unknown source')
url=c.get('source_url') or e.get('source_url') or e.get('source_page'); ok=free(lic)
return ok,name,who,lic,url,f'"{name}" by {who} ({src}), {lic.split(" (")[0]}'+('' if ok else ' - LICENCE UNKNOWN, check before publishing')+(f' - {url}' if url else '')
seen={}; unknown=[]
for c in placed:
if c['sfx'] in seen: continue
ok,name,who,lic,url,line=credit_line(c); seen[c['sfx']]=line
if not ok: unknown.append(f'"{name}" by {who} ({url or "no source link"}): licence "{lic}" is not a known free licence')
music_line=(f"{A.music_source or os.path.basename(A.music)}, {A.music_license}" if A.music_license else f"{A.music_source or os.path.basename(A.music)} - LICENCE NOT CONFIRMED, add the track, artist and licence before publishing")
open(f'{A.out}/CREDITS.txt','w').write('Sound effects\n'+'\n'.join(seen.values())+'\n\nMusic\n'+music_line+'\n')
lic_report=(["All sound effects have a known free licence (CC0 or Mixkit Free License). Sources can change their terms; check the source pages now and then."] if not unknown else ["UNKNOWN LICENCES, do not publish until checked:"]+[' '+u for u in unknown])+[("Music licence: "+A.music_license) if A.music_license else "Music licence: NOT CONFIRMED. Ask the user where the track is from and what licence it has."]
# use case against the known limits of the sources (Claude still checks each source's current page, SKILL.md step 0)
uc=(A.use_case or '').lower(); conflicts=[]
if A.use_case:
if 'mixkit' in ((A.music_license or '')+(A.music_source or '')).lower() and any(w in uc for w in ('tv','television','broadcast','radio','game','cd','dvd')):
conflicts.append('Mixkit music is not allowed for TV/radio broadcast, video games or CDs/DVDs: pick another track.')
if any('Mixkit' in str(c.get('license')) for c in placed) and any(w in uc for w in ('template','tool','asset pack','stock')):
conflicts.append('Mixkit sounds cannot be redistributed inside a template or tool: swap them for CC0 sounds.')
lic_report.append(('Use case: '+A.use_case+(' - CONFLICT: '+' '.join(conflicts) if conflicts else ' - no conflict with the known licence limits; still check each source page today (SKILL.md step 0).')) if A.use_case else 'Use case: NOT GIVEN. Ask the user where the video will be published.')
# 6. five timestamps for a human with headphones (riskiest first)
risk=sorted(placed,key=lambda c:-(resid.get(c['t'],0)*10+{'typing':.5,'build_up':.4,'reveal':.3,'scene_cut':.2}.get(c['type'],0)))[:5]
ts=[f"{c['t']:.2f}s ({c['type']}: {c['desc']}) - check {'beat sync' if c['t'] in resid else 'level/feel'}" for c in sorted(risk,key=lambda c:c['t'])]
rep=["# SOUND.md (generated by sound_pass.py)","Approach: Vox (@Voxyz_ai) sound pass. Claude can't hear, so everything below is measured.","",f"Music: {music_line}","","## Licences"]+['- '+l for l in lic_report]+["- CREDITS.txt: optional, ready to paste into a YouTube, Instagram or TikTok description. CC0 sounds need no credit; the list doubles as proof of source if a platform flags the audio.","","## Log"]+['- '+l for l in log]+["","## Cues"]+[f"- {c['t']:.2f}s {c['type']} -> {c['sfx']} (start {c['start']}s, {c['gain_db']} dB)" for c in placed]+["","## Check these 5 with headphones"]+['- '+t for t in ts]+["","Not claiming it sounds good: listen to these."]
open(f'{A.out}/SOUND.md','w').write('\n'.join(rep)); print('\n'.join(rep))
import report; report.write(A.out,placed,A.video,I,P)