1. produkty
  2.   Zvuk
  3.   C++
  4.   JUCE
 
  

Open source C++ knihovna pro audio aplikace & Plug-ins

Bezplatné C++ API pro audio aplikace a pluginy. Naučte se, jak vytvářet multiplatformní desktopové, mobilní a audio plugin aplikace s naším průvodcem klíčovými funkcemi a ukázkovým kódem.

Co je JUCE?

Moderní audio software, jako jsou syntezátory, digitální audio pracovní stanice (DAW) a nástroje pro zpracování zvuku, vyžadují efektivní frameworky, které zjednodušují složité úkoly audio programování. Jedním z nejrozšířenějších frameworků v odvětví vývoje audio je JUCE, open-source knihovna C++, navržená pro tvorbu multiplatformních audio aplikací a pluginů. Poskytuje vývojářům kompletní sadu nástrojů pro zpracování audia, vývoj pluginů, tvorbu GUI a integraci hardwaru. Umožňuje vývojářům napsat kód jednou a nasadit aplikace na více platformách, včetně Windows, macOS, Linux, iOS a Android.

JUCE (Jules’ Utility Class Extensions) je open-source aplikační framework v C++, který se používá k tvorbě desktopových a mobilních aplikací, zejména audio softwaru a pluginů. Poskytuje znovupoužitelné moduly, které zjednodušují úkoly jako zpracování audia, komunikaci MIDI, tvorbu GUI, vývoj pluginů, správu souborů a síťování a podobně. JUCE je široce používán vývojáři a společnostmi zabývajícími se audio softwarem k tvorbě VST, VST3, AU, AUv3, AAX a LV2 pluginů, stejně jako samostatných aplikací. Významně snižuje složitost tvorby audio aplikací. Místo psaní platformně specifického kódu pro každý operační systém mohou vývojáři použít jednotné API JUCE k tvorbě multiplatformního softwaru.

Previous Next

Začínáme s JUCE

Nejjednodušší způsob instalace JUCE je pomocí GitHubu. Použijte prosím následující příkaz pro kompletní instalaci.

Instalovat JUCE z NuGet

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

Instalovat JUCE pomocí CMake

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

Zpracování audia a podpora DSP

Open source JUCE poskytuje vestavěné moduly pro digitální zpracování signálu (DSP), což vývojářům umožňuje vytvářet audio efekty, syntezátory a zvukové procesory. Framework zahrnuje nástroje pro filtry, oscilátory, FFT analýzu a zpracování audia v reálném čase. To činí JUCE ideálním pro tvorbu nástrojů pro hudební produkci a pluginů audio efektů. Zde je příklad kódu zpracovávajícího audio buffer, který snižuje amplitudu každého vzorku. Takové operace se běžně používají k implementaci řízení zisku nebo audio efektů.

Jak zpracovat audio buffer a snížit amplitudu pomocí 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; // snížit hlasitost } } 

Vývoj audio pluginů pomocí C++ API

Knihovna JUCE zjednodušuje tvorbu profesionálních audio pluginů. Vývojáři mohou vytvářet pluginy kompatibilní s hlavními audio standardy jako VST, VST3, AU, AUv3, AAX a LV2 pomocí jediného frameworku. Tato funkce umožňuje vývojářům distribuovat své pluginy napříč mnoha DAW bez nutnosti přepisovat kód. Kód ukazuje jednoduchý audio plugin, který snižuje zesílení signálu o 20 %. Ve skutečných projektech mohou vývojáři přidávat parametry, automatizaci a složité DSP algoritmy.

Jak vytvořit jednoduchý audio plugin pomocí C++ API?

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

Multiplatformní vývoj

Jednou z nejvýkonnějších funkcí JUCE je schopnost vytvářet aplikace pro více platforem pomocí jediného C++ kódu. Vývojáři mohou vytvářet software, který běží na Windows, macOS, Linuxu, iOS a Androidu, aniž by přepisovali kód specifický pro platformu. To dramaticky snižuje dobu vývoje a zajišťuje konzistentní chování napříč operačními systémy. Následující příklad vytváří jednoduchou JUCE aplikaci, která zobrazuje dialogové okno. Protože JUCE zajišťuje abstrakci platformy, stejný kód funguje na více operačních systémech.

Jak vytvořit multiplatformní aplikace JUCE pomocí 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 aplikace", "Ahoj z multiplatformní aplikace JUCE!"); }

void shutdown() override {} };

START_JUCE_APPLICATION (HelloWorld) 

Integrace MIDI a audio zařízení

JUCE také obsahuje API pro interakci s audio zařízeními a MIDI kontroléry. Vývojáři mohou přes framework přímo přistupovat k mikrofonům, reproduktorům, MIDI klávesnicím a dalšímu hardwaru. To je klíčové pro aplikace jako syntezátory, DAW a software pro živé vystoupení. Následující kód naslouchá příchozím MIDI zprávám a vypisuje číslo noty vždy, když je stisknuta MIDI klávesa.

Jak naslouchat příchozím MIDI zprávám pomocí C++ API?

 void handleIncomingMidiMessage(juce::MidiInput*, const juce::MidiMessage& message) { if (message.isNoteOn()) { int note = message.getNoteNumber(); juce::Logger::writeToLog(\"Nota zapnuta: \" + juce::String(note)); } } 
 Čeština