不务正业系列1:python简易乐理

1. 基本概念

  • 12平均律:把一个8度的音平均分成12份,7个白键和5个黑键。
  • 纯8度震动频率是1:2,纯5度的震动频率1:1.5
  • 大小调:
    从根音开始
    自然大调:全全半全全全半
    自然小调:全半全全半全全
  • 属音:上纯五度称为上属音,下纯五度称为下属音。主音和属音能发生共振。
  • 和弦:
    三和弦:perfect 5+major3或minor3。一个取巧的方法:和弦之间都相隔2-3个音程,要求全都落在上面的大调或者小调上。
    七和弦:别被名字骗了,就是三和弦再往上加一个和弦,实际上只有4个音。
    转位:8度调换

2. 和弦进行

C大调的和弦种类:
在这里插入图片描述
下面是简单的一个和弦进行:G7->C是属7->主,叫做正格终止。
在这里插入图片描述
加入Dm和弦
在这里插入图片描述
加入F7,蓝调终止。
在这里插入图片描述
加入Am,更加丰富
在这里插入图片描述
在这里插入图片描述

常见几个和弦进行:6415=SFCG=是否成功;4536251是很常见的和弦进行。
下面是cubase的图示
在这里插入图片描述

3. musicpy

3.1 音符

a = note('C', 5, 0.5, 100) #表示a为音符C5,音符长度为0.5个小节,音符力度为100
a = N('C5(1;80)') # 简洁写法
N('D5(.4)') # 表示4分音符
a.set(duration, volume) # 返回的是一个全新的和弦类型
b%(duration,volume) # 简洁写法
degree_to_note(60) # 音符和mid转换
a.degree
a+n, a-n # 升音,降音
~a # 取消#和b
A3 = N('A3')
print(A3('sus')) #音符类型可以当作函数或者生成器传入和弦名称获得和弦类型

3.2 和弦

和弦是多个音符的合集,例如A = a + b + c + d
有两种构建方法:chord('C, E, G, B'),以及chord(['C', 'E', 'G', 'B', 'D'])
chord('G5[3/4;.], F5[.8;.], E5[.8;.]')表示音符长度和音符间隔
r[.2]表示休止符
当音符间隔简写为.的时候,表示音符间隔取和音符长度一样的值。

A.set([0.5, 0.5, 1, 1], [1, 1, 2, 2]) # 设置音符间隔和音符长度
A % (1.5, 1) # 简洁写法
chd('A', 'm7') # 使用根音和和弦类型获得和弦
chd('C', interval=[major_third, perfect_fifth, major_seventh]) # C大七和弦
chd('A', 'm7').inversion(1)  # 和弦转位
chd('A', 'm7') / 1 # 转位简洁写法
chd('A', 'm7') / 'E'
a+b # 和弦拼接
A%n # 重复和弦
~A # 和弦倒序
chd('C','maj').intervalof() # 获得和弦的音程关系
A+3 # 和弦升音
A.sort([2, 3, 1, 4]) # 和弦排序
A / [2, 3, 1, 4] # 和弦排序简洁写法
p.modulation(scale('A', 'major'), scale('A', 'minor')) # 转调
A.on('C5') # 和弦加根音
A % 'C5'
A.rest(n) # 和弦休止符
A // n,A | n

A('#9') # 升九和弦
B('no3') # 省略三度音
A / -2, A ^ -2 # 将第二个音转位到最高音
A @ 2,A @ 'E' # 转位到最低音
A.get([1, 3, 2, 3, 1.1, 3, 2, 3]) # 阿尔贝蒂低音的左手琶音伴奏型。1.1这种小数表示的是第几个音(小数点前的数字)升高几个八度(小数点后的数字)。
A @ [1, 3, 2, 3, 1.1, 3, 2, 3] # 简洁写法

和弦处理函数:
首先是lambda模式

rules = lambda x: C(x) @ [1, 2, 3, 1.1, 2.1, 3, 1.1, 2.1] % (1/8, 1/8) * 2
A = rules('Cmajor') | rules('C7sus4') | rules('G7/B') - octave | rules('Cmajor')
# 把这个和弦按照第1个音,第2个音,第三个音,第1个音高1个八度,第二个音高1个八度, 第三个音,第1个音高1个八度,第二个音高1个八度的顺序组成一个新的和弦类型(一段和弦伴奏),然后把这段和弦伴奏的每个音符的长度都设置为0.5个小节,每个音符的间隔也都设置为0.5个小节,然后把这段和弦伴奏重复两遍。

其次是管道模式

rules = exp('up(2).reverse()', mode='tail')
#把一个和弦类型整体升高两个半音,然后把音倒序排列。

音阶。scale类(音阶类)可以快速按照音的间隔来构建调式,比如大调的音的排列是全全半全全全半,比如
scale('C5', 'major')就可以得到以C5为根音的C大调音阶,

3.3 组合

A.add(B, mode='head', start=8) # 不同声部合并
A& (B,start) # 简洁写法
A.add(B, mode='after') # 继续播放
A // B, A | B # 简洁写法
cut(ind1=0, ind2=None, start_time=0) # 按照小节进行切片

组成乐曲:
使用piece或者build方法:

A1 = C('Cmaj7') % (1, 1/8)
B1 = chord('A2') % (1,)
C1 = chord('C,D,E,F,G') % (1/8, 1/8)
D1 = chord('C5')

new_piece = piece([A1, B1, C1, D1],
                  ['Acoustic Grand Piano', 'Electric Bass (finger)', 'Orchestral Harp', 'Synth Drum'],
                  150,
                  [0, 2, 2, 4],
                  ['piano', 'bass', 'harp', 'drum'])

new_piece = build([A1, 'Acoustic Grand Piano', 0, 1, 'piano'],
                  [B1, 'Electric Bass (finger)', 2, 2, 'bass'],
                  [C1, 'Orchestral Harp', 2, 3, 'harp'],
                  [D1, 'Synth Drum', 4, 4, 'drum'],
                  bpm=150)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值