Karplus-stark algoritm

Karplus-Strong strängsyntesalgoritm  är en metod för ljudsyntes som består i att en kort signal skickas genom en fördröjningslinje med ett filter. Beroende på parametrarna kan det resulterande ljudet likna ljudet av en sträng, extraherat med ett hack eller knackande , eller till ljudet från vissa slaginstrument .

Denna teknik kan ses som feedback-line subtraktiv-granulär syntes , liknande ett kamfilter för z- transformanalys . Det kan också betraktas som det enklaste fallet med vågsyntes , eftersom fördröjningslinjen fungerar som lagring för en period av signalen.

Alexander Strong uppfann algoritmen och Kevin Karplus var den första att analysera dess funktion. Tillsammans utvecklade de mjukvaru- och hårdvaruimplementationer av algoritmen, inklusive en implementering på VLSI . De kallade algoritmen "Digitar" ( en lek med ord från den engelska  digitala gitarren  - digital gitarr).

Hur det fungerar

  1. En kort signal (L sampel långa) genereras. Den ursprungliga algoritmen använde en kort signal med vitt brus , men vilken bredbandssignal som helst som tjut , sågtand eller fyrkantsvågsperiod kan användas.
  2. Signalen matas samtidigt till utgången och ingången på fördröjningslinjen med en längd av L räkningar.
  3. Utsignalen från fördröjningslinjen leds genom ett ljudfilter . För att upprätthålla stabil positiv återkoppling måste filterförstärkningen vara strikt mindre än 1 för alla frekvenser. Som filter kan ett enpoligt lågpassfilter användas (som på bilden). I den ursprungliga algoritmen bestod filtret av ett medelvärde av två intilliggande sampel, eftersom ett sådant filter låter dig klara dig utan en multiplikator och endast använda additions- och bitskiftsoperationer . Filtrets egenskaper är avgörande för den dämpade signalens övertonsstruktur.
  4. Filtrets utgång blandas samtidigt med utgången och matas till ingången på fördröjningsledningen.

Strängstämning

Grundfrekvensen (mer exakt, den lägsta övertonen som inte är noll) för den mottagna signalen är den lägsta frekvensen vid vilken svepsvaret för fördröjningsfasen och filtret i steget är lika med . Den erforderliga fasfördröjningen D för en given tonhöjd F 0 beräknas med formeln D = F s / F 0 , där F s  är samplingsfrekvensen .

Längden på en digital fördröjningslinje är en heltalsmultipel av samplingsperioden. För att erhålla en fraktionell fördröjning används interpoleringsfilter med parametrar som motsvarar fasfördröjningen vid den valda grundfrekvensen. IIR- eller FIR- filter kan användas , men FIR-filtret har fördelen att transientbrus dämpas om fraktionsfördröjningen ändras över tiden. Det enklaste sättet att beräkna fraktionerad fördröjning är att linjärt interpolera två sampel (t.ex. s (4,2) = 0,8 s (4) + 0,2 s (5)). Om fasfördröjningen ändras med frekvensen kan övertonerna förstärkas eller dämpas från grundfrekvensen. Den ursprungliga algoritmen använde medelvärdet av två på varandra följande sampel, vilket gjorde att filtret kunde implementeras med endast addition och bitskifte, vilket gjorde implementeringen mycket effektiv.

Det ursprungliga verket från 1983 påpekar att Z-transformanalys kan erhålla frekvenser och avklingningstider för övertoner med högre noggrannhet.

Resultatet av Karplus-Strong-algoritmen kan höras i den bifogade ljudfilen. Algoritmen använder en förstärkning på 0,98 med successiv frekvensmjukning av ett första ordningens lågpassfilter. Tonen för den andra oktaven låter , 220 Hz .

Karplus-Strong #1
Fi = 220 Hz
Uppspelningshjälp

En konstant period (det vill säga längden på fördröjningslinjen) producerar ett ljud som liknar strängar eller en klocka. En kraftig ökning av perioden omedelbart efter signalens start ger trumliknande ljud.

Algoritmförbättringar

Alex Strong och Kevin Karplus insåg att algoritmen är fysiskt analog med att registrera avböjningen av en sträng vid en fast punkt över tiden, och filtret karakteriserar förlusten av energi från strängen under en period. Julius O. Smith [1] och andra forskare generaliserade idén om algoritmen till den digitala vågledarmetoden , som också kan tillämpas på syntesen av vind- och membraninstrument. Den första uppsättningen förlängningar och generaliseringar presenterades i en artikel 1982 vid International Computer Music Conference i Venedig, och publicerades med tillägg 1983 i Computer Music Magazine, i artikeln "Extensions of the Karplus Strong Plucked String Algorithm", av David Jaffe och Julius O. Smith [1] .

Alex Strong har skapat en mer avancerad modifiering med hjälp av wavetables för att syntetisera plockade instrument, publicerad som ett patent.

Anteckningar

  1. Jaffe & Smith, 1983 .

Litteratur

Länkar