生活随笔
收集整理的這篇文章主要介紹了
matlab创作歌曲——《月半小夜曲》
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
matlab創(chuàng)作歌曲——《月半小夜曲》
下面是程序(可直接復(fù)制粘貼運行)
PS:低版本的matlab需要單獨保存兩個function函數(shù),然后運行
%%%% 演奏《月半小夜曲》%%%%
clear all;clc;
fs = 48000; % 采樣頻率%% 各個音對應(yīng)的頻率
aa = 440 * 2.^(([1 : 36] - 22) / 12);
aa1 = 440 * 2.^(([1 : 12] - 34) / 12);
aa2 = 440 * 2.^(([1 : 12] + 14) / 12);
mi = 41.204;
so = 49.001;
la = 55.001;
xi = 61.737;%% tone1是唱音,tone2是伴奏
tone1 = [0 0 0 aa(17) aa(25) aa(24) aa(25) aa(17) aa(17) aa(25) aa(24) ...aa(25) aa(18) aa(15) aa(24) aa(22) aa(25) aa(15) aa(15) aa(20) aa(18) ...aa(18) aa(17) aa(15) aa(17) aa(17) aa(25) aa(24) aa(25) aa(17) aa(17) aa(22) aa(25) ...aa(29) aa(27) aa(27) aa(24) aa(25) aa(27) aa(29) aa(21) ...aa(24) aa(22) aa(17) aa(17) aa(25) aa(24) aa(25) aa(17) aa(17) aa(20) ...aa(20) aa(22) aa(18) aa(15) aa(24) aa(22) aa(24) aa(15) aa(15) aa(20) aa(18) ...aa(18) aa(20) aa(17) aa(17) aa(25) aa(24) aa(25) aa(17) aa(17) aa(22) aa(25) ...aa(29) aa(27) aa(27) aa(25) aa(25) aa(25) aa(24) aa(27) aa(25) ...aa(25) aa(24) aa(17) aa(17) aa(25) aa(24) aa(25) aa(17) aa(17) aa(17) aa(20) ...aa(20) aa(22) aa(18) aa(15) aa(24) aa(22) aa(24) aa(15) aa(15) aa(20) aa(18) ...aa(18) aa(18) aa(20) aa(17) aa(17) aa(25) aa(24) aa(25) aa(25) aa(17) aa(17) aa(22) aa(25) ...aa(29) aa(27) aa(27) aa(25) aa(25) aa(25) aa(24) aa(24) aa(25) ...aa(24) aa(22) aa(34) aa(36) aa2(1) aa2(1) aa2(3) aa(36) aa(34) ...aa(32) aa(29) aa(32) aa(34) aa(34) aa(36) aa2(1) aa(36) aa2(1) ...aa2(6) aa2(5) aa2(3) aa2(5) 0 aa(24) aa(25) aa(27) ... aa(29) aa(25) aa(29) aa(25) aa(29) aa(25) aa(27) aa(29) ...aa(32) aa(30) aa(30) aa(27) aa(25) aa(24) aa(22) aa(20) aa(20) aa(24) aa(27) ...aa(30) aa(29) aa(27) aa(29) aa(17) aa(22) aa(24) aa(25) aa(24) aa(25) aa(24) aa(22) aa(24) aa(25) ...aa(29) aa(27) aa(27) aa(27) aa(29) aa(27) aa(25) aa(25) aa(27) aa(25) aa(24) aa(24) aa(25) ...aa(24) aa(22) 0];tone2 = [0 0 0 0 aa1(10) aa(5) aa(10) aa(12) aa(13) ...aa1(3) aa1(10) aa(3) aa(5) aa(6) aa1(8) aa(3) aa(8) aa(10) aa(12) ...aa1(1) aa1(8) aa(1) aa1(5) aa1(12) aa(5) la aa1(5) aa1(10) aa(1) aa(5) aa(10) aa(5) ...aa1(3) aa1(10) aa(3) aa(6) aa(10) aa(15) aa(10) aa(6) aa1(5) aa1(12) aa(5) aa(9) aa(12) ...aa1(10) aa(5) aa(10) aa(12) aa(13) aa1(10) aa(5) aa(10) aa(5) aa(13) ...aa1(3) aa1(10) aa(3) aa(6) aa(10) aa(15) aa1(8) aa(3) aa(8) aa(10) aa(12) ...aa1(1) aa1(8) aa(1) aa1(5) aa1(12) aa(5) aa1(10) aa(5) aa(10) aa(12) aa(13) ...aa1(3) aa1(10) aa(3) aa(5) aa(6) aa(1) aa(6) aa(13) aa(6) aa1(12) aa(3) aa(6) ...aa1(5) aa1(12) aa(3) aa(5) aa(9) la aa1(5) aa1(10) aa(1) aa(5) aa(10) aa(5) ...aa1(3) aa1(10) aa(3) aa(6) aa(10) so aa1(3) aa1(8) aa(3) aa(8) ...aa1(1) aa1(8) aa(1) aa(5) aa1(5) aa1(12) aa(5) la aa1(5) aa1(10) aa(1) aa(5) aa(10) ...aa1(3) aa1(10) aa(3) aa(5) aa(6) aa(3) aa1(6) aa(1) aa(10) aa(1) aa1(5) aa1(12) aa(9) ...la aa1(5) aa1(10) aa1(12) aa(1) aa1(6) aa(1) aa(6) aa(10) aa1(8) aa(3) aa(12) ...aa1(5) aa1(12) aa(8) la aa(5) aa(13) aa1(6) aa(1) aa(6) aa(10) xi aa1(12) aa(1) aa(6) ...aa1(5) aa1(12) aa(3) aa(5) aa(10) aa(5) aa(3) aa1(12) aa(9) aa(5) aa1(12) aa1(9) aa1(5) xi mi ...so aa(1) aa(1) aa(1) ...aa1(3) aa(1) aa(1) aa(1) so aa(8) aa(8) aa(8) ...aa1(1) aa(1) aa1(5) aa(9) so aa(1) aa(1) aa(1) ...aa1(3) aa(3) aa(3) aa(3) aa1(6) aa(1) aa(6) aa1(5) aa1(12) aa(5) ...la aa1(5) aa1(12) aa(1) aa(5) aa1(12) aa(1) aa(5) aa1(5) aa1(12) aa(5) aa1(12) aa1(12)];%% 節(jié)奏
rym1 = [1 1 1/2*ones(1, 4) 3/2 1 1/2 1/2 1/2 3/2 1 1/2 1/2 1/2 3/2 1 1/2 1/2 1/2 ...3/2 1/4 1/4 1/2*ones(1, 4) 3/2 1 1/2 1/2 1/2 3/2 1/2 2 3/2 1/4 1/4 1 1 ...1/2 2 1/4 1/4 1/2 1/2 3/2 3/2 1/2 1/2 3/2 1/2*ones(1, 5) 3/2 1 1/2 1/2 1/2 ...3/2 1/2*ones(1, 5) 3/2 1 1/2*ones(1, 3) 3/2 1/2 3/2 1/2 3/2 1/2 1 1/2 1/2 ...1/2 2 1/4 1/4 1/2 1/2 3/2 1/2 1 1/2 1/2 3/2 1/2 1/2*ones(1, 4) 3/2 1/2 1 1/2 1/2 ...1 1/2*ones(1, 6) 3/2 1/2 1 1/3 1/3 1/3 3/2 1/2 3/2 1/2 3/2 1/2 1 1/2 1/2 ...1/2 2 1/2 1/2 1/2 2 1 1/2 1/2 1 1/2 1/4 5/4 1/2 1/2 2 1 1 ...7/2 1/4 1/4 2 1/2*ones(1, 7) 1/4 3/4 1/2 1/2 1/2 ...3/2 1/2 2 1/2 1/2 1/2 1/4 3/4 1/2 1/2 1/2 1 1/2 1/4 3/4 1/2*ones(1, 6) 1 1/2 1/2 1/2 ...3/2 1/2 5/4 1/4 1/4 1/4 5/4 1/4 1/4 1/4 1 1/2 1/2 1/2 7/2 4]*fs;rym2 = [1 1 1 1 1/2*ones(1, 4) 2 1/2*ones(1, 4) 2 1/2*ones(1, 4) 2 ...1/2 1/2 1 1/2 1/2 1 1/2*ones(1, 6) 1 1/2*ones(1, 12) 2 ...1/2*ones(1, 4) 2 1/2*ones(1, 4) 2 1/2*ones(1, 5) 3/2 1/2*ones(1, 4) 2 ...1/2 1/2 1 1/2 1/2 1 1/2*ones(1, 4) 2 1/2*ones(1, 4) 2 1/2*ones(1, 6) 1 ...1/2*ones(1, 4) 2 1/2*ones(1, 6) 1 1/2*ones(1, 4) 2 1/2*ones(1, 4) 2 ...1/2*ones(1, 6) 1 1/2*ones(1, 4) 1 1 1/2*ones(1, 4) 1 1 1/2*ones(1, 6) 1 ...1/2*ones(1, 4) 2 1/2*ones(1, 6) 1 1/2 1/2 1 1/2 1/2 1 1/2*ones(1, 8) ...1/2*ones(1, 6) 1 1/2 1/4*ones(1, 6) 2 1 1 1 1 ...ones(1, 16) ...ones(1, 4) 1/2 1/2 1 1/2 1/2 1 1/2*ones(1, 12) 2].*fs;%% 加包絡(luò)
x1 = [];
x2 = [];for n = 1:length(tone1)M = length(x1);t = [];t = 1 : rym1(n);t = t ./ fs;N = length(t);a1 = (sin(2*pi*tone1(n)*t/fs) + sin(4*pi*tone1(n)*t) + 0.9217*sin(6*pi*tone1(n)*t) + ...0.2318*sin(8*pi*tone1(n)*t) + 0.0524*sin(10*pi*tone1(n)*t) + 0.1355*sin(12*pi*tone1(n)*t) + ...0.1797*sin(14*pi*tone1(n)*t) + 0.09109*sin(16*pi*tone1(n)*t) + 0.0055*sin(18*pi*tone1(n)*t) + ...0.1127*sin(20*pi*tone1(n)*t)).*y1(N)*0.92;x1(M+1 : M+N) = a1;
endfor n = 1:length(tone2)M = length(x2);t = 1 : rym2(n);t = t ./ fs;N = length(t);a2 = (0.6882*sin(2*pi*tone2(n)*t) + sin(4*pi*tone2(n)*t) + 0.9217*sin(6*pi*tone2(n)*t) + ...0.2318*sin(8*pi*tone2(n)*t) + 0.0524*sin(10*pi*tone2(n)*t) + 0.1355*sin(12*pi*tone2(n)*t) + ...0.1797*sin(14*pi*tone2(n)*t) + 0.09109*sin(16*pi*tone2(n)*t) + 0.0055*sin(18*pi*tone2(n)*t) + ...0.1127*sin(20*pi*tone2(n)*t)).*y2(N)*0.92; x2(M+1 : M+N) = a2;
end%% 唱音和伴奏結(jié)合
x1_left = [x1 zeros(1,1000)];
x2_left = [x2 zeros(1,1000)];
x1_right = [zeros(1,1000) x1];
x2_right = [zeros(1,1000) x2];x_left = x1_left + 3*x2_left;
x_right = x1_right + 3*x2_right;
x_left = x_left / max(x_left);
x_right = x_right / max(x_right);
% melody = [x_left;x_right];
% sound(melody, fs); %% 增加混音的效果
violin = x_left;
% Blank Block
blkblock = zeros(1, fs/100);
% violin1
v1 = [violin blkblock blkblock];
% violin2
v2 = [blkblock 0.5*violin blkblock];
% violin3
v3 = [blkblock blkblock 0.25*violin];
% Get dirty
s = v1 + v2 + v3;
s_left = [s zeros(1,1000)];
s_right = [zeros(1,1000) s];
s_left = s_left / max(s_left);
s_right = s_right / max(s_right);
song = [s_left;s_right]; % 左右聲道合并
sound(song, fs); % filename = '月半小夜曲.wav';
% audiowrite(filename, s_left, fs);%% 包絡(luò)函數(shù)
function shap_y1 = y1(ylen)
yt = (1 : ylen)/0.96;
shap_y1 = (5*((yt./48000).^(1/2)))./exp(yt./48000*2);
shap_y1 = shap_y1/max(shap_y1);
return
endfunction shap_y2 = y2(ylen)
yt = (1 : ylen)/0.96;
shap_y2 = (5*((yt./48000).^(1/15)))./exp(yt./48000*2);
shap_y2 = shap_y2/max(shap_y2);
return
end
總結(jié)
以上是生活随笔為你收集整理的matlab创作歌曲——《月半小夜曲》的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。