目录

  • 蜂鸣器简介
  • MIDI音乐制作原理
  • 《小星星》制作代码展示

引言:在单片机开发中我们经常会用到蜂鸣器实现一些简单提示的功能,但如何利用单片机制作一些更有趣的事情呢,今天我们将利用蜂鸣器来制作一首好听的MIDI音乐。很多人可能会觉得没必要,用手机我们就就可以想听什么歌就听什么歌了,但其实对于我们单片机开发者来说自己动手写一个程序蜂鸣器按照我们给的频率响起来,会让我们的开发过程变的更加有趣,也使得我们拥有更加浓厚的兴趣学下去。

一蜂鸣器简介
有源蜂鸣器和无源蜂鸣器的区别:

这里我们使用的是无源蜂鸣器,通过单片机予相应的频率使它发出相应的声音。

硬件设计图:

当我们PB5输出低电平使三极管导通,蜂鸣器就可以工作了,但由于我们使用的是无源蜂鸣器单纯的通电并不能使蜂鸣器发出鸣响,要使无源蜂鸣器鸣响需要我们PB5端口不断输出高低变化的脉冲信号,当信号频率不同时发出的声音就不同,根据这个原理,只要我们根据音乐乐谱让单片机PB5端口连续输出不同频率的信号蜂鸣器的鸣响就可以组成一支音乐啦。


如图单片机输出的信号是这样的一个高低电平信号,频率周期的数量就是蜂鸣器鸣响的时长,而改变每个频率周期中高低电平的比例就可以改变无源蜂鸣器发出的声音。

根据C字符对照表我们可以得到每个音调对应的频率。
二、《小星星》MIDI音乐制作过程

这是《小星星》的乐谱信息,根据上面的音调频率对照表,我们就可以把乐谱信息转化为频率信息。
相关乐谱信息:
乐谱图中重点看每个拍的时间信息
J=100表示每分钟有103拍,即60s=100拍,所以一拍的时间约为600ms
根据他是多少拍就可以算出蜂鸣器一个音调鸣响的时间

在我们的程序中我们把音乐的每个音调的频率信息和发声时间长度为一组放入 music1[ ]数组中其中奇数为音调频率信息偶数为发声时间长度,其中每个音调的发声时间长度可以根据乐谱看他是多少拍,根据一拍为多长时间可以计算出每个音调的时间。如在这首歌中每个音调都是一拍而这里一拍为600ms所以这里我们
每个音调发声时间都为600ms,关于乐谱的更多信息可以到网上查找。

> `这里是引用`
uc16 music1[64]={ //音乐1的数据表(奇数是对应音调频率,偶数是发声时间长度
523,600,
523,600,
784,600,
784,600,
880,600,
880,600,
784,600,
0,1200,
698,600,
698,600,
659,600,
659,600,
587,600,
587,600,
523,600,
0,1200,
784,600,
784,600,
698,600,
698,600,
659,600,
659,600,
587,600,
0,1200,
784,600,
784,600,
698,600,
698,600,
659,600,
659,600,
587,600,
0,1200
};
>
``>  void MIDI_PLAY(void){ //MIDI音乐
>    u16 i,e;
>  for(i=0;i<32;i++){ //这里因为这首歌有32个音调所以这里循环32次
>        for(e=0;e<music1[i*2]*music1[i*2+1]/1000;e++){>            GPIO_WriteBit(BUZZERPORT,BUZZER,(BitAction)(0)); //蜂鸣器接口输出0
>            delay_us(500000/music1[i*2]); //延时
> >           GPIO_WriteBit(BUZZERP ORT,BUZZER,(BitAction)(1)); //蜂鸣器接口输出高电平1
> >       delay_us(500000/music1[i*2]); //延时
>        }
>    }
>  }

