Staggered-start qualifying heats now announce each car's transponder number in grid order (~3s apart) right after the official start, matching what a track announcer does when releasing cars one at a time; mass/position starts are unaffected. The Timing leaderboard and every overlay variant now also show a green "Done" flag next to a driver's name once their own personal timing window (which already started at their own first crossing) has elapsed, even while the session is still running for other drivers. Also confirmed two things already worked correctly: finals already always start everyone together with the shared countdown/lights/tone sequence, and practice's time-up announcement already says "finish the lap you are on" - only a "2 minutes remaining" cue is genuinely missing from the existing 1min/30s/10s ladder, left as an open question for the user. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
97 lines
7.9 KiB
JSON
97 lines
7.9 KiB
JSON
{
|
|
"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"
|
|
],
|
|
"events": {
|
|
"start_tone": { "effect": "effects/start_beep.wav" },
|
|
"transponder_pass": { "effect": "effects/transponder_pass.wav" },
|
|
"transponder_detected": { "effect": "effects/transponder_pass.wav" },
|
|
"training_stable_pace": { "voice": "training_stable_pace" },
|
|
"entering_pits": { "effect": "effects/transponder_pass.wav" },
|
|
"leaving_pits": { "effect": "effects/transponder_pass.wav" },
|
|
"personal_best": { "effect": "effects/personal_best.wav" },
|
|
"fastest_lap": { "effect": "effects/fastest_lap_trophy.wav" },
|
|
"track_record": { "effect": "effects/track_record_fanfare.wav" },
|
|
"position_gain": { "effect": "effects/position_gain.wav" },
|
|
"position_loss": { "effect": "effects/position_loss.wav" },
|
|
"final_lap": { "effect": "effects/final_lap.wav" },
|
|
"race_finished": { "effect": "effects/race_finish.wav" },
|
|
"qualifying_finished": { "effect": "effects/race_finish.wav" },
|
|
"race_winner": { "effect": "effects/fastest_lap_trophy.wav" },
|
|
"heat_winner": { "effect": "effects/fastest_lap_trophy.wav" },
|
|
"overall_winner": { "effect": "effects/fastest_lap_trophy.wav" },
|
|
"race_10_seconds": { "effect": "effects/warning.wav" },
|
|
"ten_seconds_remaining": { "effect": "effects/warning.wav" },
|
|
"time_expired": { "effect": "effects/warning.wav" },
|
|
"track_call": { "effect": "effects/warning.wav" },
|
|
"yellow_flag": { "effect": "effects/warning.wav" },
|
|
"red_flag": { "effect": "effects/warning.wav" },
|
|
"false_start": { "effect": "effects/warning.wav" },
|
|
"race_paused": { "effect": "effects/warning.wav" },
|
|
"marshal_warning": { "effect": "effects/warning.wav" },
|
|
"marshal_required": { "effect": "effects/warning.wav" },
|
|
"penalty": { "effect": "effects/warning.wav" },
|
|
"stop_and_go": { "effect": "effects/warning.wav" },
|
|
"drive_through": { "effect": "effects/warning.wav" },
|
|
"disqualified": { "effect": "effects/warning.wav" },
|
|
"pit_speed_warning": { "effect": "effects/warning.wav" },
|
|
"timing_disconnected": { "effect": "effects/warning.wav" },
|
|
"unknown_transponder": { "effect": "effects/warning.wav" },
|
|
"audio_test": { "effect": "effects/start_beep.wav" }
|
|
},
|
|
"voice_events": {
|
|
"en": {
|
|
"grid_open": "The starting grid is open.", "grid_closed": "The starting grid is closed.",
|
|
"race_1_minute": "Race starts in one minute.", "race_30_seconds": "Thirty seconds to start.", "race_10_seconds": "Ten seconds to start.",
|
|
"drivers_ready": "Drivers, stand by.", "start_sequence": "Starting on the sound of the tone.", "false_start": "False start.", "restart_race": "Prepare to restart the race.",
|
|
"staggered_release": "Car {tp}.",
|
|
"personal_best": "Personal best. {driverName}. {lapTime}.", "fastest_lap": "Fastest lap. {driverName}. {lapTime}.",
|
|
"training_stable_pace": "{driverName}, good pace and consistent driving.",
|
|
"track_record": "New track record. {driverName}. {lapTime}.", "new_leader": "New race leader. {driverName}.",
|
|
"final_lap": "Final lap.", "one_minute_remaining": "One minute remaining.", "thirty_seconds_remaining": "Thirty seconds remaining.",
|
|
"ten_seconds_remaining": "Ten seconds remaining.", "time_expired": "Time has expired. Finish the lap you are on.", "race_finished": "Race is finished.",
|
|
"track_call": "Track call. Track call.", "track_clear": "Track is clear.", "yellow_flag": "Yellow flag.", "red_flag": "Red flag. Stop all cars.",
|
|
"race_paused": "Race paused.", "race_resumed": "Race resumed.", "marshal_warning": "Marshal warning.",
|
|
"marshal_required": "Marshal required at post {marshalPost}.", "penalty": "Penalty for {driverName}.",
|
|
"stop_and_go": "Stop and go penalty for {driverName}.", "drive_through": "Drive through penalty for {driverName}.", "disqualified": "{driverName} is disqualified.",
|
|
"pit_lane_open": "Pit lane is open.", "pit_lane_closed": "Pit lane is closed.", "pit_speed_warning": "Pit lane speed warning for {driverName}.",
|
|
"qualifying_start": "Qualifying is starting.", "qualifying_remaining": "Qualifying time remaining: {time}.", "qualifying_finished": "Qualifying is finished.",
|
|
"provisional_pole": "Provisional pole. {driverName}.", "pole_position": "Pole position. {driverName}.",
|
|
"race_winner": "Race winner. {driverName}.", "second_place": "Second place. {driverName}.", "third_place": "Third place. {driverName}.",
|
|
"podium": "Podium: {podium}.", "heat_winner": "Heat winner. {driverName}.", "overall_winner": "Overall winner. {driverName}.",
|
|
"timing_connected": "Timing system connected.", "timing_disconnected": "Timing system disconnected.",
|
|
"unknown_transponder": "Unknown transponder {transponder}.", "audio_test": "Race audio test."
|
|
},
|
|
"sv": {
|
|
"grid_open": "Startfältet är öppet.", "grid_closed": "Startfältet är stängt.",
|
|
"race_1_minute": "Start om en minut.", "race_30_seconds": "Trettio sekunder till start.", "race_10_seconds": "Tio sekunder till start.",
|
|
"drivers_ready": "Förare, gör er redo.", "start_sequence": "Start på signalen.", "false_start": "Felaktig start.", "restart_race": "Förbered omstart.",
|
|
"staggered_release": "Bil {tp}.",
|
|
"personal_best": "Personbästa. {driverName}. {lapTime}.", "fastest_lap": "Snabbaste varv. {driverName}. {lapTime}.",
|
|
"training_stable_pace": "{driverName}, bra tempo och stabil körning.",
|
|
"track_record": "Nytt banrekord. {driverName}. {lapTime}.", "new_leader": "Ny ledare. {driverName}.",
|
|
"final_lap": "Sista varvet.", "one_minute_remaining": "En minut kvar.", "thirty_seconds_remaining": "Trettio sekunder kvar.",
|
|
"ten_seconds_remaining": "Tio sekunder kvar.", "time_expired": "Tiden är slut. Slutför pågående varv.", "race_finished": "Racet är avslutat.",
|
|
"track_call": "Stopp på banan. Stopp på banan.", "track_clear": "Banan är fri.", "yellow_flag": "Gul flagg.", "red_flag": "Röd flagg. Stoppa alla bilar.",
|
|
"race_paused": "Racet är pausat.", "race_resumed": "Racet fortsätter.", "marshal_warning": "Varning till banvakt.",
|
|
"marshal_required": "Banvakt behövs vid post {marshalPost}.", "penalty": "Bestraffning för {driverName}.",
|
|
"stop_and_go": "Stop and go för {driverName}.", "drive_through": "Drive through för {driverName}.", "disqualified": "{driverName} är diskvalificerad.",
|
|
"pit_lane_open": "Depån är öppen.", "pit_lane_closed": "Depån är stängd.", "pit_speed_warning": "Varning för hög fart i depån för {driverName}.",
|
|
"qualifying_start": "Kvalet startar.", "qualifying_remaining": "Kvaltid kvar: {time}.", "qualifying_finished": "Kvalet är avslutat.",
|
|
"provisional_pole": "Preliminär pole. {driverName}.", "pole_position": "Pole position. {driverName}.",
|
|
"race_winner": "Segrare. {driverName}.", "second_place": "Andra plats. {driverName}.", "third_place": "Tredje plats. {driverName}.",
|
|
"podium": "Prispall: {podium}.", "heat_winner": "Heatsegrare. {driverName}.", "overall_winner": "Totalsegrare. {driverName}.",
|
|
"timing_connected": "Tidtagningen är ansluten.", "timing_disconnected": "Tidtagningen är frånkopplad.",
|
|
"unknown_transponder": "Okänd transponder {transponder}.", "audio_test": "Test av raceljud."
|
|
}
|
|
},
|
|
"runtime": {
|
|
"start_delay_seconds": { "min": 1.0, "max": 4.0, "randomize": true },
|
|
"passing_sound": "effects/transponder_pass.wav", "passing_sound_pool": ["pass_01.wav", "pass_02.wav", "pass_03.wav", "pass_04.wav", "pass_05.wav", "pass_06.wav", "pass_07.wav", "pass_08.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"
|
|
}
|
|
}
|