Algoritmo di Karplus-Strong: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Fix link
Funzionalità collegamenti suggeriti: 3 collegamenti inseriti.
 
(16 versioni intermedie di 11 utenti non mostrate)
Riga 1:
L'algoritmo di '''Karplus-Strong''' è un metodo usato nel campo dell'[[acustica]] che manipola una [[forma d'onda]] attraverso una linea di [[delay]] con dei [[Filtro (elettronica)|filtri]] per simulare suoni di corde plettrate ([[chitarra]]) o soggette a percussione ([[pianoforte]]). È una tecnica di [[sintesi sottrattiva (musica elettronica)|sintesi sottrattiva]] basata sulla [[retroazione]] (''feedback loop'') simile a quella di un [[filtro comb]].
 
== Come funziona ==
* viene generata una breve forma d'onda (di lunghezza di L campioni) di eccitazione. Nell'algoritmo originale era un [[rumore bianco]], ma può essere qualsiasi segnale a [[banda radio|banda]] estesa.
* questa eccitazione è portata in output e simultaneamente in retroazione in una catena di ritardi (delay line) lunga L campioni.
* l'uscita della catena di ritardi è portata ad un [[Filtro (elettronica)|filtro]]. Il [[guadagno (elettronica)|guadagno]] del filtro deve essere minore di 1 a tutte le frequenze. Di solito si tratta di un [[filtro passa basso]] del primo ordine.
* l'output filtrato è simultaneamente mixato in output e all'indietro in retroazione nella catena dei ritardi.
 
Riga 19:
\ y[n] = x[n] + R^{L} y[n-L] \,
</math>
con [[funzione di trasferimento]]:
:<math>
\ H(z) = \frac{Y(z)}{X(z)} = \frac{1}{1 - R^{L} z^{-L}} \,
</math>
I poli di <math>H(z)</math> si ricavano da <math>z^{-L}=R^{L}</math> e quindi il filtro ha ''L'' [[Polo (analisi complessa)|poli]] <math>z=R e^{(j2l\pi)/L}</math> per <math>l=0,...,L-1</math> equispaziati attorno al cerchio (nel [[piano complesso]]) di raggio R. Il filtro produce uno spettro armonico con picchi in corrispondenza di multipli interi della frequenza fondamentale
:<math> f_0 = \frac{F_s}{L} \ </math> Hz
 
Un'[[Onda (fisica)|onda]], considerata come una perturbazione, si propaga attraverso il mezzo (confinato ad essere di lunghezza ''L'') e rimbalza avanti e indietro in base alle condizioni al contorno che la regolano. Ad ogni passaggio attraverso <math>R^{L}</math> nel ramo della retroazione viene dissipata energia. Se il segno dell'onda è invertito ad ogni [[riflessione (fisica)|riflessione]] <math>R^{L}</math> ha segno negativo e le formule risultanti sono:
:<math>
\ y[n] = x[n] - R^{L} y[n-L] \,
Riga 40:
 
Alla luce di quanto argomentato la struttura del filtro comb può essere ridefinita per sintetizzare suoni di tipo armonico come quelli prodotti da una [[chitarra]]. Le modifiche che andranno fatte dovranno implementare un decadimento dipendente dalla frequenza delle singole armoniche. In altre parole il modulo delle armoniche dovrà decadere man mano che le frequenze aumentano in modo che le armoniche più basse durino di più di quelle più alte. Questo si ottiene inserendo in diretta (non in retroazione) un [[filtro passa basso]] <math>H_{lp}</math> creando un ''filtro comb passa-basso''. Intuitivamente ad ogni passaggio le componenti ad alta frequenza sono attenuate in maniera più marcata di quelle a bassa frequenza. Considerando un filtro [[Finite impulse response|FIR]] del primo ordine le formule diventeranno le seguenti:
 
[[Immagine:Comb_effect_spectrum.png|right|thumb|400px|Nei due grafici sulla destra si può notare un esempio di decadenza delle armoniche in base alla frequenza in conseguenza del passaggio del segnale (di solito un [[rumore bianco]]) attraverso un ''filtro comb passa-basso'']]
:<math>
\ y[n] = \frac{1}{2} \cdot [x[n] + x[n-1]] \,
Riga 48:
</math>
 
La [[risposta in frequenza]] corrispondente è:
:<math>H_{lp}(f)=cos(\pi f) \cdot e^{-j\pi f}</math>
Da notare che la fase del filtro passa basso aggiunge un ulteriore ritardo di mezzo campione. Come conseguenza la nuova frequenza fondamentale generata sarà:
Riga 55:
 
== Accordatura della corda ==
Il [[delay]] richiesto ''D'' per una frequenza fondamentale data ''F''<sub>1</sub> è calcolato in base alla formula ''D'' = ''F''<sub>''s''</sub>/''F''<sub>1</sub> dove ''F''<sub>''s''</sub> è la [[frequenza di campionamento]]. La lunghezza della delay line è un numero multiplo del periodo di [[campionamento (teoria dei segnali)|campionamento]]. Per ottenere un ritardo (delay) frazionario si usano dei filtri di [[interpolazione]]. Possono essere usati sia filtri di tipo [[Finite impulse response|FIR]] sia di tipo [[Infinite impulse response|IIR]]. Con i filtri FIR si ha il vantaggio che i transitori si concludono in un nemeronumero finito di passi.
 
Mantenendo il periodo (= lunghezza della linea di ritardi) costante si ottengono vibrazioni simili a quelle di una [[corda]] o una [[campana]]. Aumentando il periodo velocemente subito dopo il transitorio si producono suoni di tipo percussivo ([[tamburo|tamburi]]).
 
== NoteBibliografia ==
 
* {{Cita pubblicazione
Riga 65:
| anno = 1983
| titolo = Digital Synthesis of Plucked String and Drum Timbres
| url = https://archive.org/details/sim_computer-music-journal_summer-1983_7_2/page/43
| rivista = Computer Music Journal
| volume = 7
| numero = 2
| paginepp = 43-55
| publisher editore= MIT Press
}}
 
Riga 76 ⟶ 77:
| anno = 1983
| titolo = Extensions of the Karplus-Strong Plucked String Algorithm
| url = https://archive.org/details/sim_computer-music-journal_summer-1983_7_2/page/56
| rivista = Computer Music Journal
| volume = 7
| numero = 2
| paginepp = 56-69
| publisher editore= MIT Press
}}
 
* {{Cita web|url=https://worldwide.espacenet.com/textdoc?DB=EPODOC&IDX=US4649783|autore=Alexander R. Strong, Kevin J. Karplus|titolo=Wavetable Modification Instrument and Method for Generating Musical Sound|data=17 marzo 1987}}
* {{US patent reference|
number=4649783|
y=1987|m=03|d=17|
inventor=Alexander R. Strong, Kevin J. Karplus|
title=Wavetable Modification Instrument and Method for Generating Musical Sound}}
<!-- filed May 24, 1984, now expired -->
 
* Moore, F. Richard. ''Elements of Computer Music''. Upper Saddle River: Prentice-Hall, 1990. ISBN 0-13-252552-6.
* Dispense del corso di Informatica Musicale dell'[[Università di Padova]] del professor DePoli [https://web.archive.org/web/20071130040156/http://www.dei.unipd.it/corsi/musica/ Sito web del corso] pubblicate sotto [[licenza (informatica)|licenza]] [[Creative Commons]] ''Attribuition-NonCommercial-ShareAlike''
 
== Altri progetti ==
* Dispense del corso di Informatica Musicale dell'[[Università di Padova]] del professor DePoli [http://www.dei.unipd.it/corsi/musica/ Sito web del corso] pubblicate sotto [[licenza]] [[Creative Commons]] ''Attribuition-NonCommercial-ShareAlike''
{{interprogetto}}
 
== Collegamenti esterni ==
* [{{cita web|http://ccrma.stanford.edu/~jos/pasp/Karplus_Strong_Algorithm.html |L'algoritmo di Karplus-Strong]}}
* [{{cita web|http://ccrma.stanford.edu/~jos/Mohonk05/Karplus_Strong_Algorithm.html |Esempi sonori]}}
{{portale|musica}}
[[Categoria:Tecnologia musicale]]
[[Categoria:Digital signal processing]]
[[Categoria:Filtri]]
 
[[Categoria:Tecnologia musicale]]
[[de:Karplus-Strong-Algorithmus]]
[[Categoria:Elaborazione numerica dei segnali]]
[[en:Karplus–Strong string synthesis]]
[[Categoria:Filtri elettronici]]