1. Produktai
  2.   Garsas
  3.   C++
  4.   JUCE
 
  

Atviro kodo C++ biblioteka garso programoms & įskiepiams

Nemokama C++ API garso programoms ir įskiepiams. Sužinokite, kaip kurti kryžminės platformos darbalaukio, mobilias ir garso įskiepių programas su mūsų vadovu apie pagrindines funkcijas ir kodo pavyzdžius.

Kas yra JUCE?

Moderni garso programinė įranga, tokia kaip sintezatoriai, skaitmeniniai garso darbo stotys (DAW) ir garso apdorojimo įrankiai, reikalauja efektyvių sistemų, supaprastinančių sudėtingas garso programavimo užduotis. Viena plačiausiai naudojamų sistemų garso kūrimo pramonėje yra JUCE – atviro kodo C++ biblioteka, skirta kurti kryžminės platformos garso programoms ir įskiepiams. Ji suteikia kūrėjams visapusišką įrankių rinkinį garso apdorojimui, įskiepių kūrimui, GUI kūrimui ir aparatūros integracijai. Ji leidžia kūrėjams parašyti kodą vieną kartą ir paskleisti programas keliomis platformomis, įskaitant Windows, macOS, Linux, iOS ir Android.

JUCE (Jules’ Utility Class Extensions) yra atviro kodo C++ programų struktūra, naudojama kurti darbalaukio ir mobilias programas, ypač garso programinę įrangą ir įskiepius. Ji suteikia pakartotinai naudojamus modulius, supaprastinančius užduotis, tokias kaip garso apdorojimas, MIDI komunikacija, GUI kūrimas, įskiepių kūrimas, failų tvarkymas ir tinklų sąveika ir pan. JUCE plačiai naudojama kūrėjų ir garso programinės įrangos įmonių, kuriant VST, VST3, AU, AUv3, AAX ir LV2 įskiepius, taip pat atskiras programas. Ji žymiai sumažina garso programų kūrimo sudėtingumą. Vietoj to, kad rašytų platformai specifinį kodą kiekvienai operacinei sistemai, kūrėjai gali naudoti JUCE vieningą API, kad sukurtų kryžminės platformos programinę įrangą.

Previous Next

Pradžia su JUCE

Paprasčiausias būdas įdiegti JUCE yra naudoti GitHub. Prašome naudoti šią komandą pilnam įdiegimui.

Įdiekite JUCE iš NuGet

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

Įdiekite JUCE per CMake

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

Garso apdorojimas ir DSP palaikymas

Atviro kodo JUCE suteikia integruotus modulius skaitmeninei signalo apdorojimui (DSP), leidžiančius kūrėjams kurti garso efektus, sintezatorius ir garso procesorius. Sistema apima įrankius filtrams, osciliatoriams, FFT analizei ir realaus laiko garso apdorojimui. Tai daro JUCE idealiu muzikos gamybos įrankių ir garso efektų įskiepių kūrimui. Čia pateiktas kodo pavyzdys, apdorojantis garso buferį ir sumažinantis kiekvieno mėginių amplitudę. Tokios operacijos dažnai naudojamos įgyvendinti stiprumo kontrolę arba garso efektus.

Kaip apdoroti garso buferį ir sumažinti amplitudę naudojant 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; // sumažinti garsumą } } 

Garso įskiepių kūrimas per C++ API

JUCE biblioteka supaprastina profesionalių garso įskiepių kūrimą. Kūrėjai gali kurti įskiepius, suderinamus su pagrindiniais garso standartais, tokiais kaip VST, VST3, AU, AUv3, AAX ir LV2, naudodami vieną sistemą. Ši funkcija leidžia kūrėjams platinti savo įskiepius daugybėje DAW be kodo perrašymo. Kode parodytas paprastas garso įskiepis, sumažinantis signalo stiprumą 20 %. Realiose projekto situacijose kūrėjai gali pridėti parametrus, automatizavimą ir sudėtingus DSP algoritmus.

Kaip sukurti paprastą garso įskiepį naudojant C++ API?

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

Kryžminės platformos kūrimas

Viena iš galingiausių JUCE savybių yra galimybė kurti programas kelioms platformoms naudojant vieną C++ kodo bazę. Kūrėjai gali kurti programinę įrangą, veikiančią Windows, macOS, Linux, iOS ir Android be platformai specifinio kodo perrašymo. Tai žymiai sumažina kūrimo laiką ir užtikrina nuoseklų elgesį visose operacinėse sistemose. Toliau pateiktas pavyzdys sukuria paprastą JUCE programą, kuri rodo dialogo langą. Kadangi JUCE tvarko platformų abstrakciją, tas pats kodas veikia keliomis operacinėmis sistemomis.

Kaip sukurti kelių platformų JUCE programėles naudojant 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 programa", "Sveiki iš daugiaplatformės JUCE programos!"); }

void shutdown() override {} };

START_JUCE_APPLICATION (HelloWorld) 

MIDI ir garso įrenginių integracija

JUCE taip pat turi API sąsajas, skirtas sąveikai su garso įrenginiais ir MIDI valdikliais. Kūrėjai gali tiesiogiai per sistemą pasiekti mikrofonus, garsiakalbius, MIDI klaviatūras ir kitą aparatūrą. Tai yra esminė savybė programoms, tokioms kaip sintezatoriai, DAW ir tiesioginės atlikimo programinė įranga. Žemiau esantis kodas klausosi gaunamų MIDI žinučių ir išveda natų numerį, kai paspaudžiamas MIDI klavišas.

Kaip klausytis gaunamų MIDI žinučių naudojant C++ API?

 void handleIncomingMidiMessage(juce::MidiInput*, const juce::MidiMessage& message) { if (message.isNoteOn()) { int note = message.getNoteNumber(); juce::Logger::writeToLog(\"Nota įjungta: \" + juce::String(note)); } } 
 Lietuvių