音乐电子琴matlab设计报告材料
Matlab中的电子音乐制作与音频合成技术

Matlab中的电子音乐制作与音频合成技术引言电子音乐制作是一种结合技术和艺术的创造过程,而Matlab作为一种强大的数学计算软件,不仅可以应用于科学研究和工程设计,也能够用于音频处理和音乐创作。
本文将介绍Matlab中的一些电子音乐制作和音频合成技术,探讨如何利用Matlab来实现音频效果的设计和实现。
1. Matlab中的音频处理工具Matlab提供了许多音频处理工具箱,如Audio System Toolbox和DSP System Toolbox。
这些工具箱包含了各种音频处理算法和函数,可以用于音频的录制、分析、编辑和合成等方面。
通过这些工具箱,用户可以实现各种音频效果,如均衡器、压缩器、延时器等,并可以对音频进行滤波、混响、合成等处理。
2. 音频合成技术音频合成是电子音乐制作的重要环节之一,它可以通过合成器、采样和合成算法等方式来生成各种音频信号。
Matlab中的音频合成技术主要通过生成相应的音频波形来实现。
2.1 合成器Matlab提供了很多合成器函数,如sine、square、sawtooth等,用于生成不同类型的音频波形。
用户可以通过调整参数,如频率、振幅、相位等来控制波形的特性。
这些合成器函数可以通过简单的数学公式来实现生成音频波形的过程,使用户能够灵活地创作各种音乐效果。
2.2 采样合成除了使用合成器函数生成音频波形外,Matlab还提供了采样合成技术,用户可以通过将各种音频样本进行采样和合成来实现音频合成。
这种方法可以将现实世界中的各种音频素材转化为数字信号,并通过合成算法进行处理和合成。
3. 音频效果的设计与实现Matlab中的音频处理工具箱提供了丰富的音频效果函数和滤波器设计工具,使用户能够设计和实现各种音频效果。
3.1 均衡器均衡器是一种常用的音频效果器,它可以调整不同频段的音量,改变音频频谱的平衡来达到音频加工的效果。
Matlab中可以使用filter函数和滤波器设计工具来设计和实现不同类型的均衡器。
MATLAB课程设计报告(绝对完整)

课程设计任务书学生姓名:董航专业班级:电信1006班指导教师:阙大顺,李景松工作单位:信息工程学院课程设计名称:Matlab应用课程设计课程设计题目:Matlab运算与应用设计5初始条件:1.Matlab6.5以上版本软件;2.课程设计辅导资料:“Matlab语言基础及使用入门”、“Matlab及在电子信息课程中的应用”、线性代数及相关书籍等;3.先修课程:高等数学、线性代数、电路、Matlab应用实践及信号处理类相关课程等。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.课程设计内容:根据指导老师给定的7套题目,按规定选择其中1套完成;2.本课程设计统一技术要求:研读辅导资料对应章节,对选定的设计题目进行理论分析,针对具体设计部分的原理分析、建模、必要的推导和可行性分析,画出程序设计框图,编写程序代码(含注释),上机调试运行程序,记录实验结果(含计算结果和图表),并对实验结果进行分析和总结。
具体设计要求包括:①初步了解Matlab、熟悉Matlab界面、进行简单操作;②MATLAB的数值计算:创建矩阵矩阵运算、多项式运算、线性方程组、数值统计;③基本绘图函数:plot, plot3, mesh, surf等,要求掌握以上绘图函数的用法、简单图形标注、简单颜色设定等;④使用文本编辑器编辑m文件,函数调用;⑤能进行简单的信号处理Matlab编程;⑥按要求参加课程设计实验演示和答辩等。
3.课程设计说明书按学校“课程设计工作规范”中的“统一书写格式”撰写,具体包括:①目录;②与设计题目相关的理论分析、归纳和总结;③与设计内容相关的原理分析、建模、推导、可行性分析;④程序设计框图、程序代码(含注释)、程序运行结果和图表、实验结果分析和总结;⑤课程设计的心得体会(至少500字);⑥参考文献(不少于5篇);⑦其它必要内容等。
时间安排:1.5周(分散进行)参考文献:[1](美)穆尔,高会生,刘童娜,李聪聪.MA TLAB实用教程(第二版) . 电子工业出版社,2010.[2]王正林,刘明.精通MATLAB(升级版) .电子工业出版社,2011.[3]陈杰. MA TLAB宝典(第3版) . 电子工业出版社,2011.[4]刘保柱,苏彦华,张宏林. MATLAB 7.0从入门到精通(修订版) . 人民邮电出版社,2010.指导教师签名:年月日系主任(或责任教师)签名:年月日目录1 MATLAB的简介 (1)2课程设计内容 (4)2.1 (5)2.2 (2)2.3 (2)2.4 (2)2.5 (2)2.6 (2)2.7 (2)2.8 (2)2.9 (2)2.10 (2)3课程设计心得体会 (1)4参考文献 (1)1 Matlab 软件简介1.1 MATLAB产生的历史背景MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
电子琴报告

