1. Produkty
  2.   Audio
  3.   C++
  4.   JUCE
 
  

Otwarta biblioteka C++ dla aplikacji audio i wtyczek

Darmowe API C++ dla aplikacji audio i wtyczek. Dowiedz się, jak tworzyć aplikacje wieloplatformowe na komputery stacjonarne, urządzenia mobilne i wtyczki audio, korzystając z naszego przewodnika po kluczowych funkcjach i przykładach kodu.

Czym jest JUCE?

Nowoczesne oprogramowanie audio, takie jak syntezatory, cyfrowe stacje robocze (DAW) i narzędzia do przetwarzania dźwięku, wymaga wydajnych frameworków upraszczających złożone zadania programowania audio. Jednym z najczęściej używanych frameworków w branży tworzenia oprogramowania audio jest JUCE, otwarto‑źródłowa biblioteka C++ przeznaczona do budowania wieloplatformowych aplikacji i wtyczek audio. Dostarcza programistom kompletny zestaw narzędzi do przetwarzania dźwięku, tworzenia wtyczek, tworzenia interfejsów GUI oraz integracji sprzętowej. Umożliwia programistom napisanie kodu raz i wdrożenie aplikacji na wielu platformach, w tym Windows, macOS, Linux, iOS i Android.

JUCE (Jules’ Utility Class Extensions) jest otwarto‑źródłowym frameworkiem aplikacji C++ używanym do budowania aplikacji desktopowych i mobilnych, szczególnie oprogramowania audio i wtyczek. Dostarcza moduły wielokrotnego użytku, które upraszczają zadania takie jak przetwarzanie dźwięku, komunikacja MIDI, tworzenie interfejsów GUI, rozwój wtyczek, obsługa plików i sieci oraz inne. JUCE jest szeroko stosowane przez programistów i firmy tworzące oprogramowanie audio do budowy wtyczek VST, VST3, AU, AUv3, AAX i LV2, a także aplikacji samodzielnych. Znacznie zmniejsza złożoność tworzenia aplikacji audio. Zamiast pisać kod specyficzny dla każdej platformy, programiści mogą korzystać ze zunifikowanego API JUCE, aby tworzyć oprogramowanie wieloplatformowe.

Previous Next

Rozpoczęcie pracy z JUCE

Najłatwiejszy sposób instalacji JUCE to użycie GitHub. Proszę użyć następującego polecenia do pełnej instalacji.

Zainstaluj JUCE z NuGet

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

Zainstaluj JUCE za pomocą CMake

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

Przetwarzanie audio i wsparcie DSP

Open source'owy JUCE zapewnia wbudowane moduły do cyfrowego przetwarzania sygnału (DSP), umożliwiając programistom tworzenie efektów dźwiękowych, syntezatorów i procesorów dźwięku. Framework zawiera narzędzia do filtrów, oscylatorów, analizy FFT oraz przetwarzania dźwięku w czasie rzeczywistym. Dzięki temu JUCE jest idealny do tworzenia narzędzi do produkcji muzyki i wtyczek efektów audio. Poniżej znajduje się przykład kodu przetwarzającego bufor audio i zmniejszającego amplitudę każdej próbki. Takie operacje są powszechnie używane do implementacji kontroli wzmocnienia lub efektów dźwiękowych.

Jak przetworzyć bufor audio i zmniejszyć amplitudę za pomocą 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; // zmniejsz głośność } } 

Tworzenie wtyczek audio za pomocą API C++

Biblioteka JUCE upraszcza tworzenie profesjonalnych wtyczek audio. Programiści mogą tworzyć wtyczki kompatybilne z głównymi standardami audio, takimi jak VST, VST3, AU, AUv3, AAX i LV2, używając jednego frameworka. Ta funkcja pozwala deweloperom dystrybuować swoje wtyczki w wielu DAW‑ach bez konieczności przepisywania kodu. Przykładowy kod przedstawia prostą wtyczkę audio, która zmniejsza wzmocnienie sygnału o 20 %. W rzeczywistych projektach programiści mogą dodawać parametry, automatyzację i złożone algorytmy DSP.

Jak stworzyć prostą wtyczkę audio za pomocą API C++?

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

Rozwój wieloplatformowy

Jedną z najpotężniejszych funkcji JUCE jest możliwość tworzenia aplikacji na wiele platform przy użyciu jednego kodu C++. Programiści mogą tworzyć oprogramowanie działające na Windows, macOS, Linux, iOS i Androidzie bez przepisywania kodu specyficznego dla platformy. To znacząco skraca czas rozwoju i zapewnia spójne zachowanie w różnych systemach operacyjnych. Poniższy przykład tworzy prostą aplikację JUCE, która wyświetla okno dialogowe. Ponieważ JUCE obsługuje abstrakcję platform, ten sam kod działa na wielu systemach operacyjnych.

Jak stworzyć aplikacje JUCE wieloplatformowe za pomocą C++?


#include 

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

void initialise (const juce::String&) override { juce::AlertWindow::showMessageBoxAsync( juce::AlertWindow::InfoIcon, "Aplikacja JUCE", "Witaj w wieloplatformowej aplikacji JUCE!"); }

void shutdown() override {} };

START_JUCE_APPLICATION (HelloWorld) 

Integracja urządzeń MIDI i audio

JUCE zawiera także API do interakcji z urządzeniami audio i kontrolerami MIDI. Programiści mogą uzyskać dostęp do mikrofonów, głośników, klawiatur MIDI i innego sprzętu bezpośrednio poprzez framework. Jest to kluczowe dla aplikacji takich jak syntezatory, DAW‑y i oprogramowanie do występów na żywo. Poniższy kod nasłuchuje przychodzących komunikatów MIDI i wypisuje numer nuty za każdym razem, gdy naciśnięty zostanie klawisz MIDI.

Jak nasłuchiwać przychodzących komunikatów MIDI za pomocą API C++?

 void handleIncomingMidiMessage(juce::MidiInput*, const juce::MidiMessage& message) { if (message.isNoteOn()) { int note = message.getNoteNumber(); juce::Logger::writeToLog("Nuta włączona: " + juce::String(note)); } } 
 Polski