前两天在网上看到了有人用matlab演奏出最炫民族风,用了这么多年matlab还是第一次知道有这种玩法,于是把他的代码研究了一下,自己制作了一首歌曲,在这里分享一下。
首先介绍matlab函数的玩法:
matlab播放音乐是由sound(Y,fs,bits)函数完成的,该函数的3个参数代表输入信号、采样率、比特率。先说采样率fs的设置,人耳能够听到的声音范围是20~20000Hz。根据采样定理fs只需要大于40000即可。此处采样率的设置采用了MP3的标准,即fs=44.1k.再说输入信号Y,Y一般是一个正弦波,如A*sin(2*pi*w*t)。其中A控制着声音的大小,w控制着声音的高低,t的范围控制着声音的长短,所以理论上利用这个公式可以发出任何声音,只是不能控制音色和音质(音色音质很难用参数量化,我问了一下学语音的同学,这个东西跟音频谱重心,音频扩展度和音频谱平坦度有关系,这里不作讨论)。比特率采用默认值即可,该参数省略。
于是用下面的公式就可以播放出标准音la:(座机电话提示音就是la,可以用来调吉他)
fs=44100;
t=0: 1/fs: 0.5;
la = sin(2*pi*440*t); (下文介绍440是怎么来的)
sound(la, fs)
下面介绍一下简单乐理:
看过柯南的同学都知道,音高和频率是指数的关系,它们满足下面的公式,其中p是音高,f是频率

    
标准音la,即钢琴的A4键,定义为p=69。音高每上升一个半音,p加1。
如上图所示,从C4到B4分别对应着do re mi fa sol la xi,它们的p值分别为 60 62 64 65 67 69 71,注意中间有黑键,你也可以根据下表来查询某个音的频率。
Frequency in hertz (semitones above or below middle C)
Octave→
Note↓
0 1 2 3 4 5 6 7 8 9
C 16.352 (−48) 32.703 (−36) 65.406 (−24) 130.81 (−12) 261.63 (0) 523.25 (+12) 1046.5 (+24) 2093.0 (+36) 4186.0 (+48) 8372.0 (+60)
C♯/D♭ 17.324 (−47) 34.648 (−35) 69.296 (−23) 138.59 (−11) 277.18 (+1) 554.37 (+13) 1108.7 (+25) 2217.5 (+37) 4434.9 (+49) 8869.8 (+61)
D 18.354 (−46) 36.708 (−34) 73.416 (−22) 146.83 (−10) 293.66 (+2) 587.33 (+14) 1174.7 (+26) 2349.3 (+38) 4698.6 (+50) 9397.3 (+62)
D♯/E♭ 19.445 (−45) 38.891 (−33) 77.782 (−21) 155.56 (−9) 311.13 (+3) 622.25 (+15) 1244.5 (+27) 2489.0 (+39) 4978.0 (+51) 9956.1 (+63)
E 20.602 (−44) 41.203 (−32) 82.407 (−20) 164.81 (−8) 329.63 (+4) 659.26 (+16) 1318.5 (+28) 2637.0 (+40) 5274.0 (+52) 10548 (+64)
F 21.827 (−43) 43.654 (−31) 87.307 (−19) 174.61 (−7) 349.23 (+5) 698.46 (+17) 1396.9 (+29) 2793.8 (+41) 5587.7 (+53) 11175 (+65)
F♯/G♭ 23.125 (−42) 46.249 (−30) 92.499 (−18) 185.00 (−6) 369.99 (+6) 739.99 (+18) 1480.0 (+30) 2960.0 (+42) 5919.9 (+54) 11840 (+66)
G 24.500 (−41) 48.999 (−29) 97.999 (−17) 196.00 (−5) 392.00 (+7) 783.99 (+19) 1568.0 (+31) 3136.0 (+43) 6271.9 (+55) 12544 (+67)
G♯/A♭ 25.957 (−40) 51.913 (−28) 103.83 (−16) 207.65 (−4) 415.30 (+8) 830.61 (+20) 1661.2 (+32) 3322.4 (+44) 6644.9 (+56) 13290 (+68)
A 27.500 (−39) 55.000 (−27) 110.00 (−15) 220.00 (−3) 440.00 (+9) 880.00 (+21) 1760.0 (+33) 3520.0 (+45) 7040.0 (+57) 14080 (+69)
A♯/B♭ 29.135 (−38) 58.270 (−26) 116.54 (−14) 233.08 (−2) 466.16 (+10) 932.33 (+22) 1864.7 (+34) 3729.3 (+46) 7458.6 (+58) 14917 (+70)
B 30.868 (−37) 61.735 (−25) 123.47 (−13) 246.94 (−1) 493.88 (+11) 987.77 (+23) 1975.5 (+35) 3951.1 (+47) 7902.1 (+59) 15804 (+71)
有了上面的基础,下面就可以用matlab创作歌曲了,这里以李健的传奇作为示例:
clc
clear
fs=44100;
t=0:1/fs:0.5;
e3_2=key(52, 2, fs); %表示2分音符的e3
a3_2=key(57, 2, fs);
c4_2=key(60, 2, fs);
e4_2=key(52, 2, fs);
g3_2=key(55, 2, fs);
d4_2=key(62, 2, fs);
e4_2=key(64, 2, fs);
g4_2=key(67, 2, fs);
e4_4=key(52, 4, fs);
g3_4=key(55, 4, fs);
a3_4=key(57, 4, fs);
b3_4=key(59, 4, fs);
c4_4=key(60, 4, fs);
d4_4=key(62, 4, fs);
e4_4=key(64, 4, fs);
f4_4=key(65, 4, fs);
g4_4=key(67, 4, fs);
a4_4=key(69, 4, fs);
e3_8=key(52, 8, fs);
g3_8=key(55, 8, fs);
a3_8=key(57, 8, fs);
b3_8=key(59, 8, fs);
c4_8=key(60, 8, fs);
d4_8=key(62, 8, fs);
e4_8=key(64, 8, fs);
f4_8=key(65, 8, fs);
g4_8=key(67, 8, fs);
a4_8=key(69, 8, fs);
b4_8=key(71, 8, fs);
part1=[c4_8 c4_8 c4_4 e4_4 d4_4 d4_8 d4_4 c4_4 c4_8];
part2=[d4_4 d4_4 c4_8 a3_8 a3_2];
part3=[b3_8 b3_8 b3_4 c4_8 d4_8 d4_4];
part4=[b3_4 a3_8 g3_4 e3_8 e3_2 e3_2];
part5=[e4_8 d4_8 e4_4 d4_8 d4_8 d4_4 d4_8 c4_8 c4_2    d4_4 a3_4 a3_8 a3_8 d4_8 c4_8 c4_2];
part6=[d4_4 a3_8 g3_4 g3_8 e3_2 e3_2];
part7=[g4_4 g4_8 d4_8 d4_4 e4_4 g4_4 g4_8 d4_8 d4_4 c4_4 a3_2 a3_2]; 
part8=[d4_4 d4_8 a3_8 a3_4 e4_4 d4_4 d4_8 c4_8 c4_4];
part9=[c4_8 c4_8 c4_4 g3_8 c4_8 c4_4 g4_4 f4_4 e4_4 d4_4 d4_8 c4_8 c4_2 c4_4];
part10=[c4_8 e4_8 g4_8 a4_4 g4_8 a4_4 g4_4 g4_8 a4_4];
 
