Ako funguje emulácia basgitary

Pre dnešok jedna zaujímavosť, totiž ako sa dá z gitary spraviť basgitara. Princíp je vlastne celkom jednoduchý, keď zapojíme všetky naše vedomosti o frekvenciách a tónoch (viď predchádzajúce blogy). S trochou vedomostí o digitalizácii zvuku aj vieme ako triviálne riešenie spraviť.

Princíp emulácie

Základom je, že na gitare použijeme 4 struny a naladíme ich na požadované ladenie aké by má mať basgitara (štandardne EADG). Pretože gitara nie je stavaná na to, aby bola o toľko podľadená, ladíme ju v bežnom gitarovom rozsahu:

basgitara E1 A1 D2 G2
gitara E2 A2 D3 G3 B3 E4

Finta a vlastne aj dôvod, prečo je emulácia možná, je v tom, že gitara bude hrať na rovnakých pražcoch rovnaké tóny ako by hrala basgitara, ale s dvojnásobnou frekvenciou – frekvencia E2 je dvakrát väčšia ako E1 a to isté platí aj pre ostatné struny.

Táto skutočnosť nám umožňuje zmeniť zvuk gitary aj ak hrajú viaceré struny naraz (vrátane vyšších harmonických frekvencií).

Úprava frekvencií

Ako to teda spraviť? Frekvencia nám udáva počet kmitov za sekundu, teda potrebujeme spomaliť naše vyššie kmitanie na polovicu, ale zároveň to musíme stihnúť v rovnakom čase. Ak by sme spravili nahrávku gitary na pásku a prehrali polovičnou rýchlosťou (resp. nahrávali rýchlejšie a prehrávali normálnou rýchlosťou), frekvencie síce budú polovičné, ale čas pri prehrávaní bude dvojnásobný (resp. polovičný). A toto je už netriviálny problém.

Digitálne riešenie

Frekvencie by sme teda mali, ale potrebujeme ešte upraviť dĺžku. V tomto nám pomôže digitalizácia – PCM.

PCM

Veľmi rýchle vysvetlenie PCM je, že zvuk rozdelíme na veľmi krátke časové úseky (vzorky) a uložíme si ich úroveň hlasitosti. Týchto úsekov sa používa až 44100 pre jednu sekundu a hlasitosť nadobúda hodnoty z rozsahu 0-65535 (obe pre audio CD kvalitu a bežné zvukové karty).

Môže byť ešte zaujímavé spomenúť prečo sú tie hodnoty práve také. Počet vzoriek v sekunde by mal zodpovedať dvojnásobku frekvenčného rozsahu, je to odvodené od ľudského ucha, pre ktoré nám postačia frekvencie do 22050 Hz.

Dôvod pre číslo 65536 je prozaickejší, sú to presne dva bajty a jeden bajt (0-255) by nám poskytoval výrazne slabšiu citlivosť (256-krát slabšiu).

Postup

Takže máme zvuk gitary, ktorý k nám prúdi rýchlosťou 44100 vzoriek za sekundu a potrebujeme ho prehrať pomalšie.

Obdoba pásky by bola, keby sme prehrali každú vzorku dvakrát alebo pre lepší výsledok ju môžeme spriemerovať s nasledujúcou:

vzorka 1 2 3 4 5
hodnota 0 1 2 3 4
výstup 0 0.5 1 1.5 2 2.5 3 3.5 4

Miesto toho aby sme dostali skokové zmeny (00112233), trochu vyhladíme priebeh, dopočítame vzorku, ktorá neexistuje, ako bod v polovici medzi tými čo existujú. Toto prehrávanie nám dá ale výsledok ako páska, frekvencie sa upravia, ale bude trvať dvakrát dlhšie.

Naše konečné riešenie teda využije tú istú vlastnosť ako aj priemerovanie, a to že máme viacero vzoriek uložených a môžeme s nimi pred prehratím spraviť čokoľvek.

Triviálne riešenie je brať vzorky po dostatočne veľkých n-ticiach (napr. desatina sekundy), zopakujeme každú vzorku (natiahneme n-ticu na 2n-ticu, môžeme opäť použiť priemer s nasledujúcou vzorkou) a každú druhú n-ticu vynecháme. Takto budeme držať krok s časom a zároveň prehrávame približne to isté – ale ozaj iba približne, pretože sú tu dva problémy:

  • spôsobuje to akési koktanie,
  • môžeme prichádzať o stratu začiatku noty (attack).

Pravdepodobne už dávno existuje nejaké premyslené riešenie, no ja ho nepoznám, a tak si dovolím ešte svoju poslednú úvahu nad týmto najťažším problémom. Vylepšenie, ktoré by do istej miery mohlo riešiť oba problémy, by bolo sledovanie hlasitosti. Dôležitá udalosť je keď nastáva zmena z ticha na hraný tón, resp. je tam iná výrazná zmena v hlasitosti. Práve túto zmenu, ktorá koktanie spôsobuje, potrebujeme nejakým spôsobom zahladiť v opakovanej vzorke. Ak je naopak gitara ticho, nemusíme hrať nič (slabý šum si nemusíme všímať, toto je princíp “noise gate”) a nevynecháme tak začiatok, no stále ale môžeme vynechať dôležitú zmenu ak sa zrovna trafíme do tej správnej desatiny sekundy.

No a najjednoduchšie je použiť basgitaru, pretože tá prekoná každú emuláciu.

Comments

weblog/2013-09-25/ako_funguje_emulacia_basgitary.txt · Last modified: 2013/09/26 04:34 by 127.0.0.1