0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于用MATLAB 实现简易钢琴 App的教程分享

MATLAB 来源:djl 2019-09-11 15:22 次阅读

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

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

脚本和函数的概念

全局变量

switch流程

sound函数

figure的属性和回调函数

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

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

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

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) 观察波形。

关于用MATLAB 实现简易钢琴 App的教程分享

对于其他音阶,设定不同的频率,于是就可以获得一系列的音符,他们随时可以放进 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');

switch args

case'a'

sound(a,Fs)

case's'

sound(s,Fs)

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

function mysound

global Fs z x c ……

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

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

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

sound([a a g g h h g zeros(size(a)) f f d d s sa],Fs)

来听一小段音乐,enjoy~

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

点击:APPS -> Application Compiler

关于用MATLAB 实现简易钢琴 App的教程分享

点击:Add main file,选择 mymusic

点击:Files required for your application to run,选择 mysound

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

关于用MATLAB 实现简易钢琴 App的教程分享

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

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

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 人机交互
    +关注

    关注

    12

    文章

    1128

    浏览量

    54758
  • 变量
    +关注

    关注

    0

    文章

    595

    浏览量

    28111
收藏 人收藏

    评论

    相关推荐

    如何在Matlab实现不同窗低通滤波器的设计?

    Matlab中使用汉明窗设计低通滤波器可以通过fir1函数实现。汉明窗通常用于设计滤波器,可以提供更突出的频率特性。
    的头像 发表于 02-27 14:11 485次阅读
    如何在<b class='flag-5'>Matlab</b>中<b class='flag-5'>实现</b>不同窗低通滤波器的设计?

    MATLAB如何实现PID?

    MATLAB是一种非常强大的工具,用于实现和分析PID(比例-积分-微分)控制器。在MATLAB中,您可以使用控制系统工具箱来设计、模拟和调整PID控制系统。以下是一般步骤,演示如何在MATL
    的头像 发表于 11-04 08:00 1109次阅读
    <b class='flag-5'>MATLAB</b>如何<b class='flag-5'>实现</b>PID?

    基于ANSYS的钢琴音板模态分析

    电子发烧友网站提供《基于ANSYS的钢琴音板模态分析.pdf》资料免费下载
    发表于 10-08 14:26 4次下载
    基于ANSYS的<b class='flag-5'>钢琴</b>音板模态分析

    使用MATLAB App Designer制作一个带GUI的加法计算器

    使用MATLAB App Designer可以制作带GUI的程序,下面将通过一个简单的实例展示设计流程。
    的头像 发表于 09-11 15:57 2423次阅读
    使用<b class='flag-5'>MATLAB</b> <b class='flag-5'>App</b> Designer制作一个带GUI的加法计算器

    GD32VF103 IAP跳转到app如何实现

    硬件平台:RV STAR开发板 软件平台:NucleiStudio 最近需要实现GD32VF103的IAP,写了一个简易的bootloader,验证程序跳转功能,目前不知道在哪里设置跳转地?
    发表于 08-11 10:47

    如何抓取app数据包 网络抓包原理及实现

    实现App的网络数据抓包,需要监控App与服务器交互之间的网络节点,监控其中任意一个网络节点(网卡),获取所有经过网卡中的数据,对这些数据按照网络协议进行解析,这就是抓包的基本原理。
    发表于 08-11 09:30 1773次阅读
    如何抓取<b class='flag-5'>app</b>数据包 网络抓包原理及<b class='flag-5'>实现</b>

    Matlab App Designer工具的主要功能

    Matlab App Designer是一种强大的工具,允许用户以交互式方式创建专业和精美的应用程序。下面是对它的一些主要功能的总结。
    的头像 发表于 07-28 14:21 1527次阅读
    ​<b class='flag-5'>Matlab</b> <b class='flag-5'>App</b> Designer工具的主要功能

    MATLAB语言编程方法 MATLAB实现信号通过系统的仿真

      实验目的:  1、 学习MATLAB语言的编程方法及熟悉MATLAB指令;  2、 深刻理解卷积运算,利用离散卷积实现连续卷积运算;  3、 深刻理解信号与系统的关系,学习MATLAB
    发表于 07-18 16:51 0次下载

    关于MATLAB求导实践的总结

    MATLAB是一个功能强大的数值计算软件,提供了多种方法来进行求导操作。在实践中使用MATLAB进行求导可以帮助我们解决各种科学、工程和数学问题。下面是一份关于MATLAB求导实践的总
    的头像 发表于 07-17 12:33 996次阅读

    一个关于MATLAB极限的实验介绍和总结示例

    实验目的:通过使用 MATLAB 计算极限,加深对极限概念的理解,并熟悉 MATLAB 中的符号计算工具箱。
    的头像 发表于 07-17 10:18 641次阅读

    如何让你的手机成为钢琴

    电子发烧友网站提供《如何让你的手机成为钢琴.zip》资料免费下载
    发表于 07-10 11:29 0次下载
    如何让你的手机成为<b class='flag-5'>钢琴</b>

    NanoBeacon APP使用教程

    APP
    橙群微电子
    发布于 :2023年06月19日 10:11:41

    分享一个迷你钢琴电路

    Minano或迷你钢琴实际上会产生类似管风琴的音符,富含谐波,并且听起来非常悦耳。这种乐器可能会很有趣。
    的头像 发表于 06-10 17:10 4164次阅读
    分享一个迷你<b class='flag-5'>钢琴</b>电路

    MIMO-OFDM无线通信技术(Matlab代码实现

    概述 本代码为MIMO-OFDM无线通信技术及MATLAB实现。分为十章,
    发表于 05-30 10:39 21次下载
    MIMO-OFDM无线通信技术(<b class='flag-5'>Matlab</b>代码<b class='flag-5'>实现</b>)

    基于MATLAB App Designer的串口RS485 Modbus上位机

    上学那会儿MATLAB还没有App Designer,记得当时开发了一个基于MATLAB的计算器。最近,由于项目需要一个简单的上位机做监控,结合自身实际,拟定了以下三种方案: 1. PyQt5
    发表于 05-29 16:03 8次下载
    基于<b class='flag-5'>MATLAB</b> <b class='flag-5'>App</b> Designer的串口RS485 Modbus上位机