昨天无聊发的帖子,没想到深受各位老哥喜欢,很多老哥私信我要代码,在这里重开个帖子讲下原理。

人的耳朵能听到的声音的频率范围大概是20-20000hz。所以对应的就有一个十二平均律表。

那么MATLAB只要把音调和节拍做成一个函数,然后调用就行。

根据菊花台的简谱编写对应的代码就行。

编写音调节拍的函数的m文件的代码如下:

function y = gen_wave(tone,rythm)%音高,节拍Fs = 8192;%采样率freqs = [523,587,659,698,783,880,988,1046,1174,1318,1396,1567,1760,1975,261,293,329,349,391,440,493];%音高 C调的do re mi fa so la xi,以及升调,降调x = linspace(0,2 * pi * rythm,floor(Fs * rythm));y = sin(freqs(tone) * x) .* (1 - x/(rythm * 2 * pi));end

编写菊花台的代码如下:(用mlx实时文件或者m文件都行,我是用的mlx文件编写)

Fs = 8192;xx = linspace(0,2*pi,Fs);yy = sin(xx);%你的泪光柔弱中带伤y1 = gen_wave(3,1);y2 = gen_wave(3,0.5);y3 = gen_wave(2,0.5);y4 = gen_wave(3,1);y5 = gen_wave(3,0.5);y6 = gen_wave(5,0.5);y7 = gen_wave(3,0.5);y8 = gen_wave(2,0.5);y9 = gen_wave(3,2);y = [y1,y2,y3,y4,yy,y5,y6,y7,y8,y9];%惨白的月弯弯勾住过往y1 = gen_wave(1,1);y2 = gen_wave(1,0.5);y3 = gen_wave(2,0.5);y4 = gen_wave(3,0.5);y5 = gen_wave(5,0.5);y6 = gen_wave(3,1);y7 = gen_wave(2,1);y8 = gen_wave(2,0.5);y9 = gen_wave(1,0.5);y10 = gen_wave(2,2);y = [y,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10];%夜太漫长y1 = gen_wave(3,1.5);y2 = gen_wave(5,0.25);y3 = gen_wave(3,0.25);y4 = gen_wave(6,0.5);y5 = gen_wave(5,1.5);y = [y,y1,y2,y3,y4,y5];%凝结成了霜y1 = gen_wave(6,0.5);y2 = gen_wave(5,0.5);y3 = gen_wave(5,0.5);y4 = gen_wave(3,0.5);y5 = gen_wave(5,1.5);y = [y,y1,y2,y3,y4,y5];%是谁在阁楼上冰冷地绝望y1 = gen_wave(5,0.5);y2 = gen_wave(3,1);y3 = gen_wave(2,0.5);y4 = gen_wave(2,0.5);y5 = gen_wave(5,1);y6 = gen_wave(3,0.5);y7 = gen_wave(2,0.5);y8 = gen_wave(2,1);y9 = gen_wave(2,0.5);y10 = gen_wave(1,0.5);y11 = gen_wave(2,2);y = [y,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11];%雨轻轻弹朱红色的窗y1 = gen_wave(3,1);y2 = gen_wave(3,0.5);y3 = gen_wave(2,0.5);y4 = gen_wave(3,2);y5 = gen_wave(3,0.5);y6 = gen_wave(5,0.5);y7 = gen_wave(3,0.5);y8 = gen_wave(2,0.5);y9 = gen_wave(3,2);y = [y,y1,y2,y3,y4,y5,y6,y7,y8,y9];%我一生在纸上被风吹乱y1 = gen_wave(1,1);y2 = gen_wave(1,0.5);y3 = gen_wave(2,0.5);y4 = gen_wave(3,0.5);y5 = gen_wave(5,0.5);y6 = gen_wave(3,1);y7 = gen_wave(2,1);y8 = gen_wave(2,0.5);y9 = gen_wave(1,0.5);y10 = gen_wave(2,2);y = [y,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10];%梦在远方化成一缕香y1 = gen_wave(3,1.5);y2 = gen_wave(5,0.25);y3 = gen_wave(3,0.25);y4 = gen_wave(6,0.5);y5 = gen_wave(5,1.5);y6 = gen_wave(6,0.5);y7 = gen_wave(5,0.5);y8 = gen_wave(5,0.5);y9 = gen_wave(3,0.5);y10 = gen_wave(5,2);y = [y,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10];%随风飘散你的模样y1 = gen_wave(3,0.5);y2 = gen_wave(2,0.5);y3 = gen_wave(3,0.5);y4 = gen_wave(5,1);y5 = gen_wave(3,0.5);y6 = gen_wave(2,0.5);y7 = gen_wave(2,0.5);y8 = gen_wave(1,1.5);y = [y,yy*0.5,y1,y2,y3,y4,y5,y6,y7,y8];%菊花残满地伤你的笑容已泛黄y1 = gen_wave(1,0.5);y2 = gen_wave(2,0.5);y3 = gen_wave(3,1);y4 = gen_wave(3,0.5);y5 = gen_wave(5,0.5);y6 = gen_wave(6,1);y7 = gen_wave(6,0.5);y8 = gen_wave(3+7,0.5);y9 = gen_wave(3+7,0.5);y10 = gen_wave(2+7,0.5);y11 = gen_wave(1+7,0.5);y12 = gen_wave(6,0.5);y13 = gen_wave(5,2);y = [y,yy*4,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13];%花落人断肠我心事静静淌y1 = gen_wave(6,0.5);y2 = gen_wave(5,0.5);y3 = gen_wave(3,0.5);y4 = gen_wave(2,0.5);y5 = gen_wave(1,1);y6 = gen_wave(6,0.5);y7 = gen_wave(1,0.5);y8 = gen_wave(2,1);y9 = gen_wave(2,0.5);y10 = gen_wave(1,0.5);y11 = gen_wave(2,2);y = [y,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11];%北风乱夜未央你的影子剪不断y1 = gen_wave(1,0.5);y2 = gen_wave(2,0.5);y3 = gen_wave(3,1);y4 = gen_wave(3,0.5);y5 = gen_wave(5,0.5);y6 = gen_wave(6,1);y7 = gen_wave(6,0.5);y8 = gen_wave(3+7,0.5);y9 = gen_wave(2+7,0.5);y10 = gen_wave(1+7,0.5);y11 = gen_wave(1+7,0.5);y12 = gen_wave(2+7,0.5);y13 = gen_wave(1+7,2);y = [y,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13];%徒留我孤单在湖面成双y1 = gen_wave(5,1);y2 = gen_wave(5,0.5);y3 = gen_wave(3,0.5);y4 = gen_wave(7,0.5);y5 = gen_wave(1+7,0.5);y6 = gen_wave(1,0.5);y7 = gen_wave(2,0.5);y8 = gen_wave(3,2);y9 = gen_wave(2,2);y10 = gen_wave(1,4);y = [y,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10];sound(y,Fs);

