On behalf of my mom, who prides herself on her knowledge of particular music, I made a special game in which players are challenged to identify a song as quickly as possible from a sample. In this Tkinter-powered application, a user can set up a quiz as a list of samples of the music on his or her computer, or play through the music quiz with up to three players. The game was made to run on Windows 10 with PyInstaller; a .zip (67 MB) of this game can be found here. For the code, see GitHub; for more details, scroll down!
There are two parts to this application: setting up quizzes and playing them. On the main menu, the "Play game" button makes the latter very tempting, but this is much less fun without making a quiz to play through first. For those who cannot wait, a sample game of public domain songs (from the UC Santa Barbara cylinder library) comes with the game, but for those who prefer something more recent and keep music on their computer, the option to set up a quiz is available under "Compose game."
There is also the option to quit, only available at this screen. Closing the game edit or play window will return to the main menu, to prevent Tkinter wait() issues.
The user has plenty of simple options when arranging a music quiz, as evidenced by the order-changing buttons in the Game Edit Window. Note two unusual features of KathySong 1.0: "load game," when a quiz is already started, allows the user to append an existing game to their current file, and "save game" always saves a file, to a "Game title (1).txt" if necessary, in the Saved Games folder.
Slightly less intuitive is the "Add song" window. The play and pause buttons work as expected; the skip buttons (these are not rewind and fast forward) skip the "needle" in the progressbar by the time chosen by "skip by." The headphones button plays the sample that will appear in the quiz, which stars at the location of the needle and lasts for "excerpt length." Playing the sample does not move the needle.
The option to play game takes the user to the game settings screen, where the user announces how many players compete and decides how strict the game should be accepting answers - 'strict' requires a match to everything but capitalization, punctuation, and subtitle; 'inclusive' allows a user to append words to the title and to drop or to include the 'g' from '-ing' words (so frequent in English-language song titles!); while 'loose' allows players to guess at the artist, omit articles, and make spelling changes. My favorite setting is 'inclusive,' as I have a habit of adding words to song titles, e.g., for the longest time, I thought the Billy Joel song that goes "whoa-oa-oa ... (for the longest) for the longest time..." was called "For the Longest Time."*
In gameplay, each player is asked for a name and to practice buzzing in - if there is one player, the buzzer is the spacebar; two players, the shift keys; three players, all three such keys, while 'enter' ends names and answers. Each round begins when all three players buzz in, at which point a sample plays, and end when a player buzzes in or the 'pass this song' button is selected. Buzzing in ends a playing song, and the buzzing player's time increases by however long the song played, whether that was the entire sample or less. The player's song-count may increase or decrease by 1, whether the player is correct or not. At the end, scores are calculated by dividing each player's song-count by time, giving points for speed and accuracy.
This game was coded in Python 3.11 using Tkinter, Pydub, and Simpleaudio modules and was rendered into an application (an .exe and a bundle of .dlls) by Pyinstaller for Windows 10. Those who have Python can find the code on GitHub; those who run Windows 10 can download the application from this Google Drive link.