# QUAD GOD audio: licences

**Every file in `assets/audio/` is original work synthesised by our own code** (`tools/audio/*.py`, numpy + scipy) and encoded with ffmpeg (LAME MP3, libvorbis). There are **no samples, no field recordings, no sound libraries, no third-party or AI-generated audio** (no Mai studio, Replicate, ElevenLabs or Freesound material) in this set. Cost: $0.

- **Ownership:** the project owns the audio outright; no attribution or licence terms attach to it. The code that renders it is in this repo.
- **Tools:** numpy and scipy (BSD-3) for synthesis; ffmpeg via imageio-ffmpeg (LGPL/GPL build) used only as an encoder/meter. Encoders and libraries place no restriction on their output.
- **Melodies and progressions:** written for QUAD GOD by the audio agent. The IP rule was followed: no Korobeiniki or any Russian-folk melody, no recognisable melody from any game or company (Nintendo, Sega, Capcom, …). Generic chiptune devices (pulse arpeggios, a falling whistle, a two-tone alarm, a boxing-style bell) are idioms, not quotations. The coin ding is a triad flick (root–3rd–5th into a ringing top note), deliberately not the classic "B → E" coin interval; the win fanfares avoid the repeated-note triplet victory figure.
- **Fonts on the listening page:** Silkscreen and Press Start 2P (OFL), from `fonts/`.

