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

Avoimen lähdekoodin C++-kirjasto ääni‑sovelluksille ja -lisäosille

Ilmainen C++-API ääni‑sovelluksille ja -lisäosille. Opi, miten rakentaa monialustaisia työpöytä-, mobiili- ja äänilisäosasovelluksia oppaamme avulla, jossa esitellään keskeisiä ominaisuuksia ja koodiesimerkkejä.

Mikä on JUCE?

Nykyaikaiset ääniohjelmistot, kuten syntetisaattorit, digitaaliset äänityöasemat (DAW:t) ja äänenkäsittelytyökalut, vaativat tehokkaita kehyksiä, jotka yksinkertaistavat monimutkaisia ääniohjelmointitehtäviä. Yksi äänikehitysalalla laajimmin käytetyistä kehyksistä on JUCE, avoimen lähdekoodin C++-kirjasto, joka on suunniteltu monialustaisien äänisovellusten ja -plugineiden rakentamiseen. Se tarjoaa kehittäjille täydellisen työkalupaketin ääniprosessointiin, plugineiden kehittämiseen, käyttöliittymän luomiseen ja laitteistointegratioon. Se mahdollistaa koodin kirjoittamisen kerran ja sovellusten käyttöönoton useilla alustoilla, mukaan lukien Windows, macOS, Linux, iOS ja Android.

JUCE (Jules’ Utility Class Extensions) on avoimen lähdekoodin C++-sovelluskehys, jota käytetään työpöytä- ja mobiilisovellusten, erityisesti ääniohjelmistojen ja -plugineiden, rakentamiseen. Se tarjoaa uudelleenkäytettäviä moduuleja, jotka yksinkertaistavat tehtäviä kuten ääniprosessointi, MIDI-viestintä, käyttöliittymän luominen, plugineiden kehitys, tiedostojen käsittely ja verkottuminen ym. JUCEa käyttävät laajasti kehittäjät ja ääniohjelmistoyritykset VST-, VST3-, AU-, AUv3-, AAX- ja LV2-plugineiden sekä itsenäisten sovellusten rakentamiseen. Se vähentää merkittävästi äänisovellusten rakentamisen monimutkaisuutta. Sen sijaan, että kirjoitettaisiin alusta‑kohtainen koodi jokaiselle käyttöjärjestelmälle, kehittäjät voivat käyttää JUCE:n yhtenäistä API:a monialustaisen ohjelmiston luomiseen.

Previous Next

JUCE:n aloitus

Helpoin tapa asentaa JUCE on käyttää GitHubia. Käytä seuraavaa komentoa täydelliseen asennukseen.

Asenna JUCE NuGetista

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

Asenna JUCE CMake:n kautta

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

Äänikäsittely ja DSP-tuki

Avoimen lähdekoodin JUCE tarjoaa sisäänrakennettuja moduuleja digitaaliseen signaalinkäsittelyyn (DSP), mikä mahdollistaa kehittäjien rakentaa ääniefektejä, syntetisaattoreita ja ääniprosessoreita. Kehys sisältää työkaluja suodattimille, oskillaattoreille, FFT-analyysille ja reaaliaikaiselle äänikäsittelylle. Tämä tekee JUCE:stä ihanteellisen musiikin tuotantotyökalujen ja ääniefektiplugien luomiseen. Tässä on esimerkki koodista, joka käsittelee äänipuskuri ja vähentää jokaisen näytteen amplitudia. Tällaisia operaatioita käytetään yleisesti vahvistuksen säätämiseen tai ääniefektien toteuttamiseen.

Kuinka prosessoida äänipuskuri ja vähentää amplitudia C++-rajapinnan avulla?

 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; // vähennä äänenvoimakkuutta } } 

Ääniliitännäisten kehittäminen C++-rajapinnan kautta

JUCE-kirjasto yksinkertaistaa ammattimaisten ääniplugien luomista. Kehittäjät voivat rakentaa plugineja, jotka ovat yhteensopivia suurten äänistandardien, kuten VST, VST3, AU, AUv3, AAX ja LV2, kanssa käyttäen yhtä kehystä. Tämä ominaisuus mahdollistaa plugien jakelun moniin DAW-ohjelmiin ilman koodin uudelleenkirjoittamista. Koodi näyttää yksinkertaisen ääniplugin, joka vähentää signaalin vahvistusta 20 %. Todellisissa projekteissa kehittäjät voivat lisätä parametreja, automaatiota ja monimutkaisia DSP-algoritmeja.

Kuinka luoda yksinkertainen ääniplugini C++-rajapinnan avulla?

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

Monialustainen kehitys

Yksi JUCE:n voimakkaimmista ominaisuuksista on sen kyky rakentaa sovelluksia useille alustoille käyttäen yhtä C++-koodipohjaa. Kehittäjät voivat luoda ohjelmistoja, jotka toimivat Windowsissa, macOS:ssa, Linuxissa, iOS:ssa ja Androidissa ilman alusta‑kohtaisen koodin uudelleenkirjoittamista. Tämä lyhentää kehitysaikaa merkittävästi ja varmistaa yhdenmukaisen toiminnan eri käyttöjärjestelmissä. Seuraava esimerkki luo yksinkertaisen JUCE-sovelluksen, joka näyttää dialogi­ikkunan. Koska JUCE hoitaa alustan abstraktion, sama koodi toimii useilla käyttöjärjestelmillä.

Kuinka luoda monialustaisia JUCE-sovelluksia C++:n avulla?


#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-sovellus", "Hei monialustaisesta JUCE-sovelluksesta!"); }

void shutdown() override {} };

START_JUCE_APPLICATION (HelloWorld) 

MIDI- ja äänilaitteiden integrointi

JUCE sisältää myös API-rajapintoja äänilaitteiden ja MIDI‑ohjaimien kanssa vuorovaikutukseen. Kehittäjät voivat käyttää mikrofoneja, kaiuttimia, MIDI‑näppäimistöjä ja muuta laitteistoa suoraan kehyksen kautta. Tämä on kriittistä sovelluksille, kuten syntetisaattoreille, DAW‑ohjelmille ja live‑esitysohjelmistolle. Seuraava koodi kuuntelee saapuvia MIDI‑viestejä ja tulostaa nuotin numeron aina, kun MIDI‑näppäintä painetaan.

Kuinka kuunnella saapuvia MIDI-viestejä C++-rajapinnan avulla?

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