MATLAB是科学计算软件,同时也提供了图形、声音等多媒体展示特性和人机交互特性。利用这些特性,很容易完成复杂的任务,例如写一个钢琴APP,将电脑的键盘当成钢琴的琴键,发出悦耳的声音。

实现以上功能的核心代码和语法知识包括:

脚本和函数的概念

全局变量

switch流程

sound函数

figure的属性和回调函数

这些都可以在MATLAB基本语法的帮助文档(中文)中找到详细说明:

将代码打包成App需要用到MATLABCompiler:

首先,要知道MATLAB中“发声”的方法,最简单的是sound函数。这里将声音的采样频率设为和一般mp3文件一样的44100Hz,将一个音符的时间设定为0.4s,以音阶do的频率261.63Hz为例,发出一段声音。声音的包络线,其目的在于模拟一个音符渐响和渐轻的过程。

Fs=44100;%mp3标准采样品频率

T=0:Fs^-1:4e-1;%假定每个声音持续0.4s

A=sin(2*pi/8e-1*T);%声音振幅包络

a=A.*sin(2*pi*261.63*T);%do的时域波形

sound(a,Fs)

也可以用plot(T,a)观察波形。

对于其他音阶,设定不同的频率,于是就可以获得一系列的音符,他们随时可以放进sound中进行发声。

a=A.*sin(2*pi*261.63*T);

s=A.*sin(2*pi*293.66*T);

d=A.*sin(2*pi*329.63*T);

其次,要知道MATLAB中怎么用键盘实时控制,这样才是一个真正的钢琴App。较为简单的方法是利用figure的KeyPressFcn属性。建立一个图形,在选中图形的情况下,只要键盘被按下,就会执行一个函数(通常称为回调函数),在这个函数中通过sound发声。

fig=figure('KeyPressFcn','sound(a,Fs)');

再次,要在回调函数中判断刚才按下的是哪个键,并决定让sound发出哪个声音。这是一个典型的switch流程。而switch的判断依据则是figure的'CurrentChar'属性,可以通过get函数来获得。

args=get(fig,'CurrentChar');

switchargs

case'a'

sound(a,Fs)

case's'

sound(s,Fs)

此时,显然回调函数不会那么简单,需要单独封装并命名,例如叫mysound。而为了使刚才定义的Fs等变量可以在mysound中使用,需要声明他们为全局变量,即:

functionmysound

globalFszxc……

最后,进行适当的美化,通过rectangle函数画出矩形琴键,通过text函数标注音阶和键盘的对应。同时,在回调函数中,根据不同的键盘输入,对矩形进行一定的显示变化,通过pause函数控制这种变化的持续时间,就很像一个钢琴App了。

附件使用方法:在MATLAB工作路径中,放置mymusic脚本和mysound函数两个文件,在CommandWindow中运行mymusic,按键盘发声。

当然,也可以继续在CommandWindow中运行。

sound([aagghhgzeros(size(a))ffddssa],Fs)

来听一小段音乐,enjoy~

App如何脱离MATLAB运行?这里需要用到MATLABCompiler,仅需点击几次鼠标即可:

点击:APPS->ApplicationCompiler

点击:Addmainfile,选择mymusic

点击:Filesrequiredforyourapplicationtorun,选择mysound

这两步的目的是告诉MATLAB需要打包的脚本和这个脚本调用的函数。

点击:package,一路确定即可。

软件打包完成后,可以关闭MATLAB。在弹出的for_testing目录下找到mymusic的exe文件,双击即可执行。

这样就完成了一个钢琴App,可以分享给其他小伙伴。