具体的原理,可以看b站up主“正月点灯笼”的这个视频怎么用MATLAB生成一段音乐

matlab唱歌原理,Matlab演奏菊花台的源码及原理相关推荐

  1. concurrenthashmap实现原理_Mybatis:PageHelper分页插件源码及原理剖析

    PageHelper是一款好用的开源免费的Mybatis第三方物理分页插件,其实我并不想加上好用两个字,但是为了表扬插件作者开源免费的崇高精神,我毫不犹豫的加上了好用一词作为赞美. 原本以为分页插件, ...

  2. 通信使用matlab三元码实验报告,Matlab仿真DSBSC信号与双极性不归零码通信原理实验报告二实验...

    Matlab仿真DSBSC信号与双极性不归零码通信原理实验报告二实验 Matlab 仿真 DSB-SC 信号与双极性不归零码通信原理实验报告二实验题目:Matlab 仿真 DSB-SC 信号与双极性不 ...

  3. 【Matlab数字识别】数字仪表图像识别【含源码 693期】

    一.代码运行视频(哔哩哔哩) [Matlab数字识别]数字仪表图像识别[含源码 693期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MATLAB ...

  4. 艾默生充电15kw+台达三相PFC源程序 艾默生充电桩15kw模块+台达三相PFC源码,软件源码加原理 图BOM

    艾默生充电15kw+台达三相PFC源程序 艾默生充电桩15kw模块+台达三相PFC源码,软件源码加原理 图BOM 艾默生充电桩15kw模块原版软件源码含核心算法,PFC+DCDC双DSP数字控制,原理 ...

  5. Matlab GUI/APP 浅谈(附计算器源码)

    Matlab GUI/APP 浅谈(附计算器源码) 今天没有什么段子,也没有心灵鸡汤.毒鸡汤啥的,纯粹聊一聊这些年从有关MATLAB GUI/APP开发中悟出的一点道理,顺便把计算器的源代码给大家. ...

  6. 【老生谈算法】matlab实现画交通流密速关系源码——交通流密速

    用matlab画交通流密速关系 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]matlab画交通流密速关系程序源码.doc ...

  7. 【Java 虚拟机原理】JDK 体系结构 | Java 源码运行原理 | Java 虚拟机内存

    文章目录 一.JDK 体系结构 二.Java 源码运行原理 三.Java 虚拟机内存结构 一.JDK 体系结构 JDK 体系结构 : 下图所有的内容都是 JDK 体系中的组成元素 ; Java Lan ...

  8. 唯一插件化Replugin源码及原理深度剖析--插件的安装、加载原理

    上一篇 唯一插件化Replugin源码及原理深度剖析–唯一Hook点原理 在Replugin的初始化过程中,我将他们分成了比较重要3个模块,整体框架的初始化.hook系统ClassLoader.插件的 ...

  9. 云原生服务网格Istio:原理、实践、架构与源码解析

    华为云原生团队600多页的Istio实战精华总结,云原生服务网格Istio:原理.实践.架构与源码解析的电子书. 图书介绍 <云原生服务网格Istio:原理.实践.架构与源码解析>分为原理 ...

  10. jQuery百叶窗效果原理(附3个demo源码)

    jQuery百叶窗效果原理,附3个demo源码 一.前言 二.原理图解 三.在线演示及源码 一.前言 对于轮播图切换,其实可以有更多效果,其中一类型就是百叶窗.本人参考了网上一些特效,做一些练习和实践 ...

