资源简介
本文件是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
相关资源
- CBIR-matlab
- 连续潮流matlab代码
- 数字信号处理及MATLAB实现__第二版__学
- 线性拟合仿真-最小二乘法、正交回归
- 矩阵填充MATLAB代码
- 基于MATLAB的LTE系统的仿真
- 基于模型预测控制的车辆轨迹跟踪问
- 数模美赛常用模型算法matlab程序包+数
- 基于matlab的车牌识别资源整合16篇
- 悉尼大学SLAM实验数据MATLAB版
- 单机器人的多任务路径规划GUI
- 大型飞机航拍图处理matlab代码
- 数据融合matlab
- 强化学习代码,2016版,matlab
- LMS语音信号去噪matlab代码
- 遗传算法完整MATLAB程序实数法,轮盘
- 合成孔径雷达成像csChirp Scaling算法M
- 基于 MATLAB 的身份证号码的快速识别
- 冲击电压发生器MATLAB仿真,主要是单
- 信道的MATLAB仿真
- 30个优化智能算法matlab
- Harris角点检测matlab实现
- 卡尔曼滤波MATLAB代码170027
- fpm算法,用于傅里叶叠层显微图像恢
- burg算法实现AR模型的功率谱估计 mat
- 基于MATLAB利用相关分析法辨识脉冲响
- Matlab代码编写的semi-supervised CCA 程序
- 求取图像的相关系数---matlab ---M文件
- Matlab数字识别
- EOF分析matlab代码
评论
共有 条评论