The Infinite Jukebox works hard to find the best way to make a song play forever. This is a balancing act. The jukebox needs to add branches to a song that will allow it to hyper-jump from one section to another. If the destination of the branch sounds similar to the starting point of the branch, the listener won’t notice the jump (which is good), so we only want to pick branches that are between two very similar sounding beats. However, if we restrict ourselves to only adding branches between very similar sounding beats, then, for some songs, there may not be enough branches too allow the Infinite Jukebox to really play the song forever. So the Infinite Jukebox must weigh similarity against branch density. Most of the time it does a good job, but sometimes it gets it wrong. Until now, if the Jukebox got it wrong, you had no option but to try another song, but today I’ve just released a new tuning feature that will allow you to optimize the balance between similarity and graph density, so when the Jukebox can’t get it exactly right, you can finish the job.
The new tuning feature allows you to delete offending branches, and to help determine the proper balance between similarity and branch density. Here’s what you can do:
Delete branches – sometimes the Jukebox gets everything right except that a few of the branches give a jarring audio transition. This can especially occur with lyric heavy music. If there’s a particular branch that you want to get rid of, you can now just delete it. To delete an edge, click on it. It will turn red. Then hit the [delete] key and the edge will be removed from the graph. (You can restore deleted edges by hitting the reset button in the Tuning dialog).
For more detailed tuning, press the new Tune button. This button will bring up a dialog that will let you adjust a number of parameters. You can drag the dialog around so you can see the song visualization, and you can play the song while you are tuning it, to get real-time feedback as to how your tuning is affecting the song. The tuning options are:
Branch Similarity Threshold – this is a slider that determines the similarity threshold between two beats. A branch between two beats will be created only if the sim-distance between the beats is less than this threshold. Lower values will yield higher quality (but fewer) branches. So, if your song has lots of jarring beat transitions, move this slider to the left. In general, branches with a sim-distance less than around 55 sound pretty good, and below 40 are usually inaudible.
Branch Probability Range – when the Jukebox is about to play a beat that has branches to other beats, there’s a random chance that the Jukebox will follow one of the branches to play the similar beat. This slider, along with the Branch Probability Ramp-up Speed slider control the probability that the Jukebox will take a branch. The branch probability will start at the low end of the given range, and will gradually heat up until it reaches the high end of the range. The speed of the heating is controlled by the Ramp-up speed. Once a branch is taken the probability is reset to the low end of the range. The effect is, that over time, the chance that the Jukebox will follow a branch increases at the ramp-up speed, until a branch is taken at which point the process starts over again.
Loop extension optimization – the Jukebox will try to add in some extra paths in the song that may go above the branch similarity threshold in order to increase the amount of the song that is will be included in the infinite play. If you want total control, you can turn this feature off.
Allow only reverse branches: To increase song variety the Jukebox normally allows for jumps that go forward and backwards. Click this checkbox if you only want backward branches.
Reset – Click the reset button to restore the song to the ‘factory’ settings.
The tuning dialog also shows some data that you can use to help you tune the song:
- Branch chance: this is a dynamic value that shows the current percentage chance of taking a branch.
- Last Threshold – this shows the sim-distance of the last branch that was taken.
- Total Beats – the total beats in the song
- Total Branches – the total branches in the song
- Longest loop – the longest loop in the song, this is given both in terms of beats and in total percentage of the song.
- Deleted Branches – the number of branches that have been deleted.
Sharing your tuned songs All of the tuning that you apply to a song is captured in the URL for the song, so if you bookmark, tweet or share the URL for the song, you are also sharing all of your tuning and edits. For example, here’s a version of Skrillex’s Scary Monsters that has been tuned to have very frequent branching between only the best branches.
In the last two weeks, there have been a million visitors to the Infinite Jukebox, with many thousands of songs uploaded. With the new tuning feature, I’m looking forward to seeing (and hearing) better sounding infinite songs.