基于MATLAB的数字信号发生器及简易电子琴设计
基于matlab 信号发生器设计
![基于matlab 信号发生器设计](https://img.taocdn.com/s3/m/05451d7b31b765ce05081453.png)
三.信号发生器设计
1.信号发生器程序框图设计
首先先在程序面板上找出基本信号发生器,在分别标添加输入为、幅值、预设频率、占空比、输出频率;然后再添加输出为波形图
2.信号发生器的前面板设计
第一步,先把程序版所设计的在前面版上排版整理;第二步,用控件里面的修饰选择上凹凸选项;第三步,在波形显示上面添加一个标签(信号发生器)。
运行结果:
三角波
正选波
方波
锯齿波
3.结束语
设计的信号发生器可以实现在波形显示波形信号, 信号的相位和幅值还有频率均可自己调试。
适合于科研分析。
MATLAB在电子琴制作与编程中的应用指南
![MATLAB在电子琴制作与编程中的应用指南](https://img.taocdn.com/s3/m/553378a9dbef5ef7ba0d4a7302768e9951e76eab.png)
MATLAB在电子琴制作与编程中的应用指南随着科技的不断发展,电子琴已经逐渐成为了一种受欢迎的音乐工具。
由于不限于传统的乐器结构,电子琴不仅可以模拟各种声音,还可以通过编程来实现更多的功能。
在电子琴的制作与编程过程中,MATLAB是一种常用且强大的工具。
本文将探讨MATLAB在电子琴制作与编程中的应用指南。
一、MATLAB简介与基本知识MATLAB是一种矩阵实验室,主要用于数学计算、数据处理、图像处理和建模等领域。
它提供了丰富的函数和工具箱,使得它成为了电子琴制作与编程的理想选择。
在使用MATLAB进行电子琴编程之前,我们需要对MATLAB有一定的了解与掌握。
首先,MATLAB具有强大的计算功能,可以进行各种复杂的数学运算。
这为电子琴的声音合成和信号处理提供了基础。
其次,MATLAB具有友好的图形界面和直观的编程语言,使得编写和调试电子琴的代码变得更加简单和高效。
最后,MATLAB还提供了广泛的工具箱,包括音频信号处理、数字滤波器设计等,这些工具箱可以方便地应用于电子琴的制作中。
二、电子琴声音合成与波形生成在电子琴制作中,声音合成和波形生成是其中的关键步骤。
使用MATLAB,我们可以通过编程来生成各种不同的声音效果。
首先,我们可以利用MATLAB中的信号处理工具箱来设计并生成特定频率的音调。
例如,使用MATLAB的sine函数可以生成正弦波,而使用square函数可以生成方波。
可以根据实际需求自定义音调,并根据自定义的频率生成相应的波形。
这使得我们能够根据不同的琴键来生成不同的音调,从而实现电子琴的声音合成。
此外,通过在波形中引入不同的参数变化,如振幅、频率、相位等,我们还可以模拟琴键按下和弹奏的过程中产生的音效,使得电子琴的音乐更加真实和生动。
这些参数可以根据实际需求进行调整,从而实现不同的音效变化。
三、电子琴控制与界面设计除了声音合成和波形生成,电子琴还需要实现用户与乐器之间的良好交互。
在电子琴的制作中,我们可以通过MATLAB来设计和实现电子琴的控制与界面。
基于MATLAB的信号发生器设计
![基于MATLAB的信号发生器设计](https://img.taocdn.com/s3/m/86eb4878ddccda38376bafe4.png)
因为 PCI-6024E 只有 2 路 DAC,所以输出通道的选择只有这 2 路,或者只输出其 中的一路。运行、停止则是开始和停止计算波形、输出波形的过程。编写 M 文件 来处理 GUI 界面的事件的响应。
本设计的独特之处在于输出通道的可选择性,可选择 NI-DAQ(PCI-6024E), 声卡,或者并行等。考虑到信号幅度范围对于不同硬件也是不同的(PCI-6024E 是-10~10v),超出范围的部分是无效的,程序同样会报错并停止运行。
幅度 amplitude
文件名 filename
默认值
500
1
自定义波参数如表 8 所示。设采样率:samp
说明:本选项是信号发生器的扩展功能之一,通过菜单区操作可以读取保存
为图像和数据的文件,输出信号到输出板卡上。
①读取图像文件(*.bmp)
源程序段:
h1=imread(filename);
h2=rgb2gray(h1)
《MatLab 信号处理》
-----基于 MATLAB 的信号发生器设计
姓名: 学号: 班级: 2010.12
基于 MATLAB 的信号发生器设计
虚拟仪器能充分利用现有计算机资源,通过配以独特设计的软硬件,实现普 通仪器的全部功能以及一些在普通仪器上无法实现的功能的软件或程序。本设计 的主要内容就是基于 MATLAB 来实现一个信号发生器,除具有信号发生器一般功 能外,还应能通过文件或图形获取波形数据,以实现任意波形的生成,并以 PCI-6024 DAQ 卡作为硬件平台输出。
[m,n]=size(h2);
for i=1:n
x(i)=0;
end
for i=1:n
for j=1:m
if (h2(j,i)~=255)
基于matlab的信号发生器设计
![基于matlab的信号发生器设计](https://img.taocdn.com/s3/m/4f0f6392b8d528ea81c758f5f61fb7360b4c2b0a.png)
基于matlab的信号发⽣器设计Digital Signal GeneratorYangXiao M2013705103HuaZhong University of Science and TechnologySchool of Mechanical Science and Engineering Abstract: Matlab Is a numerical analysis, matrix calculation, scientific data visualization and nonlinear dynamic state system modeling and simulation, and other functions of practical software engineering.It’s easy to use the windows environment and cast off a tradition on the interactive programming language (such as C, Fortran) Edit mode In large range. In this report,The task is to design a digital signal generator bu using matlab.It could help us to understand the signal processing by designing the digital signal generator. Which has a certain application value of reference.Keyword:digital signal generator;Matlab1.PrefaceMATLAB is called Matrix Laboratory,which is designed by the United States MathWorks company.It’s a commercial mathematical software. Matlab can be use for Matrix operations, mapping functions and data, algorithm, creating the user interface, connect to other programming languages procedures, mainly used in engineering calculations, control design, signal processing and communications, image processing, signal detection, design and financial modeling analysis and other fields. GUI (Graphical User Interface, referred to as GUI, known Graphical User Interface) is displayed using the graphical user interface of computer operations.. Matlab has a powerful GUl tool. In this report, by using matlab GUI tool we could a designed digital signal generator .2. IntroduceProgram reference implementation of MATLAB Data Acquisition Toolbox. In MATLAB design, there are two designs: the GUI editor and M-file write. This design use GUI editor . The GUI is user interface, which is to select the waveform, set and modify the waveform parameters, set the sampling rate, select the output channel and run. This program GUI interface provided: sin, square, triangle, sawtooth, while noise, to choice. Also we could change waveform parameters to change waveform’s shape. As frequency amplitude phase and sample haveprovided gave us to change.The interface is that:2.1 Interface3. Design PrinciplesThe task is to design the digital signal generator which can generate sine wave, square wave, triangle wave, sawtooth wave, and white noise. All the waveform can use MATLAB function, and could be adjusted by inputting information such as the amplitude, phase and frequency .3.1 Achieve sin signalThe mathematical function of sin wave signal is that:()sin 2y A ft πφ=+A: amplitude; f: frequency;φ: phase;t: 0:1/s:1;(s is sample); The M-program is:A=get(handles.Amplitude,'Value'); f=get(handles.Frequency,'Value'); p=get(handles.Phase,'Value');s=get(handles.Sample,'Value'); x=0:1/s:1;y=A*sin(2*pi*f*x+p); plot(handles.screen,x,y,'r'); legend('sin(x)'); wavplay(y); grid on;axis([0,0.1,-20,20]);We could run the program by setting the parameters:3.1 Image of sin signal3.2 Achieve square signalThe mathematical function of square wave signal is that:(2)y Asquare ft b π=+A: amplitude; f: frequency; b: phase;t: 0:1/s:1;(s is sample); The M-program is:A=get(handles.Amplitude,'Value'); f=get(handles.Frequency,'Value');p=get(handles.Phase,'Value');s=get(handles.Sample,'Value');x=0:1/s:10;y=A*square(2*pi*f*x+p);plot(handles.screen,x,y,'b');legend('square');wavplay(y);grid on;axis([0,0.1,-20,20]);We could run the program by setting the parameters:3.2 Image of square signal3.3 Achieve triangular signalThe mathematical function of triangular wave signal is that:(2,0.5)y Asawtooth ft b π=+A: amplitude; f: frequency; b: phase;t: 0:1/s:1;(s is sample); The M-program is:A=get(handles.Amplitude,'Value'); f=get(handles.Frequency,'Value'); p=get(handles.Phase,'Value'); s=get(handles.Sample,'Value'); x=0:1/s:10;y=A*sawtooth(2*pi*f*x+p,0.5); plot(handles.screen,x,y,'b'); legend(‘triangle ’); wavplay(y); grid on; axis([0,0.1,-20,20]);We could run the program by setting the parameters:3.3 Image of triangular signal3.4 Achieve sawtooth signalThe mathematical function of sawtooth wave signal is that:(2)y Asawtooth ft b π=+A: amplitude; f: frequency; b: phase;t: 0:1/s:1;(s is sample); The M-program is:A=get(handles.Amplitude,'Value'); f=get(handles.Frequency,'Value'); p=get(handles.Phase,'Value');s=get(handles.Sample,'Value');x=0:1/s:10;y=A*sawtooth(2*pi*f*x+p);plot(handles.screen,x,y,'b');legend(‘tooth’);wavplay(y);grid on;axis([0,0.1,-20,20]);We could run the program by setting the parameters:3.4 Image of sawtooth signal3.5 Achieve white noise signalThe mathematical function of white noise wave signal is that:y A rand length x=-2((1,())0.5)A: amplitude;f: frequency;b: phase;t: 0:1/s:1;(s is sample);The M-program is:A=get(handles.Amplitude,'Value');f=get(handles.Frequency,'Value');p=get(handles.Phase,'Value');s=get(handles.Sample,'Value');x=0:1/s:10;y=2* A*(rand(1,length(x))-0.5);plot(handles.screen,x,y,'b');legend('white noise');wavplay(y);grid on;axis([0,0.1,-20,20]);We could run the program by setting the parameters:3.5 Image of white noise signal4 Exist problemThere are many problems in the design because I didn’t use matlab and the GUI modules ever.(1) I am not familiar to the interface and operator of matlab,which lead toI program without efficiency.(2) Without systematic studying of matlab,I could not express my ideas by using succinct matlab language.(3)In the beginning, I don’t understand the handle deep, and don,t have aclear idea.5. ConclusionIn the latter study, I will be more systematic learning MATLAB this powerful engineering software, has a fight on his understanding of the macro, on the basis of multi-programming exercises to strengthen the commonly used functions and concepts of memory, and finally, contact practical, try to solve some common engineering problems.References[1] 薛⼭. MATLAB基础教程. [M] 北京:清华⼤学出版社,2011.3。
数电实验简易电子琴的设计报告
![数电实验简易电子琴的设计报告](https://img.taocdn.com/s3/m/c2de465ae87101f69e3195fc.png)
数电实验简易电子琴的设计报告班级:学号:1、项目概况选题目的,为了进一步巩固之前学到的知识,将课本的知识结合趣味性,让自己得到更好的提高。
项目构思,模型要做一个能成功实现的简易电子琴,包括按键按下后蜂鸣器会根据相应的频率准确发出相应音阶的声音,7段数码管会显示出按键的简谱,输出端H可以表示音的高低。
要用到计数器,触发器分频器,7段数码显示器等元件。
2、方案设计系统框图为:系统简介如下:1、系统框图2、系统端口(2个输入口3个输出口)(1) CLK,频率1MHz。
用于提供时钟脉冲信号。
(2) DIN[7、、0]。
琴键输入的8个音符,8位中只有一位是低电平即每次只能按一个键。
(3) SPK。
用于驱动蜂鸣器,输出频率fB与蜂鸣器发出的音调与电子琴各音阶基频有对应关系。
(4) LED。
接数码管,用于显示对应的简谱码,H显示音调高低。
3、工作原理(1)编码器CODE3。
将输入的8位琴键信号进行编码,输出一个4位码,最多能对应16个音符(若有16个键)。
按下的琴键的电平为低。
例:8’b :KEY<=4’b0001 输入第一位琴键“哆”此时编译成4位二进制数2^0=1 传入译码器INX2CODE。
(2)译码器INX2CODE。
将键盘输入的编码信号译码成数控分频器SPK0输出信号的频率控制字。
例:1 :F_CODE <=11’H305 刚才编码器编码传入的琴键“哆”的1此时被译码为数控分频器SPK0的输出信号的频率控制字305H。
(3) SPK0。
计数器CNT11B是一个LPM宏模块,利用同步加载控制sload避免来自进位信号cout中可能的毛刺影响,反相器和D 触发器使得进位信号延迟半个时钟周期,过滤掉可能的毛刺,使得加载更加可靠。
例:经过编译的305H被置入模块SPK0的11位可预置计数器中计数器不断以此值为计数起始值,直至全为1。
以305H计数起始,计数器成为一个模为1270(7FFH-305H=4F6H=1270)的计数器。
(数字信号发生器+电子琴)实验报告
![(数字信号发生器+电子琴)实验报告](https://img.taocdn.com/s3/m/0005e52e453610661ed9f42d.png)
实验一数字信号发生器和电子琴制作一、实验目的1.熟悉matlab的软件环境,掌握信号处理的方法,能在matlab的环境下完成对信号的基本处理;2.学会使用matlab的GUI控件编辑图形用户界面;3.了解matlab中一些常用函数的使用及常用运算符,并能使用函数完成基本的信号处理;二、实验仪器计算机一台,matlab R2009b软件。
三、实验原理1.数字信号发生器MATLAB是矩阵实验室(Matrix Laboratory)的简称,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括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界面图形用户界面(Graphical User Interface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。
与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。
Matlab环境下的图形用户界面(GUI)是由窗口、光标、按键、菜单、文字说明等对象(Objects)构成的一个用户界面。
基于MATLAB的数字电子琴设计
![基于MATLAB的数字电子琴设计](https://img.taocdn.com/s3/m/d7e1872f192e45361066f5d1.png)
*****************实践教学*******************题目:基于MATLAB的数字电子琴设计专业班级:姓名:学号:指导教师:成绩:摘要本次课设的任务是基于MATLAB设计一个数字电子琴,首先实现数字信号发生器的设计。
数字信号发生器是一种基于软硬件实现的波形发生器,可以实现各种基本波形的产生。
在工程的各种复杂信号是由这些基本信号叠加产生,因此它在工程分析和实验教学中有着广泛的应用,可用MATLAB实现。
MATLAB是一个数据分析和处理功能十分强大的工程实用软件,它的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令,在数字信号处理方面方便实用。
本文首先详细介绍了基于MATLAB的数字发生器的设计过程,实现了简单波形(正弦波、方波、三角波、锯齿波、白噪声、脉冲、阶跃)信号的具体实现方法。
其次介绍了利用该数字信号发生器产生的正弦波信号和声卡设计的简易电子琴。
关键词:MATLAB;数字信号发生器;简易电子琴目录前言 (1)一、数字信号发生器 (2)1.1图形用户界面的简介 (2)1.2设计流程 (2)1.3波形实现的基本原理 (3)二、电子琴的实现 (5)2.1简易数字电子琴的简介 (5)2.2实现原理 (5)三、基于MATLAB的仿真及结果分析 (6)3.1 GUI界面 (6)3.2编写M文件 (7)总结 (14)参考文献 (14)附录 (15)致谢 (22)前言MATLAB(矩阵实验室)是Matrix Laboratory的缩写,是一种用于算法开发、数据可视化、数据分析以及数值计算的高级计算机语言和交互式环境。
MATLAB 可以进行矩阵运算、绘制函数图像和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
Matlab环境下的图形用户界面(GUI)是由窗口、光标、按键、菜单、文字说明等对象构成的一个用户界面,可在图形用户界面内根据需要搭建图形,并对控件的回调函数进行编写,完成最完整的GUI界面编辑即可运行。
基于MATLAB的音乐电子琴制作
![基于MATLAB的音乐电子琴制作](https://img.taocdn.com/s3/m/802d2e3ba0116c175e0e48a8.png)
基于MATLAB的音乐电子琴制作简述:电子琴的每个音阶均对应一个特定频率的信号,通过调用数字信号发生器产生一系列指定的频率的声音,从而达到虚拟的电子琴的功能。
本次设计是基于MATLAB GUI 程序实现的一个音乐键盘仿真系统。
1 功能介绍总体设计框图如下图所示,其包括单音键盘发音模块,音效长短的选择模块,包络的选择模块,实现键盘代替鼠标输入模块,双音多频模块,演奏音乐模块,播放歌曲,视频模块包括对文件播放的暂停,停止和复位,多键盘输入对输入后统一播放模块和画图模块。
Matlab的数据采集工具箱(DAT)提供了一系列的函数和命令来实现实时模拟信号的输出, 通过调用这些函数和命令可以直接控制声卡输出虚拟信号。
只需要一台带有普通多媒体声卡并安装了Matlab 软件的计算机就可以满足要求实现虚拟信号的输出, 系统结构简单方便。
交互界面如图1所示:图1 程序的交互界面1)单音键盘发音模块设计一个带参子函数实现键盘的发音功能,当实现需要实现音阶的播放时,只要调用这个子函数,并根据不同音阶、不同音调的频率改变子函数的参数即可。
2) 音效长短的选择模块制作一个button group的组控件分别选择不同的控件实现不同的音效长短,音效的长短是通过改变播放一个音阶的时间长短来实现的。
3)包络的选择模块制作一个button group的组控件分别选择不同的控件实现不同的包络,在模块一的基础上,设置选中不同的控件分别对应不同的包络,x为不同包络(如正弦波、三角波、指数等)的表达形式,将x与模块一中实现单音键盘发音的函数相乘时便可实现不同形式的衰减,实现音型的改变。
4)实现键盘代替鼠标输入模块根据计算机键盘上的不同按键对应不同的ASCII码的值,利用函数get()获取当前所按下的数字键对应的ASCII码的值,根据 ASCII码的值判断对应是按下键盘的值。
并执行相应音阶的功能键。
5)双音多频模块通过设置一个radio button 来实现双音多频的功能,设置一个全局变量,当选中该控件时,全局变量的值改变,即在带参的子函数中增加它的频率分量。
数电课程设计--简易电子琴
![数电课程设计--简易电子琴](https://img.taocdn.com/s3/m/4ae3d60b50e2524de4187ecb.png)
目录1 设计任务 (1)1.1基本任务 (1)1.2 扩展任务 (1)2 设计方案原理 (1)3 单元电路的设计 (2)3.1 多谐振荡器 (2)3.2 琴键开关.................................... 错误!未定义书签。
3.3 扩音器(喇叭) 03.4 器件选择 04 电路图的绘制 (1)5 电路的仿真及调试 (2)6 体会 (2)参考文献 (4)1 设计任务电子琴是一种很简单的电子产品,目前市场上所售的电子琴多为基于单片机所设计的。
本次课设要求利用数电知识,设计一个能奏出八个音阶的电子琴。
虽然没有基于单片机的电子琴那么多的功能,但是电子琴的基本功能是可以满足的。
本次设计的主要内容为:根据数电课程所学内容,结合其他相关课程知识,设计一个简易电子琴,以加深对单片机知识的理解,锻炼实践动手能力。
本次设计的任务为:1.1基本任务①具备8个按键,能够分别较准确地弹奏出1~•1八个音符。
②选择电路方案,完成对确定方案电路的设计。
计算电路元件参数与元件选择、并画出总体电路原理图,阐述基本原理。
用Proteus或MULTISIM软件完成仿真,并按规定格式写出课程设计报告书。
1.2 扩展任务①能够弹奏出至少21个音符(三个音阶)。
②能够较便捷地完成音阶的升降。
(按一个开关实现升8度,按另一个开关实现降8度)2 设计方案原理本方案为利用555多谐振荡器能输出脉冲信号的特性,通过改变振荡器外接电阻的阻值来改变振荡器输出脉冲的频率,驱动喇叭发出各种音阶。
电子琴所用琴键即为改变电阻阻值的开关,通过改变阻值使输出与琴键音阶相对应。
原理框图如下:图1 原理框图3 单元电路的设计3.1 多谐振荡器利用多谐振荡器产生周期脉冲电路图如下图所示图2 多谐振荡器电路实现图中引脚功能:1脚:GND(或Vss)外接电源负端VSS或接地,一般情况下接地。
2脚:TR低触发端。
3脚:OUT(或Vo)输出端。
4脚:Rd是直接清零端。
基于matlab的数字电子琴信号处理系统的设计与实现
![基于matlab的数字电子琴信号处理系统的设计与实现](https://img.taocdn.com/s3/m/952148a3b0717fd5360cdce7.png)
《工程信号处理》大作业—基于Matlab的信号处理系统的设计与实现—伍星、柳小勤、刘畅机电工程学院KUST-HMI联合实验室2010.03目录1预备知识 (3)2项目意义 (3)3项目简介 (3)4项目要求 (3)4.1“数字电子琴”的软件功能 (3)4.2“数字频谱分析仪”的软件功能 (4)4.3“数字均衡器”的软件功能 (5)5编码规范 (6)5.1每个程序文件(.M文件)开头的H ELP部分 (6)5.2程序结构和注释 (6)5.3代码中的变量定义规则 (6)6项目提交 (7)1预备知识机械工程测试技术、工程信号处理、虚拟仪器、MATLAB等。
2项目意义1)将掌握Matlab软件开发过程的基本理论、基本知识和基本技能,为开展学位论文课题研究打下坚实的基础。
2)熟悉基于Matlab平台的若干信号处理系统开发及调试方法。
3)培养科研的团队协作精神。
3项目简介在Matlab开发平台上开发若干信号处理系统——“数字电子琴、数字频谱分析仪、数字均衡器”。
4项目要求设计“数字电子琴、数字频谱分析仪、数字均衡器”三个信号处理系统,具体要求如下:1)自由组合分组,每组4人;由班长将分组名单发至教师email。
2)相关文献资料阅读和综述分析、项目设计方案制订、主要技术难点和技术实现方法。
3)使用M函数设计具有GUI(图形化用户界面)的三个信号处理系统。
4)每组提交一份源程序;撰写不少于10页的《项目研究报告》项目报告,提交纸质版和电子版各1份。
5)每组准备课堂汇报PPT,讲解整个项目的设计、开发、分工等情况。
4.1“数字电子琴”的软件功能1)数字信号发生器的功能:能够产生正弦波、方波、三角波等常见的波形的数字信号,并且提供了图形界面用于选择波形、频率、幅值与相位。
能够根据用户指定的波形和参数产生相应的数字信号,然后将数字信号写入声卡的缓冲区,最后由声卡播放出相应的声音。
2)数字电子琴的功能:电子琴的每个音阶均对应一个特定频率的信号,通过调用数字信号发生器产生一系列指定的频率的声音,从而达到虚拟的电子琴的功能,界面中包含A、B、…、O共15个琴键,鼠标按下时即发声,松开时发声停止。
基于MATLAB的音乐电子琴制作
![基于MATLAB的音乐电子琴制作](https://img.taocdn.com/s3/m/56af17965727a5e9846a6189.png)
基于MATLAB的音乐电子琴制作简述:电子琴的每个音阶均对应一个特定频率的信号,通过调用数字信号发生器产生一系列指定的频率的声音,从而达到虚拟的电子琴的功能。
本次设计是基于MATLAB GUI 程序实现的一个音乐键盘仿真系统。
1 功能介绍总体设计框图如下图所示,其包括单音键盘发音模块,音效长短的选择模块,包络的选择模块,实现键盘代替鼠标输入模块,双音多频模块,演奏音乐模块,播放歌曲,视频模块包括对文件播放的暂停,停止和复位,多键盘输入对输入后统一播放模块和画图模块。
Matlab的数据采集工具箱(DAT)提供了一系列的函数和命令来实现实时模拟信号的输出, 通过调用这些函数和命令可以直接控制声卡输出虚拟信号。
只需要一台带有普通多媒体声卡并安装了Matlab 软件的计算机就可以满足要求实现虚拟信号的输出, 系统结构简单方便。
交互界面如图1所示:图1 程序的交互界面1)单音键盘发音模块设计一个带参子函数实现键盘的发音功能,当实现需要实现音阶的播放时,只要调用这个子函数,并根据不同音阶、不同音调的频率改变子函数的参数即可。
2) 音效长短的选择模块制作一个button group的组控件分别选择不同的控件实现不同的音效长短,音效的长短是通过改变播放一个音阶的时间长短来实现的。
3)包络的选择模块制作一个button group的组控件分别选择不同的控件实现不同的包络,在模块一的基础上,设置选中不同的控件分别对应不同的包络,x为不同包络(如正弦波、三角波、指数等)的表达形式,将x与模块一中实现单音键盘发音的函数相乘时便可实现不同形式的衰减,实现音型的改变。
4)实现键盘代替鼠标输入模块根据计算机键盘上的不同按键对应不同的ASCII码的值,利用函数get()获取当前所按下的数字键对应的ASCII码的值,根据 ASCII码的值判断对应是按下键盘的值。
并执行相应音阶的功能键。
5)双音多频模块通过设置一个radio button 来实现双音多频的功能,设置一个全局变量,当选中该控件时,全局变量的值改变,即在带参的子函数中增加它的频率分量。
matlab电子琴说明书
![matlab电子琴说明书](https://img.taocdn.com/s3/m/57318a2281c758f5f71f67a8.png)
m a t l a b电子琴说明书-CAL-FENGHAI.-(YICAI)-Company One1基于MATLAB的数字电子琴设计日期:2011-3-25姓名:王之海、郑俊超、张楠、杜坤组号:第一组1.目标与范围随着计算机软硬件技术的发展,越来越多现实物品的功能能够由计算机实现。
也就是我们经常所说的将硬件设备软件化,这样做的好处很多,比如说将成本降低,易于实现,修改容易并且可以进行仿真。
现在比较成熟的这类软件有很多,比如说LABVIEW。
基于这样的考虑我们进行了数字电子琴的模拟仿真实验。
这样一个实验的进行会为以后的学习工作中奠定一定的基础。
2.信号处理原理数字信号发生器的功能就是将数字信号通过D/A转换变成所需要的模拟信号。
由于声卡本身具有D/A转换的功能,从而可以利用声卡在计算机了模拟信号发生器。
声卡的D/A转换机理是定时将声卡缓冲区中的内容转换成模拟信号并输出,所以软件所做的即是向声卡缓冲区中写数据。
以正弦信号为例,其模拟信号计算工时如下为实现数字信号的发生,在程序中先根据公式计算出需要存放到缓冲区的数据,以数组的形式存放,然后将数据存放入声卡的缓冲区。
对于方波,y=sign(sin(2*pi*f*t+p))对于其它波形,可以用类似方法实现。
软件的流程图如图所示数字电子琴的流程图3.系统的功能分析软件的功能由数字信号发生器和数字电子琴两部分组成。
(1)数字信号发生器的功能能够产生正弦波、方波、三角波等常见的波形的数字信号,并且提供了图形界面用于选择波形、频率、幅值与相位。
能够根据用户指定的波形和参数产生相应的数字信号,然后将数字信号写入声卡的缓冲区,最后由声卡播放出相应的声音。
(2)数字电子琴的功能1)数字电子琴的功能是基于数字信号发生器的,通过条用数字信号发生器产生一系列指定的频率的声音,从而达到虚拟的电子琴的功能,界面中包含do/rai/mi…共16个琴键,鼠标按下时即时发声秒;并可通过键盘敲击按键进行琴音播放。
基于Matlab的数字电子琴的设计与实现
![基于Matlab的数字电子琴的设计与实现](https://img.taocdn.com/s3/m/b4a6ff214b73f242336c5fe0.png)
工程数字信号处理算法与实践之基于Matlab的数字电子琴的设计与实现学生:吕柳燕班级:机硕0701学号:200770438指导教师:何岭松日期:2007-9-28基于Matlab的数字电子琴的设计与实现电子琴发展概况电子琴是随着电子技术的广泛应用而产生。
1959年,世界上第一台全晶体管双排键电子琴在日本诞生。
从此,电子琴技术不断发展成熟,电子琴的普及也越来越广。
电子琴在中国的推广始于20世纪八十年代,至今在音色、音质、演奏的便利性等方面都达到了相当成熟的地步,而且随着集成电路技术的发展,其升级换代可以在保持原有结构不变的情况下,通过简单的芯片更换实现。
但是,电子琴也有明显的不足之处:与非电子乐器,如钢琴、管弦乐器等的协奏问题,限制了电子琴在重要音乐场所的使用,这极大的影响了电子琴的应用和推广。
协调电子琴与非电子乐器的协奏,是当前音乐界人士和电子琴开发商的当务之急。
电子琴发音原理物体振动时会发出声音,振动的频率不同,声音的音调就不同。
在电子琴里,虽然没有振动的弦、簧、管等物体,却有许多特殊的电装置,每个电装置一工作,就会使喇叭发出一定频率的声音。
当按动某个琴键时,就会使与它对应的电装置工作,从而使喇叭发出某种音调的声音。
电子琴的音量控制器,实质上是一个可调电阻器。
当转动音量控制器旋扭时,可调电阻器的电阻就随着变化。
电阻大小的变化,又会引起喇叭声音强弱的变化。
所以转动音量控制旋扭时,电子琴发声的响度就随之变化。
当乐器发声时,除了发出某一频率的声音──基音以外,还会发出响度较小、频率加倍的辅助音──谐音。
我们听到的乐器的声音是它发出的基音和谐音混合而成的。
不同的乐器发出同一基音时,不仅谐音的数目不同,而且各谐音的响度也不同。
因而使不同的乐器具有不同的音品。
在电子琴里,除了有与基音对应的电装置外,还有与许多谐音对应的电装置,适当地选择不同的谐音电装置,就可以模仿出不同乐器的声音来。
基于 Matlab的数字电子琴实现原理振动频率不同,音调就不同。
matlab电子琴GUI程序代码
![matlab电子琴GUI程序代码](https://img.taocdn.com/s3/m/1308cda764ce0508763231126edb6f1aff0071d3.png)
matlab电子琴GUI程序代码1 背景电子琴是随着电子技术的广泛应用而产生。
1959年,世界上第一台全晶体管双排键电子琴在日本诞生。
从此,电子琴技术不断发展成熟,电子琴的普及也越来越广。
电子琴在中国的推广始于20世纪八十年代,至今在音色、音质、演奏的便利性等方面都达到了相当成熟的地步,而且随着集成电路技术的发展,其升级换代可以在保持原有结构不变的情况下,通过简单的芯片更换实现。
但是,电子琴也有明显的不足之处:与非电子乐器,如钢琴、管弦乐器等的协奏问题,限制了电子琴在重要音乐场所的使用,这极大的影响了电子琴的应用和推广。
协调电子琴与非电子乐器的协奏,是当前音乐界人士和电子琴开发商的当务之急。
2 电子琴发音原理物体振动时会发出声音,振动的频率不同,声音的音调就不同。
在电子琴里,虽然没有振动的弦、簧、管等物体,却有许多特殊的电装置,每个电装置一工作,就会使喇叭发出一定频率的声音。
当按动某个琴键时,就会使与它对应的电装置工作,从而使喇叭发出某种音调的声音。
电子琴的音量控制器,实质上是一个可调电阻器。
当转动音量控制器旋扭时,可调电阻器的电阻就随着变化。
电阻大小的变化,又会引起喇叭声音强弱的变化。
所以转动音量控制旋扭时,电子琴发声的响度就随之变化。
当乐器发声时,除了发出某一频率的声音──基音以外,还会发出响度较小、频率加倍的辅助音──谐音。
我们听到的乐器的声音是它发出的基音和谐音混合而成的。
不同的乐器发出同一基音时,不仅谐音的数目不同,而且各谐音的响度也不同。
因而使不同的乐器具有不同的音品。
在电子琴里,除了有与基音对应的电装置外,还有与许多谐音对应的电装置,适当地选择不同的谐音电装置,就可以模仿出不同乐器的声音来。
3 基于 Matlab的数字电子琴实现原理振动频率不同,音调就不同。
电子琴的每一按键对应一个频率不同的正弦波,按下按键,产生正弦波,播放波形即可听到对应按键的基音。
4 部分源代码function varargout = graph1(varargin)gui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton',gui_Singleton, ...'gui_OpeningFcn',@graph1_OpeningFcn, ...'gui_OutputFcn',@graph1_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});elsegui_mainfcn(gui_State, varargin{:});endfunction graph1_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;guidata(hObject, handles);function varargout = graph1_OutputFcn(hObject, eventdata, handles)varargout{1} = handles.output;function playsound(soundtype, frequency, amp, phase)Fs=41000;x=[0:1/Fs:1];switch soundtypecase 1 %正弦波y=amp*sin(2*pi*frequency*x+phase);case 2 %三角波y=amp*sawtooth(2*pi*frequency*x+phase,0.5);case 3 %锯齿波y=amp*sawtooth(2*pi*frequency*x+phase);case 4 %方波y=amp*square(2*pi*frequency*x+phase);case 5 %白噪声y=amp*(2*rand(size(x))-1);otherwiseerrordlg('Illegal wave type','Choose errer');%向界面发送错误的对话框end。
基于MATLAB的数字信号发生器及简易电子琴设计
![基于MATLAB的数字信号发生器及简易电子琴设计](https://img.taocdn.com/s3/m/e25bf3f5c8d376eeaeaa3173.png)
基于MATLAB的数字信号发生器及简易电子琴设计摘要数字信号发生器是一种基于软硬件结合实现的函数波形产生仪器。
在工程实践中需要检测和分析的各种复杂信号均可分解成各种简单信号之和,而这些简单信号皆可由数字信号发生器模拟产生,因此它在工程分析和实验教学中有着广泛的应用。
MATLAB是一个数据分析和处理功能十分强大的工程实用软件,它的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令,在数字信号处理方面方便实用。
本文介绍了一种使用MATLAB建立一个简单数字信号发生器的基本流程,并详细叙述了简单波形(正弦波、方波、三角波、锯齿波、白噪声、脉冲、阶跃、斜坡)信号的具体实现方法。
最后,利用简单的正弦波信号和PC的声卡设计了一个简易电子琴。
关键字:MATLAB,数字信号发生器,简易电子琴1概述随着计算机技术和测试技术的不断发展,传统的测试仪器正向虚拟化方向发展,特别是在试验教学领域。
虚拟仪器作为现代仪器技术和计算机技术深层次结合的产物,更是得到了广泛应用。
信号发生器原本是模拟电子技术发展的产物,但本文设计出的数字信号发生器是基于计算机软硬件实现的数字信号发生器,是一种虚拟仪器。
2 设计原理常用的数字信号发生器一般可产生正弦信号、方波信号、三角波信号、锯齿波信号、白噪声信号、脉冲信号、阶跃信号、斜坡信号等。
此时的数字信号又可称为离散信号,即时间为离散变量的信号。
它只在离散时间上给出函数值,是时间上不连续的“序列”。
离散时间的间隔是均匀的,以t ∆表示。
t ∆的值由信号的采样频率fs 决定。
为保证采样后信号能真实地保留原始模拟信号信息,信号采样频率必须至少为原信号中最高频率成分的2倍。
这是采样的基本法则,称为采样定理。
本文为了使产生的数字信号更接近原始的模拟信号,采用的采样频率为原始信号频率的30倍。
MATLAB 程序提供了常用的各种基本信号的生成函数。
本设计需模拟的八种信号大部分都直接使用了MATLAB 提供的函数,只有少数几个信号没有调用函数,直接编写的。
基于MATLAB的数字信号发生器报告-蔡辉-M201070440
![基于MATLAB的数字信号发生器报告-蔡辉-M201070440](https://img.taocdn.com/s3/m/fb4056d5b9f3f90f76c61b45.png)
基于MATLAB的数字信号发生器设计报告蔡辉机电M201070440摘要:数字信号发生器是基于软硬件实现的一种波形发生仪器。
在工工程实践中需要检测和分析的各种复杂信号均可分解成各简单信号之和,而这些简单信号皆可由数字信号发生器模拟产生,因此它在工程分析和实验教学有着广泛的应用。
MATLAB是一个数据分析和处理功能十分强大的工程实用软件,他的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令,在数字信号处理方面方便实用。
本文介绍了使用MATLAB建立一个简单数字信号发生器的基本流程,并详细叙述了简单波形(正弦波、方波、三角波、锯齿波、白噪声)信号的具体实现方法。
关键字:MATLAB ,数字信号发生器1概述随着计算机软硬件技术的发展,越来越多现实物品的功能能够由计算机实现。
信号发生器原本是模拟电子技术发展的产物,到后来的数字信号发生器也是通过硬件实现的,本文将给出通过计算机软件实现的数字信号发生器。
信号发生器是一种常用的信号源,广泛应用于电子技术实验、自控系统和科学研究等领域。
传统的台式仪器如任意函数发生器等加工工艺复杂、价格高、仪器面板单调、数据存储、处理不方便。
以Matlab和LabVlEW 为代表的软件的出现,轻松地用虚拟仪器技术解决了这些问题。
Matlab 是一个数据分析和处理功能十分强大的工程实用软件,他的数据采集工具箱(data acquisition toolbox )为实现数据的输入和输出提供了十分方便的函数和命令,利用这些函数和命令可以很容易地实现对外部物理世界的信号输出和输入。
根据声卡输出信号的原理,采用Matlab 软件编程,可以方便地输出所需要的正弦波、三角波、方波等多种信号,有效地实现信号发生器的基本功能。
2 设计原理要设计的数字信号有正弦信号、方波信号、三角波、锯齿波、白噪声、脉冲信号。
其中,前五种波形都可以利用MATLAB 提供的函数实现,并根据输入的幅值、相位、频率等信息进行调整。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于MATLAB的数字信号发生器及简易电子琴设计摘要数字信号发生器是一种基于软硬件实现的波形发生器,可以实现各种基本波形的产生。
工程的各种复杂信号是由这些基本信号叠加产生,因此它在工程分析和实验教学中有着广泛的应用。
MATLAB是一个数据分析和处理功能十分强大的工程实用软件,它的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令,在数字信号处理方面方便实用。
本文首先详细介绍了基于MATLAB 的数字信号发生器的设计过程,实现了简单波形(正弦波、方波、三角波、斜波)信号的具体实现方法,其次介绍了利用该数字信号发生器产生的正弦波信号和声卡设计的简易电子琴。
1介绍随着计算机软硬件技术的发展,越来越多现实物品的功能能够由计算机实现。
也就是我们经常所说的将硬件设备软件化,这样做的好处很多,比如说将成本降低,易于实现,修改容易并且可以进行仿真。
现在比较成熟的这类软件有很多,比如说MATLAB。
基于这样的考虑,我用MATLAB制作了一个简单的数字发生器,并将其与实际应用联系起来,设计了一个简易的电子琴,为以后的学习工作中奠定一定的基础。
1.1数字信号发生器的介绍常用的数字信号发生器一般可产生正弦信号、方波信号、三角波信号、锯齿波信号、白噪声信号、脉冲信号、阶跃信号、斜坡信号等。
数字信号又可称为离散信号,它只在离散时间上给出函数值,是时间上不连续的“序列”。
离散时间的间隔是均匀的,以t 表示。
的值由信号的采样频率Fs决定。
为保证采样后信号能真实地保留原始模拟信号信息,信号采样频率必须至少为原信号中最高频率成分的2倍。
这是采样的基本法则,称为采样定理。
本文为了使产生的数字信号更接近原始的模拟信号,采用的采样频率为原始信号频率的20倍。
MATLAB程序提供了常用的各种基本信号的生成函数。
本设计需模拟四种信号,三个都直接使用了MATLAB提供的函数,只有一个信号没有调用函数,直接编写的。
1.2电子琴的介绍电子琴在中国的推广始于20世纪八十年代,至今在音色、音质、演奏的便利性等方面都达到了相当成熟的地步,而且随着集成电路技术的发展,其升级换代可以在保持原有结构不变的情况下,通过简单的芯片更换实现。
但是,电子琴也有明显的不足之处:与非电子乐器,如钢琴、管弦乐器等的协奏问题,限制了电子琴在重要音乐场所的使用,这极大的影响了电子琴的应用和推广。
协调电子琴与非电子乐器的协奏,是当前音乐界人士和电子琴开发商的当务之急。
本文通过MATLAB设计一个简单的电子琴,来加深对电子琴在设计界面中包含A、B、C、D、E、F、G共7个琴键,由于低音频率区分不是很明显,此次课设选择的是中音频率,其中每个按键对应一个频率的正弦波信号,各按键对应的信号频率分别为392、440、494、523、587、659、698Hz。
当用鼠标按下相应的键时发声,松开时发声停止,然后将数字信号写入声卡的缓冲区,由声卡播放出相应的声音。
当用鼠标按下对应的键时即可发出相应频率的声音。
Method2.1数字信号发生器的实现根据设计的要求分析出数字信号发生器的GUI界面构图,然后在MATLAB 的workplace界面中输入guide,打开GUI界面。
在GUI界面中搭建好具体的数字信号发生器的界面,并对每个波形控件的回调函数进行编写、保存M文件。
运行,若结果正确,观察仿真结果。
若数字信号发生器的仿真结果不正确,检查控件的回调函数,修改并保存M文件,再次运行观察仿真结果。
2.1.1数字信号发生器GUI的搭建Matlab环境下的图形用户界面(GUI)是由窗口、光标、按键、菜单、文字说明等对象构成的一个用户界面。
用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。
对图形用户界面的操作一般有两个部分,首先按照设计的原理、要求,根据需要选择适当的图形对象搭建合理的GUI界面;然后对每个控件的回调函数在M 文件内进行编写,使搭建的GUI界面能够运行。
本文数字信号发生器的设计所使用的工具即GUI界面,用到的图形对象有panel、Axes、pushbutton、、Static Text、。
模拟了四种信号:正弦波、方波、三角波、斜波信号。
数字信号发生器GUI界面如下:2.1.2波形实现的基本原理2.1.2.1正弦波的实现正弦信号的数学表达式如下:)2sin()sin(ϕπϕ+=+=ft A wt A y (1.1)其中:A 为幅值;为频率;φ为相位。
在MATLAB 中,由于处理对象均是离散的数字信号,将时间变量离散化并构造成一个一维数组用0.1:/1:0s f t = 其中:fs 为采样频率。
但s f 的值不能太大,否则波形显示会很慢。
相应的正弦波信号的数字信号表达式为)2sin()(ϕπ+∆=∆t fn A t n y (1.2)在分别得到t 与y 的离散值后,用plot 作图函数即可获得相应波形显示。
2.1.2.2方波信号的实现方波信号的数学表达式为y=A 0<t<T /2y=-A -A<t<0在MATLAB 中可得到幅值、频率、相位可调的方波信号函数 )2(ϕπ+=ft Asquare y (1.4)2.1.2.3三角波信号的实现三角波信号的数学表达式为t A A y 22*-=/T 0 < t<T/2T t A A y -*+-=(22/2)/T T/2<t<T在MATLAB 中,可以用函数sawtooth 直接生成一个三角波信号, 该函数可生成一个周期为2π,峰值为A ,最大值出现在2width π⨯位置的三角波。
利用该函数,可得到幅值、频率、相位可调的三角波信号函数),2(w i d t h ft Asawtoothy ϕπ+= (1.5) 2.1.2.4斜波信号的实现斜波信号的数学表达式为y= kt在MATLAB 中,可以直接用其进行编程。
2.2电子琴的实现电子琴的实现基于之前设计的数字信号发生器,在GUI 界面中搭建好具体的电子琴的界面,利用数字信号发生器产生的正弦波,对电子琴每个控件的回调函数进行编写、保存M 文件。
运行,观察仿真结果。
若数字信号发生器的仿真结果不正确,检查控件的回调函数,修改并保存M 文件,再次运行观察仿真结果。
每个键对应一定的频率,实现每个键有自己特定频率的功能,为了使最终仿真结果更好,选择音阶中音调高的频率作为调试频率。
当键按下的时候,首先由相应的键和数字信号关联起来,随后将数字信号写入声卡的缓冲区,由声卡发出相应频率的声音,并显示波形及对应频率的频谱图,当键松开时声音即停止。
2.2.1电子琴的GUI 界面的搭建在设计界面中包含A 、B 、C 、D 、E 、F 、G 共7个琴键,由于低音频率区分不是很明显,此次课设选择的是中音频率,其中每个按键对应一个频率的正弦波信号,各按键对应的信号频率分别为392、440、494、523、587、659、698Hz 。
当用鼠标按下相应的键时发声,松开时发声停止,然后将数字信号写入声卡的缓冲区,由声卡播放出相应的声音。
当用鼠标按下对应的键时即可发出相应频率的声音。
2.2.2电子琴按键的回调函数A,B,C,D,E,F,G七个按键的回调函数只是它们的f不同,现只一A键来说明function pushbuttonA_Callback(hObject, eventdata, handles)Fs = 8000;f=392;T =1;dt=1.0/Fs;N=T/dtt=linspace(0,1,N);y =5*sin(2*pi*f*t);plot(t,y);axis([0, 0.01, -8,8]);wavplay(y,Fs);Result3.1 数字信号发生器的仿真结果3.1.1正弦波的仿真结果3.1.2方波的3.1.3三角波3.1.4斜波3.2电子琴的仿真结果3.2.1A键3.2.2B键3.2.3C键3.2.4D键3.2.5E键3.2.6F键3.2.7G键Conclusions本文通过对数字信号发生器常用几种信号波形进行分析,并用MATLAB中提供的函数实现四种信号波形的生成和显示。
通过GUI 模块进行界面设计,最终程序运行的结果非常好。
完全实现了设计的任务要求。
此外,电子琴的设计实现了正弦波显示及发音功能,从而实现虚拟电子琴的模仿功能。
在设计的完成过程中,由于本人对MATLAB工具不熟,自己花了较长时间才能完成任务,但通过本设计使我对工程数字信号处理算法与实践这门课有了更直观的认识。
通过理论结合实践,既加深了我们对理论知识的理解,同时又提高了我们的实际动手应用的能力。
References1.MathWork.MATLAB R2011a.2011.2.Zangzhiyong.MATLAB R2011A.Beihang university press.3.John G.Proakis.Digital Signal Processing.Third Edition.4.Digital Signal Processing – James.H.Mc Clellan.5./view/0005e52e453610661ed9f42d.html.6./view/fb4056d5b9f3f90f76c61b45.html.。