数字信号发生器电子琴实验报告.docx
- 文档编号:12612444
- 上传时间:2023-04-20
- 格式:DOCX
- 页数:13
- 大小:314.85KB
数字信号发生器电子琴实验报告.docx
《数字信号发生器电子琴实验报告.docx》由会员分享,可在线阅读,更多相关《数字信号发生器电子琴实验报告.docx(13页珍藏版)》请在冰豆网上搜索。
数字信号发生器电子琴实验报告
实验一数字信号发生器和电子琴制作
一、实验目的
1.熟悉matlab的软件环境,把握信号处置的方式,能在matlab的环境下完成对信号的大体处置;
2.学会利用matlab的GUI控件编辑图形用户界面;
3.了解matlab中一些经常使用函数的利用及经常使用运算符,并能利用函数完成大体的信号处置;
二、实验仪器
运算机一台,matlabR2020b软件。
三、实验原理
.数字信号发生器
MATLAB是矩阵实验室(MatrixLaboratory)的简称,用于算法开发、数据可视化、数据分析和数值计算的高级技术计算语言和交互式环境,要紧包括MATLAB和Simulink两大部份。
已知的经常使用正弦波、方涉及三角波,能够通过matlab自带的函数实现,通过改变函数的幅值、相位和频率能够取得不同的信号。
正弦信号:
y=A*sin(2*pi*f*t);
方波信号:
y=A*square(2*f*pi*x+c);
三角波信号:
y=A*sawtooth(2*pi*f*x+c);
2.电子琴
电子琴的每一个音阶均对应一个特定频率的信号,通过挪用数字信号发生器产生一系列指定的频率的声音,从而达到虚拟的电子琴的功能。
界面中包括1、2、…、7共7个琴键,鼠标按下时即发声,松开时发声停止。
同时能够产生正弦波、方波、三角波等常见的波形的数字信号,然后将数字信号写入声卡的缓冲区,最后由声卡播放出相应的声音。
已知音乐的七个音阶的主频率别离是131Hz、147Hz、165Hz、175Hz、196Hz、220Hz和247Hz,别离构造正弦波、方波和三角波,能够组成简单的电子琴。
四、实验内容
1.数字信号发生器的制作
(1)搭建GUI界面
图形用户界面(GraphicalUserInterface,简称GUI,又称图形用户接口)是指采纳图形方式显示的运算机操作用户界面。
与初期运算机利用的命令行界面相较,图形界面关于用户来讲在视觉上更易于同意。
Matlab环境下的图形用户界面(GUI)是由窗口、光标、按键、菜单、文字说明等对象(Objects)组成的一个用户界面。
用户通过必然的方式(如鼠标或键盘)选择、激活这些图形对象,使运算机产生某种动作或转变,比如实现计算、画图等。
MATLAB的用户,在指令窗中运行demo打开那图形界面后,只要用鼠标进行选择和点击,就可产生丰硕的内容。
利用GUI控件中自带的按钮,依照需要组成如以下图1所示的数字信号发生器的Gui界面。
图1数字信号发生器的GUI界面
(2)编写M文件
搭建好GUI界面后,点击“保留”按钮,系统将自动生成M文件与Fig文件各一个,而且M文件内部已经依照GUI界面中组件的类别,别离自动生成了相应的模块挪用函数。
依照需需要,咱们对生成的各个函数进行补充,完成函数功能的实现及各个函数的挪用关系。
本次实验要紧对控件的回调函数(callback)下写入相应的程序,该程序相当于一个将前后面板连接起来的纽带,在数字信号生成中作用专门大。
下面这段程序(仅重要部份)实现了函数依照用户的输入生成不同的正弦波、三角涉及方波,最终将波形显示在座标轴1上。
其中,在本例中slider1是改变幅值的滑移按钮,当用户在输入一个新的幅值时,A为对应幅值变量,发生相应改变,并判定选择的是何种波型,然后对相应的波型的幅值进行修改,最终通过画图函数的挪用将新波显示在图上。
同理,当咱们慢慢改变频率和相位时,波形也会对应发生转变,在此再也不赘述。
functionslider1_Callback(hObject,eventdata,handles)
................
................
globalaA
strA=get,'string');
A=str2double(strA);
switcha
case'正弦波'
x=0:
:
1;
y1=A*sin(2*f*pi*x+c);
plot(x,y1);
case'三角波’
x=0:
:
1;
y2=A*sawtooth(2*pi*f*x+c);
plot(x,y2);
case'方波'
x=0:
:
1;
y3=A*square(2*f*pi*x+c);
plot(x,y3);
case'Ëæ»úÐźÅ'
x=0:
:
1;
y4=rand(size(2*pi*f*x+c));
plot(x,y4);
end
.......
.......
同时为了精准抵达某一幅值,本实验搭建了文本编辑框实现对幅值,频率和相位的精准输入,因此在编辑框显示具体数值的基础上能够加入转动条来调剂幅值,频率和相位,如此会使界面加倍人性化也加倍好操作。
设计思路是在转动条回调函数下将转动条与文本编辑框联系连接起来,以实现通过转动条就能够调剂幅值,频率和相位的目的。
在转动条的回调函数slider1下将二者联系起来的程序如下所示:
globalaAfcxy1y2y3;
strA=get,'string');
strf=get,'string');
strc=get,'string');
A=str2double(strA);
f=str2double(strf);
c=str2double(strc);
axes;
str=get(hObject,'Value');
set,'string',str);
......
继续完善其他函数的填写,能够完成数字信号发生器的M文件编写,详细的M文件见附件。
(3)实验结果展现
图2.正弦波01
图3正弦波02
图4.正弦波03
图5正弦波04
图6方波
图7三角波
图8随机信号
2.电子琴的制作
(1)搭建GUI界面
Matlab的数据搜集工具箱(DAT)提供了一系列的函数和命令来实现实时模拟信号的输出,通过挪用这些函数和命令能够直接操纵声卡输出虚拟信号。
只需要一台带有一般多媒体声卡并安装了Matlab软件的计算机就能够够知足要求实现虚拟信号的输出,系统结构简单方便。
为了基于matlab的GUI实现七音符电子琴并附加音量调剂功能,能够搭建GUI面板如下图:
图9电子琴的GUI界面
(2)编写M文件
依照网上资料,能够方便地查询取得七个音阶的发音频率,别离是131Hz,147Hz,165Hz,175Hz,196Hz,220Hz,247Hz。
因此,只要在7个pushbutton的callback下按频率别离写入这七种正弦波,并通过声卡进行播放即可。
Pushbutton下的回调函数程序(那个地址以pushbutton1为例):
globala;
axes;
a=get(handles.popupmenu1,'value')
ifa==1
Fs=44100;
strA=get,'string');
A=str2double(strA);
str=get,'Value');
set,'string',str);
dt=Fs;
t=0:
dt:
;
y=A*sin(2*pi*131*t);
plot(t,y);
wavplay(y,Fs);
axis([0-100100]);
end
ifa==2
Fs=44100;
strA=get,'string');
A=str2double(strA);
str=get,'Value');
set,'string',str);
dt=Fs;
t=0:
dt:
;
y=A*sawtooth(2*pi*131*t);
plot(t,y);
wavplay(y,Fs);
axis([0-100100]);
end
ifaa==3
Fs=44100;
strA=get,'string');
A=str2double(strA);
str=get,'Value');
set,'string',str);
dt=Fs;
t=0:
dt:
;
y=A*square(2*pi*131*t);
plot(t,y);
wavplay(y,Fs);
axis([0-100100]);
end
(3)实验结果展现
由于电子琴的实验结果是声音,难以用文字表达,在下面仅用几张图片展现一下结果,详见附件。
图10电子琴演奏时的成效01
图11电子琴演奏时的成效05
图12电子琴演示成效
五、实验体会意得
通过本次实验,把握了GUI界面的搭建,对matlab中常见的函数有了深刻的熟悉。
在学习中发觉matlab是个很壮大的软件,可惜自己对它的熟悉太少,以后还得自己学习。
同时发觉自己做的电子琴没有人家网上做的好,音质较为粗糙,还亟待改良,也为自己的学习增加了新鲜感,可是对数字信号的处置有了实践性的熟悉,比仅从考试中学到的知识要深刻很多。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号 发生器 电子琴 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)