Domanda:
Perché la mia nota sintetizzata non suona naturale?
Nereid Regulus
2018-06-01 18:25:25 UTC
view on stackexchange narkive permalink

Attualmente sto sviluppando un gioco e sto cercando di sintetizzare una nota musicale da vari strumenti in C ++. Per ora, sto solo cercando di replicare un A4 440Hz con l'aiuto di un file audio esistente come riferimento. Ho fatto del mio meglio per far sembrare il mio segnale uguale all'originale in termini di frequenza e armoniche, ma la nota non suona ancora naturale. Sono un po 'nuovo nella sintesi musicale, quindi spero che sarai in grado di risolvere il mio problema. Collegamenti ai file audio:

Il mio programma aggiunge solo onde sinusoidali con frequenze diverse insieme. Ecco il confronto dei due file audio:

Spettrogramma (sinistra = reale, destra: sintetizzata)

enter image description here

FFT (picco) (sinistra = reale, destra = sintetizzato)

enter image description here

(i picchi sono gli stessi con una differenza di ~ = 3 Hz)

Segnale (sinistro = reale, destro = sintetizzato)

enter image description here

Sfasamento sul picco ( sinistra = reale, destra = sintetizzata)

<Picture>

Busta periodo

Piano reale

enter image description here

Piano sintetizzato

enter image description here

Cosa mi sono perso? Ho fatto del mio meglio per abbinare le frequenze armoniche, ma suonano comunque in modo diverso. Lo stesso per la loro busta. Dovrei avere più armoniche? Ho provato ad aggiungerne altri, ma il suono non sembra cambiare molto. Gli armonici tra 15 kHz e 20 kHz sono importanti?

PS: non voglio usare note esistenti né musica per il mio gioco, poiché lo sto facendo per capire come funziona la sintesi musicale.

