2009/10 – 12. 2. 2009
HUDEBNÍ EFEKT DISTORTION VYUŽÍVAJÍCÍ ZPRACOVÁNÍ PŘÍRŮSTKŮ SIGNÁLŮ ČASOVĚ VARIANTNÍM SYSTÉMEM Ing. Jaromír Mačák Ústav telekomunikací, FEKT VUT, Purkyňova 118, Brno Email:
[email protected] Hudební efekt distortion je typickým zástupcem efektů využívající nelineárního zpracování signálů. V tomto článku je prezentován algoritmus založený na zpracování přírůstků vstupního signálu pomocí časově variantního lineárního číslicového systému, ve kterém je zpracovávaná hodnota přírůstku signálu přičítána k minulé hodnotě výstupního signálu.
1. EFEKT DISTORTION V běžných situacích je na většinu systémů kladen požadavek na co nejmenší nelineárním zkreslení, např. u zvukových zesilovačů pro zajištění věrné reprodukce hudebního signálu. Existují však i systémy, které záměrně pomocí nelineárního zkreslení signálů obohacují jejich spektrum přidáním vyšších a kombinačních složek. Typickým zástupcem tohoto typu efektů je právě efekt distortion. V nejjednodušší formě může být realizován jako funkční měnič [1], v poslední době se však začínají objevovat nové přístupy k realizaci tohoto hudebního efektu. Často je snahou simulovat analogové prototypy pomocí číslicového zpracování signálů [2], někdy se objeví algoritmy produkující takové nelineární zkreslení, které nemá svou analogovou obdobu [3].
Obr. č. 1: Průběhy některých funkčních měničů.
1.1. KLASICKÝ PŘISTUP K REALIZACI Základním blokem efektu distortion je blok nelineárního zkreslení, který lze popsat nelineárním operátorem Ψ(). Vztah mezi vstupním a výstupním signálem je pak
y [n] =Ψ ( x [n]).
1.2. REALIZACE MĚKKÉHO OŘEZÁVAČE Typickým zástupcem systémů, které provádějí měkké ořezání signálů, je efekt soft-limiter, jehož průběh je zobrazen na obr. č. 1. Je zadán nelineární funkcí [4]
(1)
Tento systém je systémem nesetrvačným [1], tj. současný výstupní vzorek signálu závisí pouze na současném vstupním vzorku. Systém proto bývá označován jako tvarovač vlny či funkční měnič. Jako funkce Ψ() může být použita libovolná nelineární funkce, typickým příkladem můžou být funkce Ψ(x) = tanh(x), Ψ(x) = atan(x), jejichž průběhy jsou zobrazené na obr. č. 1.
2x 2 3 − (2 − 3x) Ψ ( x) = 3 1
pro 1 3 ≤ x ≤ 2 3
(3)
pro 2 3 ≤ x ≤ 1.
Funkce Ψ(x) je záměrně volena tak, aby jednotlivé úseky na sebe navazovaly, a navíc dochází i k navazování prvních derivací funkce Ψ(x) v bodech nespojitosti [1]. Díky těmto vlastnostem narůstá zkreslení vyššími harmonickými velmi pozvolna; pokud bude vstupní signál omezen v rozsahu ±1, výstupní signál již bude zkreslený, ale zkreslení nebude ve výsledném signálu moc slyšet. Při výrazně vyšších úrovních vstupního signálu dochází i zde k silnému omezení signálu, jehož výsledkem je velmi bohaté spektrum. V tomto režimu je možné i soft-limiter využít jako typický kytarový efekt distortion. Nespornou výhodou tohoto řešení je, že signál může plynule přecházet mezi nezkresleným a silně zkresleným stavem bez výraznějšího rušení, které vzniká skokovým výskytem vyšších harmonických složek u tvrdých ořezávačů signálu [1], [5].
Často však potřebujeme získat průběh, který nedokážeme popsat jednoduchou funkční závislostí. K tomu lze využít aproximace, nejčastěji pomocí Taylorova rozvoje, kdy výstupní signál je určen jako [4] N
y [n] = ∑ ai x i [n] ,
pro 0 ≤ x ≤ 1 3
(2)
i =0
kde ai určuje koeficienty polynomu a N pak jeho řád. Pomocí tohoto rozvoje jsme schopni v úzkém okolí popsat jakoukoliv nelineární funkci. V případě, kdy je potřeba popsat nelineární funkci v širší oblasti, lze využít skládání dílčích úseků, které požadovaný průběh nelineární funkce po částech aproximují [2].
10-1
2009/10 – 12. 2. 2009 Dosazením do rovnice (3) a po úpravě je m rovno
2. ZPRACOVÁNÍ PŘÍRŮSTKŮ ČASOVĚ
∂(2 x ) =2 ∂x ∂ 3 − (2 − 3 x )2 m2 = = 6x − 4 ∂x 3 ∂(1) = 0. m3 = ∂x
VARIANTNÍM SYSTÉMEM
m1 =
Systém vychází z předlohy analogových nelineárních prvků, kde pomocí nastavení pracovního bodu určujeme, mimo jiné, napěťové zesílení daného elektronického prvku. Napěťové zesílení μ v pracovním bodě je dáno
µ=
∂uy (t ) ∂ux (t )
(4)
,
Na obr. č. 3 je vynesen průběh parametru m vypočítaného podle (9) z původní realizace funkčního měniče (3) během jedné periody zpracovávaného číslicového harmonického signálu o kmitočtu 100 Hz. Pro ilustraci je zobrazen i výstupní signál. Je zde patrné, že opravdu dochází k navázání prvních derivací. Graf má navíc očekávaný tvar, neboť uprostřed převodní charakteristiky (m1), kde je Ψ(x) lineární, dosahuje m nejvyšší hodnoty, je zde tedy největší zesílení a m je konstantní. Směrem k okrajům převodní charakteristiky se zesílení postupně zmenšuje (m2), až v oblasti saturace je zesílení nulové (m3).
kde symboly x a y označují vstupní, respektive výstupní napětí. Pokud je převodní charakteristika daného prvku lineární, pak je μ konstantní. U nelineárních prvků se ale bude μ v čase měnit podle toho, ve které části převodní charakteristiky se pracovní bod momentálně nachází. Bude tedy zřejmě platit
µ(t ) =
∂uy (t ) ∂ux (t )
.
(9)
(5)
Podobně lze zavést zesílení v číslicové oblasti jako
m[n] =
y [ n ] − y [ n − 1]
x [ n ] − x [ n − 1]
(6)
a odtud vyjádřit výstupní vzorek
y [n] = y [n − 1] + m[n] ( x [n] − x [n − 1]) ,
(7)
kde m[n] označuje časově proměnný parametr zesílení. Ten je možné obecně nahradit časově proměnnou přenosovou funkcí. Takový systém pak lze popsat blokovým schématem na obr. č. 2.
Obr. č. 3: Průběh výstupního signálu a parametru zesílení u funkčního měniče podle (3). Blok řízení bude tedy obsahovat rovnice, které závisí pouze na vstupní hodnotě signálu x, blokové schéma z obr. č. 2 se proto zjednoduší na obr. č. 4, kde je již realizován funkční měnič podle (3) novým algoritmem.
Obr. č. 2: Blokové schéma systémů zpracovávajícího přírůstky signálu. Přenosová funkce H(z) je určena v závislosti na vstupní nebo výstupní veličině (na obr. č. 2 čerchovaně) - je tedy řízena současným stavem systému.
2.1. REALIZACE FUNKČNÍHO MĚNIČE ČASOVĚ VARIANTNÍM SYSTÉMEM
Pro realizaci funkčního měniče z (3) stačí místo přenosové funkce H(z) využít měnící se parametr zesílení m[n]. Ten lze určit ze vztahu (6) pomocí hodnot vstupu a výstupu z předchozího taktu. Při dostatečně malém vzorkovacím intervalu, bude parametr m ze vztahu (6) roven
m=
∂y . ∂x
Obr. č. 4: Realizace funkčního měniče podle (3) novým algoritmem.
(8) 10-2
2009/10 – 12. 2. 2009 Systém pracuje iterativně: ze současné hodnoty vstupního signálu x[n] je určena nová hodnota m[n], pomocí ní a minulé hodnoty výstupního signálu y[n-1] je určena nová hodnota výstupu y[n]. Na obr. č. 6 je zobrazeno spektrum signálu na výstupu funkčního měniče realizovaného časově variantním systémem. Vstupním signálem byl číslicový harmonický signál o kmitočtu 100 Hz s amplitudou 1. V porovnání se spektrem na obr. č. 5, kde byl výstupní signál vypočten klasickým způsobem, je vidět, že výstupní signál obou realizací je téměř totožný. Jedinou výraznější odchylkou je výskyt stejnosměrné složky u nové realizace. Ta je způsobena tím, že algoritmus pracuje iterativně, takže se vždy pouze blíží ke správnému výsledku. Lze ji odstranit pomocí filtru typu horní propust, to však v řadě aplikací není nutné, protože vzniklá stejnosměrné složka má velmi malou hodnotu.
2.2. PROBLÉM STABILITY U SIGNÁLU S VYŠŠÍM KMITOČTEM
Jak bylo patrné z obr. č. 6, systém pracuje správně se signály s nízkým kmitočtem. U těchto signálu dochází totiž k velmi malým změnám hodnoty signálu mezi sousedními vzorky. Problém však nastává u signálů s vyšším kmitočtem, kdy je změna hodnoty sousedních vzorků velmi výrazná. Na obr. č. 7 je zobrazena odezva systému na vstupní číslicový harmonický signál o kmitočtu 10 kHz a amplitudě 1. Je zde vidět, že iterativní algoritmus opravdu selhává.
Obr. č. 7: Nestabilita řešení časově variantního systému u vyšších kmitočtů. Řešením tohoto problému je zajištění malých přírůstků signálu mezi dvěma následujícími iteracemi. Pro výstupní signál platí
Obr. č. 5: Spektrum výstupního signálu vypočteného podle (3).
y [n] = y [n − 1] + m[n] ∆x ,
(10)
kde Δx je přírůstek vstupního signálu, který je potřeba zmenšit. Jednou možností je zvětšení vzorkovacího kmitočtu, to je však výpočetně velmi náročné. Druhou možností je rozdělit přírůstek vstupního signálu Δx na N rovnoměrných úseků xi podle
xi =
∆x N
(11)
a podobně parametr zesílení m[n] rozdělit na N úseků mi[n], které budou tentokrát nerovnoměrné a budou se určovat iterativně. Rovnici (10) lze upravit na N
mi [n] xi
i =0
N
y [n] = y [n − 1] + ∑
.
(12)
Vzhledem k tomu, že hodnota xi je pro jednu iteraci všech mezi-iterací konstantní, lze rovnici (12) dále upravit na
Obr. č. 6: Spektrum výstupního signálu vypočteného časově variantním systémem.
N
mi [ n]
i =0
N
y [ n] = y [n − 1] + ∆x ∑
10-3
.
(13)
2009/10 – 12. 2. 2009 (pracovním) intervalu. Takto by bylo tedy možné realizovat funkční měniče z obr. č. 1 založené na goniometrické funkci. Průběh parametru zesílení m pro tyto goniometrické funkce je zobrazen na obr. č. 9 a lze jej popsat jako
Takto se do výsledného parametru zesílení m[n] akumuluje správná hodnota a algoritmus dává správné výsledky i pro signály s vyšším kmitočtem viz obr. č. 8, kde je zobrazena odchylka výstupních signálů realizací podle rovnic (3) a (13).
marctg =
1 1 1 + x 2 arctg(5)
(15)
a
mtgh =
1 . cosh( x)2
(16)
Obr. č. 8: Odchylka výstupních signálů realizací podle rovnic (3) a (13). Zásadním problémem pro efektivitu výsledného algoritmu je určení počtu úseků N, tedy počet mezi-iterací. Pokud bude zvolen konstantně, efektivita algoritmu bude degradována u signálů s nízkým kmitočtem, protože tam není potřeba vůbec nějaké mezi-iterace provádět. Počet mezi-iterací bude také samozřejmě záviset na amplitudě signálu. Při velkých amplitudách se můžou vyskytnout velké rozdíly mezi sousedními vzorky vstupního signálu i u nízkých kmitočtů. Řešením je určit maximální možný přírůstek vstupního signálu Δxmax, se kterým ještě algoritmus pracuje správně a pak určit počet mezi-iterací jako ∆x N= . ∆x max
Obr. č. 9: Parametr zesílení u goniometrických funkcí. Při simulaci nelineární funkce aproximované Taylorovým polynomem z (2) bude parametr m roven N
m=
N
1
3
1000 5000 10000 15000 20000 6
32
60
81
.
(17)
Doposud prezentované nové modely nepřináší žádné vylepšení a jsou navíc i výpočetně více náročné. Do algoritmu je však možné zařadit další funkční bloky a značně tak rozšířit jeho možnosti. Jednou z možností je využít algoritmus k omezení saturace na vyšších kmitočtech a tím částečně potlačit aliasingové zkreslení, které při nelineárním zpracování vzniká [4]. Je potřeba zajistit, aby se systém pro vyšší kmitočty choval lineárně, zatímco u nižších kmitočtů bude pracovat v původním režimu. Z rovnice (9) vyplývá, že pokud se má systém chovat lineárně, pak musí být parametr zesílení m konstantní. Je tedy nutné zajistit, aby se parametr m u nízkých kmitočtů měnil v závislosti na vstupním signále a u vyšších kmitočtů nabýval určité konstantní hodnoty. Jednoduchým řešením je filtrace parametru m filtrem typu dolní propust, konkrétně bylo využito filtru druhého řádu s mezním kmitočtem 4 kHz. Na obr č. 10 je zobrazen původní průběh parametru m pro vstupní signál s kmitočtem 13,4 kHz a amplitudou 10. Na obr. č. 11 je pak zobrazen jeho vyfiltrovaný průběh, který se přibližuje ke konstantní hodnotě přibližně m = 0,09.
Tab. č. 1: Počet mezi-iterací pro různé kmitočty. 500
i −1
2.4. DALŠÍ MOŽNÉ VYUŽITÍ ALGORITMU
(14)
tedy pro ∆x ≤ ∆x max bude po zaokrouhlení na vyšší celé číslo N = 1. S rostoucím kmitočtem se bude i Δx zvětšovat a poroste tedy i počet mezi-iterací N. Experimentálně byl Δxmax určen jako Δxmax = 0,02. Při tomto kroku je zajištěna stabilita u signálů o kmitočtu blížícím se Nyquistovu kmitočtu. Počet mezi-iterací N pro různé kmitočty a amplitudu 1 je uveden v tab. č. 1.
100
i
i =1
Pro kmitočty f → 0 bude ∆x → 0 a tím pádem i N → 0,
f [Hz]
∑ a ix
93
2.3. REALIZACE DALŠÍCH NELINEÁRNÍCH FUNKCÍ Popsaný algoritmus (viz obr. č. 4) není omezen pouze pro realizaci funkčního měniče podle (3), ale je možné jej využít prakticky pro jakoukoliv nelineární funkci, u které lze určit průběh její první derivace na požadovaném 10-4
2009/10 – 12. 2. 2009
Obr. č. 10: Průběh parametru zesílení u realizace funkčního měniče časově variantním systémem.
Obr. č. 13: Spektrum výstupního signálu u realizace funkčního měniče časově variantním systémem. Kmitočet signálu je 13,4 kHz.
Obr. č. 11: Vyfiltrovaný průběh parametru zesílení u realizace funkčního měniče časově variantním systémem.
Obr. č. 14: Spektrum výstupního signálu u realizace funkčního měniče podle (3). Kmitočet signálu je 100 Hz.
Obr. č. 12: Spektrum výstupního signálu u realizace funkčního měniče podle (3). Kmitočet signálu je 13,4 kHz.
Obr. č. 15: Spektrum výstupního signálu u realizace funkčního měniče časově variantním systémem. Kmitočet signálu je 100 Hz. 10-5
2009/10 – 12. 2. 2009 Na obr. č. 12 a obr. č. 13 lze porovnat spektra výstupních signálů z původní realizace podle (3) a nové realizace časově variantním filtrem s filtrací parametru m. Vstupním signálem v obou případech byl číslicový harmonický signál o kmitočtu 13,4 kHz. U realizace s filtrací parametru m došlo k částečnému potlačení aliasingového zkreslení. Pro strmější filtr parametru m by bylo potlačení výraznější, protože by i nelineární zkreslení bylo menší. Na obr. č. 14 a obr. č. 15 jsou pak zobrazena spektra výstupních signálů při buzení systémů číslicovým harmonickým signálem o kmitočtu 100 Hz. Rozdíl spekter je způsoben skupinovým zpožděním filtru, kdy je průběh parametru m opožděn vůči původnímu.
v Brně, Fakulta elektrotechniky a komunikačních technologií. 2008. [3] PEKONEN, J. Coefficient-Modulated First-Order Allpass Filter as Distortion Effect. In Proc. of the 11th Int. Conference on Digital Audio Effects (DAFx-08). [online] Espoo, Finland. 2008, 5 p. ISBN 978-951-229517-3. Dostupný z
. [4] ZÖLZER, U. DAFX - Digital Audio Effects, 1st ed. New York: John Wiley & Sons, Ltd, 2002, 533 p. ISBN 0471-49078-4. [5] BARBATI, S., SERAFINY, T. A Perceptual Approach on Clipping and Saturation. [online] 2002. Dostupný z .
Zajímavou vlastností je fakt, že čím vyšší je úroveň vstupního signálu, tím nižší je úroveň vyfiltrovaného parametru m. To je způsobeno tím, že saturace nastává častěji a parametr m má tedy častěji nulovou hodnotu. Důsledkem je, že signály s vyšším kmitočtem nejsou více saturovány ale více zeslabeny. Proto také nebudou nabývat daleko vyšších úrovní než signály s nižším kmitočtem, které byly saturovány na určitou hodnotu.
[6] PROAKIS, J. G., MANOLAKIS, D. G. Digital Signal Processing: Principles, Algorithms and Applications, 3rd Ed. USA: Prentice-Hall, Inc., 1995, 967 p. ISBN 0133737624
Další možností, zmíněnou už výše, je zabudování časově proměnné přenosové funkce. Tím je možné dovnitř systému zavést dynamiku. Toho lze využít pro simulaci analogových nelineárních efektů. Přenosová funkce H(z) je filtr navržený z obvodového schématu simulovaného efektu a převedený bilineární transformací do číslicové oblasti [6]. Parametry tohoto filtru závisí na momentální pozici pracovního bodu na převodní charakteristice a je ho nutné přepočítat s každým novým vzorkem vstupního signálu.
3. ZÁVĚR Navržený časově variantní systém zpracovávající přírůstky signálů, který v nejjednodušší formě obsahuje pouze časově proměnný parametr zesílení, dává stejné výsledky jako klasické funkční měniče. Pro tyto účely je však tato struktura zbytečně těžkopádná. Své uplatnění najde v nových algoritmech, kdy lze tvořit nové zvukové efekty zařazením dalších funkčních bloků do této struktury. Příkladem je omezení zkreslení u vyšších kmitočtů, kdy jsme schopni částečně potlačit aliasingové zkreslení. Velké pole působnosti se otvírá u realizace dynamických zkreslovacích efektů, které mohou simulovat některé své analogové protějšky. Tímto směrem se také bude ubírat následující práce.
LITERATURA [1] SCHIMMEL, J. Syntéza zvukových efektů s využitím nelineárního zpracování signálů. Disertační práce. Brno: Vysoké učení technické v Brně, Fakulta elektrotechniky a komunikačních technologií. 2006. [2] MAČÁK, J. Návrh algoritmů číslicového zpracování signálů pro simulaci kytarových zesilovačů založených na obvodové analýze analogových prototypů. Diplomová práce. Brno: Vysoké učení technické 10-6