diff --git a/rc-race-sound-pack/README.md b/rc-race-sound-pack/README.md new file mode 100644 index 0000000..7d60168 --- /dev/null +++ b/rc-race-sound-pack/README.md @@ -0,0 +1,33 @@ +# RC Race Sound Pack + +Repository-ready sound assets and event manifest for an RC racing timing application. + +## Included +- 48 kHz / 16-bit mono WAV effects +- Start tone +- Transponder/pass beep +- Warning and final-lap tones +- Personal-best sting +- Fastest-lap trophy sting +- Track-record fanfare +- Race-finish sting +- Position gain/loss cues +- Swedish and English TTS scripts in `sound_manifest.json` + +## Voice files +Generate TTS as WAV and place files in `sounds/en/` and `sounds/sv/`, using the event keys +from `sound_manifest.json` as filenames, for example `sounds/sv/fastest_lap.wav`. + +Recommended voice style: clear professional race director / PA announcer, energetic but short. +Keep announcements dry (no reverb) so they remain intelligible over RC cars and PA systems. + +## Start sequence +1. Play `drivers_ready` +2. Play `start_phrase` +3. Wait a random 1–4 seconds +4. Play `effects/start_beep.wav` +5. Start race timing on the tone + +## Integration +Treat `sound_manifest.json` as the contract between timing events and audio assets. +Effects can be used immediately; voice assets can later be replaced without code changes. diff --git a/rc-race-sound-pack/sound_manifest.json b/rc-race-sound-pack/sound_manifest.json new file mode 100644 index 0000000..d219d43 --- /dev/null +++ b/rc-race-sound-pack/sound_manifest.json @@ -0,0 +1,66 @@ +{ + "format": { + "sample_rate": 48000, + "channels": 1, + "pcm": "16-bit", + "recommended_runtime_gain_db": -6 + }, + "effects": [ + "fastest_lap_trophy.wav", + "final_lap.wav", + "personal_best.wav", + "position_gain.wav", + "position_loss.wav", + "race_finish.wav", + "start_beep.wav", + "track_record_fanfare.wav", + "transponder_pass.wav", + "warning.wav" + ], + "voice_events": { + "en": { + "race_1_minute": "Race starts in one minute.", + "race_30_seconds": "Thirty seconds to start.", + "drivers_ready": "Drivers, stand by.", + "start_phrase": "Starting on the sound of the tone.", + "personal_best": "Personal best!", + "fastest_lap": "Fastest lap!", + "track_record": "New track record!", + "new_leader": "We have a new race leader.", + "one_minute_remaining": "One minute remaining.", + "thirty_seconds_remaining": "Thirty seconds remaining.", + "final_lap": "Final lap.", + "time_expired": "Time has expired. Finish the lap you are on.", + "race_finished": "Race is finished.", + "race_winner": "Race winner!" + }, + "sv": { + "race_1_minute": "Start om en minut.", + "race_30_seconds": "Trettio sekunder till start.", + "drivers_ready": "Förare, gör er redo.", + "start_phrase": "Start på signalen.", + "personal_best": "Personbästa!", + "fastest_lap": "Snabbaste varv!", + "track_record": "Nytt banrekord!", + "new_leader": "Vi har en ny ledare.", + "one_minute_remaining": "En minut kvar.", + "thirty_seconds_remaining": "Trettio sekunder kvar.", + "final_lap": "Sista varvet.", + "time_expired": "Tiden är slut. Slutför pågående varv.", + "race_finished": "Racet är avslutat.", + "race_winner": "Segrare!" + } + }, + "runtime": { + "start_delay_seconds": { + "min": 1.0, + "max": 4.0, + "randomize": true + }, + "passing_sound": "effects/transponder_pass.wav", + "start_sound": "effects/start_beep.wav", + "fastest_lap_sound": "effects/fastest_lap_trophy.wav", + "track_record_sound": "effects/track_record_fanfare.wav", + "finish_sound": "effects/race_finish.wav" + } +} \ No newline at end of file diff --git a/rc-race-sound-pack/sounds/effects/fastest_lap_trophy.wav b/rc-race-sound-pack/sounds/effects/fastest_lap_trophy.wav new file mode 100644 index 0000000..463b2bf Binary files /dev/null and b/rc-race-sound-pack/sounds/effects/fastest_lap_trophy.wav differ diff --git a/rc-race-sound-pack/sounds/effects/final_lap.wav b/rc-race-sound-pack/sounds/effects/final_lap.wav new file mode 100644 index 0000000..69daced Binary files /dev/null and b/rc-race-sound-pack/sounds/effects/final_lap.wav differ diff --git a/rc-race-sound-pack/sounds/effects/personal_best.wav b/rc-race-sound-pack/sounds/effects/personal_best.wav new file mode 100644 index 0000000..a0e8aac Binary files /dev/null and b/rc-race-sound-pack/sounds/effects/personal_best.wav differ diff --git a/rc-race-sound-pack/sounds/effects/position_gain.wav b/rc-race-sound-pack/sounds/effects/position_gain.wav new file mode 100644 index 0000000..0099578 Binary files /dev/null and b/rc-race-sound-pack/sounds/effects/position_gain.wav differ diff --git a/rc-race-sound-pack/sounds/effects/position_loss.wav b/rc-race-sound-pack/sounds/effects/position_loss.wav new file mode 100644 index 0000000..c274aa9 Binary files /dev/null and b/rc-race-sound-pack/sounds/effects/position_loss.wav differ diff --git a/rc-race-sound-pack/sounds/effects/race_finish.wav b/rc-race-sound-pack/sounds/effects/race_finish.wav new file mode 100644 index 0000000..5025455 Binary files /dev/null and b/rc-race-sound-pack/sounds/effects/race_finish.wav differ diff --git a/rc-race-sound-pack/sounds/effects/start_beep.wav b/rc-race-sound-pack/sounds/effects/start_beep.wav new file mode 100644 index 0000000..adb27e2 Binary files /dev/null and b/rc-race-sound-pack/sounds/effects/start_beep.wav differ diff --git a/rc-race-sound-pack/sounds/effects/track_record_fanfare.wav b/rc-race-sound-pack/sounds/effects/track_record_fanfare.wav new file mode 100644 index 0000000..c0cdb82 Binary files /dev/null and b/rc-race-sound-pack/sounds/effects/track_record_fanfare.wav differ diff --git a/rc-race-sound-pack/sounds/effects/transponder_pass.wav b/rc-race-sound-pack/sounds/effects/transponder_pass.wav new file mode 100644 index 0000000..a7d03bf Binary files /dev/null and b/rc-race-sound-pack/sounds/effects/transponder_pass.wav differ diff --git a/rc-race-sound-pack/sounds/effects/warning.wav b/rc-race-sound-pack/sounds/effects/warning.wav new file mode 100644 index 0000000..178aac1 Binary files /dev/null and b/rc-race-sound-pack/sounds/effects/warning.wav differ