Le risposte che sono solo link ad altri siti non sono apprezzate qui, ma potresti trovare utile questo articolo. https://www.soundonsound.com/techniques/synthesizing-pianos
Una cosa che manca decisamente: un vero suono di pianoforte ha * tonnellate * di componenti non armoniche durante l'attacco del suono. La serie armonica aiuterà con il sustain e il decadimento, ma l'attacco richiede molto rumore e componenti inarmoniche.
"Il mio programma aggiunge solo onde sinusoidali insieme, con frequenze diverse." - vuoi dire che ciascuna di quelle onde sinusoidali che stai sommando ha una frequenza fissa?
@topomorto Sì, senza sfasamento
Consiglierei di scaricare http://www.klingbeil.com/spear/ e dare un'occhiata a come si può considerare che i parziali analizzati cambino sia in altezza che in frequenza.
@PatMuchmore esattamente! Come nota a margine storica, questo è qualcosa che i progettisti del [Roland D50] (https://www.youtube.com/watch?v=vSdPwdQTs_g) conoscevano e usavano con grande effetto mescolando un attacco campionato con un sustain puramente sintetizzato .
Il file del piano sintetico sembra essere danneggiato o qualcosa del genere - non sono riuscito a farlo suonare con niente.
Concentrati sull'attacco. Sono i ~ 100 ms iniziali di suono che richiedono più lavoro nel mio ascolto. Ingrandisci in modo da guardare all'inizio delle forme d'onda per il confronto. La tua forma d'onda sintetizzata ha un po 'di "taglio" all'inizio.
Potenzialmente degno di nota è che nel mondo della sintesi, questa tecnica (di aggiungere onde sinusoidali) è classificata come _ "sintesi additiva" _. Potresti voler dare un'occhiata ai metodi _ "sintesi sottrattiva" _, in cui alcune funzioni di filtro vengono applicate ai dati d'onda risultanti. I parametri di questo filtro possono essere modulati nel tempo, spesso sincronizzati con gli attacchi delle note, in modo che la parte iniziale di una nota possa avere componenti inarmoniche ad alta frequenza e poi mentre suona queste possono essere sfumate gradualmente. Tecniche come questa sono spesso usate per emulare strumenti "naturali".
È certamente un bell'esercizio per sintetizzare un suono di pianoforte, ma se hai solo bisogno del suono per un gioco, i campioni potrebbero essere il percorso più semplice per portare a termine il lavoro, e sono sicuro che ci sono alcune librerie per questo.
Sei risposte:
Todd Wilcox
2018-06-01 20:12:56 UTC
view on stackexchange narkive permalink

Non sono stato in grado di ascoltare i file, ma penso che il commento di Pat sia molto probabilmente il più vicino al segno. Dagli spettrografi, sembra che ti manchino due cose:

  • Parziali inarmoniche - A causa della rigidità delle corde del pianoforte, le varie onde sinusoidali generate sono in realtà non esatti anche multipli della fondamentale. Invece, sono più nitide del previsto. Ciò fa sì che l'accordatura delle corde sia leggermente più nitida per le note più alte e leggermente più piatta per le note più basse. Ecco un documento con alcuni numeri misurati e teorici su questo effetto.
  • Rumori transitori : ci sono molte parti importanti del suono di un vero pianoforte che non vengono catturati nelle vibrazioni delle corde stazionarie. Ci sono alcune frequenze transitorie e parziali, e ci sono anche diversi rumori . Il più importante di questi è probabilmente il rumore del tasto più basso , che è il suono del tasto che colpisce la tastiera. Tende a risuonare brevemente attraverso il cabinet del pianoforte e crea un suono "tonfo" di legno a bassa frequenza. Ascolta attentamente le registrazioni di pianoforte e dovresti ascoltarle. Suona un vero pianoforte e puoi anche sentirlo. Come ha commentato Pat, ci sono anche rumori transitori delle corde ad alta frequenza creati dal colpo del martello. Le componenti del rumore e le loro ampiezze dipendono dalla durezza del feltro del martello e si sentono come la luminosità del pianoforte.

Alcuni suggerimenti:

  1. Leggi l'articolo che Pat ha collegato, ha una buona panoramica delle sfide della sintesi del pianoforte e delle strategie per farlo funzionare: https://www.soundonsound.com/techniques/synthesizing-pianos
  2. Sperimenta con tecniche di sintesi sottrattiva e FM. La tecnica che stai usando attualmente è la sintesi additiva, che ha i suoi vantaggi e svantaggi. Penso che potresti imparare molto sull'inarmonicità lavorando con un motore di sintetizzatore FM digitale per ricreare il suono di un piano elettrico. La sintesi sottrattiva è un tipo per ricreare il rumore di tonalità più basse.
  3. Considera l'idea di imparare alcune tecniche di sintesi delle percussioni utilizzando la sintesi sottrattiva. Anche se alla fine usi la sintesi additiva, esercitarti a fare colpi e raffiche di rumore con un motore di sintesi sottrattiva aiuterà molto a capire come ottenere i suoni transitori che desideri.

Modifica dopo aver ascoltato il file:

Il suono di una nota di pianoforte cambia nel tempo. Il tuo campione sintetizzato dura solo 1 secondo. Dovresti confrontare il suono per l'intera durata della nota. Una volta ottenuto un suono decente, una cosa che potresti fare è raddoppiarlo, poiché la maggior parte della gamma del piano ha due o tre corde per nota invece di una. Una volta raddoppiato, scorda leggermente uno (o due) di essi. E intendo leggermente . I buoni accordatori di pianoforte li avvicinano molto , ma potrebbero comunque differire di 0,5 Hz circa. Nota che una frequenza di battimento di 0,5 Hz impiega 2 secondi per completare un ciclo, quindi questo è un altro motivo per cui un campione di 1 secondo non è abbastanza tempo di ascolto. Nel complesso penso che il tuo campione sintetizzato sia abbastanza buono. Mancano alcuni di quei componenti sopra menzionati e dovresti anche iniziare a confrontare le note più basse e più alte per vedere come regge il tuo algoritmo.

-1 La cosa più importante che manca al campione è un attacco. Tutto il resto che hai aggiunto aiuterà il suono sintetizzato a diventare ancora migliore una volta aggiunto un attacco, ma senza un attacco, il suono non suonerà mai in modo convincente come un pianoforte. Non credo che la tua risposta enfatizzi la necessità di un attacco sufficiente per essere utile.
@Kevin Punto giusto. Mi chiedo se per "attacco" tu stia parlando di quelli che ho chiamato "rumori transitori". Si sentono all'inizio di una nota di pianoforte e poi si estinguono molto rapidamente. Le parti di un suono di pianoforte che non sono l'attacco sono talvolta chiamate "vibrazioni allo stato stazionario", anche se non sono veramente allo stato stazionario.
Spara, hai ragione. Tu ed io stiamo parlando delle stesse cose. Grazie per aver risposto al mio commento! Voto a favore della tua risposta se apporti una piccola modifica.
@Kevin Fatto. :)
@ToddWilcox: Vuoi dire che come quella gobba ad alta frequenza nello spettrogramma del pianoforte reale proprio all'inizio della nota?
@Sean Sì, questo è parte di esso. Inoltre, come ha sottolineato Kevin, la busta (le trame verdi) della nota sintetizzata non è corretta. Dovrebbe raggiungere immediatamente l'ampiezza massima. O entro 10 ms circa.
* la maggior parte della gamma del pianoforte ha due corde per nota invece di una * Tre, non due.
@BenCromwell Varia da piano a piano, ma non riesco nemmeno a trovare un conteggio di un pianoforte in particolare per quante note hanno una, due o tre corde. Quindi lo cambierò in "due o tre" per sicurezza. Grazie.
Kevin
2018-06-02 01:04:59 UTC
view on stackexchange narkive permalink

