@ mima85
d_phatt ha scritto:
Ho riletto sommariamente, analizzate un campionamento di una nota A0, mi sfugge però l'obiettivo: modellare un suono di pianoforte?
Noname vuole estrapolare il comportamento di un suono campionato (un pianoforte in questo caso, ma in realtà la cosa si applica per qualsiasi suono) per rigenerarlo tramite sintesi additiva. Perlomeno questo è quel che ho capito.
Per me "estrapolare il comportamento di un suono" significa scomporlo con la FFT nelle sue componenti in frequenza (i parziali, armonici o meno che siano), analizzare come si muovono lungo tutta la durata del campione ed utilizzare le informazioni per rigenerare quel suono tramite sintesi additiva con le serie di Fourier. Ma sicuramente ci sono anche altri approcci, solo che con le mie limitate conoscenze di matematica non li conosco e/o non riesco ad immaginarli.
Ah ok! Messa così, beh mi sembra che il tuo approccio sia perfettamente sensato. Anche perché se poniamo come vincolo l'utilizzo della sintesi additiva, ci vogliono le parziali, e quindi la trasformata di Fourier, insomma (parlando a posteriori) mi sembra la cosa più logica, in effetti.
Invece rileggendo il primo intervento di noname, che si chiedeva come trovare l'equazione matematica che genera un determinato campionamento di un suono di cui si è in possesso, una risposta la posso dare anche io: interpolando.
L'interpolazione serve proprio a questo, partire da un insieme dato di n nodi xk con relativi valori yk, e trovare una funzione f tale f(xk) = yk, per ogni k = 1, ..., n. In pratica vogliamo trovare una funzione il cui grafico passi per tutti i punti (xk, yk). Ovviamente possiamo supporre senza perdita di generalità che gli xk siano già ordinati, e k va letto come un pedice.
Con il campionamento di un suono i nodi sono gli istanti di tempo in cui avviene il campionamento e i singoli sample gli yk. Abbiamo due importanti semplificazioni, innanzitutto siamo nel caso reale e quindi ogni xk (anche se forse in questo caso sarebbe meglio chiamarli tk visto che sono istanti di tempo) e ogni yk è un numero reale, e poi gli xk (o meglio tk) possiamo considerarli equispaziati essendo il campionamento del suono eseguito a intervalli di tempo teoricamente costanti.
A questo punto c'è l'imbarazzo della scelta, esistono vari approcci per l'interpolazione in quanto la funzione che soddisfa le condizioni più generali del problema è tutt'altro che unica. Infatti devo dire che interpolando non si trova l'esatta funzione che ha generato quei sample, ma una delle (tante) funzioni che passano per quei punti del piano (cioè le coppie istante tk e sample yk). In corrispondenza dei nodi tutte queste funzioni assumono gli stessi valori, nei punti intermedi tra un nodo e l'altro no, e queste differenze (insieme alle esigenze in termini di tempi di calcolo) orientano la scelta dell'approccio/algoritmo da utilizzare.
Quindi a questo punto gli approcci (e quindi gli algoritmi) per trovare una funzione siffatta sono molteplici, interpolazione lineare, polinomiale, spline... e anche trigonometrica, il che ci riporta a Fourier, alla fine.
Queste cose è possibile trovarle in qualsiasi libro/corso sufficientemente approfondito di Analisi Numerica.
Ovviamente così facendo troviamo una funzione che se valutata in corrispondenza dei nodi genera quegli stessi sample, e quindi quella stessa forma d'onda campionata, niente di più. E ovviamente, al netto di errori di calcolo in virgola mobile o fissa che sia.
Poi ci permette di provare a determinare dei valori intermedi tra un nodo e l'altro, ma niente di più, usata così in maniera basilare non possiamo utilizzarla per generare altre forma d'onda. Ma magari impiegando la fantasia...per esempio se hai due forme d'onda campionate puoi ottenerne una terza interpolando su valori intermedi (per esempio la media) tra i sample delle due....
Ma perché fate parlare a me, adesso arriva ziokiller e rimanda a scuola tutti