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

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

3天内不再提示

怎样翻译在Arduino上播放的歌曲

454398 来源:网络整理 作者:网络整理 2019-12-09 16:18 次阅读

步骤1:MXL文件

怎样翻译在Arduino上播放的歌曲

我发现的MXL文件最佳来源是musescore.com,大量的收藏用户提交了乐谱增强音乐。 MXL文件是压缩的xml文件,其中包含语音,乐器,音符和持续时间定义。我下载了Riley Apperson的这个版本的Stranger Things主题曲。

可以下载许多音乐格式,但是MXL包含转换为Arduino可以播放的音乐所需的信息

上面的图片2显示了以PK开头的内容,这是文件被PK Zip压缩后的立即泄漏。

图片3是未压缩的相同文件,包含标准XML格式。

步骤2:MXL文件数据

在数据中有几件事情要看。请记住,我们必须使音符和整体歌曲保持简单,因为没有比Arduino更强大的功能或其他一些技巧,我们一次只能演奏一个音符。

音符步骤-E

音符八度音阶-3

持续时间-1ms ish

声音-语音将在彼此之上分层叠加。您可能需要找到歌曲的简单版本,或者挑选出想要的每种声音的哪个部分。

我获取了此信息,使用C#进行了解析并将其放入arduino代码中

步骤3:Arduino代码

从MXL文件中解析数据之后,我将其放入arduino代码中。必须播放持续时间才能使歌曲以您的感觉呈现出来。您可以找到我在GitHub上编写的Arduino代码。

