在上一个教程中 ,我们看到了读取,写入和播放音频文件的简单步骤。 我们甚至看到了如何从周期函数(如余弦函数)中合成音频文件。 在本教程中,我们将看到我们如何添加信号,乘法信号(调制)以及应用一些基本的数学函数来看待它们对原始信号的影响。
添加信号
两个信号S1(t)和S2(t)之和产生一个信号R(t),其值在任何时刻都是此时的相加信号值之和。 像这样:
R(t)= S1(t)+ S2(t)
我们将重新创建八度的两个信号的和,并以图形方式看到效果。 首先,我们将产生不同频率的两个信号,以查看由和产生的信号。
第1步:创建两个不同频率的信号(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);
这里我们将绘制两个信号。
信号图1(440 Hz)
>> [y1, fs] = audioread(sig1);
>> plot(y1)
信号2(880 Hz)
>> [y2, fs] = audioread(sig2);
>> plot(y2)
第2步:添加两个信号
现在我们执行上一步创建的两个信号的总和。
>> sumres=y1+y2;
>> plot(sumres)
结果信号图
八度效应
在Octaver中,这种效果提供的声音是特征,因为它模拟了音乐家正在播放的音符,无论是在较低或更高的八度(根据已编程),还有声音原始音符,即两个音符出现相同的声音。
第3步:添加两个实际信号(具有两个音轨的示例)
为了这个目的,我们将使用两条格里高利颂歌(语音采样)。
Avemaria轨道
首先,将阅读并绘制Avemaria曲目:
>> [y1,fs]=audioread('avemaria_.ogg');
>> plot(y1)
赞美诗
现在,将阅读和绘制一首诗歌
>> [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)
结果,从音频的角度来看,两个音轨都会混音。
两个信号的产品
要乘以两个信号,我们必须使用一种类似的方法。 让我们使用以前创建的相同的文件。
>> 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
注意:我们必须使用操作数'。*',因为这个产品在参数文件上是有价值的。 有关更多信息,请参阅产品操作手册,使用Octave矩阵。
产生结果信号图
将两个信号乘以大的基频差的图形效应(调制原理)
第1步:
创建220Hz频率的音频信号。
>> fs=44100;
>> t=0:1/fs:0.03;
>> w=2*pi*220*t;
>> y1=cos(w);
>> plot(y1);
第2步:
创建一个22000 Hz的较高频率调制信号。
>> y2=cos(100*w);
>> plot(y2);
第3步:
乘以和绘制两个信号。
>> plot(y1.*y2);
将信号乘以标量
将函数乘以标量的效果等同于修改其范围,在某些情况下修改相位的符号。 给定标量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);
原始信号的曲线
>> plot(y)
信号幅度减小0.2
>> plot(res1)
信号幅度减小0.5
>> plot(res2)
反相信号图
>> plot(res3)
结论
基本的数学运算,如代数和,乘积,以及标量函数的乘积,是高级运算的骨干,其中包括频谱分析,幅度调制,角度调制等。在下一个教程中,我们将会看看如何使这些操作及其对音频信号的影响。