网上找的一份《左手指月》的谱子,需要了解一些基础的音乐知识,看懂谱子就可以写程序了。

主函数

%% 《左手指月》——(香蜜沉沉烬如霜)
%% 清空
clear;clc;%% 采样频率
Fs = 8192;%% keynote_type:当前基调
F = 'F';
keynote_type = [F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,...F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,...F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,...F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,...F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,...F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,...F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,...F,F,F,F,F,F,F,F,F,F,F,F,F];%% tone:取哪个音节
% 写法:1  2  3  4   5  6  7
% 读法:Do Re Mi Fa Sol La Si
tone = [6,3,3,5,6,6,7,6,5,3,5,3,0,2,3,4,5,6,5,6,1,...7,6,7,6,1,2,2,3,2,6,1,7,1,6,1,...2,0,1,2,4,3,0,6,3,3,5,6,6,7,6,5,3,5,3,0,...2,3,4,5,6,5,6,1,7,1,7,6,7,6,1,2,2,3,2,6,...1,7,1,6,1,2,0,1,2,4,3,6,3,3,5,6,6,7,6,5,...3,5,3,0,2,3,4,5,6,5,6,1,7,6,7,6,1,2,2,3,2,6,...1,7,1,6,1,2,0,1,2,4,3,0,1,0,1,4,3,2,1,...3,2,4,1,0,1,4,3,2,1,3,3,7];%% rythm:节拍数(音的长短)
%    全音符      “5---”     全休符     “0000”     1
%   二分音符      “5-”     二分休止符   “00”      1/2
%   四分音符(?)    “5”     四分休止符    “0”      1/4
% 八分音符(?或?)  “5_”    八分休止符    “0_”      1/8
% 十六分音符(?)  “5__”   十六分休止符  “0__”     1/16
% 附点音符(?):延长前面音符时值的一半  5? = 5 + 5_
% 延音线(~):连接起来的若干个音要唱成一个音,时值为这些音的总和 5~5=5+5
% 连音符(~3~):将音符的时值自由均分 555~3~=55=5_  5_5_5_~3~=5_5_=5
a = 1;       b = 1/2;     c = 1/4;    d = 1/8;     e = 1/16;    f = 1/32;
c1 = 1/6;    c2 = 2/6;   c3 = 3/4;    d3 = 3/8;    d4 = 1/12;   d5 = 5/12;
e3 = 3/16;   e5 = 5/16;
rythm = [b,b,c3,c,a,c,c,c,c, c3,c,b,a, b,b,b,b,c3,c,b,b,...c3,c,b,b,b, c3,c,c,c,c, c3,c,b,b,b,...b,c3,c,b,b, c3,a, b,b,c3,c,a,c,c,c,c, c3,c,b,a,...b,b,c3,c,c3,c,b,b, c,c,c,c,b,b,b, c3,c,c,c,c,...c3,c,b,b,b, b,c3,c,b,b, a, b,b,c3,c,a,c,c,c,c,...c3,c,b,a, b,b,b,b,c3,c,b,b, c3,c,b,b,b, c3,c,c,c,c,...c3,c,b,b,b, b,c3,c,b,b, c3,a, a,c3,c,b,b,b,b,...b,b,c3, a,c3,c,b,b,b,b, b,b,c3];%% keynote_change:升降调8度
% 中音:不带点的基本符号
% 高音:基本符号上面加一个点    倍高音:基本符号上面加两个点
% 低音:基本符号下面加一个点    倍低音:基本符号下面加两个点
% 1代表中音,2代表高音
keynote_change = [0.25,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0,...0.5,0.5,0.5,0.5,1, 1,1,1,1,0.5, 1,0.5,1,0.5,1,...1,1,1,1,1, 1,1, 0.5,1,1,1,1,1,1,1,1, 1,1,1,1,...1,1,1,1,1,1,1,2, 1,2,1,1,1,1,2, 2,2,2,2,1,...2,1,2,1,2, 2,1,2,2,2, 2, 0.5,1,1,1,1,1,1,1,1,...1,1,1,1, 1,1,1,1,1,1,1,2, 1,1,1,1,2, 2,2,2,2,1,...2,1,2,1,2, 2,1,2,2,2, 2,1, 1,1,1,1,1,1,1,...1,1,1, 1,1,1,1,1,1,1, 1,1,1];%% up_down:音节升降
% 临时变音记号有:“?”升号---升高半音,“?”降号---降低半音,
%                “?”还原号---将小节内“?”或“?”过的音回到原来的位置
% 0代表正常,1代表升号
up_down = [0,0,0,0,0,0,0,0,0, 0,0,0,0, 0,0,0,0,0,0,0,0,...0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,...0,0,0,0,0, 0,0, 0,0,0,0,0,0,0,0,0, 0,0,0,0,...0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,...0,0,0,0,0, 0,0,0,0,0, 0, 0,0,0,0,0,0,0,0,0,...0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,...0,0,0,0,0, 0,0,0,0,0, 0,0, 0,0,0,0,0,0,0,...0,0,0, 0,0,0,0,0,0,0, 0,0,0];%% 调用get_wave
y = [];
len = length(tone);
for i = 1:1:leny = [y, get_wave(tone(i), rythm(i), keynote_change(i), keynote_type(i), up_down(i))];
end
sound(y, Fs);

get_wave函数

