V předchozím tutoriálu jsme viděli jednoduché kroky ke čtení, zápisu a přehrávání zvukových souborů. Dokonce jsme viděli, jak můžeme syntetizovat zvukový soubor z periodické funkce, jako je funkce kosinus. V tomto tutoriálu uvidíme, jak můžeme k signálům přidávat doplňky, násobit signály (modulace) a používat některé základní matematické funkce, abychom viděli jejich účinek na původní signál.
Přidávání signálů
Součet dvou signálů S1(t) a S2(t) vede k signálu R(t), jehož hodnota v libovolném časovém okamžiku je součtem hodnot přidaných signálů v daném okamžiku. Přesně takto:
R(t) =S1(t) + S2(t)
Znovu vytvoříme součet dvou signálů v oktávě a efekt uvidíme graficky. Nejprve vygenerujeme dva signály různých frekvencí, abychom viděli signál vyplývající ze součtu.
Krok 1:Vytvoření dvou signálů s různými frekvencemi (soubory ogg)
>> sig1='cos440.ogg'; %creating the audio file @440 Hz
>> sig2='cos880.ogg'; %creating the audio file @880 Hz
>> fs=44100; %generating the parameters values (Period, sampling frequency and angular frequency)
>> t=0:1/fs:0.02;
>> w1=2*pi*440*t;
>> w2=2*pi*880*t;
>> audiowrite(sig1,cos(w1),fs); %writing the function cos(w) on the files created
>> audiowrite(sig2,cos(w2),fs);
Zde vykreslíme oba signály.
Graf signálu 1 (440 Hz)
>> [y1, fs] = audioread(sig1);
>> plot(y1)
Graf signálu 2 (880 Hz)
>> [y2, fs] = audioread(sig2);
>> plot(y2)
Krok 2:Přidání dvou signálů
Nyní provedeme součet dvou signálů vytvořených v předchozím kroku.
>> sumres=y1+y2;
>> plot(sumres)
Graf výsledného signálu
Efekt Octaver
V Octaveru je zvuk poskytovaný tímto efektem charakteristický, protože emuluje notu, kterou hraje hudebník, buď v nižší nebo vyšší oktávě (podle toho, jak to bylo naprogramováno), ve spojení se zvukem původní noty, tj. objeví se dvě noty. stejně znějící.
Krok 3:Přidání dvou skutečných signálů (příklad se dvěma hudebními stopami)
K tomuto účelu použijeme dvě skladby gregoriánských chorálů (voice sampling).
Avemaria Track
Nejprve přečte a nakreslí stopu Avemaria:
>> [y1,fs]=audioread('avemaria_.ogg');
>> plot(y1)
Hymnus Track
Nyní přečte a nakreslí skladbu hymnus
>> [y2,fs]=audioread('hymnus.ogg');
>> plot(y2)
Avemaria + Hymnus Track
>> y='avehymnus.ogg';
>> audiowrite(y, y1+y2, fs);
>> [y, fs]=audioread('avehymnus.ogg');
>> plot(y)
Výsledkem z hlediska zvuku je, že obě stopy bude znít smíšeně.
Součin dvou signálů
K vynásobení dvou signálů musíme použít analogickou cestu k součtu. Použijme stejné soubory vytvořené dříve.
>> sig1='cos440.ogg'; %creating the audio file @440 Hz
>> sig2='cos880.ogg'; %creating the audio file @880 Hz
>> product='prod.ogg'; %creating the audio file for product
>> fs=44100; %generating the parameters values (Period, sampling frequency and angular frequency)
>> t=0:1/fs:0.02;
>> w1=2*pi*440*t;
>> w2=2*pi*880*t;
>> audiowrite(sig1, cos(w1), fs); %writing the function cos(w) on the files created
>> audiowrite(sig2, cos(w2), fs);
>> [y1,fs]=audioread(sig1);
>> [y2,fs]=audioread(sig2);
>> audiowrite(product, y1.*y2, fs); %performing the product
>> [yprod,fs]=audioread(product);
>> plot(yprod); %plotting the product
Poznámka:Musíme použít operand '.*', protože tento součin je vytvořen, hodnota k hodnotě, v souborech argumentů. Další informace naleznete v příručce operací produktu s maticemi Octave.
Graf výsledného signálu produktu
Grafický efekt násobení dvou signálů s velkým rozdílem základní frekvence (Principy modulace)
Krok 1:
Vytvořte zvukový frekvenční signál s frekvencí 220 Hz.
>> fs=44100;
>> t=0:1/fs:0.03;
>> w=2*pi*220*t;
>> y1=cos(w);
>> plot(y1);
Krok 2:
Vytvořte modulační signál vyšší frekvence 22 000 Hz.
>> y2=cos(100*w);
>> plot(y2);
Krok 3:
Násobení a vykreslování dvou signálů.
>> plot(y1.*y2);
Násobení signálu skalárem
Účinek násobení funkce skalárem je ekvivalentní úpravě jejich rozsahu a v některých případech i znaménka fáze. Je-li dán skalár K, součin funkce F(t) skalárem je definován jako:
R(t) =K*F(t)>> [y,fs]=audioread('cos440.ogg'); %creating the work files
>> res1='coslow.ogg';
>> res2='coshigh.ogg';
>> res3='cosinverted.ogg';
>> K1=0.2; %values of the scalars
>> K2=0.5;
>> K3=-1;
>> audiowrite(res1, K1*y, fs); %product function-scalar
>> audiowrite(res2, K2*y, fs);
>> audiowrite(res3, K3*y, fs);
Zákres původního signálu
>> plot(y)

Vykreslení signálu se sníženou amplitudou o 0,2
>> plot(res1)
Vykreslení signálu se sníženou amplitudou o 0,5
>> plot(res2)
Zákres signálu s obrácenou fází
>> plot(res3)
Závěr
Základní matematické operace, jako je algebraický součet, součin a součin funkce skalárem, jsou páteří pokročilejších operací, mezi něž patří spektrální analýza, modulace amplitudy, úhlová modulace atd. tutoriálu, uvidíme, jak takové operace provádět a jejich účinky na audio signály.