单片机原理及应用实验报告实验名称:电子琴设计组员:实验成绩:实验日期: 2013年6月17日实验地点: 3#北604实验报告一、实验目的以51单片机最小系统为核心,通过键盘获取按键信息,运用单片机定时器等部件实现蜂鸣器发声同时用数码管同步显示,同时该系统具有播放歌曲及选取按键输入高、中、低音的功能。
二、实验原理1、利用蜂鸣器作为发声部件。
2、两个数码管作为显示部件。
3、设置10个按键,实现高音、中音、低音的1、2、3、4、5、6、7的发音。
4、大部分功能通过软件实现。
软件的结构图如下单片机键盘电路显示电路蜂鸣器电路复位电路程序流程图如下:三、系统仿真图整体仿真图:开始初始化检测中断按键音乐播放程序按键扫描程序结束Y 发声程序是否有按键按下键值判断Y动态显示放声部分按键四、心得体会看似简单的题目,实际操作中,仍旧存在很多问题,尤其是在程序中的数码管显示的模块中,和键值的计算容易出问题。
五、源码附录//*******初始化数据*****//void init(void){speaker=0;//关蜂鸣器LED1=1;//LED2=0;EA=1;//开总中断TCON=0x01;//外部中断0设置为边沿触发EX0=1;//开外部中断0ET0=1;//开定时器0中断ET1=1;//开定时器1中断TMOD=0x11;//定时器0,1工作在定时状态,均为方式1 }#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit P1_0=P1^0;sbit P1_1=P1^1;sbit P1_2=P1^2;sbit P1_3=P1^3;sbit P1_4=P1^4;sbit P1_5=P1^5;sbit P1_6=P1^6;sbit P1_7=P1^7;sbit LED1=P2^6;sbit LED2=P2^7;sbit change=P3^2;sbit high=P3^5;sbit normal=P3^4;sbit low=P3^3;sbit P2_0=P2^0;sbit P2_1=P2^1;sbit speaker=P2^2;unsigned char i;unsigned char key,yin=0;uchar m,n;bit a=0;//a为change键的键值uchar seg[]={ 0x3F,/*0*/0x06,/*1*/0x5B,/*2*/0x4F,/*3*/0x66,/*4*/0x6D,/*5*/0x7D,/*6*/0x07,/*7*/0x7F,/*8*/0x6F,/*9*/0x37,/*N*///中音0x38,/*L*///低音0x76,/*H*///高音0x79 /*E*/};//共阴极数码管code unsigned char FH[]={ 0xFC,0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,//中音0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,//低音的高8位0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,};// 音阶频率表低八位code unsigned char FL[]={ 0x8E,0xED,0x44,0x6B,0xB4,0xF4,0x2D,//中音0x21,0xDB,0x87,0xD7,0x68,0xE8,0x5B,//低音的低8位0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,};code uchar star[]={1,2,3,1, 1,2,3,1, 3,4,5, 3,4,5, 5,6,5,4,3,1, 5,6,5,4,3,1, 1,12/*低音5*/,1, 1,12,1};code uchar shijian[]={4,4,4,4, 4,4,4, 4, 4,4,8, 4,4,8, 2,1,2,1,4,4, 2,1,2,1,4,4, 4,4,6, 4,4,6};void init(void);void music();void play();void seg1();void yinjie();/*********主程序*****////void main(){init();while(1){if(a==0)music();elseplay();}}//*******1ms延迟********//void delay(uint x){uint i,j;for(i=x;i>0;i--)for(j=340;j>0;j--);}//*******初始化数据*****//void init(void){speaker=0;LED1=1;LED2=0;EA=1;//开总中断TCON=0x01;//外部中断0设置为边沿触发EX0=1;//开外部中断0ET0=1;ET1=1;TMOD=0x11;//定时器0,1工作在定时状态,均为方式1}///******数码管动态显示*******/////void seg1(){P2_0=1;//关数码管1P2_1=0;//开数码管2P0=seg[n+1];//送数码管2的数据delay(15);//延时15msP2_1=1;//关数码管2P2_0=0;//开数码管1P0=seg[yin];//yin为high,normal,low的判断结果送数码管1的数据delay(15);//延时15ms}//********高低音的选择*******//////void yinjie(){if(normal==0){delay(5);if(normal==0){ yin=10;m=0;//返回10为seg[10]显示C}}if(low==0){delay(5);if(low==0){ yin=11;m=1;//返回11为seg[11]显示L}}if(high==0){delay(5);if(high==0){ yin=12;m=2;//返回12为seg[12]显示H}}if(yin==0){yin=13;}}//********外部中断0********//void inter0() interrupt 0{if(change==0){delay(5);while(change==0);a=~a;LED1=~LED1;LED2=~LED2;}}/////*******播放音乐程序*****//// void music(){TH0=FH[star[i]-1];TL0=FL[star[i]-1];while(a==0){if(i<32){TR0=1;delay(57*shijian[i]);i++;}if(i==32){i=0;}}}////*******演奏模式*****//////void play(){TR0=0;TR1=0;yinjie();P2_1=1;//关数码管2P2_0=0;//开数码管1P0=seg[yin];if(yin!=13&&a==1){if(P1_0==0){TH1=FH[7*m+n];TL1=FL[7*m+n];TR1=1;while(P1_0==0){ n=0;seg1();}}if(P1_1==0){ TH1=FH[7*m+n];TL1=FL[7*m+n];TR1=1;while(P1_1==0){ n=1;seg1();}}if(P1_2==0){ TH1=FH[7*m+n];TL1=FL[7*m+n];TR1=1;while(P1_2==0){ n=2;seg1();}}if(P1_3==0){TH1=FH[7*m+n];TL1=FL[7*m+n];TR1=1;while(P1_3==0){ n=3;seg1();}}if(P1_4==0){ TH1=FH[7*m+n];TL1=FL[7*m+n];TR1=1;while(P1_4==0){ n=4;seg1();}}if(P1_5==0){ TH1=FH[7*m+n];TL1=FL[7*m+n];TR1=1;while(P1_5==0){ n=5;seg1();}}if(P1_6==0){ TH1=FH[7*m+n];TL1=FL[7*m+n];TR1=1;while(P1_6==0){ n=6;seg1();}}}}//******定时器0中断******//////void timer0() interrupt 1{ TR0=0;TH0=FH[star[i]-1];TL0=FL[star[i]-1];speaker=~speaker;TR0=1;}//******定时器1中断******//////void timer1() interrupt 3{ TR1=0;TH1=FH[7*m+n];TL1=FL[7*m+n];speaker=~speaker;TR1=1;}。
MATLAB程序设计实验报告

