1. Produkter
  2.   Lyd
  3.   C++
  4.   JUCE
 
  

Åpen kildekode C++‑bibliotek for lyd‑apper og plug‑ins

Gratis C++‑API for lyd‑apper og plug‑ins. Lær hvordan du bygger plattform‑uavhengige skrivebords‑, mobil‑ og lyd‑plugin‑apper med vår veiledning om nøkkelfunksjoner og kodeeksempler.

Hva er JUCE?

Moderne lydprogramvare som synthesizere, digitale lydarbeidsstasjoner (DAW-er) og lydbehandlingsverktøy krever effektive rammeverk som forenkler komplekse lydprogrammeringsoppgaver. Et av de mest brukte rammeverkene i lydutviklingsbransjen er JUCE, et åpen kildekode C++-bibliotek designet for å bygge kryssplattform lydapplikasjoner og -plugins. Det gir utviklere et komplett verktøysett for lydbehandling, plugin-utvikling, GUI-opprettelse og maskinvareintegrasjon. Det gjør det mulig for utviklere å skrive kode én gang og distribuere applikasjoner på flere plattformer, inkludert Windows, macOS, Linux, iOS og Android.

JUCE (Jules’ Utility Class Extensions) er et åpen kildekode C++-applikasjonsrammeverk som brukes til å bygge skrivebords- og mobilapplikasjoner, spesielt lydprogramvare og plugins. Det tilbyr gjenbrukbare moduler som forenkler oppgaver som lydbehandling, MIDI-kommunikasjon, GUI-opprettelse, plugin-utvikling, filhåndtering og nettverk, osv. JUCE brukes mye av utviklere og lydprogramvareselskaper til å bygge VST-, VST3-, AU-, AUv3-, AAX- og LV2-plugins, samt frittstående applikasjoner. Det reduserer betydelig kompleksiteten ved å bygge lydapplikasjoner. I stedet for å skrive plattformspesifikk kode for hvert operativsystem, kan utviklere bruke JUCEs samlede API for å bygge kryssplattformprogramvare.

Previous Next

Kom i gang med JUCE

Den enkleste måten å installere JUCE på er ved å bruke GitHub. Vennligst bruk følgende kommando for fullstendig installasjon.

Installer JUCE fra NuGet

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

Installer JUCE via CMake

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

Lydbehandling og DSP-støtte

Den åpne kildekoden JUCE tilbyr innebygde moduler for digital signalbehandling (DSP), som gjør det mulig for utviklere å bygge lydeffekter, synthesizere og lydprosessorer. Rammeverket inkluderer verktøy for filtre, oscillatorer, FFT-analyse og sanntids lydbehandling. Dette gjør JUCE ideelt for å lage musikkproduksjonsverktøy og lyd‑effekt‑plugins. Her er et kodeeksempel som behandler en lydbuffer og reduserer amplituden til hver prøve. Slike operasjoner brukes ofte til å implementere gain‑kontroll eller lydeffekter.

Hvordan behandle en lydbuffer og redusere amplituden via C++-API?

 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; // reduser volum } } 

Utvikling av lydplugins via C++ API

JUCE‑biblioteket forenkler opprettelsen av profesjonelle lyd‑plugins. Utviklere kan bygge plugins som er kompatible med de viktigste lydstandardene som VST, VST3, AU, AUv3, AAX og LV2 ved hjelp av ett enkelt rammeverk. Denne funksjonen gjør det mulig for utviklere å distribuere sine plugins til mange DAW‑er uten å måtte skrive om koden. Koden viser et enkelt lyd‑plugin som reduserer signalets gain med 20 %. I virkelige prosjekter kan utviklere legge til parametere, automatisering og komplekse DSP‑algoritmer.

Hvordan lage en enkel lydplugin via C++-API?

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

Tverrplattformutvikling

En av de mest kraftfulle funksjonene i JUCE er evnen til å bygge applikasjoner for flere plattformer ved å bruke en enkelt C++‑kodebase. Utviklere kan lage programvare som kjører på Windows, macOS, Linux, iOS og Android uten å måtte skrive om plattformspesifikk kode. Dette reduserer utviklingstiden dramatisk og sikrer konsistent oppførsel på tvers av operativsystemer. Følgende eksempel lager en enkel JUCE‑applikasjon som viser et dialogvindu. Siden JUCE håndterer plattformabstraksjonen, fungerer den samme koden på flere operativsystemer.

Hvordan lage kryssplattform JUCE-apper via C++?


#include 

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

void initialise (const juce::String&) override { juce::AlertWindow::showMessageBoxAsync( juce::AlertWindow::InfoIcon, "JUCE-app", "Hei fra en plattformuavhengig JUCE-applikasjon!"); }

void shutdown() override {} }

START_JUCE_APPLICATION (HelloWorld) 

MIDI- og lydenhetsintegrasjon

JUCE inkluderer også API‑er for å samhandle med lyd‑enheter og MIDI‑kontrollere. Utviklere kan få tilgang til mikrofoner, høyttalere, MIDI‑tastaturer og annen maskinvare direkte gjennom rammeverket. Dette er kritisk for applikasjoner som synthesizere, DAW‑er og programvare for live‑opptredener. Følgende kode lytter etter innkommende MIDI‑meldinger og skriver ut notenummeret hver gang en MIDI‑tast trykkes.

Hvordan lytte etter innkommende MIDI-meldinger via C++-API?

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