Now that C++ has become our choice for software architecture, it is time to decide how to implement the many features needed to work with audio. While all features are possible to do by hand, this alone could become a year-long project, and capable libraries already exist. But what libraries to use? There are two libraries I will be breaking down: Superpowered and JUCE.
Superpowered
To begin, I wanted to find out what Superpowered was capable of. Initially, I can see that both Audio I/O and built-in functions such as “time-stretching, pitch-shifting, scratching, looping and multi-player sync,” most of which are necessary for this project. This is a good start and will easily provide all audio capabilities necessary for the audio looper.
Next, learning to use the library is important. Good documentation means easily implementation. I immediately went to the docs page for Superpowered, and found ways to view lists of classes in the library. However, searching for features or going beyond simply reading inputs in a function seem to be difficult to find. This could make finding the best tool for the job more difficult. When digging more on the website, I couldn’t find any tutorials to learn to use the Superpowered software. To summarize, I am beginning to believe that learning to use this library could be quite difficult for a product as simple as ours.

JUCE
Another C++ Audio library we found was JUCE. JUCE boasts many of the same features as Superpowered, including audio I/O and audio looping. However, something I noticed that immediately makes it stand out above Superpowered is that these features are boasted in tutorials. In the below image, you can see tutorials that teach exactly the features I mentioned above. This will be essential for getting our feet off the ground, and will increase our pace of development.

JUCE’s documentation doesn’t end with learning about audio processing, either. They also have tutorials for learning to create user interfaces. Here, I saved an image of a basic interface with dials, something we plan to use in our audio looper software.

Choosing a Library
Based on the observations above, I think it is clear JUCE will be our best bet for an audio library. Not only does it have better documentation, but it also gives us a head start in designing a user interface. Superpowered seems more than capable, but the startup time and lack of documentation would make it more difficult to work with.