para1=[part1 part2 part3 part4];
para2=[part5 part3 part6];
para3=[part7 part8 c4_4 g3_2 g3_2];
para4=[part7 part8 c4_8 d4_8 d4_2 d4_2];
para5=[part9 part10 g4_8 e4_8 e4_8 d4_4 e4_8 e4_2];
para6=[part9 part10 g4_4 e4_8 g4_4 g4_8 g4_2];
legend=[para1 para2 para3 para4 para5 para6];
sound(legend,fs)
其中有两个函数:
function g=key(p, n, fs)
t=0 : 1/fs : 2/n;
g=sin(2*pi* fre(p) *t);
function f = fre(p)
f=440*2^((p-69)/12);
谢谢收听

整理:用matlab创作歌曲(一)相关推荐

  1. 整理:用matlab创作歌曲

    (一部分) 前两天在网上看到了有人用matlab演奏出最炫民族风,用了这么多年matlab还是第一次知道有这种玩法,于是把他的代码研究了一下,自己制作了一首歌曲,在这里分享一下. 首先介绍matlab ...

  2. 用MATLAB创作歌曲

    前两天在网上看到有人用MATLAB演奏出李建的传奇,文章链接如下: 整理:用matlab创作歌曲(一)_一苇以航-CSDN博客_matlab音乐代码 在大佬的基础上对代码进行了一点点改进,并借此学习了 ...

  3. matlab创作歌曲——《月半小夜曲》

    matlab创作歌曲--<月半小夜曲> 下面是程序(可直接复制粘贴运行) PS:低版本的matlab需要单独保存两个function函数,然后运行 %%%% 演奏<月半小夜曲> ...

  4. 整理:用matlab创作歌曲(三)

    %% <最炫民族风> % Most shining national wind %最炫民族风 on Matlab % http://blog.csdn.net/bat67 % fs = 4 ...

  5. 整理:用matlab创作歌曲(二)

    %%Matlab版<卡农> % Cripple Pachebel's Canon on Matlab % Have fun http://blog.csdn.net/bat67 fs = ...

  6. 数据反正模拟 matlab,[2018年最新整理]信号处理MATLAB函数.doc

    [2018年最新整理]信号处理MATLAB函数 函数说明波形产生和绘图chirp产生扫描频率余弦diric产生Dirichlet或周期sinc信号gauspuls产生高斯调制正弦脉冲rulstran产 ...

  7. 美赛整理之Matlab的工程数学计算学习笔记(高等数学)

    美赛整理之Matlab的工程数学计算学习笔记(高等数学) 1.极限的定义和判别: 2.绘制特殊曲面 3.求两个空间曲面的交线 4.定积分的计算 5.多重积分的计算 1.截面法: 2.定义法 (1)先画 ...

  8. 【从零开始学习深度学习】34. Pytorch-RNN项目实战:RNN创作歌词案例--使用周杰伦专辑歌词训练模型并创作歌曲【含数据集与源码】

    目录 RNN项目实战使用周杰伦专辑歌词训练模型并创作歌曲 1.语言模型数据集预处理 1.1 读取数据集 1.2 建立字符索引 1.3 时序数据的2种采样方式 1.3.1 随机采样 1.3.2 相邻采样 ...

  9. matlab 2ask,(最新整理)基于MATLAB的2ASK和2FSK调制仿真(通信原理实验报告)

    <(最新整理)基于MATLAB的2ASK和2FSK调制仿真(通信原理实验报告)>由会员分享,可在线阅读,更多相关<(最新整理)基于MATLAB的2ASK和2FSK调制仿真(通信原理实 ...

最新文章

  1. Ubuntu12.04 安装vim出错
  2. web设计师和前端设计师的互动—前端工程师应该具备的三种思维
  3. fork创建多个子进程
  4. Python-18-类的内置属性
  5. Redis--安装与配置(Linux与Windows)
  6. MySQL 复制技术的发展
  7. 二十一天学通Java:调用对象为null值的引用
  8. 腾讯这几年成果还真不少!抢了不少群众资源。。。
  9. xml转excel(Office XML转excel)
  10. 易语言 火眼 哈勃 防分析源码
  11. 16本版式设计书籍推荐(附PDF链接)设计从业人员必备
  12. Glide使用心得——加载图片出现浅绿色背景问题和Glide加载完成的监听设置
  13. 我的世界java版gamemode指令_我的世界(电脑Java版)简单又好玩指令教程
  14. 技术开放平台,推进开放银行布局
  15. 【html】圣诞节限定圣诞树
  16. 键盘记录器的删除方法
  17. GNN论文周报 | 来自北航、中科院、MSRA、新加坡国立大学、慕尼黑工业大学等机构前沿论文研究...
  18. robomaster视觉规则细谈
  19. python制作物联网控制软件下载_基于Python和Django框架的物联网智能设备管理系统的设计与实现...
  20. 从网络安全热门岗位看红蓝对抗发展趋势

热门文章

  1. 【演示动作制作】Focusky教程 | Focusky支持添加哪些图片格式?
  2. 2018年全球广告行业报告:5个现状、8个趋势~附PDF
  3. 中国医用高值耗材行业销售规模与竞争潜力研究报告2022版
  4. 线性最小方差估计和射影定理
  5. iReport5.6.0 可视图报表的下载和安装(二)
  6. mysql默认的安装路径在哪个文件夹_mysql默认安装目录说明
  7. Leetcode 289:生命游戏(最详细的解法!!!)
  8. 文献阅读:医学图像配准的深度学习方法综述
  9. 自定义 ESP32 分区表 partitions.csv
  10. 我所理解的一心多用薄如纸屑