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
    +关注

    关注

    187

    文章

    6461

    浏览量

    186565
收藏 人收藏

    评论

    相关推荐

    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 685次阅读
    <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 834次阅读
    [技术干货] SunoV3 秒生爆款<b class='flag-5'>歌曲</b>!如何快速下载

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

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

    TooliP - 智能专利文件翻译工具,节省80%翻译时间

    面对专利文件的独特要求,如高度严谨的术语和精准度时,其他普通翻译工具往往显得乏力。TooliP赋予用户简化流程并显著节约时间的机会,平均能节省约80%的翻译时间。
    的头像 发表于 12-20 14:48 942次阅读

    变速的播放过程中对于多出来的和少了的数据是直接丢掉还是做什么处理?

    ,因为原48K的歌曲文件是现在是要按24K取样速度播放,但又为了保持输出给DAC的取样率48K不变,那么算法里输出给DAC的取样数据将会有空位需要插补,请问应该用什么样的数据来填补这些空位才是最合适的呢?用0填补好还是复制相邻
    发表于 11-30 07:40

    怎样codeblocks编写程序

    CodeBlocks编写程序是一项相对简单而又重要的任务。CodeBlocks是一个广泛使用的集成开发环境(IDE),它能够帮助程序员编写、编译和运行他们的代码。本篇文章中,我们将详细介绍
    的头像 发表于 11-26 09:26 1488次阅读