资源简介
本文件是MATLAB模拟演奏歌曲小幸运,编写此代码需要有音乐功底和MATLAB编程能力,此代码可以直接下载运行,试听小幸运。
代码片段和文件信息
%%%% SingASong
%%%% by 圆
%%%% 乐理基础
%%%% 音高
%%%% C=do D=re E=mi F=fa G=sol A=la B=si
%%%% 钢琴上一共有88个音高,将这些音高进行分组可分为
%%%% 小字一组,小字二组,小字三组,小字四组,小字五组
%%%% 小字组,大字组,大字一组,大字二组
%%%% 音乐中将中央C上放的A音定为标准音高,其频率为f=440
%%%% 中央C是指小字一组c即a1的频率为440
%%%% 音值
%%%% 全音符、二分音符、四分音符、八分音符、十六分音符、三十二分音符
%%%% 附点二分音符、附点四分音符、附点八分音符、附点十六分音符
clc
clear all
t0=3; %%一个全音符的时长
fs=44100; %%采样率该值为MP3的标准采样率
dt=1/fs;
t16=0:dt:t0/16; %%十六分音符
N=length(t16);
t8=linspace(0t0*2/162*N); %%八分音符
t4=linspace(0t0*4/164*N); %%四分音符
t2=linspace(0t0*8/168*N); %%二分音符
t1=linspace(0t0*16/1616*N); %%全音符
t8d=linspace(0t0*3/163*N); %%附点八分音符
t4d=linspace(0t0*6/166*N); %%附点四分音符
t2d=linspace(0t0*12/1612*N); %%附点二分音符
%%%% 音高与频率的关系
p=1:88;
f=440*2.^((p-49)/12); %% p为音高
%%%% Modification 函数
mod1=sin(pi*t1/t1(end));
mod2=sin(pi*t2/t2(end));
mod4=sin(pi*t4/t4(end));
mod8=sin(pi*t8/t8(end));
mod2d=sin(pi*t2d/t2d(end));
mod4d=sin(pi*t4d/t4d(end));
mod8d=sin(pi*t8d/t8d(end));
mod16=sin(pi*t16/t16(end));
% mod16d=sin(pi*t16d/t16d(end));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 全音符
%%大字二组
A2_1 =mod1.*cos(2*pi*f(1)*t1);
A2s_1=mod1.*cos(2*pi*f(2)*t1);
B2_1 =mod1.*cos(2*pi*f(3)*t1);
%%大字一组
C1_1 =mod1.*cos(2*pi*f(4)*t1);
C1s_1=mod1.*cos(2*pi*f(5)*t1);
D1_1 =mod1.*cos(2*pi*f(6)*t1);
D1s_1=mod1.*cos(2*pi*f(7)*t1);
E1_1 =mod1.*cos(2*pi*f(8)*t1);
F1_1 =mod1.*cos(2*pi*f(9)*t1);
F1s_1=mod1.*cos(2*pi*f(10)*t1);
G1_1 =mod1.*cos(2*pi*f(11)*t1);
G1s_1=mod1.*cos(2*pi*f(12)*t1);
A1_1 =mod1.*cos(2*pi*f(13)*t1);
A1s_1=mod1.*cos(2*pi*f(14)*t1);
B1_1 =mod1.*cos(2*pi*f(15)*t1);
%%大字组
C_1 =mod1.*cos(2*pi*f(16)*t1);
Cs_1=mod1.*cos(2*pi*f(17)*t1);
D_1 =mod1.*cos(2*pi*f(18)*t1);
Ds_1=mod1.*cos(2*pi*f(19)*t1);
E_1 =mod1.*cos(2*pi*f(20)*t1);
F_1 =mod1.*cos(2*pi*f(21)*t1);
Fs_1=mod1.*cos(2*pi*f(22)*t1);
G_1 =mod1.*cos(2*pi*f(23)*t1);
Gs_1=mod1.*cos(2*pi*f(24)*t1);
A_1 =mod1.*cos(2*pi*f(25)*t1);
As_1=mod1.*cos(2*pi*f(26)*t1);
B_1 =mod1.*cos(2*pi*f(27)*t1);
%%小字组
c_1 =mod1.*cos(2*pi*f(28)*t1);
cs_1=mod1.*cos(2*pi*f(29)*t1);
d_1 =mod1.*cos(2*pi*f(30)*t1);
ds_1=mod1.*cos(2*pi*f(31)*t1);
e_1 =mod1.*cos(2*pi*f(32)*t1);
f_1 =mod1.*cos(2*pi*f(33)*t1);
fs_1=mod1.*cos(2*pi*f(34)*t1);
g_1 =mod1.*cos(2*pi*f(35)*t1);
gs_1=mod1.*cos(2*pi*f(36)*t1);
a_1 =mod1.*cos(2*pi*f(37)*t1);
as_1=mod1.*cos(2*pi*f(38)*t1);
b_1 =mod1.*cos(2*pi*f(39)*t1);
%%小字一组
c1_1 =mod1.*cos(2*pi*f(40)*t1);
c1s_1=mod1.*cos(2*pi*f(41)*t1);
d1_1 =mod1.*cos(2*pi*f(42)*t1);
d1s_1=mod1.*cos(2*pi*f(43)*t1);
e1_1 =mod1.*cos(2*pi*f(44)*t1);
f1_1 =mod1.*cos(2*pi*f(45)*t1);
f1s_1=mod1.*cos(2*pi*f(46)*t1);
g1_1 =mod1.*cos(2*pi*f(47)*t1);
g1s_1=mod1.*cos(2*pi*f(48)*t1);
a1_1 =mod1.*cos(2*pi*f(49)*t1);
a1s_1=mod1.*cos(2*pi*f(50)*t1);
b1_1 =mod1.*cos(2*pi*f(51)*t1);
%%小字二组
c2_1 =mod1.*cos(2*pi*f(52)*t1);
c2s_1=mod1.*cos(2*pi*f(53)*t1);
d2_1 =mod1.*cos(2*pi*f(54)*t1);
d2s_1=mod1.*cos(2*pi*f(55)*t1);
e2_1 =mod1.*cos(2*pi*f(56)*t1);
f2_1 =mod1.*cos(2*pi*f(57)*t1);
f2s_1=mod1.*cos(2*pi*f(58)*t1);
g2_1 =mod1.*c
- 上一篇:连续潮流matlab代码
- 下一篇:CBIR-matlab
相关资源
- matlab_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
评论
共有 条评论