I wrote this interval timer for round-based training, the way a boxing round timer works, as a .NET 7 Windows Forms app where you set the work time, the rest time and the number of rounds.
Under the interface I put a small timer engine that raises events on every tick, at half-time, in the last ten seconds, at the start of rest, on the next round, on the last round and at the finish. For every one of those the app plays a sound (a gong, beeps, a count of short beeps for the round number, and chimes at the end). All of the sounds are synthesized by a small script in the repository, so the project is free to share under the GPL.
The app also starts an embedded HTTP server on port 8080 that serves a small web page and has JSON start and stop endpoints, which lets you control the timer from a phone’s browser while you’re on the mat.