最新文章

  1. Android真机运行错误INSTALL_FAILED_MEDIA_UNAVAILABLE
  2. AJAX:Getting Started
  3. java md5 32位加密算法_java 32位md5加密类
  4. 广州创龙TMS320C6748 DSP开发板免费申请试用
  5. zigbee工业应用技术
  6. (操作系统题目题型总结)第五章:设备管理
  7. maven 相关操作
  8. 华为P40 Pro将搭载索尼IMX 700传感器:支持十六像素合一
  9. UVA 11237 - Halloween treats(鸽笼原理)
  10. Java:JDBC(Mysql)
  11. 结对编程-四则运算生成
  12. Win8下用DOSBox编写汇编语言
  13. 如何从零开始准备数学建模竞赛?
  14. java过滤关键字_java过滤敏感词汇
  15. Web前端课程的学习内容有哪些?
  16. NoteExpress自定义题录表头显示字段
  17. MAC右键菜单踩坑——右键在当前目录打开终端
  18. python英语词汇读音_Python 将英语单词列表,转换为听写使用的MP3格式(每个单词朗读两遍)...
  19. CPU温度过高有什么影响
  20. 想要学习wxPython的看这里,wxPython模块超详细汇总(供自己学习用)

热门文章

  1. Windows Server 2016 实现跨域、跨林之间的访问
  2. 苹果safari浏览器video视频无法播放
  3. selenium操作360极速浏览器的方法
  4. 网站都变成灰色,其实几行代码就搞定了!
  5. 测试计划一般包括哪些方面?
  6. clickhouse 新增列_# 记录一次clickhouse表新增字段遇到的问题
  7. 各宽带接入服务商简称整理
  8. html知识点整理(全)
  9. Windows 10系统【之】内置应用
  10. cygwin解压linux软件,如何在Cygwin上安装unzip | 望天博客