La cosa più importante che ti manca è un attacco. Il commento di Pat Muchmore è esattamente corretto:

Una cosa che manca decisamente: un vero suono di pianoforte ha tonnellate di componenti non armoniche durante l'attacco del suono. La serie di armonici aiuterà con il sustain e il decadimento, ma l'attacco richiede molto rumore e componenti inarmoniche.

Quasi tutti gli strumenti hanno un suono percussivo breve, non intonato che suona per un minuscola frazione di secondo quando una nota inizia a suonare per la prima volta. Se ascolti di nuovo la nota di pianoforte campione, noterai che la prima frazione di secondo della nota è molto più forte del resto della nota. Potresti anche notare che suona un po 'come se un rullante venisse suonato quando la nota inizia a suonare. Questo è l'attacco. (Su un vero pianoforte, questo suono è causato dal movimento del martello che attacca la corda.)

Al contrario, la nota sintetizzata è più bassa quando inizia a suonare. Non ha attacco. Questo attacco mancante è incredibilmente importante! Credo che se aggiungi un attacco alla tua nota, suonerà in modo convincente come un vero pianoforte.

Puoi farlo suonando una raffica sagomata di rumore bianco quando la tua nota inizia a suonare o, un po 'di più in modo convincente, suonando un campione di uno strumento a percussione, mischiato sottilmente, ogni volta che il pianoforte suona una nota. (Anche se una raffica di rumore bianco suona piuttosto artificiale, ho avuto un ottimo successo aggiungendo attacchi di rumore bianco ai sintetizzatori nella mia musica. È davvero abbastanza convincente da funzionare in molte situazioni! Il commento di Todd Wilcox dà buoni consigli su come far funzionare il rumore bianco per un attacco.) L'approccio più convincente sarebbe trovare una registrazione di qualcuno che isola il suono di un martello di pianoforte che colpisce senza il suono della corda del pianoforte che suona e usarlo per il tuo campione di attacco .


Ho notato che il tuo tono sintetizzato contiene già un elemento percussivo. Tuttavia, suona a metà della nota, non all'inizio. L'attacco deve raggiungere il suo picco nel momento preciso in cui la nota inizia a suonare. Hai aggiunto questo grafico al tuo post:

enter image description here

Nota che per il tono di pianoforte reale a sinistra, il punto più forte del suono è fino al bordo sinistro dell'onda sonora. Al contrario, il tuo tono diventa più forte per mezzo secondo prima di raggiungere il massimo. Purtroppo è troppo tardi. Il suono percussivo deve iniziare all'inizio del tono per essere un attacco convincente.

Inoltre, il suono percussivo è molto basso. Un pianoforte ha tipicamente un attacco che ha anche alcuni elementi di gamma media e acuta. Suggerisco di usare un colpo di rullante, un colpo di legno morbido o, come ho detto sopra, una registrazione di un colpo di martello di pianoforte per stimolare il tuo attacco invece del suono profondo della batteria che stai usando ora.


