Algoritm Karplus-Strong

Algoritmul de sinteză a corzilor Karplus-Strong  este o metodă de sinteză a sunetului care constă în trecerea unui semnal scurt printr- o linie de întârziere cu filtru. În funcție de parametri, sunetul rezultat poate fi asemănător cu sunetul unei coarde, extras cu o pleacă sau ciocănire , sau cu sunetele unor instrumente de percuție .

Această tehnică poate fi considerată ca sinteză granulară substractiv- line de feedback , similar cu un filtru pieptene pentru analiza transformării z . Poate fi considerat și cel mai simplu caz de sinteză a undelor , deoarece linia de întârziere acționează ca o stocare pentru o perioadă a semnalului.

Alexander Strong a inventat algoritmul, iar Kevin Karplus a fost primul care a analizat funcționarea acestuia. Împreună au dezvoltat implementări software și hardware ale algoritmului, inclusiv o implementare pe VLSI . Ei au numit algoritmul „Digitar” ( un joc de cuvinte din chitara digitală engleză   - chitară digitală).

Cum funcționează

  1. Se generează un semnal scurt (L eșantioane lungi). Algoritmul original folosea un semnal scurt de zgomot alb , totuși poate fi utilizat orice semnal de bandă largă , cum ar fi ciripit , dinte de ferăstrău sau perioadă de undă pătrată .
  2. Semnalul este alimentat simultan la ieșirea și intrarea liniei de întârziere cu o lungime de L contor.
  3. Ieșirea liniei de întârziere este trecută printr-un filtru audio . Pentru a menține un feedback pozitiv stabil , câștigul filtrului trebuie să fie strict mai mic decât 1 pentru toate frecvențele. Ca filtru, poate fi folosit un filtru trece jos unipolar (ca în imagine). În algoritmul original, filtrul consta dintr-o mediere a două mostre adiacente, deoarece un astfel de filtru vă permite să faceți fără multiplicator și să utilizați numai operații de adăugare și deplasare de biți . Caracteristicile filtrului sunt decisive pentru structura armonică a semnalului amortizat.
  4. Ieșirea filtrului este amestecată simultan cu ieșirea și alimentată la intrarea liniei de întârziere.

Acordarea corzilor

Frecvența fundamentală (mai precis, cea mai joasă armonică diferită de zero) a semnalului primit este cea mai joasă frecvență la care răspunsul de baleiaj al fazei de întârziere și al filtrului din etapă este egal cu . Întârzierea de fază necesară D pentru un pas dat F 0 este calculată prin formula D = F s / F 0 , unde F s  este frecvența de eșantionare .

Lungimea oricărei linii de întârziere digitală este un multiplu întreg al perioadei de eșantionare. Pentru a obține o întârziere fracțională, se folosesc filtre de interpolare cu parametri corespunzători întârzierii de fază la frecvența fundamentală selectată. Filtrele IIR sau FIR pot fi utilizate , cu toate acestea, filtrul FIR are avantajul că zgomotul tranzitoriu este suprimat dacă decalajul fracționar se modifică în timp. Cel mai simplu mod fracționar de a calcula întârzierea fracțională este interpolarea liniară a două eșantioane (de exemplu s (4.2) = 0.8 s (4) + 0.2 s (5)). Dacă întârzierea de fază se modifică cu frecvența, armonicile pot fi amplificate sau atenuate de la frecvența fundamentală. Algoritmul original a folosit media a două eșantioane consecutive, ceea ce a permis implementarea filtrului folosind doar adăugare și deplasare de biți, făcând implementarea foarte eficientă.

Lucrarea originală din 1983 subliniază că analiza Z-transform poate obține frecvențe și timpi de dezintegrare a armonicilor cu o precizie mai mare.

Rezultatul algoritmului Karplus-Strong poate fi auzit în fișierul audio atașat. Algoritmul folosește un câștig de 0,98 cu atenuare succesivă a frecvenței de către un filtru trece-jos de ordinul întâi. Nota pentru a doua octava suna , 220 Hz .

Karplus-Strong #1
F1 = 220 Hz
Ajutor pentru redare

O perioadă constantă (adică lungimea liniei de întârziere) produce un sunet asemănător cu corzile sau cu un clopot. O creștere bruscă a perioadei imediat după începerea semnalului produce sunete asemănătoare tobei.

Îmbunătățiri ale algoritmului

Alex Strong și Kevin Karplus și-au dat seama că algoritmul este fizic analog cu înregistrarea deformarii unei șiruri la un punct fix în timp, iar filtrul caracterizează pierderea de energie de către șir într-o singură perioadă. Julius O. Smith [1] și alți cercetători au generalizat ideea algoritmului la metoda ghidului de undă digital , care poate fi aplicată și la sinteza instrumentelor de vânt și membrane. Primul set de extensii și generalizări a fost prezentat într-o lucrare din 1982 la Conferința Internațională de Muzică Computerizată de la Veneția și publicat cu completări în 1983 în Computer Music Magazine, în articolul „Extensions of the Karplus Strong Plucked String Algorithm”, de David Jaffe și Julius O. Smith [1] .

Alex Strong a creat o modificare mai avansată folosind tabele de undă pentru sintetizarea instrumentelor ciupite, publicată ca brevet.

Note

  1. Jaffe & Smith, 1983 .

Literatură

Link -uri