Il suono di sintesi Framework in C / C ++ / Objective-C?
-
12-09-2019 - |
Domanda
Ho cercato in rete ma non ho trovato nulla di interessante. Forse sto facendo qualcosa di sbagliato.
Sto cercando la sintesi del suono API scritto su C, C ++ o anche Objective-C, che può sintetizzare differenti tipi di onde, gli effetti sono opzionali.
Soluzione
Ecco una libreria completa / toolkit per FM (Frequency Modulation) sintesi:
Se avete tempo da perdere ... la creazione di sintesi del suono semplice da zero è in realtà uno sforzo divertente. Se si crea un piccolo buffer di 256 campioni di 16 bit che rappresentano sia un seno. un dente di sega, blocco o impulsi, è possibile copiare questi ad un audiobuffer vivo (ad esempio un piccolo tampone (per esempio 16kb)) che loop continuo. Rimanendo in vista del playposition, e costantemente riempire il buffer con nuovi valori, è possibile creare il soundoutput. È possibile utilizzare il piccolo buffer di combinare questi in modo interessante (più semplice è solo per aggiungere insieme (sintesi additiva)).
La frequenza del tono può essere manipolato utilizzando un passo di campionamento maggiore o minore attraverso i piccoli buffer. Ampiezza può essere manipolato, scalando i campioni prima della loro messa in buffer di uscita.
Grande divertimento a sperimentare con questo!
Se avete questo passaggio inchiodato, è possibile aggiungere effetti più sofisticati come filtri (passa-basso, passa-alto, ecc) ed effetti (riverberi, echi, ecc)
R
Altri suggerimenti
Hai guardato il toolkit di sintesi ( STK )? E 'in C ++ (non credo objC è il linguaggio giusto per la sintesi audio, in unità audio infatti, proprio modo di Apple di fare cose audio, tra cui generatori / filtri / effetti ... è in C ++).
STK funziona su Mac OS X, e iOS non è un problema (CoreAudio è supportato), ma sarà anche eseguito su Linux e Windows (suono diretto e ASIO), utilizzando RTAudio. E 'davvero ben fatto e leggeri, questi ragazzi hanno speso un sacco di tempo a pensare a questo proposito e sarà sicuramente vi darà un grande vantaggio. E 'in grado di gestire i carichi di diversi formati di file audio + MIDI (e si spera OSC presto ...).
Creare e CLAM che è enorme, questi includono componenti GUI e molte altre cose che si potrebbe o non potrebbe desiderare. Se siete interessati solo a fare sintesi del suono Consiglio vivamente STK.
PortAudio è anche un grande API C che abbiamo usato ultimo semestre in corso di programmazione audio. Esso fornisce un callback audio ... cosa si può bisogno !?
Non ho provato incorporandola con qualsiasi cosa in Objective-C ancora, ma riferirà quando lo faccio.
Un altro libreria C ++ è Nsound:
Si può generare alcun tipo di segnale modulato utilizzando la classe generatore o utilizzando la classe Sine fornito. Ogni passo temporale può avere la sua propria frequenza istantanea e spostamento di fase.
È inoltre possibile sperimentare con il modulo Python per prototipare rapidamente il vostro algoritmo, quindi implementare in C ++. Può produrre belle trame matplotlib da Python e anche da C ++!
Hai guardato CSound ? Si tratta di una piattaforma incredibilmente flessibile generazione audio, e in grado di gestire tutto, dalla semplice generazione di forme d'onda per la sintesi FM e tutti i tipi di filtri. Esso fornisce anche il supporto MIDI, e si può allungare scrivendo codici operativi personalizzati. C'è un piena C API e API diversi C ++ pure.