% bad apple乐谱写成matlab代码,5#不知道是啥用 so1f 代替了。想听的话找个matlab全文复制跑一边就行了。
% Have fun
fs = 44100; % sample rate
dt = 1/fs;
T16 = 0.125;
t16 = [0:dt:T16];
[temp k] = size(t16);
t4 = linspace(0,4*T16,4*k);
t8 = linspace(0,2*T16,2*k);
[temp i] = size(t4);
[temp j] = size(t8);
% Modification functions
mod4 = sin(pi*t4/t4(end));
mod8 = sin(pi*t8/t8(end));
mod16 = sin(pi*t16/t16(end));
f0 = 2*146.8; % reference frequency
ScaleTable = [2/3 3/4 5/6 15/16 ...
1 9/8 5/4 4/3 3/2 5/3 9/5 15/8 ...
2 9/4 5/2 8/3 3 10/3 15/4 4 ...
1/2 9/16 5/8];
% 1/4 notes
do0f = mod4.*cos(2*pi*ScaleTable(21)*f0*t4);
re0f = mod4.*cos(2*pi*ScaleTable(22)*f0*t4);
mi0f = mod4.*cos(2*pi*ScaleTable(23)*f0*t4);
fa0f = mod4.*cos(2*pi*ScaleTable(1)*f0*t4);
so0f = mod4.*cos(2*pi*ScaleTable(2)*f0*t4);
la0f = mod4.*cos(2*pi*ScaleTable(3)*f0*t4);
ti0f = mod4.*cos(2*pi*ScaleTable(4)*f0*t4);
do1f = mod4.*cos(2*pi*ScaleTable(5)*f0*t4);
re1f = mod4.*cos(2*pi*ScaleTable(6)*f0*t4);
mi1f = mod4.*cos(2*pi*ScaleTable(7)*f0*t4);
fa1f = mod4.*cos(2*pi*ScaleTable(8)*f0*t4);
so1f = mod4.*cos(2*pi*ScaleTable(9)*f0*t4);
la1f = mod4.*cos(2*pi*ScaleTable(10)*f0*t4);
tb1f = mod4.*cos(2*pi*ScaleTable(11)*f0*t4);
ti1f = mod4.*cos(2*pi*ScaleTable(12)*f0*t4);
do2f = mod4.*cos(2*pi*ScaleTable(13)*f0*t4);
re2f = mod4.*cos(2*pi*ScaleTable(14)*f0*t4);
mi2f = mod4.*cos(2*pi*ScaleTable(15)*f0*t4);
fa2f = mod4.*cos(2*pi*ScaleTable(16)*f0*t4);
so2f = mod4.*cos(2*pi*ScaleTable(17)*f0*t4);
la2f = mod4.*cos(2*pi*ScaleTable(18)*f0*t4);
ti2f = mod4.*cos(2*pi*ScaleTable(19)*f0*t4);
do3f = mod4.*cos(2*pi*ScaleTable(20)*f0*t4);
blkf = zeros(1,i);
% 1/8 notes
fa0e = mod8.*cos(2*pi*ScaleTable(1)*f0*t8);
so0e = mod8.*cos(2*pi*ScaleTable(2)*f0*t8);
la0e = mod8.*cos(2*pi*ScaleTable(3)*f0*t8);
ti0e = mod8.*cos(2*pi*ScaleTable(4)*f0*t8);
do1e = mod8.*cos(2*pi*ScaleTable(5)*f0*t8);
re1e = mod8.*cos(2*pi*ScaleTable(6)*f0*t8);
mi1e = mod8.*cos(2*pi*ScaleTable(7)*f0*t8);
fa1e = mod8.*cos(2*pi*ScaleTable(8)*f0*t8);
so1e = mod8.*cos(2*pi*ScaleTable(9)*f0*t8);
la1e = mod8.*cos(2*pi*ScaleTable(10)*f0*t8);
tb1e = mod8.*cos(2*pi*ScaleTable(11)*f0*t8);
ti1e = mod8.*cos(2*pi*ScaleTable(12)*f0*t8);
do2e = mod8.*cos(2*pi*ScaleTable(13)*f0*t8);
re2e = mod8.*cos(2*pi*ScaleTable(14)*f0*t8);
mi2e = mod8.*cos(2*pi*ScaleTable(15)*f0*t8);
fa2e = mod8.*cos(2*pi*ScaleTable(16)*f0*t8);
so2e = mod8.*cos(2*pi*ScaleTable(17)*f0*t8);
la2e = mod8.*cos(2*pi*ScaleTable(18)*f0*t8);
ti2e = mod8.*cos(2*pi*ScaleTable(19)*f0*t8);
do3e = mod8.*cos(2*pi*ScaleTable(20)*f0*t8);
blke = zeros(1,j);
% 1/16 notes
fa0s = mod16.*cos(2*pi*ScaleTable(1)*f0*t16);
so0s = mod16.*cos(2*pi*ScaleTable(2)*f0*t16);
la0s = mod16.*cos(2*pi*ScaleTable(3)*f0*t16);
ti0s = mod16.*cos(2*pi*ScaleTable(4)*f0*t16);
do1s = mod16.*cos(2*pi*ScaleTable(5)*f0*t16);
re1s = mod16.*cos(2*pi*ScaleTable(6)*f0*t16);
mi1s = mod16.*cos(2*pi*ScaleTable(7)*f0*t16);
fa1s = mod16.*cos(2*pi*ScaleTable(8)*f0*t16);
so1s = mod16.*cos(2*pi*ScaleTable(9)*f0*t16);
la1s = mod16.*cos(2*pi*ScaleTable(10)*f0*t16);
tb1s = mod16.*cos(2*pi*ScaleTable(11)*f0*t16);
ti1s = mod16.*cos(2*pi*ScaleTable(12)*f0*t16);
do2s = mod16.*cos(2*pi*ScaleTable(13)*f0*t16);
re2s = mod16.*cos(2*pi*ScaleTable(14)*f0*t16);
mi2s = mod16.*cos(2*pi*ScaleTable(15)*f0*t16);
fa2s = mod16.*cos(2*pi*ScaleTable(16)*f0*t16);
so2s = mod16.*cos(2*pi*ScaleTable(17)*f0*t16);
la2s = mod16.*cos(2*pi*ScaleTable(18)*f0*t16);
ti2s = mod16.*cos(2*pi*ScaleTable(19)*f0*t16);
do3s = mod16.*cos(2*pi*ScaleTable(20)*f0*t16);
blks = zeros(1,k);
%%%%%%%%%%%%以上都是基础设置%%%%%%%%%%%%%%
% Blank Block 空白
blkblock = [blkf blkf blkf blkf blkf blkf blkf blkf...
blkf blkf blkf blkf blkf blkf blkf blkf];
% Base Melody 基调 可以没有
%cello = [blkf blkf blkf blkf blkf blkf blkf blkf...
%blkf blkf blkf blkf blkf blkf blkf blkf];
%cello = [do1f do1f so0f so0f la0f la0f mi0f mi0f...
%fa0f fa0f do0f do0f fa0f fa0f so0f so0f];
% So-FUCKING-Long Melody 简谱(正文) 确实长(应该在word里替换一下再输出嘛)
%violin = [re1e mi1e fa1e so1e la1e...
%re2e do2e la1e re1e...
%la1e so1e fa1e mi1e...
%re1e mi1e fa1e so1e la1e...
%so1e fa1e mi1e re1e fa1e mi1e re1e do1e mi1e...
%re1e mi1e fa1e so1e la1e...
%]; %C调版?
violin = [la1e ti1e do2e re2e mi2e blke la2e so2e mi2e blke la1e blke mi2e re2e do2e ti2e la1e ti1e do2e re2e mi2e blke re2e do2e ti1e la1e ti1e do2e ti1e la1e so1e ti1e ...
la1e ti1e do2e re2e mi2e blke la2e so2e mi2e blke la1e blke mi2e re2e do2e ti2e la1e ti1e do2e re2e mi2e blke re2e do2e ti1e blke do2e blke re2e blke mi2e blke ...
la1e ti1e do2e re2e mi2e blke la2e so2e mi2e blke la1e blke mi2e re2e do2e ti2e la1e ti1e do2e re2e mi2e blke re2e do2e ti1e la1e ti1e do2e ti1e la1e so1e ti1e ...
la1e ti1e do2e re2e mi2e blke la2e so2e mi2e blke la1e blke mi2e re2e do2e ti2e la1e ti1e do2e re2e mi2e blke re2e do2e ti1e blke do2e blke re2e blke mi2e blke ...
so2e la2e mi2e re2e mi2e blke re2e mi2e so2e la2e mi2e re2e mi2e blke re2e mi2e re2e do2e ti1e so1e la1e blke so1e la1e ti1e do2e re2e mi2e la1e blke mi2e so2e ...
so2e la2e mi2e re2e mi2e blke re2e mi2e so2e la2e mi2e re2e mi2e blke re2e mi2e re2e do2e ti1e so1e la1e blke so1e la1e ti1e do2e re2e mi2e la1e blke mi2e so2e ...
so2e la2e mi2e re2e mi2e blke re2e mi2e so2e la2e mi2e re2e mi2e blke re2e mi2e re2e do2e ti1e so1e la1e blke so1e la1e ti1e do2e re2e mi2e la1e blke mi2e so2e ...
so2e la2e mi2e re2e mi2e blke re2e mi2e so2e la2e mi2e re2e mi2e blke la2e ti2e do3e ti2e la2e so2e mi2e mi2e re2e mi2e re2e do2e ti1e so1e la1e blke mi2e so2e ...
so2e la2e mi2e re2e mi2e blke re2e mi2e so2e la2e mi2e re2e mi2e blke re2e mi2e re2e do2e ti1e so1e la1e blke so1e la1e ti1e do2e re2e mi2e la1e blke mi2e so2e ...
so2e la2e mi2e re2e mi2e blke re2e mi2e so2e la2e mi2e re2e mi2e blke re2e mi2e re2e do2e ti1e so1e la1e blke so1e la1e ti1e do2e re2e mi2e la1e blke ...
];
% cello
c1 = [cello cello cello cello cello...
cello cello cello cello cello...
cello cello cello cello cello...
cello cello cello cello cello...
cello cello cello blkf];
% violin1
v1 = [blkblock violin blkblock blkblock];
% violin2
v2 = [blkblock blkblock violin blkblock];
% violin3
v3 = [blkblock blkblock blkblock violin];
% Get dirty
%s = c1;
%s = c1+v1+v2+v3;
%s = s/max(s); %归一化
%sound(s,fs);
violin = violin/max(violin);%无基调%归一化
sound(violin,fs);