È possibile generare suoni di strumenti musicali usando solo algoritmi? o può essere fatto solo tramite campioni sonori pre-registrati?Genera algoritmicamente suoni di strumenti musicali
risposta
La sintesi Wavetable (PDF) è il metodo più realistico di sintesi dello strumento reale, in quanto prende i campioni e li altera leggermente (ad esempio aggiungendo vibrato, espressione, ecc.).
Le forme d'onda generate dalla maggior parte degli strumenti musicali (soprattutto strumenti a fiato e ottoni) sono così complesse che la sintesi algoritmica pura non è ancora ottimizzata per funzionare sull'hardware corrente, anche se lo fosse, le complessità tecniche della scrittura di tale algoritmo sono enorme.
Sito interessante here.
È completamente possibile, è una delle cose che lo fa synthesizers.
Essere possibile non significa che sia semplice. I sintetizzatori sono in genere costosi e la quantità di algoritmi utilizzati è complessa: la pagina di wikipedia che ho collegato prima ha collegamenti ad alcuni di essi.
I suoni preregistrati sono più semplici e meno costosi da usare, ma hanno anche i loro limiti - ad esempio suonano più "ripetitivi".
È certamente, e ci sono molti approcci. Wolfram ha recentemente pubblicato WolframTones, che (ovviamente, se si conosce Wolfram) utilizza gli automi cellulari. Una descrizione dettagliata di come funziona è here.
Diversi anni fa, la rivista Sound on Sound gestiva un'eccellente serie chiamata "Synth Secrets" che ora può essere viewed online gratuitamente. Forniscono una buona introduzione ai tipi di tecniche utilizzate nei sintetizzatori hardware (sia analogici che digitali) e includono alcuni articoli che trattano le difficoltà di riprodurre determinati suoni di strumenti reali come corde pizzicate e piegate, ottoni, rullanti, pianoforti acustici ecc.
Oltre alle risposte fornite qui, esistono anche strutture di sintesi di analisi che costruiscono modelli matematici (spesso basati sulla cattura delle traiettorie di componenti sinusoidali o di rumore) di un suono in ingresso, consentendo la trasformazione e la risintesi. Alcuni framework noti sono: SMS (disponibile tramite il progetto CLAM C++) e Loris.
Anche i modelli fisici degli strumenti sono un'opzione: modellano le proprietà fisiche di uno strumento quali rigidità di canne, apertura di fori di sfiato, clic del tasto e spesso producono effetti realistici incorporando effetti non lineari come overblowing. STK è uno di questi framework in C++.
Queste strutture sono generalmente più pesanti dell'opzione di sintesi wavetable, ma possono fornire più parametri per la manipolazione.
Karplus Strong Algorithm offre un'ottima sintesi di una corda pizzicata. Può anche essere codificato in poche righe di C. Si crea un buffer circolare di float (lunghezza proporzionale alla lunghezza d'onda cioè 1/f), e riempirlo pieno di rumore casuale tra -1 e 1.
Poi tu scorrere: ogni ciclo, si sostituisce il valore al proprio indice corrente con la media dei due valori precedenti e si emette questo nuovo valore.
index = (index+1) % bufSize;
outVal = buf[index] = decay * 0.5 * (buf[index-1] + buf[index-2]);
Il flusso di byte risultante fornisce il suono. Naturalmente, questo può essere fortemente ottimizzato.
Per rendere il vostro soundwave umido per 0,15 della sua forza originaria dopo un secondo, è possibile impostare il decadimento così:
#define DECAY_1S =.15
Float32 decay = pow(DECAY_1S, 1.0f/freq);
Nota: è necessario dimensione del buffer originale in modo che contenga una forma d'onda completa. quindi se si desidera generare un suono a 441 Hz e la frequenza di campionamento è 44,1 KHz, sarà necessario allocare 100 elementi nel buffer.
Si può pensare a questo come a una camera di risonanza, la cui frequenza fondamentale è 441 Hz, inizialmente energizzata, con energia che si disperde verso l'esterno da ogni punto dell'anello contemporaneamente. Magicamente sembra organizzarsi in toni di una frequenza fondamentale.
Qualcuno potrebbe pubblicare più algoritmi? Che ne dici di un algoritmo per un tono continuo?
[Karplus-Strong-algorithm-Python] (http://flothesof.github.io/Karplus-Strong-algorithm-Python.html) (2017, ~ 20 pagine) ha descrizione, immagini, frammenti di codice, campioni audio, IPython quaderno: 5 *. – denis
Dopo alcuni giorni di caccia, questa la miglior risorsa che ho trovato: https://ccrma.stanford.edu/~jos/
Questo è un tesoro per il soggetto di suoni sintetizzanti.
STK Per esempio, this page link ad un esempio C di sintetizzare una stringa, anche un kit di strumenti suono STK scritto in C++ per aiutare questo lavoro.
Questo mi manterrà tranquillo per alcune settimane mentre lo scavalco.
Chuck
This PDF dettaglio come Smule creato Ocarina per iPhone (sono sicuro che tutti hanno visto l'annuncio). lo hanno fatto tramite porting Chuck - Strongly-timed, Concurrent, and On-the-fly Audio Programming Language
Questo è disponibile per MacOS X, Windows e Linux.
Esiste un tutorial sulla rete che mostra come generare il suono di una nota specifica di uno strumento specifico? per esempio. A4 al piano (440 Hz) Una guida passo passo con tutte le equazioni e variabili ... – LaSha
@LaSha: dalla pagina @Andy collegamenti a: "In definitiva, l'uso della sintesi additiva non è efficiente. In pratica, devi aggiungere molte frequenze per rendere realistico il suono Sono arrivato vicino a riprodurre la nota di un pianoforte acustico aggiungendo quasi un centinaio di componenti di frequenza.Un strumenti con inviluppi di attacco nitidi, come l'impatto del martello su un pianoforte, richiedono molte frequenze solo per ottenere il buon inizio per suonare bene. " – egrunin
@ergrunin: È vero che molti componenti di frequenza devono essere aggiunti, ma ci sono tecniche di sintesi come FM (modulazione di frequenza) che consentono l'aggiunta di molte componenti di frequenza con solo alcune sinusoidi utilizzate per generarle. Quindi non è necessariamente vero che la sintesi additiva sia inefficiente. –