MATLAB 程序设计实验报告一、实验目的1. 通过实验熟悉MATLAB 仿真软件的使用方法;2. 掌握用MATLAB 对连续信号时域分析、频域分析和s 域分析的方法,利用绘图命令绘制出典型信号的波形,了解这些信号的基本特征;3. 掌握用MATLAB 对离散信号时域分析、频域分析和z 域分析的方法,利用绘图命令绘制出典型信号的波形,了解这些信号的基本特征;4. 通过绘制信号运算结果的波形,了解这些信号运算对信号所起的作用。
二、实验设备1. 计算机:2. MATLAB R2007a 仿真软件三、实验原理对系统的时域分析信号的时域运算包括信号的相加、相乘,信号的时域变换包括信号的平移、反折、倒相及信号的尺度变换。
(1)信号的相加和相乘:已知信号)(1t f 和)(2t f ,信号相加和相乘记为)()(1t f t f =)(2t f +;)()(1t f t f =)(2t f *。
(2)信号的微分和积分:对于连续时间信号,其微分运算是用diff 函数来完成的,其语句格式为:diff(function,’variable’,n),其中function 表示需要进行求导运算的信号,或者被赋值的符号表达式;variable 为求导运算的独立变量;n 为求导的阶数,默认值为求一阶导数。
连续信号的积分运算用int 函数来完成,语句格式为:diff(function,’variable’,a,b),其中function 表示需要进行被积信号,或者被赋值的符号表达式;variable 为求导运算的独立变量;a,b 为积分上、下限,a 和b 省略时为求不定积分。
(3)信号的平移、翻转和尺度变换信号的平移包含信号的左移与右移,信号的翻转包含信号的倒相与折叠,平移和翻转信号不会改变信号)(t f 的面积和能量。
信号的尺度变换是对信号)(t f 在时间轴上的变化,可使信号压缩或扩展。
)(at f 将原波形压缩a 倍,)/(a t f 将原波形扩大a 倍。
基于某单片机地简易电子琴设计(报告材料)

学科类别:工科邮电大学自主创新实验简易电子琴的制作题目:学院:专业:年级:姓名:完成日期:摘要随着社会的发展进步,音乐逐渐成为我们生活中很重要的一部分,有人曾说喜欢音乐的人不会向恶。
我们都会抽空欣赏世界名曲,作为对精神的洗礼。
本论文设计一个基于单片机的简易电子琴。
我们对于电子琴如何实现其功能,如音色选择、声音强弱控制、节拍器、自动放音功能等等也很好奇。
电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。
它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。
本文的主要容是用AT89S52单片机为核心控制元件,设计一个电子琴。
以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。
本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。
关键词:AT89S52单片机音色节拍器自动放音引言单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。
它的应用必定导致传统的控制技术从根本上发生变革。
因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。
电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。
它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。
本文的主要容是用AT89S52单片机为核心控制元件,设计一个电子琴。
以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。
本文主要对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。
利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。
并且本文分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。
MATLAB在电子音乐合成与创作中的应用指南

MATLAB在电子音乐合成与创作中的应用指南引言电子音乐合成与创作作为音乐领域的一个重要分支,一直以来都受到许多音乐家和音乐爱好者的追捧。
在数字化时代,计算机技术的发展为电子音乐合成与创作提供了更多可能性。
而MATLAB作为一种强大的科学计算软件,也在电子音乐领域发挥着重要的作用。
本文将介绍MATLAB在电子音乐合成与创作中的应用指南,并探讨其在声音合成、音频处理以及音乐创作方面的应用。
声音合成声音合成是电子音乐合成与创作中的重要环节,它可以通过模拟或合成声音波形,产生各种音效和声音效果。
MATLAB提供了一系列函数和工具箱,可以帮助实现声音合成的过程。
首先,MATLAB提供了信号处理工具箱,其中包含了许多用于声音合成的函数。
例如,可以使用MATLAB中的sin函数生成正弦波信号,通过改变频率、幅度和相位等参数,可以合成出不同音高、音色和音调的声音。
此外,还可以利用MATLAB的加法和乘法运算,将多个不同频率的正弦波信号叠加在一起,生成更复杂的声音波形。
其次,MATLAB还提供了滤波器设计工具箱,可以用于设计各种数字滤波器,用来改变声音波形的频率响应。
通过选择不同类型的滤波器和调整其参数,可以实现音色的改变和音频效果的增强。
滤波器设计工具箱还提供了可视化界面,方便用户直观地观察滤波器的频率响应,并进行实时调整。
此外,MATLAB还支持数字信号处理算法的开发和测试,通过编写自定义的算法,可以实现更精确和灵活的声音合成。
用户可以利用MATLAB的编程功能,结合音频信号的特征和自己的创意,开发出各种创新的声音合成算法。
音频处理音频处理是电子音乐合成与创作中不可或缺的一部分,它可以对现有的音频进行修改、编辑和优化,以获得更好的音质和音效。
MATLAB提供了丰富的音频处理工具和函数,可以方便地进行音频处理。
首先,MATLAB提供了音频文件的读取和写入函数,可以读取常见的音频文件格式(如WAV、MP3等),并将处理后的音频保存为新的文件。
学士学位论文—-电子琴实验报告乐曲硬件演奏电路设计
武夷学院实验报告课程名称:逻辑设计与FPGA 项目名称:乐曲硬件演奏电路设计姓名:专业:微电子学班级: 14微电子学号: 04 实验日期实验预习成绩(百分制)实验指导教师签字:二、 实验过程记录部分:1.实验过程记录:1.1 输入信号锁相环PLL0调节: 图2.1 锁相环 管脚clk_50m (设置为B12)接入FPGA 内部的50mhz 的时钟信号,C0口为得到数控分屏器模块的输入时钟750KHZ ,将分频比设置为1/67,即50000000HZ/67=74.6K约等于75K ;c1口为2KHZ (配合下级的500分频模块),设置为:c1=50000000HZ/25000=2KHZ 。
1.2 500分频模块count500(即500进制的计数器):图2.2 分频电路程序设计 如图2.2,因为梁祝歌曲只用低音和中音来演奏,为1/4拍,即四分之一拍,每个音符持续0.25秒的时间。
因为前级电路已经实现了从50MHZ 到2KHZ 的转换,要得到4HZ 的频率,则用500进制的计数器(0到499的计数)产生的进位信号对2KHZ 实现500分频(输出波形分析见后)。
1.3 乐曲长度控制计数器cnt138设计:图2.3 乐曲长度控制计数器程序及元件图经查阅《EDA技术实用教程(第五版)》可知,《梁祝》这首歌曲总共有139个音符,其中包含末尾的3个休止符。
如图2.3,因此为了产生这139音符,因此想到开发一个139进制的计数器(计数值:0到138),实现用139状态代表139个音符。
又因为要配合下一级音符谱码存储模块的输入(ROM的输入一般为偶数位),因此将原本用7路线就可以表示完成的输出端cnt8增加一位线宽。
注:在本程序中,输出端cnt8由于定义成integer整型,在Quartus中被自动分配成了7根;也可以定义成vector型,而此时需要注意配合下级电路的权位最好写成cnt8: out std_logic_vector(7 downto 0).1.4 音符谱码存储模块设计构建:1.4.1 ROM的设置:图2.4 音符谱码存储模块ROM音符谱码存储模的主体构想,是为了让前级模块所产生的139个状态与实际音符(Do Re Mi Fa So La Si)构成映射。
简单电子琴的制作设计报告
电子琴的制作3。
1电子琴的原理(1)由4X4组成16个按钮矩阵,设计成16个音。
(2)可随意弹奏想要表达的音乐。
(3)相应音符的频率值:TABLE1: DB 0FAH,15H,0FAH,67H,0FBH,06H,0FBH,90HDB 0FCH,0CH,0FCH,44H,0FCH,0ACH,0FDH,09 HDB 0FDH,34H,0FDH,82H,0FDH,0C8H,0FEH,06HDB 0FEH,22H,0FEH,56H,0FEH,85H,0FEH,9AH3。
1。
1电子琴的原理图图3—1 原理图图3—2 原理图图3—3 原理图3。
1。
2电子琴设计流程图图3—4 设计流程图3。
2元器件的清单表3—13.2。
1元器件的介绍(1)数字万用表:数字万用表,一种多用途电子测量仪器,一般包含安培计、电压表、欧姆计等功能,有时也称为万用计、多用计、多用电表,或三用电表。
(2)单片机STC: STC单片机具有功能强、保密性强、价格低、编程简便等突出特点,其程序可以使用串行在线编程(ISP)方式下载写入,所需的装置就是程序下载器.介绍的STC单片机程序下载器是利用PL2303组成串口转换器,将USB 串口虚拟成RS232串口,解决了STC单片机与PC机的通信问题。
(3)晶振:晶振有着不同使用要求及特点,通分为以下几类:普通晶振、温补晶振、压控晶振、温控晶振等。
在测试和使用时所供直流电源应没有足以影响其准确度的纹波含量,交流电压应无瞬变过程。
测试仪器应有足够的精度,连线合理布置,将测试及外围电路对晶振指标的影响降至最低。
以下内容将逐项为您解答有关晶振的相关知识.(4)集成器:利用微电子工艺,将敏感元件连同信号处理电子线路制作在一块半导体芯片上的传感器。
(5)喇叭:一种管乐器,上细下粗,多用铜制成,又可指一种电声元件,作用是将电信号转换为声音,也叫扬声器. 还可用来形容替人鼓吹、宣传的人.(6)电阻器:在日常生活中一般直接称为电阻。
电子琴的设计报告
基于FPGA的简易电子琴的设计与制作学生班级:XXX学生学号:XXXXXXXXXXX学生姓名:XX时间: 201X年X月XX日目录一、设计任务及要求 (3)1.课题题目 (3)2.要求 (3)二、设计内容 (3)1.课题分析 (3)2.系统方案选择 (3)(1)频率产生电路 (3)(2)优先选择电路或者合成电路 (4)三、电路设计及计算 (4)1.DE2简介 (4)2.各音调所对应分频次数 (7)3.电路模块介绍 (7)(1)晶振电路 (7)(2)分频电路 (7)(3)音调选择电路 (8)四、仿真及结果分析 (8)五、设计总结 (9)一、设计任务及要求1.课题题目:基于FPGA的简易电子琴的设计与制作2.要求(1)制作一个简单的电子琴,通过按下不同的按键,电子琴能发出七种不同的音调。
电子琴发出声音的频率与七种音调的频率相近,且能清晰的听到这七种音调。
(2)当同时按下两个及以上的按键时,电子琴能根据选择或者是合成几种音调发出一种声音。
(3)学习使用quartus II以及了解DE2开发板,对FPGA有一定的了解。
二、设计内容1.课题分析由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了。
音调主要由声音的频率决定,乐音(复音)的音调更复杂些,一般可认为主要由基音的频率来决定,也即一定频率的声音对应特定的乐音。
因此,要实现电子琴,就应该设计能输出这七种频率的电路,通过开关来控制输出电路的种类。
当出现两个及以上开关闭合时,电子琴的内部电路能够合成这几种音调或者是通过选择来发出音调。
2.系统方案选择(1)频率产生电路:方案一:采用一个555集成定时器组成简易电子琴。
整个电路由主振荡器,颤音振荡器,扬声器和琴键按钮等部分组成。
主振荡器由555定时器,电阻,按键及电容组成。
555电路组成的多谐振荡器,它的振荡频率可以通过改变振荡电路中的RC元件的数值进行改变。
matlab电子琴GUI程序代码
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。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实用标准文案 文档大全 《 MATLAB 实践 》 课程设计
学生: 谢冬云 学 号: 110900735 专业班级: 09级信通(3)班 指导教师: 晓明
二○一二 年 六 月 二十 日 学号:110900735 姓名:谢冬云
1 目 录 一、设计目的 ...................................................... 2 二、题目分析 ...................................................... 2 2.1 课程设计的基本要求 ......................................... 2 2.2 课程设计的容 ............................................... 2 三、总体设计 ...................................................... 2 3.1总体设计框架 ............................................... 2 3.2 功能模块 ................................................... 3 四、具体设计 ...................................................... 4 4.1单音键盘发音模块 ........................................... 4 4.2 音效长短的选择模块 ......................................... 5 4.3包络的选择模块 ............................................. 5 4.4实现键盘代替鼠标输入模块 ................................... 6 4.5 双音多频模块 ............................................... 9 4.6 演奏音乐模块 ............................................... 9 4.7 播放歌曲,视频模块 ........................................ 11 4.8 多键盘输入对输入后统一播放模块 ............................ 14 4.9 画图模块 .................................................. 15 五、结果分析 ..................................................... 15 六、心得体会 ..................................................... 16 七、参考书目: ................................................... 17 学号:110900735 姓名:谢冬云
2 一、设计目的 运用MATLAB实现MATLAB的GUI的信号处理程序设计。做一个基于MATLAB GUI的音乐键盘。
二、题目分析
2.1 课程设计的基本要求 1)熟悉和掌握MATLAB 程序设计方法。 2)掌握MATLAB GUI 程序设计。 3)学习音乐合成基本知识。
2.2 课程设计的容 学习MATLAB GUI程序设计,设计和实现一个音乐键盘仿真系统。要求:按照软件工程方法,根据需求进行程序的功能分析和界面设计,给出设计详细说明。然后按照自己拟定的功能要求进行程序设计和调试。 1)设计音乐键盘GUI界面,实现单音键盘的发声。 2) 能改变音的长短,即可以实现音的缩短,延长。 3)实现键盘的双音多频,即每个键盘对应低音频组的一个频率和高音频组的一 个频率,实现按键的发出双音。 4)能改变音乐包络形式,实现音型的改变。 5)能够演奏一段音乐。 6)为界面添加背景音乐,实现wav格式的声音的播放,同时可以用本软件播放视频,但是matlab不支持画音同步的功能,但是可以看到没有声音的视频。 7)能够实现对键盘的输入按键进行存储,等到输入结束后统一播放刚才输入的键盘按键相对应的声音。
三、总体设计
3.1总体设计框架 总体设计框图如下图所示,其包括单音键盘发音模块,音效长短的选择模块,包络的选择模块,实现键盘代替鼠标输入模块,双音多频模块,演奏音乐模块,播放歌曲,视频模块包括对文件播放的暂停,停止和复位,多键盘输入对输入后统一播放模块和画图模块。学号:110900735 姓名:谢冬云 3 3.2 功能模块 1)单音键盘发音模块 设计一个带参子函数实现键盘的发音功能,当实现需要实现音阶的播放时,只要调用这个子函数,并根据不同音阶、不同音调的频率改变子函数的参数即可。 2) 音效长短的选择模块 制作一个button group的组控件分别选择不同的控件实现不同的音效长短,音效的长短是通过改变播放一个音阶的时间长短来实现的。 3)包络的选择模块 制作一个button group的组控件分别选择不同的控件实现不同的包络,在模块一的基础上,设置选中不同的控件分别对应不同的包络,x为不同包络(如正弦波、三角波、指数等)的表达形式,将x与模块一中实现单音键盘发音的函数相乘时便可实现不同形式的衰减,实现音型的改变。 4)实现键盘代替鼠标输入模块 根据计算机键盘上的不同按键对应不同的ASCII码的值,利用函数get()获取当前所按下的数字键对应的ASCII码的值,根据 ASCII码的值判断对应是按下键盘的值。并执行相应音阶的功能键。 5)双音多频模块 通过设置一个radio button 来实现双音多频的功能,设置一个全局变量,当选中该控件时,全局变量的值改变,即在带参的子函数中增加它的频率分量。就可以实现双音多频功能。 6)演奏音乐模块 通过设置一个push button键来实现,按下该键时,可以选择事先自己编好的txt的文档,通过这个文档就可以播放音乐。 7)播放歌曲,视频模块 根据matlab提供的函数,视频时首先对文件的名字和路径进行提起,直接对文件的播放。音乐的则是首先对文件的名字和路径进行提起,得到名字和路径后就对该文件进行采样,使其离散化。最后实现对文件的播放。 8)多键盘输入对输入后统一播放模块 该功能实现先对键盘输入容进行存储,当输入完成后就可以按播放键对刚才学号:110900735 姓名:谢冬云 4 的存储容进行播放,本功能通过radio button键实现的键盘输入的存储,当该建被选中时,则会不断的扫描键盘是否有键盘按下,并对按下键进行存储,直到该键没有被选中为止,同时设置一个push button键对存储的信息进行播放,播放完成后自动清除存储的容,以便下一次存储。 9)画图模块 该模块的功能是根据播放每一个音符的数组画出每一个音符的波形,使我们对播放的音型可以一目了然,便于观察与分析。
四、具体设计
4.1单音键盘发音模块 (1)GUI界面的设计 根据要求,首先利用push button键作为单音键盘的发音键。1~7七个音阶对应高中低三种不同的音调共21个键,还有15个辅音,共36个按键。如图所示,白色的按键代表音调键,前7个是低音的七个音阶,中间7个是中音的七个音阶,后面7个是高音的七个音阶,黑色的代表辅音。
(2)程序设计 查阅相关资料可知,发音频率对应的表达式为f=440*2^((s-49)/12),当所发音为低音时s的取值为31~37,发中音时s的取值为40~46,发高音时s的取值为49~55。为了程序设计简化目的,设计一个名为gangqin(s)的子函数,程序如下: function gangqin(s) % 演奏音符 global r; global n; global ff; global T; global p; f=440*2^((s-49)/12); %各音阶的频率 n=0:1/8000:T; %各音阶的长短 if p==1 %选用包络 x=exp(-3*n); elseif p==2 x=exp(-3*n).*sawtooth(2*pi*50*n); elseif p==3 学号:110900735 姓名:谢冬云 5 x=exp(-3*n).*sin(2*pi*n); end if r==1 %选用单频还是多频 ff=x.*sin(f*2*pi*n)+0.2*x.*sin(f*4*pi*n)+0.05*x.*sin(f*8*pi*n); else ff=x.*sin(f*2*pi*n); end axes1_CreateFcn(); %画图 soundsc(ff); %播放音符 有以上带参的子函数后则每个键盘下面的程序非常简单,然后在每个push button
键的callback函数中调用该子函数即可,如qangqin(45);
4.2 音效长短的选择模块 (1)GUI界面的设计 制作一个button group的组控件分别选择不同的控件实现不同的音效长短,该组控件包括三个radio button分别对应不同的音效长短(长,中,短)。界面如下图所示:
(2)程序设计 音效长短的改变实质上是改变其音阶播放时间的长短,定义一个全局变量T通过改变T的值来改变音效的长度,gangqin的子函数如上面所示,该组控件的程序如下面所示: global T; g=get(handles.yinxiao,'selectedobject'); %获得音效的选中对象 gt=get(g,'tag'); %把对象赋给gt switch gt %确认选中的对象 case 'duanyin' T=0.3; case 'zhongyin' T=1; case 'changyin' T=2; end
4.3包络的选择模块 (1)GUI界面的设计