使用python计算各音阶频率

准备

基本的乐理知识

首先,我们要知道十二平均律。
十二平均律是音乐中最底层的系统,规定了两个单音的相对音高,就像计算机中的二进制系统规定了各种运算方式一样。简单来讲,十二平均律体系将一个“纯八度”分成12份,每份称为1个半音,两份为1个全音,以此定出所有中间的单音。

其次是我们要计算的音阶 CDEFGAB,也就是对应我们常说的 do re mi fa so la si。

那他们之间的应对关系如下图所示:

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6
纯八度 小二度 大二度 小三度 大三度 纯四度 三全音 纯五度 小六度 大六度 小七度 大七度 纯八度
C #C D #D E F #F G #G A #A B C
do re mi fa so la si do

每两个相邻的单音之间是等比关系,比例是 $$2^\frac{1}{12}$$
国际标准的A4音的频率为440Hz,根据这个频率我们就可以计算出其他的音阶了。

行动

废话不多说,show me your code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import math

A3=220
_A3=A3*2**(1.0/12.0)
B3=A3*2**(2.0/12.0)
C4=A3*2**(3.0/12.0)
_C4=A3*2**(4.0/12.0)
D4=A3*2**(5.0/12.0)
_D4=A3*2**(6.0/12.0)
E4=A3*2**(7.0/12.0)
F4=A3*2**(8.0/12.0)
_F4=A3*2**(9.0/12.0)
G4=A3*2**(10.0/12.0)
_G4=A3*2**(11.0/12.0)
A4=440
_A4=A4*2**(1.0/12.0)
B4=A4*2**(2.0/12.0)
print C4, D4, E4, F4, G4, A4, B4

输出:

1
261.625565301 293.664767917 329.627556913 349.228231433 391.995435982 440 493.883301256

分享到