1701008907
图7-14 考虑陪音后的音程不协和程度
1701008908
1701008909
(2)平均律
1701008910
1701008911
大家知道七声调式中一个八度是7个基本音级、12个半音,2个半音等于一个全音。大调是“全全半全全全半”,小调是“全半全全半全全”。
1701008912
1701008913
1701008914
在巴赫开始提倡现代普遍采用的十二平均律中,这12个半音是均匀分布的——从物理上讲,也就是半音阶中的音的频率形成一个等比数列。比如说C4是261.6Hz,C5是523.3Hz,而两者之间的11个音每个的频率是上一个的=1.0595倍——C4是261.6×1.0595=277.2Hz,D4是277.2×1.0595=293.7Hz,以此类推。
1701008915
1701008916
1701008917
一个半音又可以分成100个音分(cent),差一个音分相当于频率差=1.00579倍。一个八度也就是1200个音分。普通人对音高的辨别阈大概是20音分(0.2个半音),而音乐家可以达到5音分(0.05个半音),不同音高下的辨别阈还有所不同。
1701008918
1701008919
1701008920
1701008921
1701008922
协和音程要求音阶中各个音的频率成简单整数比,而平均律要求音阶在1和2之间构成等比数列,也即各个音的频率比需要表示为(m为两个音的间隔数,n为一个八度音阶的全部音数)。也就是说,音程如果既要协和又要符合平均律的话,就必须有。
1701008923
1701008924
1701008925
1701008926
但这里就产生了矛盾:是有理数,而2m/n在m非n整数倍的情况下是无理数,两者没法相等。考虑到人耳允许有一定的误差,也就是说。
1701008927
1701008928
(3)《最炫民族风》歌曲
1701008929
1701008930
一首《最炫民族风》歌曲设计如下:
1701008931
1701008932
%最炫民族风 clc,clear,close all %清屏和清除变量 warning off %消除警告 fs = 44100; %采样率 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=(t4.^4).*exp(-30*(t4.^0.5)); mod4=mod4*(1/max(mod4)); mod8=(t8.^4).*exp(-50*(t8.^0.5)); mod8=mod8*(1/max(mod8)); mod16=(t16.^4).*exp(-90*(t16.^0.5)); mod16=mod16*(1/max(mod16)); f0 = 2*146.8; %参考频率 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 do0e = mod8.*cos(2*pi*ScaleTable(21)*f0*t8); re0e = mod8.*cos(2*pi*ScaleTable(22)*f0*t8); mi0e = mod8.*cos(2*pi*ScaleTable(23)*f0*t8); 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 do0s = mod16.*cos(2*pi*ScaleTable(21)*f0*t16); re0s = mod16.*cos(2*pi*ScaleTable(22)*f0*t16); mi0s = mod16.*cos(2*pi*ScaleTable(23)*f0*t16); 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); part0 = [mi1f la0e la0e do1f mi1f … re1e re1s mi1s re1e do1e re1e do1e la0f … mi1f la0e la0e do1f mi1f … so1e re1s mi1s re1e do1e re1e do1e ti0e so0e … mi1f la0e la0e do1f mi1f … re1e re1s mi1s re1e do1e re1e do1e la0e so0e … mi1f la0e la0e do1f mi1f … so1e mi1e blkf blkf blkf ]; part1 = [la0f la0e so0e la0f la0e do1e … do1f re1e do1e la0f la0f … do1f do1e so0e do1e re1e mi1e so1e … so1e mi1e re1f mi1f mi1f … la1e la1e la1e so1e mi1e mi1f do1e … la0e la0e la0e mi1e re1s mi1s re1e re1f … mi1e mi1e
1701008933
1701008934
运行程序,用户将听到《最炫民族风》歌曲。
1701008935
1701008936
音乐之所以和谐美妙,音乐就是一个数学的巧合,很大程度上得益于数学上的两个约等式同时成立:
1701008937
1701008938
2^(7/12)= 1.4983 ≈ 3/2,误差0.1%
1701008939
1701008940
2^(4/12)= 1.2599 ≈ 5/4,误差0.8%
1701008941
1701008942
1701008943
1701008944
1701008946
我和数学有约:趣味数学及算法解析 7.4 玩转Google地球
1701008947
1701008948
谷歌地球(Google Earth,GE)是一款Google公司开发的虚拟地球仪软件,它把卫星照片、航空照相和GIS布置在一个地球的三维模型上。Google Earth于2005年向全球推出,被“PC世界杂志”评为2005年全球100种最佳新产品之一。用户们可以通过下载到自己电脑上的客户端软件,免费浏览全球各地的高清晰度卫星图片。
1701008949
1701008950
具体的Google地球如图7-15所示。
1701008951
1701008952
1701008953
1701008954
1701008955
图7-15 Google地球
1701008956
[
上一页 ]
[ :1.701008907e+09 ]
[
下一页 ]