MATLAB版成都

闲暇之余,用MATLAB制作出了《成都》,下面是源码,大家喜欢的花话可以听听大笑

l_dao=262;        %将“l_dao”宏定义为低音“1”的频率262Hz
l_re =286;        %将“l_re”宏定义为低音“2”的频率286Hz
l_mi =311;        %将“l_mi”宏定义为低音“3”的频率311Hz
l_fa =349;        %将“l_fa”宏定义为低音“4”的频率349Hz
l_sao= 392;        %将“l_sao”宏定义为低音“5”的频率392Hz
l_la =440;        %将“l_a”宏定义为低音“6”的频率440Hz
l_xi =494;        %将“l_xi”宏定义为低音“7”的频率494Hz
%以下是C调中音的音频宏定义
dao= 523;        %将“dao”宏定义为中音“1”的频率523Hz
re= 587;        %将“re”宏定义为中音“2”的频率587Hz
mi= 659;        %将“mi”宏定义为中音“3”的频率659Hz
fa= 698;        %将“fa”宏定义为中音“4”的频率698Hz
sao= 784;        %将“sao”宏定义为中音“5”的频率784Hz
la= 880;        %将“la”宏定义为中音“6”的频率880Hz
xi= 987;        %将“xi”宏定义为中音“7”的频率523H      
%以下是C调高音的音频宏定义
h_dao= 1046;        %将“h_dao”宏定义为高音“1”的频率1046Hz
h_re= 1174;        %将“h_re”宏定义为高音“2”的频率1174Hz
h_mi= 1318;        %将“h_mi”宏定义为高音“3”的频率1318Hz
h_fa= 1396;        %将“h_fa”宏定义为高音“4”的频率1396Hz
h_sao= 1567;        %将“h_sao”宏定义为高音“5”的频率1567Hz
h_la= 1760;        %将“h_la”宏定义为高音“6”的频率1760Hz
h_xi= 1975;        %将“h_xi”宏定义为高音“7”的频率1975Hz
zero=0;
%% 简谱 <成都>
s=[sao sao sao mi sao la la mi dao dao re sao mi mi,...
   sao sao sao mi sao la la mi dao dao re mi re dao sao mi re,...
   dao zero zero l_sao dao dao re mi sao mi mi mi l_sao dao re dao l_la,...
   l_sao l_sao l_sao dao dao re mi la mi sao sao mi re dao re sao,...
   mi re re mi sao sao mi sao la h_dao la la mi re dao re mi,...
   mi mi l_sao sao zero mi mi re dao dao dao l_sao re dao mi re dao,...
   dao dao dao zero zero l_sao dao dao re mi sao mi mi mi l_sao,...
   dao dao re dao l_la l_sao l_sao l_sao dao dao re mi la mi sao sao mi re,...
   dao re sao mi re re mi sao sao sao mi sao la h_dao la mi,...
   re dao re mi mi mi mi sao zero zero mi re l_la dao dao re,...
   dao dao dao zero zero mi sao sao sao mi sao la la mi re,...
   dao re sao mi zero zero mi sao sao mi sao la la mi re,...
   dao dao re mi dao dao l_la l_la dao dao re re sao mi mi mi sao,...
   la sao la mi re mi mi dao re dao re l_la re mi re dao,...
   re re re re mi la sao sao sao zero mi sao sao sao mi sao,...
   la la zero mi re mi re dao re sao mi mi sao sao mi sao,...
   la la mi re dao dao dao re mi re dao zero mi sao la sao,...
   mi zero mi sao la sao mi mi dao re re re dao re,...
   l_la dao dao dao re la sao sao sao zero zero l_sao dao,...
   dao re mi sao mi mi mi l_sao,dao dao re dao l_la l_sao l_sao l_sao dao,...
   dao re mi la mi sao sao mi re dao re sao mi re re mi sao sao,...
   sao mi sao la h_dao la mi re dao re mi mi mi mi sao,...
   zero zero mi re l_la dao dao re dao dao dao zero zero mi sao sao,...
   sao mi sao la la mi re dao re sao mi zero zero mi sao,...
   sao mi sao la la mi re dao dao re mi dao dao l_la l_la dao dao,...
   re re sao mi mi mi sao la sao la mi re mi mi dao re dao,...
   re l_la re mi re dao re re re re mi la sao sao la sao mi,...
   re mi la sao zero zero mi sao sao sao mi sao la la mi re dao,...
   re sao mi zero zero mi sao sao mi sao la la mi re dao dao,...
   re mi dao dao l_la l_la dao dao re re sao mi mi mi sao la sao,...
   la mi re mi mi dao re dao re l_la re mi re dao re re re,...
   re mi la sao sao sao sao sao sao sao sao sao];

