Creators shouldn't have to open an entire heavy-weight DAW (Digital Audio Workstation) to record new material for existing projects. Spark aims to eliminate friction in the music production process by enabling creators to easily browse through mixdowns and quickly capture inspired additions.
Final Release Demo & Reflection
If you are not a developer and would just like to use Spark, please see our User Documentation here.
For more in-depth project documentation, including team info, product description, use cases, requirements, team process, software architecture and design, click here.
File/Directory | Description |
---|---|
.prototypes/ |
Early experiments with JUCE. |
Source/ |
Top-level directory for Spark's source code. |
mixdowns-example/ |
An example folder holding mixdowns. For use in quickly testing Spark. |
Spark.jucer |
JUCE project configuration. Necessary for managing Spark through the Projucer. |
Spark is largely a JUCE-based project. Since JUCE is such a heavy framework, building and running Spark (as well as our prototypes) requires first setting up and getting a little familiar with JUCE and its project manager, Projucer. Follow this JUCE guide to do so. Once JUCE is installed, you can open a *.jucer
file using the Projucer to setup a project and open it in a supported IDE of your choice, from where you can easily build the project directly within the IDE.
If you don't want to build the project using an IDE (which is the recommended way for developers), you can also build this project using CMake with Ninja on all of Windows, Mac and Linux. We heavily recommend using FRUT to generate the CMakeLists.txt file for this project and following the instructions listed there.
Currently, our testing is done through a separate JUCE project, as the JUCE unit testing framework requires us to do so. The testing project's repository is located at: https://github.com/jaygrinols/Spark-Testing To create a new test in this repository: Using projucer, add a new header file. This header file you created will include your actual unit test. As per the JUCE UnitTest Class Documentation, initialize this header file with a class following this structure:
class MyTest : public UnitTest
{
public:
MyTest() : UnitTest ("Foobar testing") {}
void runTest() override
{
beginTest ("Part 1");
expect (myFoobar.doesSomething());
expect (myFoobar.doesSomethingElse());
beginTest ("Part 2");
expect (myOtherFoobar.doesSomething());
expect (myOtherFoobar.doesSomethingElse());
...etc..
}
};
However, unlike the documentation, instead of initializing a static instance of the class at the bottom of the file, follow these steps:
- Navigate to main.cpp of the Test Suite project
- Include your created header file in main.cpp
- Navigate to the comment that says "Add your tests here." in main.cpp
- Instantiate and run your test class here.
Then, simply build and run your project using your IDE of choice to run your tests.
In order for JUCE to access audio input devices, it needs to register and receive permission. To run and debug with audio input, enable Microphone Access for your specific project and exporter within the Projucer.
As stated in this JUCE tutorial, you should "always use The Projucer to create new files; never do so from your IDE (The Projucer would overwrite such changes the next time you save your project)."