MATLAB写歌曲(艺术与科学的 MEET)
本人认为用 matlab 可以极大锻炼对于音乐和艺术的理性科学认识,我编的这个是孙燕姿的《遇见》,以表达这种艺术和科学的完美邂逅。
理解这样一种方式,你将掌握许多声学知识,编程知识,音乐知识。
%% 说明
% 1. 衰减函数为两个衰减速率不同的指数函数构成。 前半部分衰减快,后半部分衰减慢;
% 2. 泛频中有比原频率高的泛音,也加入了比原频率低的泛音。
% 3. 基频和泛频的幅度比。 使用for循环近似模拟,泛频的频率越高(或越低),该泛频信号对应的幅度越小。 但是这与实际情况不完全相符。
% 4. 加入了鼓点节奏,4/4拍节奏:强 弱 次强 弱; 使用一个表示节奏的矩阵与歌曲伴奏矩阵进行点乘。
% 5. 歌曲中的有的音在下一个音开始播放时还未播放完。比如根音的延长。例如:y_g1(1:N) y_g1(N+1:2*N)+y_D y_g1(2*N+1:3*N)+y_DD y_g1(3*N+1:4*N)+y_D
% 6. 本歌曲根据吉他谱改编。
% 7. 要注意不同时长的单音他们的衰减速度不同。
%% 不足
% 1. 写的比较乱,音乐术语表达不规范。
% 2. 在制作单音时,没有考虑到音的短暂上升部分。
% 3. 在制作单音时,没有考虑到不同频率的泛音衰减速度不同的问题。
% 4. 泛音的幅度调的还不到位,电音感比较重。
% 5. 一些音调比较高的音由于没有调小幅度,会有些刺耳。
% 6. 本程序中没有考虑每个音的归一化问题,不够完善。
% 7. 在歌曲中应有明显的主歌副歌部分,两部分若音色再不同则更有歌曲的感觉。
%% 初始化
clear;
clc;
fs=48000;
t=1/fs:1/fs:0.32;
N=length(t);
%% 频率初始化
f_C=ff(0); f_D=ff(2); f_E=ff(4); f_F=ff(5); f_G=ff(7); f_A=ff(9); f_B=ff(11); f_FG=ff(6);
f_CC=ff(12);f_DD=ff(14); f_GG=ff(19); f_EE=ff(16); f_FFGG=ff(18); f_AA=ff(21); f_BB=ff(23); f_FF=ff(17);
f_AAA=ff(33); f_GGG=ff(31);
f_g=ff(-5); f_fg=ff(-6); f_e=ff(-8); f_b=ff(-1); f_a=ff(-3);
%% 单音初始化
y_CC8=cmps8(f_CC,0.6); y_DD8=cmps8(f_DD,0.55); %八分音符
y_04=cmps4(0,1); %休止符
y_C=cmps4(f_C,0.8); y_A=cmps4(f_A,0.7);y_D=cmps4(f_D,0.8); y_E=cmps4(f_E,0.74); y_G=cmps4(f_G,0.8);y_B=cmps4(f_B,0.75); y_FG=cmps4(f_FG,0.6);
y_CC=cmps4(f_CC,0.9);y_DD=cmps4(f_DD,0.65); y_GG=cmps4(f_GG,0.8); y_EE=cmps4(f_EE,0.8); y_AA=cmps4(f_AA,0.7); y_BB=cmps4(f_BB,0.7); y_FFGG=cmps4(f_FFGG,0.7);
y_AAA=cmps4(f_AAA,0.9); y_GGG=cmps4(f_GGG,0.9);
y_g=cmps4(f_g,0.5); y_fg=(cmps4(f_fg,0.5)); y_e=cmps4(f_e,0.6); y_b=cmps4(f_b,0.6); y_a=cmps4(f_a,0.6); %四分音符
y_03=cmps3(0,1);
y_EE3=cmps3(f_EE,0.85); y_DD3=cmps3(f_DD,0.85); y_G3=cmps3(f_G,1.0); y_GG3=cmps3(f_GG,0.6); y_CC3=cmps3(f_CC,0.7);
y_A3=cmps3(f_A,0.8); y_D3=cmps3(f_D, 0.95); y_B3=cmps3(f_B,0.8);
y_a3=cmps3(f_a,0.6); y_g3=cmps3(f_g,0.65); %三倍时长的四分音符,由于尾奏的部分要放慢速度,特意加了此部分。
y_02=cmps2(0,1);
y_B2=cmps2(f_B,0.65); y_E2=cmps2(f_E,0.75); y_G2=cmps2(f_G,0.75); y_C2=cmps2(f_C,1.1); y_D2=cmps2(f_D,0.6); y_A2=cmps2(f_A,0.6); y_FG2=cmps2(f_FG,0.7);
y_e2=cmps2(f_e,0.8); y_a2=cmps2(f_a,0.8); y_fg2=cmps2(f_fg,0.8); y_g2=cmps2(f_g,0.5); y_b2=cmps2(f_b,0.6);
y_CC2=cmps2(f_CC,0.6);y_AA2=cmps2(f_AA,0.75); y_BB2=cmps2(f_BB,0.5); y_GG2=cmps2(f_GG,0.6); y_DD2=cmps2(f_DD,0.6);y_FF2=cmps2(f_FF,0.7); y_EE2=cmps2(f_EE,0.6); y_FFGG2=cmps2(f_FFGG,0.7);
y_AAA2=cmps2(f_AAA,0.75); y_GGG2=cmps2(f_GGG,0.75); %二分音符
y_01=cmps1(0,1);
y_GG1=cmps1(f_GG,0.6); y_DD1=cmps1(f_DD,0.8); y_EE1=cmps1(f_EE,0.6); y_CC1=cmps1(f_CC,0.7);
y_C1=cmps1(f_C,1.1);y_B1=cmps1(f_B,0.8);y_D1=cmps1(f_D,0.7); y_A1=cmps1(f_A,0.65);y_G1=cmps1(f_G,0.75);
y_g1=cmps1(f_g,0.5); y_fg1=cmps1(f_fg,0.5); y_e1=cmps1(f_e,0.6); y_b1=cmps1(f_b,0.6); y_a1=cmps1(f_a,0.6); %全音符
y_FFGG5=cmps5(f_FFGG,0.6); y_GG5=cmps5(f_GG,0.6); y_DD5=cmps5(f_DD,0.6);y_CC5=cmps5(f_CC,0.6); y_EE5=cmps5(f_EE,0.6);
y_a5=cmps5(f_a,0.8);
y_E5=cmps5(f_E,0.8); y_G5=cmps5(f_G,0.75); y_B5=cmps5(f_B,0.8); y_A5=cmps5(f_A,0.8); %1.5倍时长的四分音符。
%% 节奏4/4拍 强 弱 次强 弱
Y_rhythm=[ones(1,2*N)*1.2 ones(1,2*N)*0.6 ones(1,2*N)*0.9 ones(1,2*N)*0.6]; %节奏矩阵(没考虑归一化,可能会导致失误)
%% 前奏
Y_1=[y_DD2(1:N) y_DD2(N+1:2*N)*0.5+y_B2(1:N) y_B2(N+1:2*N)+y_g2(1:N)*1 y_g2(N+1:2*N)*1+y_D y_DD y_A2(1:N) y_A2(N+1:2*N)+y_fg*1.5 y_D y_DD y_G (y_E2+y_e2)*0.2 y_04 y_04 y_04 y_B y_DD 0.6*y_GG2(1:N) 0.6*y_GG2(N+1:2*N)+y_C y_D y_DD2(1:N) y_DD2(N+1:2*N)*0.1+y_G2(1:N) y_G2(N+1:2*N)+y_b...
y_D y_G 0.6*y_DD2(1:N) 0.6*y_DD2(N+1:2*N)+y_a y_E y_G y_CC8 y_DD8 y_B+y_D*0.3 y_A3(1:N) [y_A3(N+1:3*N)]+y_CC3(1:2*N)*0.6];
Y_2=[y_CC3(2*N+1:3*N)*0.6+y_g*0.1+y_G*0.2+y_B y_D 0.8*y_DD2(1:N)+y_G*0.2 0.8*y_DD2(N+1:2*N)+y_D*1.1 y_fg2(1:N)*0.2+y_DD2(1:N)*0.11+y_EE2(1:N) y_fg2(N+1:2*N)*0.2+y_DD2(N+1:2*N)*0.11+y_EE2(N+1:2*N)+y_A y_FFGG+y_DD*0.5 y_A y_FFGG2(1:N)+y_B2(1:N)*0.5+y_e2(1:N)*0.3 y_FFGG2(N+1:2*N)+y_B2(N+1:2*N)*0.5+y_e2(N+1:2*N)*0.3+y_G...
y_GG y_G 0.5*y_AA2(1:N)+y_D2(1:N)*0.3 0.5*y_AA2(N+1:2*N)+y_D2(N+1:2*N)*0.3+y_DD y_BB2*0.5 (y_BB2(1:N)*0.7+y_C2(1:N)*0.2+y_B2(1:N)*0.3+y_G2(1:N)*0.2)*0.6 0.6*(y_BB2(N+1:2*N)+y_C2(N+1:2*N)*0.2+y_B2(N+1:2*N)*0.3+y_G2(N+1:2*N)*0.2)+y_G y_B y_GG1*0.4+y_G1*0.2+y_C1*0.1 y_04 y_04 y_GG1*0.3+y_DD1*0.2+y_D1*0.15+y_A1*0.1 y_02];
Y_pre=[Y_1 Y_2];
%% 主歌1
Y_song1=0.75*[y_02 y_DD y_B2 y_04 y_DD y_A2 y_04 y_B y_A y_G2 y_01 y_G y_FG y_E y_FG y_G y_FG2 y_G y_A y_B2 y_04 y_02 ...
y_02 y_DD y_B2 y_04 y_DD y_A2 y_04 y_B y_A y_G2 y_01 y_G y_FG y_E y_FG y_G y_FG2 y_G y_A y_G2 y_04 y_02];
Y_melody1=0.4*[y_02 y_02 y_g1(1:N) y_g1(N+1:2*N)+y_D y_g1(2*N+1:3*N)+y_DD y_g1(3*N+1:4*N)+y_D y_fg1(1:N) y_fg1(N+1:2*N)+y_D y_fg1(2*N+1:3*N)+y_DD y_fg1(3*N+1:4*N)+y_D ...
y_e1(1:N) y_e1(N+1:2*N)+y_D y_e1(2*N+1:3*N)+y_DD y_e1(3*N+1:4*N)+y_G y_EE2 y_02 0.8*y_C1(1:N) 0.8*y_C1(N+1:2*N)+y_E 0.8*y_C1(2*N+1:3*N)+y_DD 0.8*y_C1(3*N+1:4*N)+y_G*0.6 ...
0.8*y_D1(1:N) 0.8*y_D1(N+1:2*N)+y_A 0.8*y_D1(2*N+1:3*N)+y_GG*0.4 0.8*y_D1(3*N+1:4*N)+y_DD*0.4 y_g1(1:N) y_g1(N+1:2*N)+y_D y_g1(2*N+1:3*N)+y_G y_g1(3*N+1:4*N)+y_D...
y_a2+y_D2*0.5+y_A2*0.5+y_DD2*0.5+y_GG2 y_02 y_g1(1:N) y_g1(N+1:2*N)+y_D y_g1(2*N+1:3*N)+y_DD y_g1(3*N+1:4*N)+y_D y_fg1(1:N) y_fg1(N+1:2*N)+y_D y_fg1(2*N+1:3*N)+y_B y_fg1(3*N+1:4*N)+y_D ...
y_e1(1:N) y_e1(N+1:2*N)+y_D y_e1(2*N+1:3*N)+y_G y_e1(3*N+1:4*N)+y_DD y_GG2*0.6 y_02 0.8*y_C1(1:N) 0.8*y_C1(N+1:2*N)+y_E 0.8*y_C1(2*N+1:3*N)+y_DD 0.8*y_C1(3*N+1:4*N)+y_G*0.6 ...
0.8*y_D1(1:N) 0.8*y_D1(N+1:2*N)+y_A 0.8*y_D1(2*N+1:3*N)+y_GG*0.4 0.8*y_D1(3*N+1:4*N)+y_DD*0.4 y_g1(1:N) y_g1(N+1:2*N)+y_D y_g1(2*N+1:3*N)+y_A y_g1(3*N+1:4*N)+y_DD];
Y_r_1=[ones(1,4*N) Y_rhythm];
for n=1:6
Y_r_1=[Y_r_1 Y_rhythm]; %给曲子加节奏
end
Y_r_1=[Y_r_1 ones(1,4*N)];
Y_verse1=Y_song1+Y_melody1.*Y_r_1;
%% 间奏
Y_inter1=0.47*[y_g*0.3+y_D*0.2+y_A*0.3+y_DD*0.5+y_GG y_DD y_EE y_FFGG 0.8*y_C1(1:N)*0.4+y_GG1(1:N) 0.6*(y_C1(N+1:2*N)*0.4+y_GG1(N+1:2*N))+y_G 0.5*(y_C1(2*N+1:3*N)*0.4+y_GG1(2*N+1:3*N))+y_FFGG 0.5*(y_C1(3*N+1:4*N)*0.4+y_GG1(3*N+1:4*N))+y_GG ...
y_C*0.15+y_G*0.3+y_FFGG y_EE2*0.6 y_04 y_DD8 y_CC8 y_b2(1:N)*0.5+y_DD2(1:N) (y_b2(N+1:2*N)*0.5+y_DD2(N+1:2*N))*0.5+y_D y_G y_DD y_G2 y_A y_B2(1:N) 0.6*y_B2(N+1:2*N)+y_a*0.5+y_E*0.5+y_G*0.3+y_CC*0.6 y_B2(1:N) y_B2(N+1:2*N)*0.5+y_A y_G3(1:N) y_G3(N+1:3*N)*0.5+y_D2*0.5+y_FG2*0.6 y_02];
%% 主歌2
Y_song2=[y_DD y_B2 y_04 y_DD y_A2 y_04 y_B y_A y_G2 y_01 y_G y_FG y_E y_FG y_G y_FG2 y_G y_A y_B2 y_04 y_02 y_02...
y_DD y_B2 y_04 y_DD y_A2*0.1+y_AA2*0.8 y_G*0.1+y_GG*0.8 y_FFGG y_GG2*0.5 y_04 y_02 y_02 y_G y_fg*5+y_FG*0.5 y_e*2.8+y_E*0.15+y_EE*0.08 y_fg*2+y_FG*0.15 y_G y_fg2 y_G y_A y_G2 y_04 y_02];
Y_melody2=0.45*[y_02 y_g1(1:N) y_g1(N+1:2*N)+y_D y_g1(2*N+1:3*N)+y_DD y_g1(3*N+1:4*N)+y_D y_fg1(1:N) y_fg1(N+1:2*N)+y_D y_fg1(2*N+1:3*N)+y_DD y_fg1(3*N+1:4*N)+y_D...
y_e1(1:N) y_e1(N+1:2*N)+y_D y_e1(2*N+1:3*N)+y_DD y_e1(3*N+1:4*N)+y_G y_EE2 y_02 0.8*y_C1(1:N) 0.8*y_C1(N+1:2*N)+y_E 0.8*y_C1(2*N+1:3*N)+y_DD 0.8*y_C1(3*N+1:4*N)+y_G*0.6...
0.8*y_D1(1:N) 0.8*y_D1(N+1:2*N)+y_A 0.8*y_D1(2*N+1:3*N)+y_GG*0.4 0.8*y_D1(3*N+1:4*N)+y_DD*0.4 y_g1(1:N) y_g1(N+1:2*N)+y_D y_g1(2*N+1:3*N)+y_G y_g1(3*N+1:4*N)+y_D y_a2*0.3+y_D2*0.25+y_A2*0.2+y_DD2*0.25+y_EE2...
y_02 y_g1(1:N) y_g1(N+1:2*N)+y_D y_g1(2*N+1:3*N)+y_DD y_g1(3*N+1:4*N)+y_D y_fg1(1:N) y_fg1(N+1:2*N)+y_D y_fg1(2*N+1:3*N)+y_DD y_fg1(3*N+1:4*N)+y_D...
y_e1(1:N) y_e1(N+1:2*N)+y_D y_e1(2*N+1:3*N)+y_DD y_e1(3*N+1:4*N)+y_G 0.6*y_D1(1:N) 0.5*y_D1(N+1:2*N)+y_G 0.5*y_D1(2*N+1:3*N)+y_GG 0.5*y_D1(3*N+1:4*N)+y_DD ...
y_D1(1:N) y_D1(N+1:2*N)+y_E y_D1(2*N+1:4*N)+y_DD2 y_D1(1:N) y_D1(N+1:2*N)+y_A y_D1(2*N+1:4*N)+y_GG2 y_g1(1:N) y_g1(N+1:2*N)+y_D y_g1(2*N+1:3*N)+y_A y_g1(3*N+1:4*N)+y_DD];
Y_r_2=[ones(1,2*N) Y_rhythm];
for n=1:6
Y_r_2=[Y_r_2 Y_rhythm];
end
Y_r_2=[Y_r_2 ones(1,4*N)];
Y_verse2=Y_song2+Y_melody2.*Y_r_2;
Y_verse=[Y_verse1 Y_inter1 Y_verse2];
%% 副歌
Y_song3=[y_04 y_DD y_EE y_FFGG y_GG2+y_DD2*0.1 y_FFGG y_GG+y_DD*0.15 y_FFGG y_EE y_DD y_EE2 y_DD2 y_04 y_04 y_G y_A y_B y_CC2 y_B y_CC y_DD y_G y_A y_B2 y_B2 y_04...
y_04 y_DD y_EE y_FFGG y_GG2+y_DD2*0.1 y_FFGG y_GG+y_DD*0.15 y_AA y_GG y_AA y_BB2 y_DD3 ...
y_04 y_G y_A y_B y_CC2 y_B y_CC y_B y_A2 y_G y_fg*2+y_FG*0.3+y_FFGG*0.1 y_G3];
%伴奏的音量应比演唱部分小一些。
Y_melody3=0.35*[y_g2*0.5+y_a2*0.2+y_D2*0.5+y_A2*0.5+y_DD2 y_02 y_C1(1:N) 0.6*y_C1(N+1:2*N)+y_G 0.6*y_C1(2*N+1:4*N)+y_DD2*0.15+y_EE2 y_C1(1:N) 0.5*y_C1(N+1:2*N)+y_A 0.5*y_C1(2*N+1:4*N)+y_DD2*0.25+y_FFGG2 ...
y_B1(1:N) 0.5*y_B1(N+1:2*N)+y_G 0.5*y_B1(2*N+1:3*N)+y_DD 0.5*y_B1(3*N+1:4*N)+y_G y_g1(1:N) y_g1(N+1:2*N)+y_D y_g1(2*N+1:4*N)+y_G2 y_a1(1:N) y_a1(N+1:2*N)+y_E y_a1(2*N+1:4*N)+y_G2*0.2+y_CC2 ...
y_D1(1:N) 0.6*y_D1(N+1:2*N)+y_A 0.5*y_D1(2*N+1:3*N)+0.5*y_D1(3*N+1:4*N)+y_GG y_DD y_g1(1:N) y_g1(N+1:2*N)+y_D y_g1(2*N+1:3*N)+y_G y_g1(3*N+1:4*N)+y_D y_GG1(1:N) 0.5*y_GG1(N+1:2*N)+y_DD 0.3*y_GG1(2*N+1:4*N)+2*y_g2...
y_C1(1:N) 0.6*y_C1(N+1:2*N)+y_G 0.5*y_C1(2*N+1:4*N)+y_DD2 y_D1(1:N) 0.5*y_D1(N+1:2*N)+y_A 0.5*y_D1(2*N+1:4*N)+y_DD2*0.25+y_FFGG2 y_g2(1:N)*0.1+y_G2(1:N)*0.15+y_B2(1:N) y_g2(N+1:2*N)*0.1+y_G2(N+1:2*N)*0.15+y_B1(N+1:2*N)+y_D y_fg1(1:N)*0.15+y_A1(1:N)*0.25+y_DD2(1:N) y_fg1(N+1:2*N)*0.15+y_A1(N+1:2*N)*0.25+y_DD2(N+1:2*N)+y_D ...
y_e*0.2+y_G*0.15+y_B y_D y_G y_D y_C1(1:N) 0.5*y_C1(N+1:2*N)+y_E 0.5*y_C1(2*N+1:4*N)+y_DD2 y_e2*0.2+y_a2*0.3+y_D2*0.3+y_A2*0.5+y_CC2*0.45+y_GG2 y_02 y_g1(1:N) y_g1(N+1:2*N)+y_D y_g1(2*N+1:3*N)+y_G y_g1(3*N+1:4*N)+y_DD];
Y_r_3=[ones(1,4*N) Y_rhythm];
for n=1:6
Y_r_3=[Y_r_3 Y_rhythm];
end
Y_r_3=[Y_r_3 ones(1,4*N)];
Y_hook=Y_song3+Y_melody3.*Y_r_3;
%% 间奏
Y_inter2=[y_g2*0.3+y_a2*0.5+y_G2 y_04 y_DD y_C*0.4+y_B y_D y_G y_B y_C2*0.3+y_A2 y_04 y_DD y_C*0.4+y_B y_D y_G y_B y_C*0.2+y_A y_D y_G y_DD y_C*0.3+y_B y_D y_G y_B y_C1*0.15+y_A1*0.65 y_g y_D y_G y_DD (y_g3*0.1+y_B3*0.3+y_D3*0.4+y_G3*0.4+y_DD3*0.4+y_GG3)*0.5];
%% 尾奏
Y_ending1=[0.35*(y_g2*0.3+y_a2*0.5+y_G2) y_03 y_DD5 y_EE5 y_FFGG5 y_GG3 y_FFGG5 y_GG5 y_FFGG5 y_EE5 y_DD5 y_CC3 y_DD1*0.5 y_04 y_01];
Y_ending2=0.5*[y_a5*0.2+y_E5*0.2+y_G5*0.2+y_CC5 y_B5 y_A5 y_G5 0.6*(y_D3+y_A3*0.6+y_DD3) y_D3*0.25+y_G3*0.2+y_CC3 y_g1+y_D1*0.25+y_A1*0.3+y_B1];
Y_ending=0.4*[Y_ending1 Y_ending2];
%%
% sound(Y_pre,fs);
% sound([Y_hook],fs);
% sound([Y_1 Y_2],fs);
% sound([y_G*0.6+y_g],fs);
% sound(Y_hook,fs);
% sound(Y_song2,fs);
% sound(Y_verse2,fs);
% sound(Y_melody3,fs);
% sound(Y_ending,fs);
sound([Y_pre Y_verse Y_hook Y_inter2 y_03 Y_verse2 Y_hook Y_hook*1.25 Y_ending],fs);%hole
% audiowrite('meet(hole).M4A',[Y_pre Y_verse Y_hook Y_inter2 y_03 Y_verse2 Y_hook Y_hook*1.25 Y_ending],fs);
% sound([y_02 Y_pre Y_verse Y_hook Y_ending],fs); %part
% sound([y_g1(1:N) y_g1(N+1:2*N)+y_D y_g1(2*N+1:3*N)+y_DD y_g1(3*N+1:4*N)+y_D],fs);
% audiowrite('prolong.M4A',[y_g y_D y_DD y_D],fs);
%% 得到各频率的函数ff
function [f_y]=ff(n)
std=2^(1/12);
f_C=440*(std^(-9));
f_y=f_C*std^(n);
end
%% 各个单音的函数
function [y]=cmps4(f,A)
A=0.5*A;
fs=48000;
r=-4;
t=1/fs:1/fs:0.32;
N=length(t);
r1=-10;
r2=-4;
temp1=exp(r1*t(1:8*N/16));
temp2=(exp(r2*t(1:8*N/16)))*(max(temp1(8*N/16-200:8*N/16)));
R=[temp1 temp2]; %衰减包络
y=A*sin(2*pi*f*t).*R;
for n=2:2:40
y=y+A*sin(n*pi*f*t)*0.25^(n/4).*R; %加高音泛频
end
for n=1:20
y=y+A*sin(2^(-n)*pi*f*t)*0.015*(n/10).*R; %加低音泛频 (物理上严格并无此解,但加上确实好听);
end
end
function [y]=cmps1(f,A)
A=0.8*A;
fs=48000;
r=-2.5;
t=1/fs:1/fs:1.28;
N=length(t);
r1=-2.5;
r2=-1.25;
temp1=exp(r1*t(1:8*N/16));
temp2=(exp(r2*t(1:8*N/16)))*(max(temp1(8*N/16-200:8*N/16)));
R=[temp1 temp2];
y=0.3*A*sin(2*pi*f*t).*R;
for n=2:2:40
y=y+A*sin(n*pi*f*t)*0.2^(n/4).*R;
end
for n=2:2:40
y=y+A*sin(2^(-n)*pi*f*t)*0.15^(n/10).*R;
end
end
function [y]=cmps2(f,A)
A=0.6*A;
fs=48000;
r=-3.5;
t=1/fs:1/fs:0.64;
N=length(t);
r1=-5;
r2=-2;
temp1=exp(r1*t(1:8*N/16));
temp2=(exp(r2*t(1:8*N/16)))*(max(temp1(8*N/16-200:8*N/16)));
R=[temp1 temp2];
y=0.6*A*sin(2*pi*f*t).*R;
for n=2:2:40
y=y+A*sin(n*pi*f*t)*0.21^(n/4).*R;
end
for n=1:20
y=y+sin(2^(-n)*pi*f*t)*0.001^(n/8).*R;
end
end
function [y]=cmps8(f,A)
A=1*A;
fs=48000;
t=1/fs:1/fs:0.16;
N=length(t);
r1=-20;
r2=-6;
temp1=exp(r1*t(1:8*N/16));
temp2=(exp(r2*t(1:8*N/16)))*(max(temp1(8*N/16-200:8*N/16)));
R=[temp1 temp2];
y=A*sin(2*pi*f*t).*R;
for n=2:2:40
y=y+A*sin(n*pi*f*t)*0.25^(n/3).*R;
end
for n=1:20
y=y+sin(2^(-n)*pi*f*t)*0.35*(n/10).*R;
end
end
%% 以下两个表述不太规范,大家理解他们的时长即可。
function [y]=cmps3(f,A)
A=0.4*A;
fs=48000;
r=-2.8;
t=1/fs:1/fs:0.96;
N=length(t);
r1=-3.5;
r2=-1.25;
temp1=exp(r1*t(1:8*N/16));
temp2=(exp(r2*t(1:8*N/16)))*(max(temp1(8*N/16-200:8*N/16)));
R=[temp1 temp2];
y=A*sin(2*pi*f*t).*R;
for n=2:2:40
y=y+A*sin(n*pi*f*t)*0.18^(n/4.5).*R;
end
for n=1:20
y=y+sin(2^(-n)*pi*f*t)*0.1*(n/10).*R;
end
end
function [y]=cmps5(f,A)
fs=48000;
t=1/fs:1/fs:0.48;
N=length(t);
r1=-4;
r2=-1;
temp1=exp(r1*t(1:8*N/16));
temp2=(exp(r2*t(1:8*N/16)))*(max(temp1(8*N/16-2000:8*N/16)));
R=[temp1 temp2];
y=A*sin(2*pi*f*t).*R;
for n=2:2:40
y=y+A*sin(n*pi*f*t)*0.25^(n/3).*R;
end
for n=1:20
y=y+sin(2^(-n)*pi*f*t)*0.14*(n/10).*R;
end
end
点个赞再走哈~