int notes [] = {NOTE_C3,NOTE_E3,NOTE_G3,NOTE_B3,NOTE_C4

int持续时间[] = {750、750, 750、750、750

现在看来,我看到多维数组会更有效。音符和持续时间相对应,因此,如果有5个音符,则应该有5个持续时间。

每个音符都定义为一个音调

#define NOTE_B0 31

#define NOTE_C1 33

#define NOTE_CS1 35

#define NOTE_D1 37

然后循环遍历数组中的每个音符,然后使用上面显示的音符定义进行播放。

tone(8,notes [thisNote],noteDuration);

请注意,Arduino Uno有文件大小限制,因此必须缩短注释量以达到该限制。我编写的应用程序有一个音符限制器,可以更改它以满足您的需求。

步骤4:C#

我编写了一个用C#编写的小型应用程序以解压缩MXL,解析出音乐数据,然后将arduino格式输出到文本区域。该应用程序的源代码位于GitHub上。

请注意,Arduino Uno有文件大小限制,因此必须缩短注释量才能达到该限制。我编写的应用程序具有一个音符限制器,可以对其进行更改以满足您的需求。

第5步:Arduino接线

这非常简单。我只是使用了对讲机中的压电体,然后将“正极”(红色)连接到引脚8,将“负极”(黑色)连接到地面。

步骤6:音频预览

这是arduino产生的音频的预览。

步骤7:文件

所有需要的文件都在GitHub上https://github .com/MrRedBeard/DotNet-MXL-Parsing-for-Arduino

只需在此处下载MXL Parser。

Arduino代码在一个文件中,但需要在第50行上分为2。audio.ino和pitches.h。也可以从GitHub上获取该代码。

Rangerley Apperson在musescore.com上提供的Stranger Things主题曲MXL示例文件

步骤8:应用程序的未来

首先,我要说的是我不介意帮助他人进行他们的项目,但是就应用程序而言,除非有其他项目出现,否则我不打算对它做太多其他事情。话虽如此,如果其他人想贡献和/或与之合作,我将很乐意加入并竭尽所能。

如果您想做出贡献,请访问GitHub https://github.com/MrRedBeard/DotNet-MXL-Parsing-for-Arduino并开始使用。向我发送消息或只是开始将代码发布到新分支,其中包含您所做的更改的详细信息。

责任编辑:wv

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

    关注

    188

    文章

    6468

    浏览量

    186937
收藏 人收藏

    评论

    相关推荐

    HAL库Arduino平台上的使用

    HAL库Arduino平台上的使用 Arduino平台是一个开源的电子原型平台,它包括硬件(基于微控制器的电路板)和软件(Arduino IDE)。
    的头像 发表于 12-02 14:04 238次阅读

    HarmonyOS NEXT应用元服务开发Intents Kit(意图框架服务)本地搜索方案概述

    用户感兴趣的歌曲,那么后续用户小艺搜索入口中搜索歌名时,系统将会在应用/元服务共享的数据中检索对应内容,并使用卡片的形式展示内容结果,当用户点击对应卡片热区时,可以跳转进具体音乐播放页或者直接后台执行
    发表于 11-06 10:59

    TPA6130A2的寄存器配置正常,也可以正常播放歌曲,但是负压只有-2.7左右,为什么?

    TPA6130A2的寄存器配置正常,也可以正常播放歌曲,但是负压只有-2.7左右,这是哪里有问题???
    发表于 10-31 08:25

    TAS5731M播放特定歌曲会立马打嗝,怎么解决?

    我的板子TAS5731M 播放特定歌曲会立马打嗝(应该是输出保护了),断电重启后还是在打嗝,必须得重新换一片,现在都烧了10来片了,还没解决。请大家帮帮忙啊!!!!
    发表于 10-30 08:32

    TPA3116的输入端,可以播放音质很差,关闭电源再次电就怎么都没法播放了,怎么解决?

    按照数据手册画了个电路,焊接好后第一次电,通过耳机线从手机里输出信号到TPA3116的输入端,可以播放,但音质很差。关闭电源再次电就怎么都没法播放了,FAULTZ脚电平一直
    发表于 10-30 06:15

    AM335x接TLV320AIC3104然后接外置扬声器,播放歌曲时没有声音输出是怎么回事?

    AM335x接TLV320AIC3104 然后接外置扬声器。 原理图如上图。目前驱动加载了,播放歌曲时没有声音输出。但是可以再扬声器接口处监测到方波。谁调试过希望给些建议
    发表于 10-29 07:17

    怎样Arduino测试锂电池容量

    本文详细介绍了如何用Arduino测量锂电池的容量。并附有电路图和Arduino的程序代码。
    的头像 发表于 07-30 09:14 843次阅读
    <b class='flag-5'>怎样</b>用<b class='flag-5'>Arduino</b>测试锂电池容量

    ESP32使用Arduino启用蓝牙后编译固件过大,怎样缩减大小呢?

    ESP32使用Arduino启用蓝牙后编译固件过大,怎样缩减大小,日志级别已经最低了,分区不能动,已经是1.9M的OTA分区配置了,怎样还能缩减大小,蓝牙功能能否裁剪
    发表于 06-28 11:27

    用esp-adf进行网络歌曲播放,如何切换网络音乐?

    最近用esp-adf进行网络歌曲播放,用户需要在当前歌曲没有播放时,切换另一个url地址的歌曲。官方给出的例子总并没有给去相关的例子。
    发表于 06-28 11:02

    Arduino怎样配置LVGL8.1.0访问spiffs里面的字库或图片?

    抱歉把Arduino的内容发在这个版块了. Arduino的示例中LITTLEFS_test.ino SPIFFS_Test.ino FFat_Test.ino已经测试成功, 并且使用ESP32
    发表于 06-19 06:15

    使用idf.py命令方式编译,怎样才能编译arduino的库,并且项目中可调用?

    在编译过程中,提示找不到对应的头文件。 请问使用idf.py命令方式编译,怎样才能编译arduino的库,并且项目中可调用。
    发表于 06-13 06:56

    求助,esp-idf中使用arduino作为组件后怎样使用arduino的库?

    esp-idf中使用arduino作为组件后怎样使用arduino的库,例如我此时需要使用arduino的第三方库blinker,
    发表于 06-12 07:21

    [技术干货] SunoV3 秒生爆款歌曲!如何快速下载

    ,帮助您把创作的音乐下载到本地。 开始使用 步骤 1 浏览器访问 Suno 生成的音乐官网,即可免费创作多种风格流派歌曲,还能唱出来。 步骤 2  Suno 主页中的 Explore,有一个 AI
    的头像 发表于 04-07 15:08 864次阅读
    [技术干货] SunoV3 秒生爆款<b class='flag-5'>歌曲</b>!如何快速下载

    arduino如何停止loop循环

    Arduino的loop循环是其主要的程序执行部分,该循环将在Arduino开发板持续运行,并且只有程序被重新上传或开发板断电重启时才会停止。然而,
    的头像 发表于 02-14 16:24 4492次阅读

    2023年Arduino开放原码报告:持续茁壮的Arduino生态系!

    所谓出钱就是买一片Arduino开发板或是付费订阅Arduino Cloud云端服务,或单纯资金赞助;出力就是撰写Arduino相关的程序并无私的分享程序代码或回报错误或投入翻译等,笔
    的头像 发表于 01-25 16:45 1419次阅读
    2023年<b class='flag-5'>Arduino</b>开放原码报告:持续茁壮的<b class='flag-5'>Arduino</b>生态系!