SoloBuddy is an interactive improvisational practice helper. By its nature, improvisation is a tricky thing to practice. SoloBuddy helps musicians like you learn to solo over any chord progression you want by playing a backing track, and helps you find the best-sounding notes to play in your solo. Whether you’re picking up an instrument for the first time or if you’re a seasoned soloist, SoloBuddy is here to help.
Soloing, especially over novel chord progressions, demands a lot of high level thought at blistering speeds. You are tasked both with split second music theory calculations, and with expressing them in interesting and musical ways. Our vision is to create a tool for improving soloists like yourself that provides chordal information so that you can focus on your musical expression and developing your own voice on your instrument.
To begin, select your time signature in the top right of the SoloBuddy display. Then input your chord progression into the central section of the display by clicking on the chord names and filling in the dropdown menus as desired, adding or subtracting measures as necessary. Now you are ready to practice! Press Play and your progression will play. SoloBuddy will suggest notes and you’ll be off to the races!
Once you get going you can also adjust several aspects of the playback. All the controls can be done through clicking the buttons on the top of the screen, or by pressing certain keys, as shown above.
SoloBuddy knows some basic music theory, and can construct any chord based on just a root and a tonality. You tell it the progression of the song you want to solo over, and it creates a series of audio files to accompany you. It also knows how to count out steps for any tonality to find which notes sound good, and a computer can count steps a lot faster than a human can.
SoloBuddy uses the musical principal that any chord can be made by modulating any other chord of the same tonality, but with a different root. When you ask for a certain chord, SoloBuddy finds a .wav file of a middle C chord with a matching tonality, and modifies the file's pitch to get the desired chord. It uses keyboard listeners to get input from the user. The space bar toggles a variable that allows the music to proceed to the next chord, so the playing pauses but keeps listening for input so it can be resumed. F and S stand for faster and slower, and increase or decrease the beats per minute by five. This makes the wav file shorter or longer, so the music's speed can be changed. R (the reset button), and the forward and backward keys change the index variable, so the part of the code that loops through the progression is redirected to a different part of the chord.
We can accomplish all of this computation simultaneously using multithreading. SoloBuddy makes use of three threads: one thread to play the chords in time to the beat, one thread to play a metronome over the backing track (to help the soloist stay in time), and one thread to listen for user input and display accordingly.
We have created our user interface using pygame. This library gives us access to intuitive commands and functions which enable an interactive window.
For our chord input functionality, we have made use of gumbum's (another GitHub user) drop-down menu module. This module enables us to skip a lot of tedious pygame display code, and enables users to easily input their progressions.
Our initial project goal was to create a program that would take in music and produce music; we had initially planned on perhaps Markov chaining midi files, hoping to get similar sounds and styles. After some brief struggles we discovered that we wanted to create something that would engage people to make music. We wanted to create a program that would facilitate people's creativity and self expression rather than imitate art with code. Thus we pivoted to creating SoloBuddy, which is merely a (hopefully very useful) tool that can aid in the process of musical creation. Though we have diverged from some of our earlier goals for this project, we have achieved things we couldn't have hoped to with our earlier plans and thus feel more excited to bring you SoloBuddy, and hope that it helps you on your way to making your wonderful music.