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

Nemokama C++ API garso sintezei ir skaitmeniniam signalo apdorojimui

Vyriausia atviro kodo C++ biblioteka STK (Synthesis ToolKit) suteikia programinės įrangos kūrėjams galimybę atlikti garso sintezę ir skaitmeninį signalo apdorojimą. Atraskite jos pagrindines savybes, realaus laiko garso galimybes ir praktinius kodo pavyzdžius kūrėjams.

Kas yra STK (Synthesis ToolKit)?

Synthesis ToolKit C++ (STK) yra prestižinė atviro kodo biblioteka, skirta garso signalo apdorojimui ir algoritminiam muzikos sintezei. Sukurtas Stanfordo universiteto CCRMA, ji suteikia kūrėjams patikimą C++ klasių rinkinį, supaprastinantį sudėtingos garso programinės įrangos kūrimą. Skirtingai nuo monolitinių programų, STK yra vienetų generatorių rinkinys – moduliniai statybiniai blokai, leidžiantys greitai kurti sintezatorius, efektų procesorius ir muzikos instrumentus. STK biblioteka yra vertinga kūrėjams, dirbantiems su skaitmeniniais muzikos instrumentais, garso efektų programine įranga, žaidimų garso varikliais, garso sintezės tyrimais, švietimo DSP projektais ir pan.

Synthesis ToolKit C++ (STK) yra atviro kodo C++ biblioteka, teikianti pakartotinai naudojamas klases garso signalo apdorojimui, skaitmeninei sintezei ir muzikos instrumentų modeliui. Ji ypač naudinga dėl akcento į perkeliamumą ir paprastumą naudoti. Ji apsaugo kūrėjus nuo žemo lygio sudėtingumo, susijusio su kryžminės platformos garso tvarkyklėmis ir MIDI valdymu, leidžiant jiems susitelkti į kūrybinius garso dizaino aspektus. Nesvarbu, ar kuriate profesionalų įskiepį, ar švietimo įrankį, STK siūlo stabilumą ir lankstumą, reikalingus aukštos kokybės realaus laiko garsui. Skirtingai nuo didelių garso sistemų, STK išlaiko architektūrą paprastą ir skaidrią. Kūrėjai lengvai supranta, kaip veikia garso algoritmai, ir gali juos modifikuoti savo eksperimentams. Ji taip pat suteikia paruoštus instrumentų modelius, tokius kaip fleita, klarnetas ir plauktų stygų simuliacijos, todėl tai puikus pradinis taškas kuriant programinę sintezatorių.

Previous Next

Pradžia su STK

Norėdami atlikti pilną įdiegimą, naudokite šią komandą.

Įdiekite STK iš GitHub

 git clone https://github.com/thestk/stk.git

Realio laiko garso sintezė

Viena iš galingiausių STK galimybių yra realaus laiko garso generavimas. Kūrėjai gali dinamiškai generuoti garso signalus programos vykdymo metu, o ne pasikliauti iš anksto įrašytais pavyzdžiais. Tai būtina tokioms programoms kaip skaitmeniniai sintezatoriai, muzikos gamybos įrankiai ir tiesioginės garso atlikimo programinė įranga. STK suteikia efektyvias apdorojimo funkcijas, kurios nuolat generuoja garso kadrus, išlaikydamos mažą delsą. Dėl šios galimybės STK dažnai naudojama tyrimų ir muzikos technologijų aplinkoje, kur reikalingas greitas garso sintezės atsakas. Čia pateikiamas paprastas pavyzdys, demonstruojantis, kaip STK gali programiškai generuoti garsą.

Kaip programiškai generuoti garsą naudojant C++ biblioteką?

#include \"SineWave.h\"
#include "RtAudio.h"

int main() { stk::SineWave oscillator; oscillator.setFrequency(440.0); // A4 nata

for (int i = 0; i < 100; i++) { double sample = oscillator.tick(); std::cout << sample << std::endl; }

return 0; } 

Fizinio modelio instrumentai

Atviro kodo STK biblioteka apima įmontuotas klases, kurios naudojant fizinio modeliavimo algoritmus imituoja tikrus muzikinius instrumentus. Šie modeliai atkuria, kaip instrumentai veikia fiziniame pasaulyje. Pavyzdžiui, fleita, klarnetas, mandolina ir lūšų stygų instrumentai. Fizinis modeliavimas yra naudingas, nes leidžia kūrėjams valdyti išraiškingus parametrus, tokius kaip kvėpavimo slėgis, lanko jėga ar stygų vibracija.

Kaip sukurti realistiškus skaitmeninius instrumentus naudojant STK biblioteką?

#include "Clarinet.h"

int main() { stk::Clarinet clarinet;
    
clarinet.noteOn(440.0, 0.8);

for(int i = 0; i < 200; i++) { double sound = clarinet.tick(); std::cout << sound << std::endl; }

clarinet.noteOff(0.5);

return 0; }  

Įmontuota garso ir MIDI palaikymas

STK biblioteka taip pat apima realaus laiko garso ir MIDI įvesties/išvesties palaikymą. Tai leidžia programoms bendrauti su išoriniais įrenginiais, tokiais kaip MIDI klaviatūros ir garso sąsajos. Su MIDI integracija kūrėjai gali realiu laiku valdyti sintezės parametrus, todėl įmanoma kurti programinės įrangos sintezatorius, interaktyvias muzikos programas, tiesioginės atlikimo įrankius ir pan. Žemiau pateiktas pavyzdys sukuria programą, kuri klausosi gaunamų MIDI pranešimų.

Kaip klausytis ir saugoti MIDI žinutes C++ programose?

#include "RtMidi.h"

int main() { RtMidiIn midi;

if (midi.getPortCount() == 0) { std::cout << "Nėra prieinamų MIDI prievadų!" << std::endl; return 0; }

midi.openPort(0);

std::cout << "Laukiama MIDI įvesties..." << std::endl;

while (true) { std::vector message; midi.getMessage(&message);

if (!message.empty()) { std::cout << "Gauta MIDI žinutė!" << std::endl; } }

return 0; }

 

Moduliniai vienetų generatoriai naudojant C++

The STK biblioteka laikosi modulios dizaino filosofijos, siūlydama platų "vienetų generatoriai" (UGens) asortimentą. Tai apima osciliatorius, filtrus, apgaubimus ir delsos efektus, kuriuos galima sujungti kaip virtualų modulį sintezatorių. Ši detalizacija suteikia kūrėjams visišką kontrolę signalų grandinėje. Kadangi kiekviena klasė sukurta efektyviai apdoroti garso kadrus, galite sukurti viską nuo paprastų sinusoidinių generatorių iki sudėtingų, kelių etapų granuliarinės sintezės variklių, tiesiog prijungdami skirtingus STK objektus.

 Lietuvių