delay=3/8*[2 1 1 1 1 2 1 3 2 1 2 1 3 3,...
    2 1 1 1 1 2 1 3 2 1 1 1 1 2 1 1 1,...
    3 1 1 1 3 2 1/2 1/2 1 1 1 1 2 1 3 1 1 1,...
    3 2 1 3 2 1 1 1 1 1 1 1 3 2 1,...
    1 2 2 1 3 1 1 1 1 1 1 2 1 2 1 2 1,...
    3 2 1 3 1 1 1 1 1 1 2 1 2 1 2 1/2 1/2,...
    3 3 3 1 1 1 3 2 1/2 1/2 1 1 1 2 1,...
    2 1 1 1 1 3 2 1 3 2 1/2 1/2 1 1 1 1 1 1,...
    3 2 1 1 2 2 1 2 1 1 1 1 2 1 2 1,...
    2 1 2 1 3 2 1 3 1 1 1/2 1/2 1 2 2 1,...
    3 3 3 1 1 1 2 1 1 1 1 2 1 2 1,...
    3 2 1 3 1 1 1 3 1 1 1 2 1 2 1,...
    2 1 2 1 3 2 1/2 1/2 2 1 1 1 1 3 2 1/2 1/2,...
    2 1 1 1 1 3 2 1 2 1 2 1 2 1 2 1,...
    1 1 1 1 1 1 3 3 3 1 1 1 3 1 1 1,...
    2 1 1 1 1 1 1 1 2 1 3 3 3 1 1 1,...
    2 1 1 1 1 2 1 1 1 1 3 1 1 1 3 3,...
    3 1 1 1 3 3 3 2 1 2 1 2 1 3,...
    3 2 1 1 1 1 3 3 3 1 1 1 3,...
    2 1/2 1/2 1 1 1 2 1 2 1 1 1 1 3 2 1 3,...
    2 1/2 1/2 1 1 1 1 1 1 3 2 1 1 2 2 1 2 1,...
    1 1 1 2 1 2 1 2 1 2 1 3 2 1 3,...
    1 1 1/2 1/2 1 2 2 1 3 3 3 1 1 1 2 1,...
    1 1 1 2 1 2 1 3 2 1 3 1 1 1 3,...
    1 1 1 2 1 2 1 2 1 2 1 3 2 1/2 1/2 2 1,...
    1 1 1 3 2 1/2 1/2 2 1 1 1 1 3 2 1 2 1,...
    2 1 2 1 2 1 1 1 1 1 1 1 3 3 1 1 1,...
    1 1 1 3 1 1 1 2 1 1 1 1 2 1 2 1 3,...
    2 1 3 1 1 1 3 1 1 1 2 1 2 1 2 1,...
    2 1 3 2 1 2 1 1 1 1 2 1 2 1 3,...
    2 1 3 1 1 1 3 1 1 1 2 1 2 1 2 1,...
    2 1 3 2 1/2 1/2 2 1 1 1 1 3 2 1/2 1/2 2 1,...
    1 1 1 3 2 1 2 1 2 1 2 1 2 1 1 1 1,...
    1 1 1 3 3 3 3 3 3 3 3 3];% 1];
%% 设置采样精度
fs=84100;
%% 生成波形
wav=[];
for i=1:length(s)
     tune_max=ceil(delay(i));
     for j=[1 2 4 6]
         eval(['tune',num2str(j),'=linspace(0,2*pi*s(i)*',num2str(j),'/2,fs);']);
     end
%      tune=linspace(0,2*pi*s(i),fs);
%      tune2=linspace(0,2*pi*s(i)*2,fs);
%      tune3=linspace(0,2*pi*s(i)*3,fs);
     tune=[tune1;tune2;tune4;tune6];%;tune3;tune4;tune5;tune6;tune7;tune8;tune9;tune10;tune11;tune12];
     eq=[0  0.5 0.5 1];
     tune=eq*sin(tune);
     tune=repmat(tune,1,tune_max);
     tune=tune(1:round( (length(tune)*delay(i)/tune_max)) );
     %tune=tune.*exp(linspace(log(1),log(0.02),length(tune)));
     tune=tune.*sin(linspace(0,pi,length(tune)));
     wav=[wav  tune];
end
wav=wav/max(wav)*0.1; %限幅 音量
sound(wav,fs);


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值