Mendelova zemědělská a lesnická univerzita v Brně Provozně ekonomická fakulta
VST plugin Bakalářská práce
Vedoucí práce: Mgr. Tomáš Foltýnek, Ph.D.
Stanislav Trtek
Brno 2010
Děkuji vedoucímu práce Mgr. Tomáši Foltýnkovi, PhD. za nápady, rady a cenné připomínky při zpracování práce.
Prohlašuji, že jsem bakalářskou práci na téma „VST plugin“ vypracoval samostatně a použil jen pramenů, které cituji a uvádím v přiloženém seznamu literatury. V Brně dne 3.1.2010
__________________
Abstract Trtek, S. VST Plugin. Bachelor thesis. Brno: Mendel University, 2010. The bachelor thesis describes sound issues and its behaviour, sound perception, sound recording, sampling, signal modulation and VST – Virtual Studio Technology. The main aim of this thesis was to implement VST plugin that realises space tremolo effect. Keywords Sound, audio signal, sampling, signal modulation, VST plugin.
Abstrakt Trtek, S. VST plugin. Bakalářská práce. Brno: Mendelova univerzita, 2010. Bakalářská práce popisuje problematiku zvuku a jeho vlastností, vnímaní zvuku, snímání zvuku, vzorkování, modulace signálu a VST – Technologii virtuálního studia. Hlavním cílem práce byla implementace VST pluginu, který realizuje prostorový tremolo efekt. Klíčová slova Zvuk, audiosignál, vzorkování, modulace signálu, VST plugin.
Obsah
5
Obsah 1
2
Úvod a cíl práce
7
1.1
Úvod ...........................................................................................................7
1.2
Cíl práce .................................................................................................... 8
Přehled literatury 2.1
9
Zvuk........................................................................................................... 9
2.1.1
Co je to zvuk ...................................................................................... 9
2.1.2
Šíření zvuku....................................................................................... 9
2.1.3
Vlastnosti zvuku...............................................................................10
2.1.4
Vnímání zvuku .................................................................................14
2.2
Analogový signál ......................................................................................16
2.2.1
Co je to analogový signál..................................................................16
2.2.2
Převod zvuku na analogový signál...................................................16
2.3
Digitální signál .........................................................................................16
2.3.1
Co je to digitální signál ....................................................................16
2.3.2
Vzorkování ....................................................................................... 17
2.4
Modulace signálu .....................................................................................19
2.4.1
Efekty měnící dynamiku signálu .....................................................19
2.4.2
Efekty měnící výšku tónu................................................................ 20
2.4.3
Efekty měnící průběh signálu v čase .............................................. 22
2.5
Virtual Studio Technology (VST) ........................................................... 23
2.5.1
Co je to VST? ................................................................................... 23
2.5.2
Historie VST.................................................................................... 23
6
Obsah
2.5.3
Princip VST ......................................................................................24
2.5.4
Využití VST ......................................................................................25
2.5.5
Rozdělení VST pluginů ....................................................................25
2.5.6
VST pluginy..................................................................................... 26
2.6 3
4
Analýza stávajícího stavu VST pluginů realizujících tremolo efekt....... 29
Analýza problému a metodika práce
32
3.1
Analýza problému....................................................................................32
3.2
Metodika řešení .......................................................................................35
Návrh řešení
37
4.1
Vývojové nástroje ....................................................................................37
4.2
Výsledné řešení........................................................................................37
5
Diskuze a závěr
43
6
Literatura
45
6.1
Bibliografické zdroje................................................................................45
6.2
Elektronické zdroje..................................................................................45
7
Seznam obrázků
48
8
Seznam tabulek
49
Úvod a cíl práce
7
1 Úvod a cíl práce 1.1 Úvod V dnešní době je výpočetní technika stále více využívána v nejrůznějších odvětvích lidské činnosti. Používá se také tam, kde bychom ji dříve nečekali. Jedním z těchto oborů je umění. Zdánlivě protichůdný vztah umění a techniky není v dnešní době ničím neobvyklým. Počítače se využívají ve videooblasti (počítačová grafika a animace, synchronizace obrazu a hudby sochařské umění, sklo a jiné užitné umění, design), v divadle (návrhy scény, kostýmů, řízení scénické techniky apod.), v literárním umění (analýza textu, srovnávání, generování básní, textů, překlady), v tanečním umění (návrhy choreografie, tanců, kostýmů, libret), v hudbě aj. (Forró, 1994). Ve své práci se zaměřím na využití počítačů v poslední zmíněné oblasti – hudbě. Počítače jsou využívány k analýze, generování, procesování a záznamu zvuku, dále slouží jako sekvencery, editory, automatizují studiové techniky, hudbu dokáží analyzovat, komponovat i rozeznávat, zaznamenávat a zpracovávat hudební partitury aj. (Forró 1994). Dříve se audiosignál generovaný ze zvuku pomocí elektroakustických měničů (např. mikrofonů, elektromagnetických snímačů nebo piezo snímačů) moduloval jen pomocí analogových efektů. Ty pracují s informací ve formě napětí a tuto informaci mění prostřednictvím zpracování elektrického signálu. Dnes máme k dispozici digitální efekty, digitální multiefekty a virtuální efekty, pomocí kterých je signál zpracováván a měněn digitálně, tedy pomocí matematických algoritmů. (Jirásek, 2005). VST plugin (Virtual Studio Technology), který je obsahem práce, spadá do kategorie virtuálních efektů. Nejde tedy o samostatné zařízení, ale pouze o soft-
8
Úvod a cíl práce
ware, který se využívá v počítačových audiosystémech k procesování audiosignálu.
1.2 Cíl práce Cílem této bakalářské práce je vytvořit VST plugin realizující prostorový tremolo efekt. Plugin bude využíván v hostitelské aplikaci, od které příjme stereo signál, zpracuje ho a pošle zpět hostitelské aplikaci. Parametry efektu budou nastavitelné prostřednictvím uživatelského rozhraní. Jsou to – maximální vzdálenost od středu, rychlost kmitání mezi pravým a levým kanálem, hloubka a frekvence tremolo efektu. Pokud budou hodnoty parametrů nastaveny na nule, efekt by měl vracet signál nezměněný. Plugin bude předávat výstupní signál bez jakýchkoliv nežádoucích artefaktů.
Přehled literatury
9
2 Přehled literatury 2.1 Zvuk 2.1.1 Co je to zvuk Abychom správně porozuměli, jakým způsobem se zvuk snímá a následně zpracovává, musíme si nejdříve objasnit, co vlastně zvuk je. Jde v podstatě o chvění hmoty, změny tlaku prostředí, ve kterém se pohybuje (plynném, kapalném, pevném) v čase, vibrace jeho částic. Dále budeme za prostředí šíření zvuku považovat pouze vzduch. Zvuk se vytváří tehdy, když určitý předmět (např. struna, blána bubnu) kmitá ve slyšitelném frekvenčním pásmu – tj. asi 20 až 20000 kmitů za sekundu. Ještě rychlejší kmitání nevnímáme, pomalejší je vnímáno individuálně. Zvuky se dělí na tóny, kdy je kmitání pravidelné – pak se rozlišuje výška tónu, neboli rychlost kmitání, a na hluky, při kterých částice vzduchu kmitají nepravidelně (tam se nedá mluvit o konkrétní výšce, i když i u hluků se určitá výška rozlišuje – jedná se většinou o shluk mnoha tónu v neharmonickém poměru). Dalšími parametry zvuku je jeho barva (témbr), amplituda (hlasitost) a jeho umístění v prostoru vzhledem k posluchači (Forró, 1994). 2.1.2 Šíření zvuku V normálním prostředí se zvuk pohybuje rychlostí přibližně 340 m za sekundu a způsob jeho šíření se často vysvětluje na příkladu korkové zátky plovoucí ve vodě. Hodíme-li do vody kámen, zátka se houpe nahoru a dolů podle toho, jak se vlní hladina, ale zůstává jinak na místě, neboť voda samotná se od místa, kam byl vhozen kámen, nikam neposouvá. Stejně je tomu i v případě vzduchu, který
10
Přehled literatury
se sám o sobě nikam nepohybuje, ale pouze zprostředkovává přenos zvukových vln (Vlachý, 2008). Zvukové vlny se od zdroje zvuku šíří všesměrově (kulově) a s rostoucí vzdáleností slábne i akustická energie (síla zvuku). Dvojnásobek určité vzdálenosti od akustického zdroje odpovídá útlumu 6 dB. Pro lepší představu uvádíme v tabulce závislost hladiny akustického tlaku na vzdálenosti od zdroje zvuku ( Tabulka 1). Narazí-li zvuk na nějakou překážku, dochází částečně k jeho pohlcení a přeměně na tepelnou energii, částečně k jeho odrazu i šíření překážkou pomocí vibrací, může projít i za překážku šířit se dále do prostoru. Tepelná energie vznikající pohlcováním zvuku je i při dost silných úrovních zvuku takřka zanedbatelná. (Vlachý, 2008). Tabulka 1 - závislost poklesu hladiny akustického tlaku na vzdálenosti
Vzdálenost [m] 1 2 4 32 100 400
Hladina ak. tlaku [dB] 0 -6 -12 -30 -40 -52
V přirozeném prostředí dochází k vícenásobným odrazům, které přicházejí k našim uším s různým zpožděním, v různé barvě (odrazivost různých povrchů se mění s frekvencí zvuku), v různé fázi a z různých směrů. Tomuto jevu se říká přirozený dozvuk (Vlachý, 2008). 2.1.3 Vlastnosti zvuku Jak už jsme si zmínili, zvuk má tři vlastnosti – výšku, intenzitu a barvu. Nyní si tyto tři vlastnosti blíže specifikujeme.
Přehled literatury
11
Zvuk, neboli změna tlaku vzduchu vícekrát za sekundu, může probíhat periodicky (tóny), neperiodicky (hluky, šumy) nebo smíšeně. Pokud tedy budeme měnit tlak vzduchu mechanickou cestou, získáme zvuk. Za zdroje zvuku můžeme považovat cokoliv – například. motor, soustruh, zahřmění, tekoucí voda, vítr, elektrický bzučák, všechny tradiční hudební nástroje i reproduktory (Forró, 1996). Výšku jednoduchého tónu udává jeho frekvence. Čím vyšší je frekvence tónu, tím má větší výšku. U jednoduchého tónu určuje frekvence absolutní výšku tónu. U složeného zvuku, který obsahuje složky různých frekvencí, je jeho výška dána základní tj. nejnižší frekvencí. Absolutní výšku většinou nedokážeme určit sluchem, proto zavádíme další vlastnost – relativní výšku tónu. Ta je dána poměrem frekvence daného tónu k frekvenci tónu základního. Roku 1885 byl ve Vídni na základě mezinárodní dohody hudebníku stanoven základní tón o frekvenci 435 Hz. Nyní se za základní tón považuje komorní A o frekvenci 440 Hz (Techmania, 2008). Intenzita zvuku je dána akustickým tlakem v místě snímání signálu v pascalech. Ucho nevnímá zvyšování akustického tlaku lineárně. Jeho citlivost při zvyšování intenzity klesá přibližně podle logaritmické funkce vyjádřené vztahem:
L = 10 log
I [ dB ] I0
L – hlasitost I – intenzita ak. signálu I0 – prahová intenzita ak. signálu
(1)
12
Přehled literatury
Intenzita zvuku v decibelech je udávána vždy v poměru k referenční hodnotě – obvykle k prahové hodnotě Io. Pro představu vztahu mezi intenzitou akustického tlaku a hlasitostí (subjektivním vnímáním intenzity zvuku) – lze uvést, že zdvojnásobením intenzity představuje zvýšení hlasitosti o 3 dB, pro zvýšení o 20 dB je třeba zvýšit intenzitu 100× (Kašpařík, 2010). Jednotkou intenzity hluku je 1 decibel (dB). Hladina intenzity zvuku se zvýší o 1 dB, když se zvýší intenzita zvuku asi o čtvrtinu. Jde tedy o poměrovou jednotku. 1 dB je zhruba nejmenší rozdíl v hlasitosti, který sluchem ještě postřehneme. Tabulka 2 zobrazuje srovnání úrovně intenzity akustického hluku. Tabulka 2 - srovnání úrovně intenzity akustického hluku
práh slyšení tikot náramkových hodinek u ucha šepot hlasitý hovor na 1 m pouliční hluk při silném provozu motocykl sbíječka a velmi silná hudba práh bolesti
0 dB 10 dB 30 dB 50 dB 70 dB 90 dB 100 dB 130 dB
Několik zdrojů se stejnou hladinou intenzity zvuku zvýší hladinu intenzity zvuku jen málo, např. dva motocyklisti z 90 dB na 93 dB, osm motocyklistů na 99 dB, kdežto deset na 100 dB. Z toho důvodu se hlučné provozy soustřeďují na jedno místo (Techmania, 2008). Intenzitu zvuku lze graficky znázornit jako amplitudu kmitajících částic vzduchu (Obrázek 1). Jde o výchylku kmitání.
Přehled literatury
13
Obrázek 1 - amplituda
Další vlastností zvuku je barva. Důležitá je především u zvuků, které vznikají pravidelným kmitáním, tedy u tónů. Umožňuje subjektivně od sebe rozlišit tóny stejné výšky, které vydávají různé zdroje, např. hudební nástroje. Podle Fourierovy teorie lze každý hudební zvuk rozložit na tzv. harmonické složky. Základním tónem je tón o nejnižší frekvenci. Další tóny mají různou amplitudu, ale v podstatě menší než základní tón. Výsledný zvuk je charakteristický právě vlivem vyšších harmonických tónů (harmonických, alikvót). Čím více vyšších harmonických složek je obsaženo v tónu a čím jsou hlasitější, tím je výsledný zvuk plnější. Když jsou z vyšších harmonických tónů výraznější pouze některé harmonické, zvuk nabírá na pronikavosti a lesku. Příkladem může být zvuk houslí. Jestliže vyšší harmonické tónu jsou slabé, nevýrazné, stává se tím výsledný tón chudý, prázdný. Barvu tónu jednotlivých je možné ovlivnit tvarem a materiálem rezonanční skříňky nástroje – tím dochází k zesílení nebo zeslabení určitých harmonických složek (Techmania, 2008). Každý vyšší harmonický tón lze popsat jako přirozený násobek frekvence základního kmitu. Výsledek takovéto analýzy tónu nazýváme frekvenční spektrum. Tabulka 3 zobrazuje základní harmonické složky tónu.
14
Přehled literatury
Tabulka 3 - harmonické složky tónu
poměr 1 1:2 1:3 1:4 1:5 1:6 1:7 1:8 atd.
násobek (n) 1 2 3 4 5 6 7 8
interval základní vlna oktáva kvinta ve druhé oktávě druhá oktáva velká tercie ve druhé oktávě kvinta ve druhé oktávě malá septima ve druhé oktávě třetí oktáva
Jedinečná barva každého hudebního nástroje vzniká tím, že spolu se základním tónem zní i vyšší harmonické. Již 20-25 stačí k vytvoření charakteristické barvy zvuku hudebního nástroje. V průběhu tónu se mění jejich hlasitost – některé narůstají, jiné klesají až mizí, poté se zase objevují. Dochází i k mírné změně jejich výšek (Jirásek, 2005). S barvou zvuku souvisí jev zvaný spojitá spektra. Jde o zvukové shluky, u které je těžké najít nějakou symetrii – násobky nebo jiné periodické vztahy. Vnášejí tedy do tónu jistou nepravidelnost a tím i ruchovou a šumovou složku. Jsou typické pro nástroje z homogenních materiálů o větší tloušťce (např. kovové kameny u vibrafonu či zvonkohry). Vznikají při nasazení tónu, při přechodech z jednoho tónu na druhý nebo při přílišném přebuzení jak oscilátoru (dechu v náhubku, struny na kytaře), tak rezonátoru (rozkmitání korpusu trubky nad jeho možnosti) (Jirásek, 2005). 2.1.4 Vnímání zvuku Jak už jsme si uvedli, lidský sluch je schopen vnímat zvuk v rozsahu přibližně od 20 Hz do 20 kHz. Tyto hranice jsou pro každého individuální, ale i přesto lze říci, že za každých deset let věku se horní hranice snižuje asi o 1 kHz. Citlivost
Přehled literatury
15
ucha není stejná u všech frekvencí. Nejvyšší je v oblasti 2–4 kHz. Jsme schopni vnímat zvuky v dynamickém rozpětí až 140 dB (Vlachý, 2008). Vyhodnocení slyšeného zvuku probíhá až v mozku. Pokud jsme například nikdy neslyšeli, jak zní fagot, nespojíme si to s žádnými asociacemi, které jsme získali v průběhu mnoha let na základě četby, poslechu, a proto vnímáme zvuk v nižší poloze. To je právě podle Daniela Forró (1994) hlavní problém elektronicky vytvářené hudby. Posluchač slyší nové zvukové barvy, které nemá kam zařadit a má problém s vnímáním takto vytvořené hudby. Směr, ze kterého zvuk přichází, jsme schopni určit díky tomu, že máme dvě uši. Děje se tak na základě vnímání rozdílu fáze, intenzity a frekvenčního průběhu signálu mezi levým a pravým uchem (Vlachý, 2008). Zvuky, které mají agresivnější charakter a jsou hlasitější, mohou zcela tišší měkčí zvuky v nahrávce včetně různých šumů. Je to způsobenou vlastností lidského sluchu, která má za následek maskování jednoho zvuku druhým. Této relativní nedokonalosti lidského sluchu se využívá u různých digitálních systémů pro kompresi dat. Při vyšších zvukových intenzitách dochází též k určitému zkreslení, která se projevuje především vnímáním kombinačních kmitočtů. Sluch se tímto chrání proti přetížení (Vlachý, 2008). Stejně jako další smyslové orgány, i lidský sluch se dokáže po určité době unavit, otupit. Proto jsou u práce zvukařů nutné přestávky, aby se sluch zregeneroval (Vlachý, 2008).
16
Přehled literatury
2.2 Analogový signál 2.2.1 Co je to analogový signál Chceme-li se zvukem pracovat, musíme ho nejdříve převést na analogový elektrický signál (audiosignál) a teprve potom v analogovém nebo digitálním prostředí provést určité úpravy, po kterých se audiosignál zpětně převádí na zvuk. Převod zvuku na audiosignál probíhá pomocí měničů jako jsou mikrofony a snímače, kde je akustická energie převáděna na energii elektrickou (sřídavý el. proud) (Vlachý, 2008). 2.2.2 Převod zvuku na analogový signál Nejčastějším měničem jsou mikrofony, které pomocí membrány snímají změny tlaku vzduchu. Jiné typy snímačů se zaměřují na snímání pohybu těles, kterými se uvádí do pohybu vzduch. Tyto snímače mohou dosahovat čistšího zvuku, protože zde není žádný prostředník, kterým je akustické prostředí - snímače jsou blíž zdroji zvuku. Zatímco pomocí mikrofonů se dá sejmout jakýkoli signál, snímače se nedají využít pro všechny typy zvuků – např. pro lidský hlas. Podle použité technologie snímání dělí tyto snímače na kontaktní (piezoelektrické), které snímají přímo chvění kobylky nebo rezonanční skříně hudebního nástroje, a bezkontaktní (elektromagnetické, elektrostatické, elektro-optické a ultrazvukové), které snímají chvění oscilátorů (strun) z určité vzdálenosti (Forró, 1996).
2.3 Digitální signál 2.3.1 Co je to digitální signál Na rozdíl od analogového signálu, který je charakterizován plynule se měnícím elektrickým napětím generujícím se v různých elektroakustických měničích, je digitální signál záležitostí binárních čísel (jedničky a nuly), která jsou reprezen-
Přehled literatury
17
tovaná v digitálních obvodech přítomností nebo absencí určitého napětí. Pokud tedy chceme převést analogový signál na digitální, je třeba v určitých pravidelných intervalech odměřit hodnotu napětí a převést, abychom získali tzv. binární kód. Takových okamžiků je ve vteřině zvuku několik desítek tisíc. Čím větší počet hodnot (vzorků) odměříme, tím bude převod přesnější a výsledný zvuk kvalitnější. Takový systém převodu analogového signálu na digitální se nazývá vzorkování (sampling) (Vlachý, 2008). 2.3.2 Vzorkování Vzorkování je proces odebírání vzorků audiosignálu. Provádí se jako horizontální i vertikální kvantizování (odměření amplitudy signálu v pravidelných časových odstupech, porovnání hodnot zjištěných v těchto bodech s vertikální kvantizační sítí a jejich převedení na čísla). Vždy dojde ke kvantizačním chybám – audiosignál je pouze aproximován, zaokrouhlen – a to jak horizontálně, tak vertikálně (Forró, 2001). Horizontální kvantizace neboli rychlost vzorkování (vzorkovací kmitočet, sample rate, SR) určuje nejvyšší hranici přenášeného kmitočtu (tzv. Nyquistův limit). Nejvyšší přenášený kmitočet se rovná polovině vzorkovací rychlosti. Do AD převodníku nesmí přijít vyšší kmitočet, jinak dochází k jevu zvanému zcizování – aliasing. Při tomto jevu jsou frekvence nad kmitočtem vzorkování překládány pod kmitočet vzorkování. Přeložená frekvence se rovná vstupní frekvenci odečtené od vzorkovacího kmitočtu – např. vzorkujeme-li signál 6 kHz kmitočtem 10 kHz, vznikne rozdílový kmitočet 10 - 6 = 4 kHz (Forró, 2001). Analogií z optické oblasti je filmový záběr otáčejícího se kola vozidla. Nejdříve se kolo několikrát pootočí, poté se jakoby zastaví a nakonec se zdá, jakoby se kolo otáčelo opačným směrem. K zabránění tomuto nežádoucího jevu se před AD převodník zařazuje filtr typu dolní propust, který má za úkol filtrovat
18
Přehled literatury
frekvence vyšší než Nyquistův limit. Filtrovaný signál je přiveden na vstup obvodu Sample/Hold, který vysekne vzorek amplitudy a podrží jej po dobu kvantizačního kroku, určeného vzorkovací frekvencí, na stejné úrovni, dokud nedostane impuls k přečtení dalšího. V této fázi ještě není signál digitalizován, vznikne z něj schodovitý signál – PAM (Pulsní Amplitudová Modulace) (Forró, 2001). V praxi se využívá vzorkovací kmitočet dvakrát větší plus ještě menší rezerva. Například u záznamu CD je to 44,1 kHz neboť zdravé lidské ucho slyší maximálně do 20 kHz a tedy vzorkovací frekvence byla zvolena s určitou rezervou (Wikipedia, 2010). Pro profesionální účely se využívá standardní vzorkovací frekvence 48 kHz, 88,2 kHz, 96 kHz a 192 kHz (Vlachý, 2008). Bitovou hloubkou nastavujeme jemnost stupnice, pomocí které odečítáme okamžitou hodnotu amplitudy. Standardními bitové hloubky bývají 8, 16, 24 a 32 b. Při hloubce 8 bitů je možnost uložit 256 úrovní signálu – 128 pro zápornou a 128 pro kladnou půlvlnu, při 16 bitech máme k dispozici 65 536 úrovní (Jirásek, 2005). Všechny hodnoty mezi body vertikální stupnice (kvantizačního rastru) jsou zaokrouhlovány na nejbližší nižší hodnotu. Tímto dochází ke kvantizační chybě, která se projeví kvantizačním šumem (nazývá se i granulační šum) – zní jako bílý šum, jindy jako harmonické zkreslení nebo jako kombinace obou. Kvantizační šum je modulován základním signálem a mění svůj charakter, což je horší než stálý šum analogového signálu (Forró, 2001). Bitová hloubka ovlivňuje odstup šumu a celkovou dynamiku systému. Osmibitový převodník má odstup šumu 48 dB, šestnáctibitový 96 dB. Přidání jednoho bitu teoreticky zlepší odstup šumu o 6 dB. Z toho vyplývá, že dvojnásobné zvětšení bitové hloubky zlepší odstup šumu šestnáctkrát. Bohužel není možné
Přehled literatury
19
realizovat libovolné rozšíření bitové hloubky protože s každým bitem mnohonásobně stoupají nároky na paměť počítače (Forró, 2001). Vzorkování probíhá v AD převodníku. AD, tedy analogově-digitální a DA, digitálně analogový převodník bývají sloučeny do jednoho zařízení, tzv. zvukové karty, která je s počítačem spojena pomocí rozhraní USB, FireWire nebo slotu PCI (nejrychlejší a nejstabilnější) (Jirásek, 2005).
2.4 Modulace signálu Probrali jsme problematiku snímání a vzorkování signálu. Nyní se můžeme zaměřit na modulaci tohoto signálu, pomocí které dosáhneme většího rozsahu barev zvuků. Naše nahrávka tímto může být zajímavě zpestřena. Digitální efekty většinou vychází ze svých analogových předchůdců. Efekty modulující signál se dělí do různých skupin. Tyto skupiny a základní efekty si blíže popíšeme. 2.4.1 Efekty měnící dynamiku signálu Jsou efekty které ovlivňují amplitudu vstupního signálu. Kompresor je zařízení, které stlačí hlasitější pasáže signálu - snižuje dynamiku směrem k tišším pasážím. Odtud získal i své jméno. Celá melodie dynamicky „zprůměruje“ a stane se čitelnější. Kompresor možno ovládat několika parametry. Treshold je práh hlasitosti, od kterého se spouští dynamické stlačování hlasitosti. Ratio je kompresní poměr. Při nastavení 1 : 1 kompresor nijak nemění vstupní signál, při poměru 4 : 1 ztišuje čtyřnásobně signál překračující úroveň treshold, při nastavení maximum : 1 je signál nad hodnotou treshold úplně ztišen – takovému extrémnímu nastavení kompresoru se říká limiter. Parametr attack ovlivňuje reakci na příchozí signál v momentě překročení nastaveného trashold a release je naopak reakce v okamžiku, kdy se signál dostává zpět pod hladinu treshold. Poslední parametr gain (make-up) posouvá celkovou
20
Přehled literatury
hlasitost výše – vynahrazuje úbytek dynamiky způsobený kompresí (Jirásek, Mikoška, 2009). Expander je zařízení, které na rozdíl od kompresoru zvyšuje dynamiku nahrávky tak, že po překročení úrovně hlasitosti treshold signál naopak zesiluje. Gate se naopak soustředí na signál nacházející se pod úrovní treshold. Taková místa ještě více zeslabuje (Jirásek, Mikoška, 2009). Tremolo je efekt, který v pravidelných intervalech periodicky mění dynamiku signálu. Je efektem, na který se soustředí tato práce. Využívá amplitudové modulace – pomocí nízkofrekvenčního oscilátoru (LFO) – modulační funkce – mění dynamiku původního signálu (nosné funkce). Útlum tremola bývá v rozsahu 0 až cca 6 dB. Rychlost oscilátoru je v rozmezí 0,5 až 20 Hz. Efekt je často možné ovládat i dynamikou hry – silnější tóny mají za následek například rychlejší kmitání tremola, slabší rychlost tremola snižují (Ptáček, 2008a) Amplitudová modulace a bližší popis jednotlivých parametrů je v kapitole Analýza problému. 2.4.2 Efekty měnící výšku tónu Tyto efekty mění frekvenci signálu. Vibráto je často zaměňováno za tremolo. Oba efekty jsou pojmenovány podle techniky hry na nástroj – tremolo je pravidelné hraní (nebo zesilování a zeslabování) jednoho tónu a vibráto je pravidelná změna ladění tónu – např. vytahování a povolování struny v pravidelných intervalech. U tremola je průběh změny řízen také řízen LFO, ale tentokrát ovlivňuje výšku tónu. Míra zpoždění signálu se pohybuje od nuly do řádově desítek milisekund. Není zavedena zpětná vazba, signál s posunutou fází (wet signal) není přimíchán k původnímu (dry signal) (Ptáček, 2008b).
Přehled literatury
21
Tomuto procesování se říká fázová modulace. Nosná je měněna pomocí modulační funkce (LFO) tím, že je ještě jednou rozkmitána a rozladěna. Podle toho, v jakém poměru jsou frekvence nosné s modulátorem jaké mají obě vlny tvar a podle toho, jaká proběhla hloubka modulace vzniká výsledný specifický zvuk. Parametry fázové modulace jsou rate (rychlost kolísání), depth rate (hloubka modulace), tedy interval okterý původní signál poklesne nebo stoupne a shape (tvar modulační křivky) – jak se bude měnit rychlost zvyšování a snižování signálu (např. sinusoida, čtverec, pila atd.) (Jirásek, 2005). Phaser vytváří pomocí frekvenční modulace nový barevně i výškově kolísavý signál – chvíli ostřejší a rozladěnější, chvíli temnější a ladící. Je toho dosaženo přimícháním zdeformovaného (wet) signálu k nezměněnému (dry) – dochází k posunům jednotlivých složek barvy signálu, jejich sčítání a odčítání. Vzniká hřebenový filtr. Ke známým parametrům vibráta přibývá ještě Phase (fáze) (Jež, Jirásek, 2009a). Jestliže zahraje větší těleso stejnou melodii, některé nástroje nastoupí dříve, některé později, během hry se předbíhají a opožďují. Někdo hraje chvíli níže a chvíli výše. Tím vzniká zajímavý jedinečný souzvuk. Tento efekt se snaží napodobit chorus. Chorus vlastně míchá efekty vibráto a delay (zpoždění - bude popsán dále). Kromě parametrů vibráta přibývá ještě Delay (zpoždění efektovaného signálu – 10-50 ms). Chorus zdůrazňuje nižší kmitočty a vyšší se maskují díky hřebenovému filtru. Zvuk se tímto změkčí a zakulatí (Jež, Jirásek, 2009a). Flanger je něco mezi phaserem a chorusem. Hloubkou modulací, zpětnou vazbou a krátkým zpožděním se dosahuje výrazných zdvihů i potlačení některých frekvenčních pásem. Delay je mnohem kratší – 1-10 ms a Feedback (zpětná vazba) může být negativní (-100% - 100%) (Jež, Jirásek, 2009a).
22
Přehled literatury
2.4.3 Efekty měnící průběh signálu v čase Tyto efekty napodobují prostor pomocí jemných změn hlasitosti a barvy v jednotlivých kanálech (levý a pravý). Reverb je zařízení, jehož funkcí je na prvním místě simulace dozvuku. Napodobuje zvukové prostředí místností takových rozměrů, že se v nich nestačí tvořit ozvěny. Pouze rychle po sobě jdoucí odrazy slévající se v dozvuk. Efekt přimíchává k původnímu signálu další zpožděné signály, které jsou většinou v rozsahu 20-50 ms. Standardními parametry jsou Early reflection (síla prvních odrazů), Decay (doba poklesu dozvuku), Pre-delay (doba mezi původním signálem a prvním odrazem), Dry Out a Wet Out nastavují poměr signálu původního a signálu změněného (Jirásek, 2005). Delay vytváří čitelné, neslité odrazy původního signálu. Pracuje vlastně na principu ozvěny. Odražené signály mají různé časové rozestupy mezi sebou, mohou se různou měrou zeslabovat, dokonce i měnit barvu. Parametry jsou Delay – zpoždění, může být zadáváno i délkami not, Feedback – výstupní signál se přivádí zpět na vstup a tím se získává vícenásobná ozvěna, Hi Damp (útlum výšek) – ubývání vyšších kmitočtů během jednotlivých ozvěn a Color (barva) – většinou se jedná o jednoduchý ekvalizér, mění hlasitost některých spekter zvuku Wet/Dry – nastavení poměru echa a nezměněného signálu (Jež, Jirásek, 2009b)
Přehled literatury
23
2.5 Virtual Studio Technology (VST) 2.5.1 Co je to VST? Virtual Studio Technology (VST) byla vyvinuta německou firmou Steinberg v roce 1996. VST vytváří kompletní profesionální studiové prostředí na PC a Macu. VST umožňuje propojit virtuální efekty a instrumenty do digitálního audio prostředí. Může jít simulace hardwarových efektů nebo o efekty nové. Vše je zabudováno do hostitelské aplikace (Digital Audio Workstation, DAW – Digitální audiosystém). Jelikož jsou efekty propojovány virtuálně, není zapotřebí žádná kabeláž. Efekty se tímto stávají daleko flexibilnějšími. Všechny parametry VST efektu nebo instrumentu je možno ovládat buď myší pomocí kontrolérů v uživatelském rozhraní, které připomínají klasické ovládací prvky hardwarových efektů, nebo pomocí přídavného hardwarového ovladače. Oproti jiným systémům plug-in modulů jako např. JMF (Java Media Framework) a DirectX, není tento tak univerzální, což má vliv na efektivnost zpracování a zátěž procesoru. Systém VST sám o sobě neumí zachytávat nebo přehrávat zvukové signály. Proto je ho nutné zkombinovat s jiným systémem, nejčastěji s ASIO (Audio Streaming Input/Output). Jde o protokol ovladačů zvukových karet vyvinutý též firmou Steinberg tvořící páteř VST aplikací. ASIO podporuje různé bitové hloubky a vzorkovací frekvence, vícekanálové operace a synchronizaci. Výhodou je velmi malé výsledné zpoždění, vysoký výkon a flexibilita. Systém je kontrolovatelný a nabízí kompletní přístup ke všem funkcím zvukového systému (Jakub Angelis, 2004). 2.5.2 Historie VST V roce 1996 firma Steinberg implementovala Virtual Studio Technology (VST) do vícestopého audio/midi editoru Cubase VST určeného pro počítače Apple
24
Přehled literatury
Macintosh. Tento hudební editor byl tedy prvním prostředím pro VST efekty. O rok později vychází Cubase VST i pro PC. Technologie ASIO a VST se stávají volnými standardy, které umožňují dalším vývojářům vytvářet své pluginy – modulové jednotky VST (František Sobotka, 2007). Další rozvoj technologie přichází v roce 1999, kdy Steinberg vydává VST 2.0, které podporuje i virtuální instrumenty v podobě pluginů. ASIO 2.0 a ovládání kontroléry umožňují lepší integraci hardwaru a softwaru. V roce 2001 Steinberg prezentuje novou průkopnickou technologii VST Link, která umožňuje síťové spojení a přesnou synchronizaci více počítačových audiosystémů (František Sobotka, 2007). 2.5.3 Princip VST VST instrumenty využívají hudební data poslané přes MIDI (Musical Instrument Digital Interface) – mezinárodní standard užívaný v hudebním průmyslu jako elektronický komunikační protokol. Tato data jsou něco jako noty v digitální podobě. Mohou být přehrávány jako audio podle zadaných vlastností VST instrumentu. VST efekty pracují přímo s audio daty – vzorkovaným audiosignálem. Některé VST efekty využívají i MIDI, například pro synchronizaci nahrávky a tempa skladby nebo k nastavení parametrů zařízení pomocí hardwarových ovladačů (pedalboardů). Většina hostitelských aplikací umožňuje řetězení více VST efektů (Wikipedia, 2010b). VST plugin je modulem VST. Není samostatnou aplikací, ale pouze komponentem určeným ke zpracování audia. Je využíván v hostitelské aplikaci. VST plugin od hostitelské aplikace příjímá úsek audio dat (audio stream), zpracovává ho a výsledek vrací hostitelské aplikaci. Své procesy vykonává prostřednictvím procesoru počítače; pro výpočty není potřeba speciální digitální signálové procesory. Audio stream je rozdělen na bloky, jejichž velikost řídí hostitelská apli-
Přehled literatury
25
kace. Z jejího pohledu je tedy VST plugin „černou skříňkou“ s určitým počtem vstupů a výstupů (MIDI nebo audio). Nepotřebuje znát procesy, kterými plugin zpracovává audio. VST Pluginy standardně zpracovávají 32 bitová audio data – čísla s plovoucí řádovou čárkou. Je možné se přepnout do režimu zpracování 64 bitových dat. Přednastavené rozmezí čísel je od -1.0 do 1.0 včetně krajních bodů – 1.0 odpovídá hlasitosti 0.0 dB, 0.5 odpovídá -6 dB a 0.0 odpovídá - nekonečnu dB. Vstupních parametrů pluginu musí být zadané v rozmezí od 0.0 do 1 včetně krajních bodů (Steinberg Media Technologies, 2006). Zdrojový kód VST pluginů je nezávislý na operační platformě, rozdílný je pouze formát pluginů: • Ve Windows je je VST plugin dynamicky linkovaná knihovna (DLL) • V Mac OS X je Bunde (balík) • V BeOS a SGI (pod MOTIF, UNIX) je sdílenou knihovnou (shared library) (Steinberg Media Technologies, 2006). 2.5.4 Využití VST VST využije každý, kdo chce své hudební dílo vytvořené ve virtuálním audiostudiu obohatit o realistické či nově vytvořené zvuky hudebních nástrojů a dále je upravit dle vlastních požadavků. Uplatnění tedy nachází hlavně v domácích i profesionálních nahrávacích studiích. Díky možnosti zpracování signálu v reálném čase je možné využít VST i při živých hudebních produkcích. 2.5.5 Rozdělení VST pluginů VST pluginy, neboli zásuvné moduly, se dělí na:
26
Přehled literatury
• VST instrumenty - generující audio. Jedná se o syntezátory a samplery. Některé napodobují zvuk starých legendárních syntezátorů (např. Pro-53 od firmy Native Instruments simuluje syntezátor Prophet-5). • VST efekty – zpracovávající audio vstup. Jde o efekty jako reverb, phaser, flanger a další. Některé efekty pracují se vstupním signálem tak, že graficky zobrazují jeho průběh, aniž by ho měnily. • VST MIDI efekty – pracující s MIDI zprávami. Tyto efekty data zpracovávají a dále posílají do VST instrumentů nebo hardwarových zařízení. Slouží například k transponování nebo vytváření arpeggií (Wikipedia, 2010b). 2.5.6 VST pluginy Nyní si uvedeme a popíšeme zástupce jednotlivých kategorií VST pluginů. The Grand od firmy Steinberg je proslulý VST plugin představující virtuální klavír. Řadí se do první kategorie – do VST instrumentů. Jedná se o sampler, tedy o elektronický hudební nástroj pracující se zvukovými vzorky. V poslední verzi The Grand 3 je představena kolekce pěti modelů klavíru – třech koncertních křídel, elektrifikovaného piana a pianina. Všechny vzorky jsou nahrané v celé délce znění zvuku a ve dvaceti hlasitostech, aby byl zvuk co nereálnější. K tomu přispívá i možnost modelování místnosti, ve které klavír zní (Obrázek 2), výběr ze dvou pozic umístění mikrofonů, simulace rušivých prvků – dopad kladívek na struny, doznívání a rezonance strun, klapání kláves a zvuk pedálu. Požadavky na hardware jsou poměrně vysoké – minimálně procesor Pentium/Athlon 2.0 GHz dual core, 2 GB RAM, asi 32 GB volného místa na disku. Je ale možné plugin přepnout do režimu ECO, který snižuje zatížení procesoru a uvolňuje paměť RAM pro využití jinými procesy tím, že načte pouze sedm z dvaceti možností dynamiky tónů. Paměť RAM lze uvolnit též funkcí RAM Save,
Přehled literatury
27
která neskenuje celý projekt a z paměti RAM odstraní nepoužívané samply. Tento virtuální nástroj je k dostání za cenu 6300 Kč. (Muzikant.cz, 2010).
Obrázek 2 - The Grand
Flang-3R od firmy Atom Splitter Audio je VST efekt, který je zdarma ke stažení. Jak je z názvu patrné, jedná se o klasický fázově-modulační efekt – flanger. Tento je ale zajímavý především svou komplexností v ovládání parametrů. Flang-3R je stereofonní šestipásmový flanger se třemi funkčními režimy, které určují způsob nastavení rychlosti kolísání (pro levý a pravý kanál zvlášť, dohromady a v synchronizaci s aktuálním tempem v hostitelské aplikaci). Lze nastavit vlnový průběh nízkofrekvenčního oscilátoru, neboli tvar křivky, kterou je původní zvuk modulován – na výběr jsou tvary jako sinusoida, pila, trojúhelník, čtverec a netypický sample and hold generující sérii náhodných hodnot. Pomocí ovladače Smooth lze vyhladit průběh funkce, Deph určuje hloubku modulace. Shiftem se nastavuje oblast frekvenčního filtru, ve které se flanger pohybuje a
28
Přehled literatury
posledním důležitým parametrem je Mix, který nastavuje poměr dry a wet kanálu (původního a procesovaného) (František Sobotka, 2008).
Obrázek 3 - Flang-3R
Do kategorie VST MIDI efektů se řadí VST plugin nazvaný Arpeggiator, který najdeme v balíku Infinity 2.0 firmy Sound Quest. Balík obsahuje 100 VST MIDI efektů a asi 20 zařízení zahrnující virtuální keyboardy a sekvencery. Celý balík je možno zakoupit na stránkách výrobce za cenu 299$. Arpeggiator je nástroj pro tvorbu arpeggií v reálném čase, tedy rozkladů akordů hraných harfovým způsobem. MIDI vstupem jsou tóny zahrané například masterkeyboardem, sekvencerem nebo viruálním keyboardem, od kterého se stanoveným způsobem vytváří rozklad. Je na výběr několik možností, jakým směrem se vytváří rozklad – nahoru, dolů, nahoru a dolů, dolů a nahoru nebo náhodně, vše v rozsahu až pěti oktáv. Nastaví se tempo a délku not je možno upravit v sekci Velocity processing a průběh rozkladu v sekci Duration Processing (Obrázek 4). U každé z těchto sekcí je možno zvolit náhodný výběr a jeho rozsah (Sound Quest, 2010).
Přehled literatury
29
Obrázek 4 - Arpeggiator
2.6 Analýza stávajícího stavu VST pluginů realizujících tremolo efekt Nyní se podívejme na současný stav volně dostupných VST plugin, které vytvářejí tremolo, tedy efekt, který je předmětem této práce. BJ Tremolo je klasický tremolo efekt se standardními funkcemi Frequency a Depth. Je možné též zvolit tvar funkce – na výběr je sinus, trojúhelník, pila a exponenciální pilový tvar (Obrázek 5).
Obrázek 5 - BJ Tremolo
30
Přehled literatury
Simple tremolo je možné ovládat stejnými parametry jako předchozí efekt, přibývá pouze možnost vybrat si jeden ze dvou módů – tremolo nebo panner (Obrázek 6). Tyto módy ovšem nejsou zvukově rozeznatelné.
Obrázek 6 - Simple Tremolo
MTremolo je standardní tremolo efekt s parametry Depth a Rate. Zajímavostí je posuvník Phase diference, kterým je možno kontinuálně nastavit tvar modulační funkce (Obrázek 7).
Obrázek 7 - MTremolo
NdcTrem má zajímavou funkci, pomocí které je možné synchronizovat frekvenci tremola s tempem skladby přehrávané v hostitelské aplikaci. Opět je zde možné zvolit alternativní efekt panner, který se od tremola liší jen velice ne-
Přehled literatury
31
patrně. Poslední zajímavostí je možnost zvolit náhodný tvar modulační funkce (S/H) (Obrázek 8).
Obrázek 8 - ndcTrem+
Tremollama má spoustu nastavitelných parametrů, které vylaďují tremolo efekt ještě detailněji. Oproti ostatním efektům se liší hlavně funkcí Tap Tempo, která umožňuje nastavit frekvenci pomocí několika kliknutí myší (Obrázek 9).
Obrázek 9 - Tremollama
Žádný z volně dostupných VST pluginů nevyužívá tremola zároveň se stereo pannerem vytvářející dojem prostoru. Můžeme tedy tento efekt realizovat.
32
Analýza problému a metodika práce
3 Analýza problému a metodika práce 3.1 Analýza problému Tremolo je efekt, při kterém se pravidelně mění amplituda vstupní funkce. Při zpracování nedochází ke změně výšky ani barvy tónu, je měněna pouze intenzita zvuku a to tak, že je v pravidelných intervalech snižována. Toto ztlumování může mít průběh sinusoidy, trojúhelníku, obdélníku nebo čtverce. Původní funkce je tedy měněna pomocí jiné funkce daných vlastností. Takový způsob úpravy signálu nazýváme amplitudová modulace. Původní signál se nazývá nosná funkce (nese určitou informaci) a je měněna pomocí modulační funkce. Jestliže nosná i modulační funkce jsou sinusoidy, mohla by amplitudová modulace vypadat tak jako na obrázku (Obrázek 10 - amplitudová modulaceObrázek 10).
Obrázek 10 - amplitudová modulace
Analýza problému a metodika práce
33
První křivka na obrázku je modulační signál, druhá je nosná a třetí výsledná funkce po aplikování amplitudové modulace. Tvar modulačního signálu ovlivňuje obálku výsledné funkce, tedy křivku obalující jednotlivé hřebeny výsledné funkce. U efektu tremolo jsou obvykle nastavovány dva parametry: hloubka a frekvence. Hloubka je v našem případě procentní amplitudové zkrácení modulační funkce. Frekvencí je myšlena frekvence modulační vlny a je uváděna v Hz – počtech kmitů za sekundu. Jelikož má být původní signál (am) pouze ztlumován, musí se hodnota modulační funkce pohybovat mezi jedničkou a nulou včetně krajních bodů:
a m ∈ 0,1
(2)
Pokud se am bude rovnat nule, původní signál bude ztišen úplně. Pokud se am bude rovnat jedné, zůstane signál nezměněn. Modulační sinusová funkce tedy vypadá tak, jak je zobrazeno na obrázku (Obrázek 11).
Obrázek 11 - modulační funkce efektu tremolo
Jelikož je tato funkce dvojnásobně amplitudově zkrácená a je posunuta vertikálně o hodnotu 0,5, bude mít předpis:
34
Analýza problému a metodika práce
y=
1 1 sin (2Π ft ) + 2 2
(3)
f je parametr frekvence zadaný uživatelem a t je čas. 2Πft nám tedy udává pozici na ose x. Zakomponujeme-li do této funkce hloubku h, dostaneme hodnotu modifikátoru m: 1 1 m = h × sin (2Π ft ) + 2 2
(4)
Výstup tremolo efektu out dostaneme tak, že vstupní sample s (hodnotu amplitudy v čase t) vynásobíme modifikátorem m: out = in × m
(5)
Jestliže chceme, aby vytvářený tremolo efekt byl zároveň stereo efektem, při kterém zvuk pravidelně kmitá mezi kanály, využijeme efektu panner. Jedná se vlastně o tremolo efekt, který je nastaven na každém kanálu v navzájem opačné fázi. Naše sluchové ústrojí snímá pravidelné změny hlasitostí kanálů a náš mozek vytváří iluzi přechodu zvuku zleva doprava a naopak. Modulační funkce pro levý a pravý kanál efektu panner ukazuje Obrázek 12. 2
1
0
-1
-2
Obrázek 12 - modulační funkce efektu panner
Pravý kanál Levý kanál
Analýza problému a metodika práce
35
Panner má většinou dva nastavitelné parametry – hloubku a frekvenci přechodu z levého kanálu na pravý (rate, fpan) vyjádřeného v Hz. Předpis modulační funkce pravého kanálu je:
yP =
1 1 sin (2Πf pan t ) + 2 2
(6)
Přidáme-li hloubku hpan (procentní amplitudové zúžení modulační funkce) dostaneme hodnotu modifikátoru pravého kanálu:
m P = h pan
1 1 sin (2Π f pan t ) + 2 2
(7)
Modulační funkce levého kanálu je v opačné fázi. Předpis modifikátoru levého kanálu je tedy:
ml = − h pan
1 1 sin (2Π f pan t ) + 2 2
(8)
3.2 Metodika řešení Nejdříve si musíme ujasnit, jak bude výpočet algoritmu našeho pluginu probíhat. Tento algoritmus by měl: 1.
Vytvořit instanci hlavní třídy, když je plugin volán hostitelskou aplikací, přijmout vstupní signál a poskytnout informace o názvu a dalších vlastnostech pluginu hostitelské aplikaci
2.
Zobrazit grafické uživatelské rozhraní, pomocí kterého může uživatel nastavovat jednotlivé parametry efektu
3.
Tyto parametry dokázat zpětně číst
36
Analýza problému a metodika práce
4.
Zjistit sample rate a počet přijatých samplů a na základě toho vypočítat čas přijatého vzorku
5.
Vypočítat tremolový modifikátor vstupního samplu (aktuální amplitudy vstupního signálu) – stejný pro oba kanály
6.
Vypočítat pannerový modifikátor pravého kanálu vstupního samplu
7.
Vypočítat pannerový modifikátor levého kanálu vstupního samplu
8.
Upravit vstupní sample pravého kanálu pomocí tremolového modifikátoru a pannerového modifikátoru pravého kanálu a poslat na výstup hostitelské aplikaci
9.
Upravit vsupní sample levého kanálu pomocí tremolového modifikátoru a pannerového modifikátoru levého kanálu a poslat na výstup
10.
Opakovat kroky 3 až 9 dokud není přerušen proud vstupního signálu
Jelikož budeme pracovat se standardem VST, je potřeba si stáhnout vývojové nástroje (Software Development Kit), které firma Steinberg Media Technologies poskytuje zdarma na svých stránkách, a pročíst si informace o základních metodách v dokumentaci této sady nástrojů (Steinberg Media Technologies, 2006). Posledním krokem je volba programovacího jazyka a na základě toho výběr vhodného vývojového prostředí, pomocí kterého program realizujeme.
Návrh řešení
37
4 Návrh řešení 4.1 Vývojové nástroje Základní sada vývojářských nástrojů, které poskytuje Steinberg, je napsána v programovacím jazyce C++. Proto jsem se tedy rozhodnul zvolit tento jazyk k realizaci svého projektu. Za vývojové prostředí jsem si zvolil Code::Blocks díky svému přehlednému editoru zdrojového kódu, inerpretu a kolekcí kompilátorů MinGW obsahující GNU C kompilátor (GCC). Výstupem kompilátorů může být pouze knihovna dll bez dalších nepotřebných projektových souborů.
4.2 Výsledné řešení Nyní si projdeme a popíšeme výsledné řešení programu. Plugin jsem se rozhodl pojmenovat Wings, protože zvuk modulovaný tímto efektem připomíná mávání křídel. Hlavičkový soubor Wings.h začíná takto: 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13.
#ifndef __WINGS_H #define __WINGS_H #include "public.sdk/source/vst2.x/audioeffectx.h" enum { cVzdalenost, cRychlost, cHloubka, cFrekvence, cParametru };
První řádek je určen preprocesoru. Ptáme se, jestli už byl obeznámen s makrem Wings. Jestliže není, tak toto makro vytvoří na 2. řádku. Direktiva ifndef je ukončena až na 49. řádku příkazem #endif. Na 4. řádku zahrnujeme do programu hlavičkový soubor z vývojové sady audioeffectx.h. Chceme totiž pou-
38
Návrh řešení
žívat funkce třídy AudioEffectX. Příkazem enum na 6. řádku očíslujeme jednotlivé vstupní parametry pluginu – Vzdálenost a Rychlost jsou názvy parametrů hloubka a rate panneru, Hloubka a Frekvence jsou parametry tremolo efektu a poslední symbolická konstanta cParametru udává počet vstupních parametrů. 14. class Wings : public AudioEffectX 15. { 16. public: 17. Wings (audioMasterCallback audioMaster); 18. ~Wings(); 19. 20. // Processing 21. virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames); 22. 23. // Program 24. virtual void setProgramName (char* name); 25. virtual void getProgramName (char* name); 26. 27. // Parametery 28. virtual void setParameter (VstInt32 index, float value); 29. virtual float getParameter (VstInt32 index); 30. virtual void getParameterLabel (VstInt32 index, char* label); 31. virtual void getParameterDisplay (VstInt32 index, char* text); 32. virtual void getParameterName (VstInt32 index, char* text); 33. 34. virtual bool getEffectName (char* name); 35. virtual bool getVendorString (char* text); 36. virtual bool getProductString (char* text); 37. virtual VstInt32 getVendorVersion (); 38. 39. protected: 40. float pVzdalenost; 41. float pRychlost; 42. float pHloubka; 43. float pFrekvence; 44. long pocitadlo1; 45. long pocitadlo2; 46. char programName[kVstMaxProgNameLen + 1]; 47. }; 48. 49. #endif
Na 14. řádku definujeme základní třídu Wings, která je odvozena ze třídy AudioEffectX. Dále uvádíme, které metody a proměnné této třídy využijeme. Na řád-
Návrh řešení
39
ku 40. až 44. deklarujeme proměnné, do kterých se budou ukládat parametry nastavené uživatelem. Implementační soubor Wings.cpp začíná: 50. 51. 52. 53. 54.
#ifndef __WINGS_H #include "Wings.h" #include
#endif
Opět se ptáme, jestli preprocesor zná makro __WINGS_H. Jestliže ne, pak do programu zahrneme hlavičkový soubor Wings.h. Na 52. řádku přidáváme do programu standardní C++ knihovnu cmath, abychom mohli použít funkci sinus a konstantu Π. 55. AudioEffect* createEffectInstance (audioMasterCallback audioMaster) 56. { 57. return new Wings (audioMaster); 58. }
Tyto řádky vytvoří instanci třídy Wings, když hostitelská aplikace vyžaduje plugin. 59. 60. 61. 62. 63. 64. 65.
Wings::Wings (audioMasterCallback audioMaster) : AudioEffectX (audioMaster, 1, cParametru) // vstuní info, 1 program, pocet parametru { setNumInputs (2); // stereo vstup setNumOutputs (2); // stereo vystup setUniqueID ('Wing'); // identifikator canProcessReplacing (); // podporuje prepisovani vystupu
66. 67. 68. 69. 70. 71. 72.
pVzdalenost=1.0; pRychlost=0.1; pHloubka=0.5; pFrekvence=0.1; vst_strncpy (programName, "Default", kVstMaxProgNameLen); }
40
Na
Návrh řešení
59.
řádku
implementujeme
konstruktor,
který
jsme
deklarovali
v hlavičkovém souboru. Vstupním parametrem je objekt typu audioMasterCallback, který obsahuje data potřebná pro interakci mezi hostitelskou aplikací a pluginem. Obsahuje též zvukové vzorky, které budeme zpracovávat. Dalšími parametry je počet defaultních presetů a počet parametrů pluginu. Na řádcích 6265 voláme zděděné metody třídy AudioEffectX. Jejich význam je uveden v komentářích na konci řádků. Ve zbytku implementace konstruktoru zadáváme přednastavené hodnoty parametrů a název presetu. 73. void Wings::setProgramName (char* name) 74. { 75. vst_strncpy (programName, name, kVstMaxProgNameLen); 76. } 77. 78. void Wings::getProgramName (char* name) 79. { 80. vst_strncpy (name, programName, kVstMaxProgNameLen); 81. }
Funkce setProgramName nastvuje název presetu, který byl přijatý z uživatelského rozhraní a funkce GetProgramName poskytuje tento název pro zobrazení v uživatelském rozhraní. Další funkce, které zde nejsou uvedeny, obdobným způsobem nastavují a poskytují uživatelskému rozhraní hodnoty a názvy parametrů, zobrazení jednotek parametrů, název efektu, identifikační kód efektu, název výrobce atd. Nyní se dostáváme k samotnému zpracování vstupního signálu – k funkci processReplacing: 82. void Wings::processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames) 83. { 84. float* in1 = inputs[0]; 85. float* in2 = inputs[1]; 86. float* out1 = outputs[0]; 87. float* out2 = outputs[1]; 88. float sampleRate = updateSampleRate(); 89. float cinitel1;
Návrh řešení
90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121.
41
float float float float
while (--sampleFrames >= 0) { // zvysit pocitadlo samplu (v periode Rychlosti) if(pocitadlo1 < ((1/pRychlost*10) * sampleRate)) { pocitadlo1++; } else { pocitadlo1=0; } //zvysit pocitadlo samplu (v periode Frekvence) if(pocitadlo2 < ((1/pFrekvence*10) * sampleRate)) { pocitadlo2++; } else { pocitadlo2=0; } casPan=pocitadlo1/sampleRate; casTrem=pocitadlo2/sampleRate; //cinitele menici puvodni amplitudu cinitel1 = (1 - pVzdalenost) + pVzdalenost * 0.5 * (1 + ( sin (2 * M_PI * (pRychlost*10) * casPan) ));
122. 123.
cinitel2 = (1 - pVzdalenost) + pVzdalenost * 0.5 * (1 - ( sin (2 * M_PI * (pRychlost*10) * casPan) ));
124. 125.
126. 127. 128. 129. 130. }
cinitel2; cinitel3; casTrem; casPan;
cinitel3 = (1 - pHloubka) + pHloubka * 0.5 * (1 - ( sin (2 * M_PI * (pFrekvence*10) * casTrem) )); (*out1++) = (*in1++) * cinitel1 * cinitel3; (*out2++) = (*in2++) * cinitel2 * cinitel3; }
42
Návrh řešení
Na řádcích 84-87 vytváříme lokální ukazatele do vstupního a výstupního bufferu. Dále do proměnné sampleRate uložíme pomocí funkce updateSamplerRate sample rate aktuálního přijatého vzorku. Pomocí cyklů while spočítáme kolikátý sample v periodě tremolového efektu a panneru zpracováváme. Díky tomu můžeme pomocí vypočítat čas podle vzorce: t = PV / SR
(9)
PV udává počet vzorků v periodě funkce a SR sample rate. Nakonec vypočítáme jednotlivé modifikátory tremolové a pannerové funkce (činitele), kterými na řádcích 127 a 128 upravíme vstupní samply levého a pravého kanálu a předáme je na příslušné výstupní kanály. Jestliže chceme, aby při nulovém nastavení hloubky (h) efektů procházel nezměněný zvuk, hodnota činitele (č) tedy musí být jedna. Proto k modifikátorům (m) musí být přičten člen (1-h): č = (1 − h) + m
(10)
Zdrojový kód nyní máme hotový a můžeme ho kompilátorem převést na binární soubor DLL a načíst v hostitelské aplikaci. Grafické uživatelské rozhraní pro ovládání pluginu poskytuje právě tato hostitelská aplikace. Podívejme se, jak toto rozhraní vypadá v aplikaci WaveLab 5.0 (Obrázek 13).
Obrázek 13 - grafické uživatelské rozhraní VST pluginu
Mezi jednotlivými parametry se můžeme pohybovat pomocí ovladače Page a hodnotu parametru měníme ovládacím kolečkem.
Diskuze a závěr
43
5 Diskuze a závěr Vytvořili jsme VST plugin realizující efekt tremolo se stereo přechodovými změnami. Jak se nám podařilo dodržet vytyčené cíle? První podmínkou bylo že, efekt musí spolupracovat s hostitelskou aplikací tak, že si budou vzájemně předávat jednotlivá hudební data, hodnoty parametrů a další informace, které budou zobrazeny v grafickém uživatelském rozhraní. To se nám podařilo naplnit, neboť efekt poskytuje uživatelské rozhraní, které je zobrazeno v GUI hostitelské aplikace. Efekt měl mít čtyři parametry – maximální vzdálenost od středu, rychlost kmitání mezi stereo kanály, hloubku a frekvenci tremolo efektu. To jsme též splnili realizací čtyř parametrů pluginu – vzdálenost, rychlost, hloubka a frekvence. První dva parametry ovládají panový efekt a dva zbývající ovládají tremolo efekt. Efekt měl vracet signál, i když byly hodnoty všech parametrů nastaveny na nule – toho bylo docíleno úpravou modifikátorů vstupního signálu. Efekt nyní při nulové hodnotě všech parametrů vrací signál nezměněný. Kvalita výstupního zvuku je dobrá, bez jakýchkoliv nežádoucích jevů. Můžeme tedy říct, že tento plugin je využitelný i při profesionálním mixování hudby. Použijeme-li speciální VST hostitelskou aplikaci – např. GT player firmy DSound a ASIO technologii pro přenos hudebních dat s nízkou latencí, je možné efekt využívat i v reálném času – třeba na koncertě. Vytvořený VST plugin je přínosný tím, že kombinuje dva efekty, které nebývají zahrnuty do jedné modulové jednotky VST. Lze tedy docílit většího barevného rozsahu než u klasických efektů a to s nižší odezvou, než kdyby byly tyto efekty zapojeny za sebou. Efekt by do budoucna mohl být ještě rozšířen o možnost nastavení tvaru modulační vlny jak u tremolo efektu, tak u panneru – například trojúhelník,
44
Diskuze a závěr
čtverec, obdélník nebo náhodný tvar. Možnosti nastavení by se pak ještě rozšířily. Další funkcí by mohlo být rozšíření panového efektu do prostoru nebo přímo využití technologie Surround 5.1 pro podporu pětikanálového zvuku. Výsledný zvuk by se mohl pohybovat nejen mezi kanály, ale i v celém prostoru.
Literatura
45
6 Literatura 6.1 Bibliografické zdroje FORRÓ, D. Domácí nahrávací studio. 1. vydání. Praha: Grada Publishing, 1996. ISBN 80-7169-231-X. FORRÓ, D. Musitronika, Elektroakustické hudební nástroje – IV. Samplery. Brno: JAMU, 2001. ISBN 80-85429-57-8. FORRÓ, D. Počítače a hudba. 1. vydání. Praha: Grada, 1994. ISBN 80-5623-57-9. GRACE, R. Hudba a zvuk na počítači. 1. vydání. Praha: GRADA Publishing, 1999. ISBN 80-7169-519-X. JIRÁSEK, O. Kytara a počítač. 1. vydání. Brno: Computer Press, 2005. ISBN 80-251-0843-0. VLACHÝ, V. Praxe zvukové techniky. 3. vydání. Praha: Muzikus, 2008. ISBN 978-80-86253-46-5.
6.2 Elektronické zdroje
ANGELIS, J. DSP v životě muzikanta. [on-line]. 2004 [cit. 16.12.2010]. Dostupný z WWW: . Infinity 2.0 MIDI Devices, Hosts and Effects. [on-line]. 2010 [cit. 19.12.2010]. Dostupný z WWW: . JEŽ, R, JIRÁSEK, O. Zoufalý aranžér VI - Efektovaná kytara - dozvuk a echo. [on-line].
2010
[cit.
17.12.2010].
Dostupný
z
WWW:
46
Literatura
JEŽ, R, JIRÁSEK, O. Zoufalý aranžér VIII - Efektovaná kytara - vibráto, phaser, chorus, flanger, pitch shift. [on-line]. 2010 [cit. 17.12.2010]. Dostupný z WWW:
aranzer-VIII-Efektovana-kytara-vibrato-phaser-chorus-flanger-pitchshift~02~zari~2010/> JIRÁSEK, O., MIKOŠKA, L. Zoufalý aranžér VII - Efektovaná kytara - kompresor, expander, gate a tremolo. [on-line]. 2009 [cit. 15.12.2010]. Dostupný z WWW:
aranzer-VII-Efektovana-kytara-kompresor-expander-gate-atremolo~31~srpen~2010/>. KAŠPAŘÍK, J. Šíření zvuku. [on-line]. 2010 [cit. 5.12.2010]. Dostupný z WWW: . PTÁČEK, L. Jak pracují efekty I. [on-line]. 2009 [cit. 15.12.2010]. Dostupný z WWW:
efekty-I~19~leden~2009/>. PTÁČEK, LADISLAV. Jak pracují efekty II. [on-line]. 2009 [cit. 15.12.2010]. Dostupný z WWW: Shannonův teorém. [on-line]. 2010 [cit. 08.12.2010]. Dostupný z WWW: . SOBOTKA, F. Flang-3R. [on-line]. 2009 [cit. 19.12.2010]. Dostupný z WWW: .
Literatura
47
SOBOTKA, F. Steinberg – historie firmy. [on-line]. 2007 [cit. 16.12.2010]. Dostupný
z
WWW:
serialy/Steinberg-historiefirmy~12~srpen~2007/?&mprint[4474]=1?&mprint[4474]=1>. STEINBERG The Grand 3 - VST Grand Piano. [on-line]. 2010 [cit. 18.12.2010]. Dostupný
z
WWW:
4/software-82/steinberg-the-grand-3-75476.php>. Virtual Studio Technology. [on-line]. 2010 [cit. 18.12.2010]. Dostupný z WWW: . Vlastnosti zvuku. [on-line]. 2008 [cit. 05.12.2010]. Dostupný z WWW: . VST Audio Plug-Ins SDK 2.3 and 2.4. [on-line]. 2006 [cit. 18.12.2010]. Dostupný
z
WWW:
pany/developer.html>.
48
Seznam obrázků
7 Seznam obrázků Obrázek 1 - amplituda...........................................................................................13 Obrázek 2 - The Grand .........................................................................................27 Obrázek 3 - Flang-3R........................................................................................... 28 Obrázek 4 - Arpeggiator ...................................................................................... 29 Obrázek 5 - BJ Tremolo....................................................................................... 29 Obrázek 6 - Simple Tremolo................................................................................ 30 Obrázek 7 - MTremolo......................................................................................... 30 Obrázek 8 - ndcTrem+ .........................................................................................31 Obrázek 9 - Tremollama.......................................................................................31 Obrázek 10 - amplitudová modulace................................................................... 32 Obrázek 11 - modulační funkce efektu tremolo................................................... 33 Obrázek 12 - modulační funkce efektu panner ................................................... 34 Obrázek 13 - grafické uživatelské rozhraní VST pluginu .................................... 42
Seznam tabulek
49
8 Seznam tabulek Tabulka 1 - závislost poklesu hladiny akustického tlaku na vzdálenosti
10
Tabulka 2 - srovnání úrovně intenzity akustického hluku
12
Tabulka 3 - harmonické složky tónu
14