A parte l'attacco, al mio orecchio, il tuo tono sintetizzato è quasi arrivato. Personalmente penso che una volta aggiunto un attacco, avrai un tono sintetizzato di alta qualità come quello che troverai nella maggior parte delle tastiere MIDI da $ 100. Suonerà ancora artificiale, ma suonerà piacevole e non sembrerà strano.

"* Quasi tutti gli strumenti hanno un suono percussivo breve, non intonato che suona per una minuscola frazione di secondo quando una nota inizia a suonare *" Sì, e il piano ha ** diversi ** suoni percussivi non intonati che suonare per una piccola frazione di secondo quando viene suonata una nota. Uno dei più importanti che il pianoforte ha è il * rumore dei tasti più bassi *. C'è anche il rumore del tasto superiore e il rumore del martello e i transienti armonici superiori. Penso che stiamo usando parole diverse per parlare delle stesse cose.
Non sono d'accordo che il rumore bianco da solo andrà bene. Il rumore dei tasti più basso non è nemmeno vicino al bianco. è più come toccare una grande scatola di legno con il dito. È a frequenza molto bassa e non ha i componenti ad alta frequenza che ha il rumore bianco. È anche molto percussivo. Una raffica di rumore filtrato funzionerebbe per le parziali transitorie inarmoniche, e quindi forse un'onda quadra spazzata verso il basso ** molto ** velocemente, come un suono di cassa 808, per il rumore del tasto più basso.
@ToddWilcox Spara, hai ragione. Non ho letto la tua risposta molto attentamente. Mi dispiace essere così antagonista nei tuoi confronti e nella tua risposta, soprattutto quando hai ragione che diciamo la stessa cosa.
Penso che tu abbia ragione anche sul rumore bianco. Ho notato che ogni volta che uso il rumore bianco per gli attacchi ai miei sintetizzatori, di solito lo faccio a bassa frequenza e lo spingo verso il basso di diverse ottave in pochi millisecondi, come hai suggerito. Una semplice raffica di rumore bianco sarebbe molto ovvia. E anche gli attacchi artificiali che uso sono su suoni chiaramente sintetizzati, non su suoni che dovrebbero suonare come strumenti acustici.
Puoi dirlo solo guardando le onde. "È troppo tardi." +1. Con solo cinque minuetti di diverse dissolvenze in entrata, l'aggiunta di un ritornello di 5 voci e un aumento di 3db verso l'alto, ho fatto suonare almeno il 10 percento in più come un vero pianoforte;) Prima di ciò avrei giurato che fosse riprodotto al contrario.
Vale la pena notare che il problema con l'attacco può essere spiegato matematicamente dalla presenza di una discontinuità nell'ampiezza del suono lì, o da qualcosa di simile. L'approssimazione di Fourier (cioè l'espressione del suono come somma di onde sinusoidali) non funziona molto bene vicino alle discontinuità (vedi https://en.wikipedia.org/wiki/Gibbs_phenomenon per esempio)
user19146
2018-06-02 14:32:41 UTC
view on stackexchange narkive permalink

Giusto per aggiungere alle risposte precedenti riguardanti il ​​transiente iniziale del suono. Ci sono due cose mancanti dalla tua sintesi, entrambe influenzano il suono iniziale.

  1. C'è il rumore meccanico del meccanismo chiave, più il " tonfo "del martello che colpisce le corde che proviene dalle parti statiche del pianoforte, non dalle corde stesse. Quei rumori sono simili per ogni nota sullo strumento (ed è una buona approssimazione presumere che siano esattamente gli stessi per ogni nota) e tipicamente decadono nel nulla in circa 0,1 secondi.

  2. Il secondo effetto è qualcosa che di solito non viene menzionato affatto nelle descrizioni a livello di "fisica delle scuole superiori" di come vibra una corda tesa, ma ...

Il suono del piano deriva dal trasferimento dell'energia delle corde vibranti nella tavola armonica, che vibra anch'essa con una piccola ampiezza ma ha una grande superficie che muove l'aria per creare il suono che si sente. Pertanto, le estremità delle corde non sono fissate in modo assolutamente rigido, perché in quel punto deve esserci un certo movimento della tavola armonica. La quantità di flessibilità è diversa per il movimento in due direzioni diverse, perpendicolare al piano della tavola armonica e da lato a lato parallelo alla tavola armonica.

Le diverse flessibilità fanno sì che una singola corda vibra simultaneamente con due frequenze leggermente diverse, perpendicolari e parallele alle tavole armoniche. Inoltre, l'energia viene trasferita alla tavola armonica più velocemente dalla modalità "perpendicolare" perché quella è la direzione più flessibile.

La conseguenza di tutto ciò è che ciò che misuri come "una singola armonica" sono in realtà due armoniche, con frequenze leggermente diverse, una delle quali decade più velocemente dell'altra. Per una nota con una frequenza intorno a 500 Hz - 1 KHz, la vibrazione della frequenza più bassa inizia con un'ampiezza maggiore ma decade abbastanza velocemente (diciamo in 0,5 secondi) mentre la frequenza leggermente più alta decade lentamente e si estende per l'intera lunghezza della nota (diversi secondi).

Come ulteriore complicazione, le due vibrazioni iniziano in fase l'una con l'altra ma la fase cambia nel tempo perché le frequenze sono leggermente diverse. Se guardi un campione di pianoforte registrato vicino allo strumento per eliminare gli effetti acustici della stanza in cui si trova il piano, vedi che l'ampiezza combinata inizia alta e decade rapidamente quasi a zero come le due vibrazioni vanno fuori fase e si annullano a vicenda, quindi risorge di nuovo. A questo punto una delle vibrazioni si è quasi estinta e il resto della nota è il lento decadimento dell'altra.

In realtà, questo è più facile da misurare e capire su una chitarra acustica invece che su una pianoforte, perché c'è solo una corda per nota e la differenza tra le due frequenze di vibrazione è maggiore. Su una chitarra puoi anche cambiare le ampiezze iniziali delle due frequenze, "pizzicando" perpendicolarmente alla tavola armonica (come nella tecnica della chitarra classica pizzicando con un'unghia) o "strimpellando" le corde lateralmente parallele alla tavola armonica.