钢琴的音色特点用matlab描述6,关于用MATLAB 实现简易钢琴 App的教程分享相关推荐

  1. 钢琴的音色特点用matlab描述6,如何使用matlab模拟钢琴音色?

    有网友说想用MATLAB模拟钢琴音,于是我尝试写了一段,供大家参考.复制代码可直接运行. function Dian_Zi_Qin() clc;clear; P=[1 2 3 4 5 6 7 8 9 ...

  2. Matlab软件有哪些版本,matlab软件功能简要介绍及版本描述

    <matlab软件功能简要介绍及版本描述>由会员分享,可在线阅读,更多相关<matlab软件功能简要介绍及版本描述(2页珍藏版)>请在人人文库网上搜索. 1.MATLAB功能简 ...

  3. 数学模型用matlab表示,数学模型的MATLAB描述.ppt

    <数学模型的MATLAB描述.ppt>由会员分享,可在线阅读,更多相关<数学模型的MATLAB描述.ppt(45页珍藏版)>请在人人文库网上搜索. 1.MATLAB语言与控制系 ...

  4. matlab复指数函数实部,信号处理实验一:用matlab描述基本信号Word版

    <信号处理实验一:用matlab描述基本信号Word版>由会员分享,可在线阅读,更多相关<信号处理实验一:用matlab描述基本信号Word版(12页珍藏版)>请在人人文库网上 ...

  5. 机器学习基础知识之概率论的Matlab描述概率的图像(一)

    机器学习基础知识之概率论的Matlab描述概率的图像(一) (由于有很多的分布,而且还有一维分布以及多维分布,因此,我们一篇博文写下来的话内容量太大,文章太长,因此,我们分三次写完所有的基本的一维以及 ...

  6. 怎样才能让计算机发出钢琴的按键声,这篇文章教你如何弹出钢琴好音色

    原标题:这篇文章教你如何弹出钢琴好音色 怎样演奏好钢琴的音色 导读:在教学中往往容易陷于就事论事地去应付面临的各种视谱.节奏.速度.熟练.背谱等问题的解决之中,而无暇去顾及声音的质量,这恰恰是误区之所 ...

  7. ofdm信号调制matlab,OFDM信号 [matlab描述]

    2016.03.31 – 个人理解笔记.(无通信基础,所以有的表达可能会直白或片面.可忽略映射之类的词汇,直接见词语所描述的现象/过程/机制) 03.31 OFDM的基本原理是将高速率子载波上数据流划 ...

  8. 罗曼 matlab,成年人简易钢琴教程100首

    成年人简易钢琴教程100首 教程列表: 1.铃儿响叮当-环球钢琴网 2.温柔的爱-环球钢琴网 3.揽工调-环球钢琴网 4.欢乐颂-环球钢琴网 5.小进行曲-环球钢琴网 6.落水天-环球钢琴网 7.会哥 ...

  9. 用matlab描述库仑定律,利用Matlab模拟点电荷的电场分布 点电荷

    点电荷 实验一 利用Matlab模拟点电荷的电场分布 一.实验目的: 1.熟悉点电荷的电场分布情况: 2.学会使用Matlab绘图 二.实验原理 MATLAB输入命令的方式有两种,一种就是在命令窗口中 ...

  10. matlab 自定义对象,面向对象:MATLAB的自定义类 [MATLAB]

    这几天刚刚开始学习MATLAB的面向对象编程.以前做的事情都是用MATLAB写一些简单的脚本或者函数,这方面MATLAB成熟的函数和直截了当的矩阵运算方法和语法都很容易上手,方便人专注于算法本身.前几 ...

最新文章

  1. 使用ExpandableListView以及如何优化view的显示减少内存占用
  2. 关于nil和 null和NSNull的相关问题
  3. Python机器学习笔记:XgBoost算法(亲测)
  4. 程序配置amp;amp;ConfigurationManager
  5. 编写高质量代码-OC 第7章 设计模式与Cocoa编程
  6. html中怎么定义搜索框?html中search类型?
  7. Centos/Red Hat6.8 安装、配置、启动Gitlab (外网环境)
  8. linux停止rpc服务,linux下安装启动rpc服务
  9. python线程卡死问题解决
  10. 2016计算机二级考试c语言真题及答案,计算机二级考试c语言真题_2017计算机二级考试C语言复习题及答案...
  11. 信号与系统(3.1)- RLC 串联电路的零输入响应
  12. python 爬虫 | selenium换页问题
  13. 英特尔处理器后缀字母的意思
  14. jQuery菜鸟教程03
  15. kdb+q一个入库和删除的小demo
  16. 335x系列平台-ADC接口配置和最大采样速率
  17. Druid基本概念及架构介绍
  18. 阿里面试之Hr面,这个套路把我坑惨了......
  19. win7 oracle32位客户端安装找不到orandce11.dll.dbl
  20. 过日子·混日子·奔日子

热门文章

  1. css3 3d 太阳系,css3太阳系9大行星介绍页面动画
  2. ElasticSearch搜索引擎原理,都给你整理好了
  3. win10升级助手_不想使用一键重装软件?微软win10升级助手来了
  4. 传统计算机硬盘和固态硬盘有哪些区别,工业级固态硬盘与传统硬盘有什么区别...
  5. MATLAB中怎么表示对数函数及e
  6. 狂神ajax,Ajax---狂神说
  7. pip3 install -U qcloud-python-sts 安装失败解决方法
  8. 谷歌、百度你更看好哪一个?
  9. 中国黑科技惊艳MWC2018 柔性显示引领“泛在屏”时代
  10. 交流电机,如何用低成本的方案测试电机堵转?