Bibliothèque C++ open source pour les applications audio et les plug-ins

API C++ gratuite pour les applications audio et les plug-ins. Apprenez comment créer des applications de bureau, mobiles et des plug-ins audio multiplateformes grâce à notre guide des fonctionnalités clés et des exemples de code.

Qu'est-ce que JUCE ?

Les logiciels audio modernes tels que les synthétiseurs, les stations de travail audio numériques (DAW) et les outils de traitement du son nécessitent des cadres efficaces qui simplifient les tâches complexes de programmation audio. L'un des cadres les plus largement utilisés dans l'industrie du développement audio est JUCE, une bibliothèque C++ open source conçue pour créer des applications et des plugins audio multiplateformes. Elle fournit aux développeurs une boîte à outils complète pour le traitement audio, le développement de plugins, la création d'interfaces graphiques et l'intégration matérielle. Elle permet aux développeurs d'écrire le code une seule fois et de déployer les applications sur plusieurs plateformes, notamment Windows, macOS, Linux, iOS et Android.

JUCE (Jules’ Utility Class Extensions) est un cadre d'application C++ open source utilisé pour créer des applications de bureau et mobiles, en particulier des logiciels audio et des plugins. Il fournit des modules réutilisables qui simplifient des tâches telles que le traitement audio, la communication MIDI, la création d'interfaces graphiques, le développement de plugins, la gestion de fichiers et le réseau, etc. JUCE est largement utilisé par les développeurs et les entreprises de logiciels audio pour créer des plugins VST, VST3, AU, AUv3, AAX et LV2, ainsi que des applications autonomes. Il réduit considérablement la complexité de la création d'applications audio. Au lieu d'écrire du code spécifique à chaque plateforme, les développeurs peuvent utiliser l'API unifiée de JUCE pour développer des logiciels multiplateformes.

Previous Next

Commencer avec JUCE

Le moyen le plus simple d'installer JUCE est d'utiliser GitHub. Veuillez utiliser la commande suivante pour une installation complète.

Installer JUCE depuis NuGet

 git clone https://github.com/juce-framework/JUCE.git 

Installer JUCE via CMake

 cd JUCE cmake . -B build cmake --build build 

Traitement audio et prise en charge du DSP

Le JUCE open source fournit des modules intégrés pour le traitement numérique du signal (DSP), permettant aux développeurs de créer des effets audio, des synthétiseurs et des processeurs de son. Le framework inclut des outils pour les filtres, les oscillateurs, l'analyse FFT et le traitement audio en temps réel. Cela rend JUCE idéal pour créer des outils de production musicale et des plugins d'effets audio. Voici un exemple de code de traitement d'un tampon audio qui réduit l'amplitude de chaque échantillon. De telles opérations sont couramment utilisées pour implémenter le contrôle du gain ou des effets audio.

Comment traiter un tampon audio et réduire l'amplitude via l'API C++ ?

 void processBlock(juce::AudioBuffer& buffer) { for (int channel = 0; channel < buffer.getNumChannels(); ++channel) { auto* samples = buffer.getWritePointer(channel);

for (int i = 0; i < buffer.getNumSamples(); ++i) samples[i] *= 0.5f; // réduire le volume } } 

Développement de plugins audio via l'API C++

La bibliothèque JUCE simplifie la création de plugins audio professionnels. Les développeurs peuvent créer des plugins compatibles avec les principaux standards audio tels que VST, VST3, AU, AUv3, AAX et LV2 en utilisant un seul framework. Cette fonctionnalité permet aux développeurs de distribuer leurs plugins sur de nombreuses stations de travail audio (DAW) sans réécrire le code. Le code montre un plugin audio simple qui réduit le gain du signal de 20 %. Dans les projets réels, les développeurs peuvent ajouter des paramètres, de l'automatisation et des algorithmes DSP complexes.

Comment créer un plugin audio simple via l'API C++ ?

 class GainProcessor : public juce::AudioProcessor { public: void processBlock(juce::AudioBuffer& buffer, juce::MidiBuffer&) override { buffer.applyGain(0.8f); } }; 

Développement multiplateforme

L'une des fonctionnalités les plus puissantes de JUCE est sa capacité à créer des applications pour plusieurs plateformes en utilisant une seule base de code C++. Les développeurs peuvent créer des logiciels qui fonctionnent sous Windows, macOS, Linux, iOS et Android sans réécrire de code spécifique à chaque plateforme. Cela réduit considérablement le temps de développement et garantit un comportement cohérent sur tous les systèmes d'exploitation. L'exemple suivant crée une application JUCE simple qui affiche une fenêtre de dialogue. Comme JUCE gère l'abstraction de la plateforme, le même code fonctionne sur plusieurs systèmes d'exploitation.

Comment créer des applications JUCE multiplateformes via C++ ?


#include 

class HelloWorld  : public juce::JUCEApplication { public: const juce::String getApplicationName() override { return \"Démo JUCE\"; } const juce::String getApplicationVersion() override { return \"1.0\"; }

void initialise (const juce::String&) override { juce::AlertWindow::showMessageBoxAsync( juce::AlertWindow::InfoIcon, \"Application JUCE\", \"Bonjour depuis une application JUCE multiplateforme !\"); }

void shutdown() override {} };
START_JUCE_APPLICATION (HelloWorld)

Intégration MIDI et périphériques audio

JUCE inclut également des API pour interagir avec les périphériques audio et les contrôleurs MIDI. Les développeurs peuvent accéder aux microphones, haut-parleurs, claviers MIDI et autres matériels directement via le framework. Cela est essentiel pour des applications telles que les synthétiseurs, les stations de travail audio (DAW) et les logiciels de performance en direct. Le code suivant écoute les messages MIDI entrants et affiche le numéro de note chaque fois qu'une touche MIDI est enfoncée.

Comment écouter les messages MIDI entrants via l'API C++ ?

 void handleIncomingMidiMessage(juce::MidiInput*, const juce::MidiMessage& message) { if (message.isNoteOn()) { int note = message.getNoteNumber(); juce::Logger::writeToLog("Note On: " + juce::String(note)); } } 
 Français