Sul pianoforte, c'è l'ulteriore complicazione che la maggior parte delle note ha due o tre corde, non solo una. Le corde non saranno accordate perfettamente all'unisono e (come ha detto un'altra risposta) un accordatore esperto regolerà la forma dell'inviluppo del suono combinato di tutte e 6 le modalità di vibrazione di tre corde per creare qualsiasi "suono di pianoforte" desiderato: un Bosendorfer Imperial e un pianoforte a coda acustico Yamaha progettato per la musica rock e pop, entrambi "suonano come pianoforti" ma suonano molto diversi l'uno dall'altro!

Carl Witthoft
2018-06-01 18:40:52 UTC
view on stackexchange narkive permalink

Direi che stai imparando quanto sottilmente l'orecchio umano possa rilevare piccole differenze nelle fasi e nelle frequenze. Il tuo synth sembra avere alcune frequenze leggermente fuori picco ad ampiezze più alte di quella reale.

Tutto quello che posso dire è che c'è una ragione per cui tutti i pianoforti digitali di fascia alta usano i campioni piuttosto che i generatori di frequenze grezze.

Gli esseri umani possono sentire le fasi in un segnale mono?
`tutti i pianoforti digitali di fascia alta usano campioni` in realtà alcuni di fascia molto alta come il Roland V-Piano, l'RD-2000, Pianoteq (o lo strumento hardware basato su Pianoteq rilasciato alcuni anni fa da, penso ... Visconte?) Non :)
"Gli umani possono sentire le fasi in un segnale mono" Certo. Suona una registrazione di un brano arena rock della fine degli anni '70 con chitarra solista pesantemente fasata in mono. Sentirai l'effetto. Il risultato degli effetti di fase applicati a un segnale è ... Un segnale diverso.
@Beanluc "Sure" è la risposta corretta (almeno in alcune circostanze) ma il tuo esempio è scadente, poiché in realtà il "phasing" come effetto chitarra fa molto di più che cambiare semplicemente la fase di alcune armoniche del segnale.
@CodesInChaos Gli esseri umani non possono sentire la fase in isolamento, quindi se suonassi un'onda del coseno e suonassi un'onda sinusoidale non potresti dire la differenza. Ma in qualsiasi suono che non sia puramente sinusoidale, * possiamo * sentire la variazione di fase tra le diverse parziali. Può esserci una differenza sonora significativa tra due onde a dente di sega con diverse variazioni di fase nelle parziali superiori.
Eric Towers
2018-06-03 21:39:37 UTC
view on stackexchange narkive permalink