如何利用蜂鸣器制作MIDI音乐相关推荐

  1. 《电脑音乐制作实战指南:伴奏、录歌、MTV全攻略》——1.5 输入音符,自己制作MIDI音乐伴奏...

    本节书摘来自异步社区<电脑音乐制作实战指南:伴奏.录歌.MTV全攻略>一书中的第1章,第1.5节,作者 健逗,更多章节内容可以访问云栖社区"异步社区"公众号查看. 1. ...

  2. 利用PyQt5制作本地音乐播放器

    介绍 本文是对之前的音乐播放器的一些改进和功能实现.只写了有变化的部分,具体部分请看上一篇博客. [利用PyQt5和QSS制作本地音乐播放器(初稿)](https://blog.csdn.net/we ...

  3. 单片机利用蜂鸣器如何输出音乐

    采用音乐音谱节拍的方式 举个栗子,单片机通过蜂鸣器来播放生日快乐歌. #include "reg51.h" #define uchar unsigned char #define ...

  4. linux系统的midi制作软件,在ubuntu系统下制作midi音乐

    ubuntu系统对midi的支持不太好,不像windows下有很多支持的软件. 安装音乐字体(soundfont,中文名难听,还是叫音源好啦.) 执行以下命令: sudo apt-get instal ...

  5. Python“制作”midi音乐“两只老虎”

    从网上找了很多谱子,可惜没有音乐细胞看不太懂,根据自己的理解改了好几遍,还是听不出来"两只老虎"的感觉,于是在标题上加了双引号.这样的话就只能了解本文思路了,算是抛砖引玉吧,重点是 ...

  6. html音乐跳动的线,利用CSS3制作跳动音乐频谱跳动效果

    [摘要] CSS3新增很多实用的属性,特别是可以实现动画效果的animation属性,本文通过使用CSS3来实现一个类似于音乐频谱跳动效果. 在一个网站上看到"直播中"的提示标题, ...

  7. 电子琴节奏包制作_制作MIDI电子音乐离不开的三件“法宝”

    现在越来越多的年轻人开始对MIDI制作感兴趣,特别是随着电脑的高速发展,原来离普通人很遥远的专业设备可以用软件代替,这无疑是音乐爱好者的福音,体验一下自己当音乐制作人的乐趣吧! 那么什么是MIDI呢? ...

  8. 电子琴节奏包制作_制作MIDI电子音乐需要准备些什么?

    现在越来越多的年轻人开始对MIDI制作感兴趣,特别是随着电脑的高速发展,原来离普通人很遥远的专业设备可以用软件代替,这无疑是音乐爱好者的福音,体验一下自己当音乐制作人的乐趣吧! 那么什么是MIDI呢? ...

  9. 《电脑音乐制作实战指南:伴奏、录歌、MTV全攻略》——1.4 用电子琴软件弹奏MIDI音乐伴奏...

    本节书摘来自异步社区<电脑音乐制作实战指南:伴奏.录歌.MTV全攻略>一书中的第1章,第1.4节,作者 健逗,更多章节内容可以访问云栖社区"异步社区"公众号查看. 1. ...

最新文章

  1. List 为什么可以实例化ArrayList
  2. 关于征集2020重大科学问题和工程技术难题的通知
  3. Intellij idea的Dependencies波浪线
  4. 简述数学建模的过程_数学建模的基本步骤
  5. Behave用户自定义数据类型
  6. adb错误 - INSTALL_FAILED_NO_MATCHING_ABIS
  7. Mysql datadir change on ubuntu
  8. androidstudio 3 Android Device Monitor
  9. linux下输入法安装设置及中文字体安装
  10. AD命令获取计算机、用户相关信息
  11. 剖析Linux内核源码分析《入门技术栈》
  12. 流程图绘图工具 Gliffy 使用简介
  13. Linux操作系统知识点总结
  14. Unirech:阿里云国际版免备案虚拟主机的优点与缺点
  15. Excise_Oop_abstract Interface
  16. QQ拼音Vista平台试用:行云流水 完美兼容
  17. 【b站求职笔记】行路院-王贺 2021年2月笔记
  18. 【教程】谷歌浏览器移到其他盘之后,本地网页代码无法用谷歌浏览器打开的解决办法
  19. Java在线教育项目 第一天项目介绍和工程搭建
  20. 计算机视觉论文-2021-03-18

热门文章

  1. MySQL查看表结构及查看建表语句
  2. IESM项目实训四——Web Audio录音和字符串转拼音
  3. 在matlab中,利用for循环来生成一个矩阵,并分别对该矩阵的行和列进行求和
  4. 排列组合c几几怎么用计算机算,排列组合A几几C几几的,有什么区别,都怎么计算来的?...
  5. word 更新全局域
  6. 【C语言关键知识点1】C语言的预处理、编译和链接过程
  7. JNDI注入之略微学学
  8. 如何防止form表单重复提交
  9. 风投 红杉资本 Sequoia Capital
  10. 升降式止回阀行业调研报告 - 市场现状分析与发展前景预测