To provide a framework that provides a simple drop-in component system and handles any non-creative work consistently.
This framework is built on the JUCE audio plugin framework, which provides all of the tools for making the actual audio plugin.
While JUCE is a great framework, I found that there are some tasks which are repetitive (such as state maintenance), and plenty things that could go wrong in making a JUCE application. This framework is a solution to a decoupled, organized, and uniform framework that will allow even giant apps to be built, while maintaining maintainability and simplicity.
This is super alpha and definitely not considered production yet, although it is already useful.
The framework contains 4 main types of entities.
- GUI Components
- Midi/Audio Processors
- States
- State Modifiers
With these four entities, any app should be constructable. The framework aims to handle everything that is not specifically creating a GUI, running audio processes, referring to states, and modifying states.
The NoneApp folder contains a JUCE project that is built using this framework. It is a simple FM modulator, and uses every component of the framework. It generates a sine using a state that contains the frequency information. A state modifier modulates the generator's state, by way of a GUI rotary slider component. This results in a synthesizer with a controllable frequency modulator.
The juce_modules
folder contains the modules that this framework used in development.
- To create a new app, just copy and rename the NoneApp. You'll need Projucer from JUCE to open the project file.
- You'll need to copy the folder
modules/none_app
. That's the starting project. You will edit this module to configure the app. Consider renaming the namespace to your desire. - Include your module in the JUCE project, by adding a module in Projucer.
- If you renamed your namespace, you'll need to change the app's variable
declaration in
PluginProcessor.h
.
- Automation is non-functional in Fl Studio. The parameter only updates on play.
This framework contains two different licenses. This repository contains JUCE module code
for convenience and as a way of preserving the framework's integrity.
A licence document is included in the juce_modules
folder which details the JUCE license.
Aside from JUCE, this library is licensed with the MIT license, making it very free.