I tuoi grafici di ampiezza e i tuoi grafici di inviluppo chiariscono che non hai abbinato le fasi dei componenti. Questo fa sì che l'attacco venga imbrattato in tempo. Causa anche la mancanza di "inclinazione a sinistra" dei componenti nell'inviluppo: l'inviluppo del piano è più a dente di sega rispetto ai sintetici triangolari limitati dalla banda. Spostare alcuni dei tuoi componenti nelle fasi precedenti potrebbe aiutare.

Un modo per risolvere questo problema è tenere traccia dell'argomento (fase complessa). Vedo che hai abbinato le ampiezze nei tuoi periodogrammi (ampiezze FFT assolute), ma ci sono prove che non hai abbinato gli argomenti.

Per inciso ... Hai scelto uno degli strumenti più difficili da sintetizzare in modo additivo. Il contenuto spettrale si sposta in modo non lineare con l'ampiezza. Ci sono diversi ronzii armonici ed enarmonici per trasferimento induttivo alle corde non smorzate. Gli oscillatori diretti (stringhe) mostrano tre gradi di libertà, quindi ci sono tre spettri naturali per ogni corda e la maggior parte delle note sono prodotte da due o tre corde. Se devi iniziare con uno strumento a tastiera, qualcosa come una celesta potrebbe essere sostanzialmente meno frustrante per te.

Residuum
2018-06-04 20:59:29 UTC
view on stackexchange narkive permalink

Come molti altri hanno sottolineato, stai solo emulando lo spettro della fase armonica, ma non l'attacco e il decadimento del pianoforte.

Ecco alcune opzioni:

Usa Campioni.

Sì, più di un campione, idealmente uno per nota, ma probabilmente uno per ottava dovrebbe essere sufficiente per iniziare. Alza i suoni + - 6 mezzitoni. Separare l'attacco, l'armonica e la fase di decadimento e ripetere in loop solo la fase armonica. Usa campioni diversi per corde smorzate / non smorzate. Ottieni campioni diversi per dinamiche diverse, perché le caratteristiche di armoniche, attacco e decadimento cambiano. Probabilmente potresti cavartela con 20 campioni per ottava per creare un pianoforte un po 'convincente. E inizierai a ricreare qualcosa di molto complicato e costoso.

Modella la fisica.

Invece di pensare alle armoniche usando la sintesi additiva / sottrattiva, pensa al il modo in cui viene creato il suono. Gli strumenti ad arco usano una certa eccitazione su una corda, che porta la corda alla risonanza e solo le armoniche delle caratteristiche fisiche della corda vengono amplificate, altre frequenze vengono smorzate. Un semplice algoritmo è Karplus-Strong.

Puoi anche utilizzare una libreria di modelli fisici, ad es. STK, che ha alcune demo simili a e-piano, ma probabilmente è difficile ottenere un pianoforte dal suono naturale come con l'approccio basato sul campione.

Ma cosa usare?

Se vuoi suonare solo alcune note con una gamma fissa di dinamiche, usa un campione. Quando le note suonano innaturali, aggiungi un secondo campione e poi prova a trovare un modo per caricare il meglio di diversi campioni disponibili in base a intonazione, dinamiche, durata.

Teoria

A seconda di come in profondità vuoi approfondire l'argomento, ci sono diversi libri dedicati all'argomento, alcuni gratuiti:

Usare Puredata per la sintesi può essere una buona scelta, perché puoi creare astrazioni sonore di livello superiore mentre usi Pd come libreria nel tuo programma successivo tramite libPd.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 4.0 con cui è distribuito.
Continua a leggere su narkive:
Loading...