| file | source |
|---|---|
| `sfx/reel_spin_loop.mp3` (+ `.ogg`) | original synthesis, `tools/audio/sfx.py` cue `reel_spin_loop` |
| `sfx/reel_stop.mp3` | original synthesis, `tools/audio/sfx.py` cue `reel_stop` |
| `sfx/reel_stop_pu.mp3` | original synthesis, `tools/audio/sfx.py` cue `reel_stop_pu` |
| `sfx/hardhat_1.mp3` | original synthesis, `tools/audio/sfx.py` cue `hardhat_1` |
| `sfx/hardhat_2.mp3` | original synthesis, `tools/audio/sfx.py` cue `hardhat_2` |
| `sfx/hardhat_3.mp3` | original synthesis, `tools/audio/sfx.py` cue `hardhat_3` |
| `sfx/antic_riser.mp3` | original synthesis, `tools/audio/sfx.py` cue `antic_riser` |
| `sfx/crane_winch.mp3` | original synthesis, `tools/audio/sfx.py` cue `crane_winch` |
| `sfx/crane_winch_loop.mp3` (+ `.ogg`) | original synthesis, `tools/audio/sfx.py` cue `crane_winch_loop` |
| `sfx/crane_creak.mp3` | original synthesis, `tools/audio/sfx.py` cue `crane_creak` |
| `sfx/crane_creak2.mp3` | original synthesis, `tools/audio/sfx.py` cue `crane_creak2` |
| `sfx/crane_release.mp3` | original synthesis, `tools/audio/sfx.py` cue `crane_release` |
| `sfx/crane_swing.mp3` | original synthesis, `tools/audio/sfx.py` cue `crane_swing` |
| `sfx/pad_button.mp3` | original synthesis, `tools/audio/sfx.py` cue `pad_button` |
| `sfx/pad_dpad.mp3` | original synthesis, `tools/audio/sfx.py` cue `pad_dpad` |
| `sfx/input_tick.mp3` | original synthesis, `tools/audio/sfx.py` cue `input_tick` |
| `sfx/mash_loop.mp3` (+ `.ogg`) | original synthesis, `tools/audio/sfx.py` cue `mash_loop` |
| `sfx/rotate.mp3` | original synthesis, `tools/audio/sfx.py` cue `rotate` |
| `sfx/land_girder.mp3` | original synthesis, `tools/audio/sfx.py` cue `land_girder` |
| `sfx/land_glass.mp3` | original synthesis, `tools/audio/sfx.py` cue `land_glass` |
| `sfx/land_hazard.mp3` | original synthesis, `tools/audio/sfx.py` cue `land_hazard` |
| `sfx/land_brick.mp3` | original synthesis, `tools/audio/sfx.py` cue `land_brick` |
| `sfx/land_plate.mp3` | original synthesis, `tools/audio/sfx.py` cue `land_plate` |
| `sfx/land_neon.mp3` | original synthesis, `tools/audio/sfx.py` cue `land_neon` |
| `sfx/land_concrete.mp3` | original synthesis, `tools/audio/sfx.py` cue `land_concrete` |
| `sfx/hard_drop.mp3` | original synthesis, `tools/audio/sfx.py` cue `hard_drop` |
| `sfx/clear_1.mp3` | original synthesis, `tools/audio/sfx.py` cue `clear_1` |
| `sfx/clear_2.mp3` | original synthesis, `tools/audio/sfx.py` cue `clear_2` |
| `sfx/clear_3.mp3` | original synthesis, `tools/audio/sfx.py` cue `clear_3` |
| `sfx/clear_4.mp3` | original synthesis, `tools/audio/sfx.py` cue `clear_4` |
| `sfx/combo_1.mp3` | original synthesis, `tools/audio/sfx.py` cue `combo_1` |
| `sfx/combo_2.mp3` | original synthesis, `tools/audio/sfx.py` cue `combo_2` |
| `sfx/combo_3.mp3` | original synthesis, `tools/audio/sfx.py` cue `combo_3` |
| `sfx/combo_4.mp3` | original synthesis, `tools/audio/sfx.py` cue `combo_4` |
| `sfx/combo_5.mp3` | original synthesis, `tools/audio/sfx.py` cue `combo_5` |
| `sfx/combo_6.mp3` | original synthesis, `tools/audio/sfx.py` cue `combo_6` |
| `sfx/combo_7.mp3` | original synthesis, `tools/audio/sfx.py` cue `combo_7` |
| `sfx/combo_8.mp3` | original synthesis, `tools/audio/sfx.py` cue `combo_8` |
| `sfx/combo_9.mp3` | original synthesis, `tools/audio/sfx.py` cue `combo_9` |
| `sfx/combo_10.mp3` | original synthesis, `tools/audio/sfx.py` cue `combo_10` |
| `sfx/quad_chain_2.mp3` | original synthesis, `tools/audio/sfx.py` cue `quad_chain_2` |
| `sfx/quad_chain_3.mp3` | original synthesis, `tools/audio/sfx.py` cue `quad_chain_3` |
| `sfx/quad_chain_4.mp3` | original synthesis, `tools/audio/sfx.py` cue `quad_chain_4` |
| `sfx/quad_chain_5.mp3` | original synthesis, `tools/audio/sfx.py` cue `quad_chain_5` |
| `sfx/pu_reveal.mp3` | original synthesis, `tools/audio/sfx.py` cue `pu_reveal` |
| `sfx/pu_sting_fill.mp3` | original synthesis, `tools/audio/sfx.py` cue `pu_sting_fill` |
| `sfx/pu_sting_warp.mp3` | original synthesis, `tools/audio/sfx.py` cue `pu_sting_warp` |
| `sfx/pu_sting_bomb.mp3` | original synthesis, `tools/audio/sfx.py` cue `pu_sting_bomb` |
| `sfx/pu_sting_rumble.mp3` | original synthesis, `tools/audio/sfx.py` cue `pu_sting_rumble` |
| `sfx/pu_sting_glitch.mp3` | original synthesis, `tools/audio/sfx.py` cue `pu_sting_glitch` |
| `sfx/pu_sting_token.mp3` | original synthesis, `tools/audio/sfx.py` cue `pu_sting_token` |
| `sfx/pu_grow.mp3` | original synthesis, `tools/audio/sfx.py` cue `pu_grow` |
| `sfx/pu_swap.mp3` | original synthesis, `tools/audio/sfx.py` cue `pu_swap` |
| `sfx/pu_quake.mp3` | original synthesis, `tools/audio/sfx.py` cue `pu_quake` |
| `sfx/pu_morph.mp3` | original synthesis, `tools/audio/sfx.py` cue `pu_morph` |
| `sfx/pu_wreck.mp3` | original synthesis, `tools/audio/sfx.py` cue `pu_wreck` |
| `sfx/pu_rivet.mp3` | original synthesis, `tools/audio/sfx.py` cue `pu_rivet` |
| `sfx/rivet_single.mp3` | original synthesis, `tools/audio/sfx.py` cue `rivet_single` |
| `sfx/charged_hum_loop.mp3` (+ `.ogg`) | original synthesis, `tools/audio/sfx.py` cue `charged_hum_loop` |
| `sfx/beeper.mp3` | original synthesis, `tools/audio/sfx.py` cue `beeper` |
| `sfx/beeper_loop.mp3` (+ `.ogg`) | original synthesis, `tools/audio/sfx.py` cue `beeper_loop` |
| `sfx/beeper_synth_loop.mp3` (+ `.ogg`) | original synthesis, `tools/audio/sfx.py` cue `beeper_synth_loop` |
| `sfx/tease_heartbeat.mp3` (+ `.ogg`) | original synthesis, `tools/audio/sfx.py` cue `tease_heartbeat` |
| `sfx/tease_slowmo.mp3` | original synthesis, `tools/audio/sfx.py` cue `tease_slowmo` |
| `sfx/tease_lock.mp3` | original synthesis, `tools/audio/sfx.py` cue `tease_lock` |
| `sfx/nearmiss.mp3` | original synthesis, `tools/audio/sfx.py` cue `nearmiss` |
| `sfx/tease_riser_loop.mp3` (+ `.ogg`) | original synthesis, `tools/audio/sfx.py` cue `tease_riser_loop` |
| `sfx/perfect_clear.mp3` | original synthesis, `tools/audio/sfx.py` cue `perfect_clear` |
| `sfx/longboi_fall.mp3` | original synthesis, `tools/audio/sfx.py` cue `longboi_fall` |
| `sfx/longboi_slam.mp3` | original synthesis, `tools/audio/sfx.py` cue `longboi_slam` |
| `sfx/longboi_alarm.mp3` | original synthesis, `tools/audio/sfx.py` cue `longboi_alarm` |
| `sfx/levelup.mp3` | original synthesis, `tools/audio/sfx.py` cue `levelup` |
| `sfx/mult_step_1.mp3` | original synthesis, `tools/audio/sfx.py` cue `mult_step_1` |
| `sfx/mult_step_2.mp3` | original synthesis, `tools/audio/sfx.py` cue `mult_step_2` |
| `sfx/mult_step_3.mp3` | original synthesis, `tools/audio/sfx.py` cue `mult_step_3` |
| `sfx/mult_step_4.mp3` | original synthesis, `tools/audio/sfx.py` cue `mult_step_4` |
| `sfx/mult_step_5.mp3` | original synthesis, `tools/audio/sfx.py` cue `mult_step_5` |
| `sfx/retrigger.mp3` | original synthesis, `tools/audio/sfx.py` cue `retrigger` |
| `sfx/overload_alarm_loop.mp3` (+ `.ogg`) | original synthesis, `tools/audio/sfx.py` cue `overload_alarm_loop` |
| `sfx/overload_detonate.mp3` | original synthesis, `tools/audio/sfx.py` cue `overload_detonate` |
| `sfx/ceiling_break.mp3` | original synthesis, `tools/audio/sfx.py` cue `ceiling_break` |
| `sfx/win_big.mp3` | original synthesis, `tools/audio/sfx.py` cue `win_big` |
| `sfx/win_super.mp3` | original synthesis, `tools/audio/sfx.py` cue `win_super` |
| `sfx/win_mega.mp3` | original synthesis, `tools/audio/sfx.py` cue `win_mega` |
| `sfx/win_epic.mp3` | original synthesis, `tools/audio/sfx.py` cue `win_epic` |
| `sfx/coin_shower.mp3` | original synthesis, `tools/audio/sfx.py` cue `coin_shower` |
| `sfx/coin_shower_loop.mp3` (+ `.ogg`) | original synthesis, `tools/audio/sfx.py` cue `coin_shower_loop` |
| `sfx/countup_tick.mp3` | original synthesis, `tools/audio/sfx.py` cue `countup_tick` |
| `sfx/countup_end.mp3` | original synthesis, `tools/audio/sfx.py` cue `countup_end` |
| `sfx/bonus_trigger.mp3` | original synthesis, `tools/audio/sfx.py` cue `bonus_trigger` |
| `sfx/bonus_intro_longboi.mp3` | original synthesis, `tools/audio/sfx.py` cue `bonus_intro_longboi` |
| `sfx/bonus_intro_topout.mp3` | original synthesis, `tools/audio/sfx.py` cue `bonus_intro_topout` |
| `sfx/bonus_outro.mp3` | original synthesis, `tools/audio/sfx.py` cue `bonus_outro` |
| `sfx/shift_start.mp3` | original synthesis, `tools/audio/sfx.py` cue `shift_start` |
| `sfx/shift_roll.mp3` | original synthesis, `tools/audio/sfx.py` cue `shift_roll` |
| `sfx/shift_end.mp3` | original synthesis, `tools/audio/sfx.py` cue `shift_end` |
| `sfx/clock_tick.mp3` | original synthesis, `tools/audio/sfx.py` cue `clock_tick` |
| `sfx/clock_flip.mp3` | original synthesis, `tools/audio/sfx.py` cue `clock_flip` |
| `sfx/clock_tick_loop.mp3` (+ `.ogg`) | original synthesis, `tools/audio/sfx.py` cue `clock_tick_loop` |
| `sfx/dawn_chime.mp3` | original synthesis, `tools/audio/sfx.py` cue `dawn_chime` |
| `sfx/hit_jab.mp3` | original synthesis, `tools/audio/sfx.py` cue `hit_jab` |
| `sfx/hit_special.mp3` | original synthesis, `tools/audio/sfx.py` cue `hit_special` |
| `sfx/hp_drain.mp3` | original synthesis, `tools/audio/sfx.py` cue `hp_drain` |
| `sfx/hp_drain_loop.mp3` (+ `.ogg`) | original synthesis, `tools/audio/sfx.py` cue `hp_drain_loop` |
| `sfx/ko_bell.mp3` | original synthesis, `tools/audio/sfx.py` cue `ko_bell` |
| `sfx/crowd_roar.mp3` | original synthesis, `tools/audio/sfx.py` cue `crowd_roar` |
| `sfx/crowd_roar_loop.mp3` (+ `.ogg`) | original synthesis, `tools/audio/sfx.py` cue `crowd_roar_loop` |
| `sfx/ko_hit.mp3` | original synthesis, `tools/audio/sfx.py` cue `ko_hit` |
| `sfx/decision.mp3` | original synthesis, `tools/audio/sfx.py` cue `decision` |
| `sfx/round_ready.mp3` | original synthesis, `tools/audio/sfx.py` cue `round_ready` |
| `sfx/round_fight.mp3` | original synthesis, `tools/audio/sfx.py` cue `round_fight` |
| `sfx/bracket_advance.mp3` | original synthesis, `tools/audio/sfx.py` cue `bracket_advance` |
| `sfx/walkout_sting.mp3` | original synthesis, `tools/audio/sfx.py` cue `walkout_sting` |
| `sfx/glitch_corrupt.mp3` | original synthesis, `tools/audio/sfx.py` cue `glitch_corrupt` |
| `sfx/trophy_fanfare.mp3` | original synthesis, `tools/audio/sfx.py` cue `trophy_fanfare` |
| `sfx/champion_fanfare.mp3` | original synthesis, `tools/audio/sfx.py` cue `champion_fanfare` |
| `sfx/ui_click.mp3` | original synthesis, `tools/audio/sfx.py` cue `ui_click` |
| `sfx/ui_tick.mp3` | original synthesis, `tools/audio/sfx.py` cue `ui_tick` |
| `sfx/ui_open.mp3` | original synthesis, `tools/audio/sfx.py` cue `ui_open` |
| `sfx/ui_error.mp3` | original synthesis, `tools/audio/sfx.py` cue `ui_error` |
| `sfx/bet_up.mp3` | original synthesis, `tools/audio/sfx.py` cue `bet_up` |
| `sfx/bet_down.mp3` | original synthesis, `tools/audio/sfx.py` cue `bet_down` |
| `sfx/buy_confirm.mp3` | original synthesis, `tools/audio/sfx.py` cue `buy_confirm` |
| `sfx/spin_press.mp3` | original synthesis, `tools/audio/sfx.py` cue `spin_press` |
| `sfx/returned_tick.mp3` | original synthesis, `tools/audio/sfx.py` cue `returned_tick` |
| `music/mus_base_a.mp3` (+ `.ogg`) | original composition + synthesis, `tools/audio/music.py` `base_a` |
| `music/mus_base_b.mp3` (+ `.ogg`) | original composition + synthesis, `tools/audio/music.py` `base_b` |
| `music/mus_allnighter.mp3` (+ `.ogg`) | original composition + synthesis, `tools/audio/music.py` `allnighter` |
| `music/mus_allnighter_hype.mp3` (+ `.ogg`) | original composition + synthesis, `tools/audio/music.py` `allnighter_hype` |
| `music/mus_tournament.mp3` (+ `.ogg`) | original composition + synthesis, `tools/audio/music.py` `tournament` |
| `music/mus_tournament_final.mp3` (+ `.ogg`) | original composition + synthesis, `tools/audio/music.py` `tournament_final` |
| `music/mus_trophy.mp3` (+ `.ogg`) | original composition + synthesis, `tools/audio/music.py` `trophy` |
| `music/mus_fanfare.mp3` (+ `.ogg`) | original composition + synthesis, `tools/audio/music.py` `fanfare` |
| `music/mus_attract.mp3` (+ `.ogg`) | original composition + synthesis, `tools/audio/music.py` `attract` |
