近来很流行的《最炫民族风》,用Matlab可以直接播放!
%% Thanks to the original coder! I just modify the original CANON scripts. Hao Zheng
clear all; close all; clc;
%% Initialization
fs = 44100; % sample rate
dt = 1/fs;
T16 = 0.125;
t16 = [0:dt:T16];
[temp k] = size(t16); %temp =1; k=5514
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 %2*146.8=294Hz = D dadiao
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); % wt (w=2*pi*f)
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);
%% Melody
zuixuanminzufeng = [
mi2f la1e la1e do2f mi2f re2e re2s mi2s re2e do2e re2e do2e la1f...
mi2f la1e la1e do2f mi2f so2e re2s mi2s re2e do2e re2e do2e ti1e so1e...
mi2f la1e la1e do2f mi2f re2e re2s mi2s re2e do2e re2e do2e la1f...
mi2f la1e la1e do2f mi2f so2e mi2e so2e la2e la2f blkf...%%
la1f la1e so1e la1f la1e do2e do2f re2e do2e la1f blkf...
do2f do2e so1e do2e re2e mi2e so2e so2e mi2e re2f mi2f blkf...
la2e la2e la2e so2e mi2e mi2f do2e la1e la1e la1e mi2e re2f blkf...
mi2e mi2e so2e mi2e re2e mi2e re2e do2e la1f so1f la1f blkf...%%
mi2e mi2e so2e mi2e mi2e so2e so2e la2e do3e la2e so2f la2f blkf...
la1f la1e so1e la1f do2f re2e mi2s re2s do2e re2e mi2f blkf...
la1e la2e la2e so2e re2e mi2s re2s do2e re2e mi2f blkf ...
do3e do3e do3e blkf...
do2e la1e la1e do2e re2f so1e so1e mi2e so2e mi2e re2e do2f blkf...
la1e do2e re2e mi2e re2e do2e so1e mi1e la1f blkf...
do3e do3e do3e blkf...%%
la1f la1e so1e la1f do2f re2e mi2s re2s do2e re2e mi2f blkf...
la1e la2e la2e so2e re2e mi2s re2s do2e re2e mi2f blkf ...
do3e do3e do3e blkf...
do2e
la1e la1e do2e re2f so1e so1e mi2e so2e mi2e re2e do2f do2e do2e la1e
do2e re2e mi2e so2e mi2e mi2e so2e la2f la2f la2f blkf...%%
la2e la2s la2e la2e la2e so2s mi2e re2e re2e re2s mi2e so2s mi2e re2s do2e la1s...%%
la1f la1e so1e la1f do2f re2e mi2s re2s do2e re2e mi2f blkf...
la2e so2e mi2e re2e so2e mi2e re2e do2e do2f blkf...
la1f la1e so1e la1f do2f re2e mi2s re2s do2e re2e mi2f blkf...
la1e la2e la2e so2e re2e mi2s re2s do2e re2e mi2f blkf ...
do3e do3e do3e blkf...
do2e la1e la1e do2e re2f so1e so1e mi2e so2e mi2e re2e do2f blkf...
la1e do2e re2e mi2e so2e mi2e mi2e so2e la2f la2f la2f blkf...
];
%% Play
music=zuixuanminzufeng;
music = music/max(music);
sound(music,fs);