声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1886|回复: 7

[综合讨论] 在别处看到的,matlab版卡农!

[复制链接]
发表于 2012-5-23 09:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
  1. % Cripple Pachebel's Canon on Matlab
  2. % Have fun
  3. fs = 44100; % sample rate
  4. dt = 1/fs;
  5. T16 = 0.125;
  6. t16 = [0:dt:T16];
  7. [temp k] = size(t16);
  8. t4 = linspace(0,4*T16,4*k);
  9. t8 = linspace(0,2*T16,2*k);
  10. [temp i] = size(t4);
  11. [temp j] = size(t8);
  12. % Modification functions
  13. mod4 = sin(pi*t4/t4(end));
  14. mod8 = sin(pi*t8/t8(end));
  15. mod16 = sin(pi*t16/t16(end));
  16. f0 = 2*146.8; % reference frequency
  17. ScaleTable = [2/3 3/4 5/6 15/16 ...
  18.               1 9/8 5/4 4/3 3/2 5/3 9/5 15/8 ...
  19.               2 9/4 5/2 8/3 3 10/3 15/4 4 ...
  20.               1/2 9/16 5/8];
  21. % 1/4 notes
  22. do0f = mod4.*cos(2*pi*ScaleTable(21)*f0*t4);
  23. re0f = mod4.*cos(2*pi*ScaleTable(22)*f0*t4);
  24. mi0f = mod4.*cos(2*pi*ScaleTable(23)*f0*t4);
  25. fa0f = mod4.*cos(2*pi*ScaleTable(1)*f0*t4);
  26. so0f = mod4.*cos(2*pi*ScaleTable(2)*f0*t4);
  27. la0f = mod4.*cos(2*pi*ScaleTable(3)*f0*t4);
  28. ti0f = mod4.*cos(2*pi*ScaleTable(4)*f0*t4);
  29. do1f = mod4.*cos(2*pi*ScaleTable(5)*f0*t4);
  30. re1f = mod4.*cos(2*pi*ScaleTable(6)*f0*t4);
  31. mi1f = mod4.*cos(2*pi*ScaleTable(7)*f0*t4);
  32. fa1f = mod4.*cos(2*pi*ScaleTable(8)*f0*t4);
  33. so1f = mod4.*cos(2*pi*ScaleTable(9)*f0*t4);
  34. la1f = mod4.*cos(2*pi*ScaleTable(10)*f0*t4);
  35. tb1f = mod4.*cos(2*pi*ScaleTable(11)*f0*t4);
  36. ti1f = mod4.*cos(2*pi*ScaleTable(12)*f0*t4);
  37. do2f = mod4.*cos(2*pi*ScaleTable(13)*f0*t4);
  38. re2f = mod4.*cos(2*pi*ScaleTable(14)*f0*t4);
  39. mi2f = mod4.*cos(2*pi*ScaleTable(15)*f0*t4);
  40. fa2f = mod4.*cos(2*pi*ScaleTable(16)*f0*t4);
  41. so2f = mod4.*cos(2*pi*ScaleTable(17)*f0*t4);
  42. la2f = mod4.*cos(2*pi*ScaleTable(18)*f0*t4);
  43. ti2f = mod4.*cos(2*pi*ScaleTable(19)*f0*t4);
  44. do3f = mod4.*cos(2*pi*ScaleTable(20)*f0*t4);
  45. blkf = zeros(1,i);
  46. % 1/8 notes
  47. fa0e = mod8.*cos(2*pi*ScaleTable(1)*f0*t8);
  48. so0e = mod8.*cos(2*pi*ScaleTable(2)*f0*t8);
  49. la0e = mod8.*cos(2*pi*ScaleTable(3)*f0*t8);
  50. ti0e = mod8.*cos(2*pi*ScaleTable(4)*f0*t8);
  51. do1e = mod8.*cos(2*pi*ScaleTable(5)*f0*t8);
  52. re1e = mod8.*cos(2*pi*ScaleTable(6)*f0*t8);
  53. mi1e = mod8.*cos(2*pi*ScaleTable(7)*f0*t8);
  54. fa1e = mod8.*cos(2*pi*ScaleTable(8)*f0*t8);
  55. so1e = mod8.*cos(2*pi*ScaleTable(9)*f0*t8);
  56. la1e = mod8.*cos(2*pi*ScaleTable(10)*f0*t8);
  57. tb1e = mod8.*cos(2*pi*ScaleTable(11)*f0*t8);
  58. ti1e = mod8.*cos(2*pi*ScaleTable(12)*f0*t8);
  59. do2e = mod8.*cos(2*pi*ScaleTable(13)*f0*t8);
  60. re2e = mod8.*cos(2*pi*ScaleTable(14)*f0*t8);
  61. mi2e = mod8.*cos(2*pi*ScaleTable(15)*f0*t8);
  62. fa2e = mod8.*cos(2*pi*ScaleTable(16)*f0*t8);
  63. so2e = mod8.*cos(2*pi*ScaleTable(17)*f0*t8);
  64. la2e = mod8.*cos(2*pi*ScaleTable(18)*f0*t8);
  65. ti2e = mod8.*cos(2*pi*ScaleTable(19)*f0*t8);
  66. do3e = mod8.*cos(2*pi*ScaleTable(20)*f0*t8);
  67. blke = zeros(1,j);
  68. % 1/16 notes
  69. fa0s = mod16.*cos(2*pi*ScaleTable(1)*f0*t16);
  70. so0s = mod16.*cos(2*pi*ScaleTable(2)*f0*t16);
  71. la0s = mod16.*cos(2*pi*ScaleTable(3)*f0*t16);
  72. ti0s = mod16.*cos(2*pi*ScaleTable(4)*f0*t16);
  73. do1s = mod16.*cos(2*pi*ScaleTable(5)*f0*t16);
  74. re1s = mod16.*cos(2*pi*ScaleTable(6)*f0*t16);
  75. mi1s = mod16.*cos(2*pi*ScaleTable(7)*f0*t16);
  76. fa1s = mod16.*cos(2*pi*ScaleTable(8)*f0*t16);
  77. so1s = mod16.*cos(2*pi*ScaleTable(9)*f0*t16);
  78. la1s = mod16.*cos(2*pi*ScaleTable(10)*f0*t16);
  79. tb1s = mod16.*cos(2*pi*ScaleTable(11)*f0*t16);
  80. ti1s = mod16.*cos(2*pi*ScaleTable(12)*f0*t16);
  81. do2s = mod16.*cos(2*pi*ScaleTable(13)*f0*t16);
  82. re2s = mod16.*cos(2*pi*ScaleTable(14)*f0*t16);
  83. mi2s = mod16.*cos(2*pi*ScaleTable(15)*f0*t16);
  84. fa2s = mod16.*cos(2*pi*ScaleTable(16)*f0*t16);
  85. so2s = mod16.*cos(2*pi*ScaleTable(17)*f0*t16);
  86. la2s = mod16.*cos(2*pi*ScaleTable(18)*f0*t16);
  87. ti2s = mod16.*cos(2*pi*ScaleTable(19)*f0*t16);
  88. do3s = mod16.*cos(2*pi*ScaleTable(20)*f0*t16);
  89. blks = zeros(1,k);
  90. % Blank Block
  91. blkblock = [blkf blkf blkf blkf  blkf blkf blkf blkf...
  92.             blkf blkf blkf blkf  blkf blkf blkf blkf];
  93. % Base Melody
  94. cello = [do1f do1f so0f so0f  la0f la0f mi0f mi0f...
  95.          fa0f fa0f do0f do0f  fa0f fa0f so0f so0f];
  96. % So-FUCKING-Long Melody     
  97. violin = [mi2f mi2f re2f re2f  do2f do2f ti1f ti1f...
  98.           la1f la1f so1f so1f  la1f la1f ti1f ti1f ...%
  99.           do2f do2f ti1f ti1f  la1f la1f so1f so1f...
  100.           fa1f fa1f mi1f mi1f  fa1f fa1f re1f re1f ...%
  101.           do1f mi1f so1f fa1f  mi1f do1f mi1f re1f...
  102.           do1f la0f do1f so1f  fa1f la1f so1f fa1f...%
  103.           mi1f do1f re1f ti1f  do2f mi2f so2f so1f...
  104.           la1f fa1f so1f mi1f  do1f do2f blkf blke ti1e ...%
  105.           do2e ti1e do2e do1e  ti0e so1e re1e mi1e...
  106.           do1e do2e ti1e la1e  ti1e mi2e so2e la2e...
  107.           fa2e mi2e re2e fa2e  mi2e re2e do2e ti1e...
  108.           la1e so1e fa1e mi1e  re1e fa1e mi1e re1e... %%
  109.           do1e re1e mi1e fa1e  so1e re1e so1e fa1e...
  110.           mi1e la1e so1e fa1e  so1e fa1e mi1e re1e...
  111.           do1e la0e la1e ti1e  do2e ti1e la1e so1e...
  112.           fa1e mi1e re1e la1e  so1e la1e so1e fa1e...%
  113.           mi1f mi2e blke re2f re2f  blkf do1f mi2f mi2f...
  114.           la2f la2f so2f so2f  la2f la2f ti2f ti2f...%
  115.           do3e blke do2e blke ti1f ti1f  blkf la1f do2f do2f...
  116.           do2f do2f do2f do2f  do2f fa2f re2f so2f...%
  117.           so2e mi2s fa2s so2e mi2s fa2s so2s so1s la1s ti1s ...
  118.           do2s re2s mi2s fa2s mi2e do2s re2s...
  119.           mi2e mi1s fa1s so1s la1s so1s fa1s so1s mi1s fa1s so1s...
  120.           fa1e la1s so1s fa1e mi1s re1s mi1s re1s do1s re1s mi1s fa1s so1s la1s...
  121.           fa2e la1s so1s la1e ti1s do2s so1s la1s ti1s do2s re2s mi2s fa2s so2s...%
  122.           mi2e do2s re2s mi2e re2s do2s re2s ti1s do2s re2s mi2s re2s do2s ti1s...
  123.           do2e la1s ti1s do2e do1s re1s mi1s fa1s mi1s re1s mi1s do2s ti1s do2s...
  124.           la1e do2s ti1s la1e so1s fa1s so1s fa1s mi1s fa1s so1s la1s ti1s do2s...
  125.           la2e do2s ti1s do2e ti1s la1s ti1s do2s re2s do2s ti1s do1s la1s ti1s...%%
  126.           do2e blke blkf ti1e blke blkf la1e blke blkf do2e blke blkf...
  127.           do1e blke blkf do1e blke blkf do1e blke blkf do1e blke blkf...%
  128.           blkf so1e blke blkf so1e blke blkf mi1e blke blkf so1e blke...
  129.           blkf fa1e blke blkf mi1e blke blkf fa1e blke blkf re2e blke...%
  130.           mi2e mi1e fa1e mi1e re1e re2e mi2e re2e do2e mi1e do1e do2e ti1e so0e fa0e so0e...
  131.           la0e la1e so1e la1e so1e so0e fa0e so0e do1e la1e so1e la1e ti1e ti0e la0e ti0e...%
  132.           do1e do2e re2e do2e ti1e ti0e do1e ti0e la0e la1e so1e la1e ti1e ti0e mi1e re1e...
  133.           do1e do2e re2e fa2e mi2e mi1e so1e mi2e do2e fa2e mi2e fa2e re2e so1e fa1e so1e...%
  134.           mi1e so1e so1e so1e so1e so1e so1e so1e mi1e mi1e mi1e mi1e mi1e mi1e so1e so1e...
  135.           fa1e fa1e fa1e do2e do2e do2e do2e do2e do2e do2e la1e la1e so1e so1e re2e ti1e...%%
  136.           so1e mi2e mi2e mi2e re2e re2e re2e re2e do2e do2e do2e do2e so2e so2e so2e so2e...
  137.           la2e la2e la2e la2e so2e so2e so2e so2e la2e la2e la2e la2e ti2e ti1e ti1e ti1e...%
  138.           do2e do1s re1s mi1e do1e ti0e ti1s do2s re2e ti1e la1e la0s ti0s do1e la0e ti0e so1s fa1s mi1e re1e...
  139.           do1e mi1s re1s do1e fa1e mi1e do1s re1s mi1e so1e fa1e la1s so1s fa1e mi1e re1e so1s fa1s mi1e re1e...%
  140.           mi1e do2s ti1s do2e mi1e so1e so1s la1s ti1e so1e mi1e do2s re2s mi2e do2e mi2e mi2s re2s do2e ti1e...
  141.           la1e la1s so1s la1e ti1e do2e mi2s re2s do2e mi2e fa2e do2s ti1s la1e la1e so1e re1e so1e so1e...%
  142.           so1f so1f so1f so1f  do1f do1f do1f so1f...
  143.           fa1f fa1f so1f so1f  fa1f do1f do1f do1e ti0e...%
  144.           do1f do2f ti1f ti1f  la1f la1f so1f so1f...
  145.           do1f do1e re1e mi1f mi1f  do2f do2f ti1f ti1f...%%
  146.           do2f];
  147. % cello
  148. c1 = [cello cello cello cello cello...
  149.       cello cello cello cello cello...
  150.       cello cello cello cello cello...
  151.       cello cello cello cello cello...
  152.       cello cello cello blkf];
  153. % violin1
  154. v1 = [blkblock violin blkblock blkblock];
  155. % violin2
  156. v2 = [blkblock blkblock violin blkblock];
  157. % violin3
  158. v3 = [blkblock blkblock blkblock violin];
  159. % Get dirty
  160. s = c1+v1+v2+v3;
  161. s = s/max(s);
  162. sound(s,fs);
复制代码

评分

1

查看全部评分

回复
分享到:

使用道具 举报

发表于 2012-10-28 18:24 | 显示全部楼层
太牛B了!
发表于 2012-10-31 17:49 | 显示全部楼层
发表于 2013-1-12 01:07 | 显示全部楼层
好样的      
发表于 2013-11-26 17:19 | 显示全部楼层
great!!!
发表于 2013-11-29 23:22 | 显示全部楼层
发表于 2013-12-8 19:45 | 显示全部楼层
It is wonderful!!
发表于 2013-12-11 12:29 | 显示全部楼层
真好啊  厉害
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-16 08:36 , Processed in 0.068841 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表