JUCE (Jules’ Utility Class Extensions) ist ein plattformübergreifendes C++ Framework zur Entwicklung von Audioanwendungen, Plug-ins, grafischen Benutzeroberflächen (GUIs) und anderen Multimediaprogrammen. Es wurde ursprünglich von Jules Storer entwickelt und ist heute ein wichtiger Bestandteil der Musiktechnologie-Industrie.
Es bietet umfangreiche Unterstützung für:
* [[VST|VST, VST3]], [[AU]], [[AAX]] und [[LV2]] Plug-in Formate
* Echtzeit-Audioverarbeitung
* MIDI-Verarbeitung
* GUI-Komponenten
* OpenGL-Unterstützung
* Netzwerk- und Dateioperationen
* Unit Testing
* WebView (in bestimmten Plattformen)
* Drag & Drop, Layoutsysteme, Skins, LookAndFeel
JUCE wird von zahlreichen bekannten Firmen und Projekten verwendet, darunter:
* Ableton
* Arturia
* Native Instruments
* KORG
* Focusrite
* iZotope
* Tracktion Engine
* Surge Synth Team (z. B. Surge XT)
=====Installation=====
Downloads auf der [[https://juce.com/download/|Website]].
Selbst kompilieren
git clone https://github.com/juce-framework/JUCE.git
cd JUCE
mkdir build && cd build
cmake ..
=====Code=====
class MyAudioProcessor : public juce::AudioProcessor {
public:
MyAudioProcessor() {}
~MyAudioProcessor() override {}
void prepareToPlay(double sampleRate, int samplesPerBlock) override {}
void releaseResources() override {}
void processBlock(juce::AudioBuffer& buffer, juce::MidiBuffer&) override {
for (int channel = 0; channel < buffer.getNumChannels(); ++channel)
buffer.clear(channel, 0, buffer.getNumSamples());
}
// Weitere notwendige Überschreibungen:
juce::AudioProcessorEditor* createEditor() override { return nullptr; }
bool hasEditor() const override { return false; }
const juce::String getName() const override { return "MyPlugin"; }
// Weitere Metadaten...
};
=====Links=====
* [[https://juce.com/|Homepage]]
* [[https://www.youtube.com/watch?v=G4A5T3y5bJM|FreeCodeCamp Tutorial | Youtube]]