function y = get_wave(tone, rythm, keynote_change, keynote_type, up_down)
% get_wave:
% tone: 取哪个音节;  rythm: 节拍数;  up_down:音节升降
% keynote_change:升降调8度;  keynote_type:当前基调Fs = 8192;  %采样频率keynote_B = 493; %开始的节奏降Ekeynote_Ab = 415; %中间变为降Akeynote_Fd = 739; %开始的节奏降Erythm = 1.25 * rythm;tones_normal = [1, 3, 5, 6, 8, 10, 12]; % 1-7 到 C D E F G A B映射if nargin == 5  %有改变基调&可能有升降调&可能有音节升降if keynote_type == 'A'keynote = keynote_Ab;elseif keynote_type == 'B'keynote = keynote_B;elseif keynote_type == 'F'keynote = keynote_Fd;endkeynote = keynote * keynote_change;endif tone == 0    % 停顿tone = 13;elsetone = tones_normal(tone);endfreqs = [1, 1.059, 1.122, 1.189, 1.260, 1.335, 1.414, 1.498, 1.587, 1.682, 1.782, 1.888, 0] .* keynote.*(1.059^up_down);x = linspace(0, 2*pi*rythm, floor(Fs*rythm));y = sin(freqs(tone) * x) .* (1 - x/(2*pi*rythm));
end

MATLAB演奏《左手指月》相关推荐

  1. 天空之城 matlab,[转载]matlab演奏《天空之城》代码

    %matlab演奏<天空之城>代码 l_dao=262; %将"l_dao"宏定义为低音"1"的频率262Hz l_re =286; %将" ...

  2. 如何用matlab演奏《偏爱》

    文章目录 前言 一.效果演示 二.如何唱 1.原理 2.代码 总结 前言 之前学了点matlab,看朋友圈有人做了<追光者>,学了几天,兴致勃勃写了个<偏爱>,后忘记记录了,现 ...

  3. 用matlab演奏周杰伦的《七里香》

    问题描述 前几天在学习matlab的时候,发现了一篇用matlab演奏音乐的文章,不禁感叹matlab居然还能这么玩!于是我就学着用matlab演奏我最喜欢听的一首歌--周杰伦的<七里香> ...

  4. matlab音乐合成卡农,matlab演奏《卡农》

    [attach]matlab演奏<卡农>程序文件[/attach] % Cripple Pachebel's Canon on Matlab % Have fun fs = 44100; ...

  5. matlab演奏七里香,沈员外,起风了,未闻花名,卡农

    %%%%%%----MATLAB演奏七里香-----%%%%% fs = 44100; dt = 1/fs; T16 = 0.2; t16 = [0:dt:T16];[temp k] = size(t ...

  6. 《MATLAB PROJECT》用MATLAB演奏音乐

    用MATLAB演奏音乐 (1) 采样率 (2) 十二平均律 (3) 声音强弱效果控制 (4) 声音播放时间控制 (5) 自定义音符函数 (6) <River Flows In You>演奏 ...

  7. 【音乐】基于matlab演奏《过火》【含Matlab源码 1875期】

    一.获取代码方式 获取代码方式1: [音乐]基于matlab演奏<过火>[含Matlab源码 1875期] 获取代码方式2: 通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代 ...

  8. 【趣味】用MATLAB演奏《追光者》

    [趣味]用MATLAB演奏<追光者> 看见有很多人用MATLAB演奏歌曲,也忍不住试了一下,以下附上源码 %%%%演奏<追光者>%%%% clear all;clc; fs = ...

  9. 【音乐】基于matlab演奏《青花瓷》【含Matlab源码 1873期】

    一.获取代码方式 获取代码方式1: [音乐]基于matlab演奏<青花瓷>[含Matlab源码 1873期] 获取代码方式2: 通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此 ...

最新文章

  1. 谷歌自动驾驶是个大坑,还好中国在构建自己的智能驾驶大系统
  2. Origin对于标注点
  3. 从java到c_Binder机制,从Java到C (4. Parcel)
  4. hdu 3449(依赖背包)
  5. Java8 接口在变化
  6. Bootstrap组件_下拉菜单
  7. FortiGate设置E-mail告警
  8. CentOS thrift python demo
  9. adb无法连接安卓手机
  10. uniCloud服务空间免费云存储图床系统源码
  11. JavaScript 浏览器对象BOM
  12. findViewById报空指针异常
  13. 若依集成jsencrypt实现密码加密传输方式
  14. 计算机中音乐设备数字接口,多媒体cai课件制作技术复习题
  15. 教你4种压缩PDF让文档快速变小的方法
  16. 接口测试通用测试用例
  17. 阿里语音识别看这一篇就够了
  18. vivo手机的android系统,vivo X3S的手机系统是什么?能升级安卓4.3吗?
  19. java-喝饮料换空瓶问题
  20. 【机器学习】关联规则挖掘算法 + 三大案例实战 + Apriori算法 + Python代码实现

热门文章

  1. html单选按钮样式 正方形,HTML自定义radio单选按钮(纯css版,样式可以随便改变)
  2. 基于Java的校园一卡通系统
  3. unity学习(三)
  4. syslog-ng 和syslog-ng tls 服务端配置
  5. 使用纯JS还原小时候游戏厅里的水果机
  6. 51单片机出租车计价器(汇编语言)
  7. linux改时间又变回去了,linux 更改时间后,过几十秒又还原回去,解决方法
  8. Protocol 的用法
  9. office2010c盘_Microsoft Office 2010 Professional 系统盘垃圾清理
  10. NLPIR平台的文本聚类模块完美契合行业需求