-
-
Notifications
You must be signed in to change notification settings - Fork 129
Musicpy快速入门和速查表
Rainbow Dreamer edited this page Jan 10, 2023
·
5 revisions
如果你觉得文档太长,太复杂,难以阅读,难以找到你想要的东西,这是一个musicpy的快速入门和速查表的章节。
(当musicpy以from musicpy import *
的方式导入)
注意1:muscipy的和弦类型有一个interval
属性,它是和弦的每两个相邻的音符开始之间的小节长度的列表,请不要把它与乐理中的音程混淆,后者是两个音符之间的音高差异(例如大三度,半音)。在速查表中,我们用 音程
来表示乐理中的音程。
注意2:所有函数的默认的下标起始值都为0,除非特别说明下标从1开始。
功能 | 语法(推荐) | 其他写法 |
---|---|---|
构建一个音符 C5 | N('C5') | N('c5'); note('C', 5) |
构建和弦 Cmaj7 | C('Cmaj7') | get_chord('C', 'maj7') |
构建一个起始音符为C5的C大七和弦 | C('C5:maj7') | C('Cmaj7', pitch=5); get_chord('C', 'maj7', pitch=5) |
用音符 C5、E5、G6 构建一个和弦 | chord('C5, E5, G6') | chord('c5, e5, g6'); chord(['C5', 'E5', 'G6']); chord(['c5', 'e5', 'g6']); chord([N('C5'), N('E5'), N('G6')]) |
构建C大调音阶 | S('C major') | scale('C', 'major') |
构建一个乐曲 | build(track(content=C('C'), instrument=1, start_time=0), track(content=C('D'), instrument=47, start_time=1), bpm=150) |
P(tracks=[C('C'), C('D')], instruments=[1, 47], start_times=[0, 1], bpm=150) |
构建轨道 | track(content=C('C'), instrument=1, start_time=0) | |
构建一组鼓点 | drum('K, H, H, K, S, H, H, H, t:1') | |
将和弦/音符 A 向上/向下移调 n 个半音 | A + n; A - n | A.up(n); A.down(n) |
提高/降低和弦 A n 半音的第 i 个音符 | A + (n, i); A - (n, i) | A.up(n, i); A.down(n, i) |
提高/降低和弦 A n 个半音的第 ith 个音符到第 j 个音符 | A + (n, i, j); A - (n, i, j) | A.up(n, i, j); A.down(n, i, j) |
连接和弦 A 和和弦 B | A | B | A + B |
在和弦 A 之后以 n 小节间隔连接和弦 B | A | (B, n) | A + (B, n) |
将剩余的 n 小节添加到和弦 A | A | n | A.rest(n) |
将和弦A连接n次,每次间隔i条 | A | (n, i) | A * (n, i) |
堆叠和弦A和B | A & B | |
叠加和弦B,在和弦A之后叠加n个小节 | A & (B, n) | |
叠加和弦A n次 | A & n | |
叠加和弦An次,每次间隔i个小节 | A & (n, i) | |
堆叠和弦A和B | A & B | |
叠加和弦B,在和弦A之后叠加n条 | A & (B, n) | |
叠加和弦A n次 | A & n | |
叠加和弦An次,每次间隔i个小节 | A & (n, i) | |
重复和弦A n次 | A * n | |
获取和弦A的第i个音符 | A[i] | |
获得和弦A的第i至j个音符 | A[i:j] | |
设置和弦A的第i个音符为j | A[i] = j | |
获得和弦A的音符数 | len(A) | |
获取和弦A的反向音符 | ~A | A.reverse() |
将和弦/音符A升高一个半音 | +A | A.up() |
将和弦/音符A降低一个半音 | -A | A.down() |
设置和弦A的持续时间、间隔时间和音量,并返回一个新的和弦A | A % (duration, interval, volume) | A.set(duration, interval, volume) |
获取和弦A的第n个转位 (从1开始) | A / n | A.inversion(n) |
将和弦A的第n个音转换为最高音 (从1开始) | A ^ n | A / -n; A.inversion_highest(n) |
将和弦A的第n个音反转为最低音 (从1开始) | A @ n | A.inv(n) |
从和弦A的音符中按照索引组成一个新的和弦(从1开始) | A @ [1, 2, 3, 2, 1.1, 2, 3, 2] | |
从和弦A的音符中按照索引组成一个新的和弦(从1开始),增加八度数 | A / [1, 2, 4, 3] | |
将和弦A从音阶i转调到音阶j | A.modulation(i, j) | |
删除和弦A的第i个音符 | del A[i] | |
将音符i附加到和弦A的音程j上,并返回一个新的和弦A | A + i | |
将音符i追加到和弦A中,间隔时间为j | A.append(i, j) | |
从和弦A中删除音符i,并返回一个新的和弦A | A - i | |
从和弦A中删除i音符 | A.remove(i) | |
从和弦A中取出第i个音符 | A.pop(i) | |
在索引i处插入音符j,间隔时间为k的和弦A | A.insert(i, j, interval=k) | |
和弦A的drop n voicing | A.drops(n) | |
和弦A在音阶B上的负和声 | A @ B | A.negative_harmony(B) |
获取和弦A从第i小节到第j小节(以0为基准)的和弦 | A.cut(i, j) | |
根据和弦A的音符变化,得到一个新的和弦 | A('omit 3, b9') | |
获取和弦A的总长度(小节) | A.bars() | |
获得和弦A的音符持续时间 | A.get_duration() | |
获取和弦A的音符间隔 | A.interval | |
设置音符A的持续时间、音量和通道 | A % (duration, interval, volume) | A.set(duration, interval, volume) |
改变音符A的变音记号(#到b,b到#),并返回一个新的音符 | ~A | |
获得音符A的附点音符,有n个附点 | A.dotted(n) | |
获得音符A的持续时间 | A.duration | |
提高/降低音阶A的第n个半音 | A + n; A - n | A.up(n); A.down(n) |
提高/降低音阶A的第i个音n个半音 | A + (n, i); A - (n, i) | A.up(n, i); A.down(n, i) |
提高/降低音阶A的第i个音到第j个音n个半音 | A + (n, i, j); A - (n, i, j) | A.up(n, i, j); A.down(n, i, j) |
提高/降低音阶A 1个半音 | +A; -A | A.up(); A.down() |
获取音阶A的第i级音 | A[i] | |
获取音阶A的第i级音 (从1开始) | A.get_degree(i) | |
获取音阶A的第i级三和弦 | A(i) | A.pick_chord_by_degree(i) |
获取音阶A的第i级七和弦 | A(i, num=4) | A.pick_chord_by_degree(i, num=4) |
获得音阶A的第i个调式 (从1开始) | A / i | A.inversion(i) |
按照索引获取音阶A的和弦 | A @ [0, 2, 4] | A.pick_chord_by_index([0, 2, 4]) |
获得音阶A的反转音阶 | ~A | A.reverse() |
按照级数从音阶A获取和弦进行 (从1开始) | A % 6451 | A.pattern(6451) |
获取乐曲A的第1个音轨 | A[i] | |
获得乐曲A的第i个音轨的和弦类型 | A(i) | A.tracks[i] |
提高/降低乐曲A n个半音 | A + n; A - n | |
提高/降低乐曲A的第1个音轨n个半音 | A[i] += n; A[i] -= n | |
重复乐曲A n次 | A * n | |
将乐曲A和乐曲B连接起来 | A + B | A | B |
堆叠乐曲A和乐曲B | A & B | |
删除A乐曲的第1个轨迹 | del A[i] | |
获取A乐曲的反向 | ~A | A.reverse() |
获得A乐曲的轨道数 | len(A) | |
在A乐曲上添加一个新的轨道n | A.append(n) | |
在A乐曲的索引i处插入一个新的音轨n | A.insert(i, n) | |
获取乐曲A的总长度(小节) | A.bar() | |
读取一个MIDI文件到乐曲类型 | read(path) | |
将一个音符/和弦/乐曲/音轨/鼓的类型A写到一个MIDI文件中 | write(A) | |
播放一个音符/和弦/乐曲/音轨/鼓的类型A,速度为bpm 100 | play(A, bpm=100) | |
停止播放 | stopall() | |
连接一个和弦列表[A, B, C] | concat([A, B, C]) | |
连接和弦列表[A, B, C]和额外的间隔i | concat([A, B, C], extra=i) | |
堆叠和弦列表[A, B, C] | concat([A, B, C], mode='&') | |
叠加一个和弦[A, B, C]的列表,其中有额外的间隔i | concat([A, B, C], mode='&', extra=i) | |
从MIDI度数i获得音符 | degree_to_note(i) | |
获得音符A的度数(MIDI音符编号) | A.degree | |
获取音符A的音符名称 | A.name | |
获得音符A的八度数 | A.num | |
获得和弦A的音程 | A.intervalof() | |
构建一个bpm为150、开始时间为0的节奏变化实例 | tempo(150, start_time=0) | |
构建一个pitch_bend实例,值为100分,开始时间为0 | pitch_bend(100, start_time=0) | |
构建一个pan实例,值为100%,开始时间为0 | pan(100, start_time=0) | |
构建一个volume实例,数值为100%,开始时间为0 | volume(100, start_time=0) | |
构建一个节奏实例 | rhythm('b b 0 0 b 0 b 0', 1) | |
从节奏中生成和弦 | get_chords_from_rhythm(C('C'), rhythm('b b 0 0 b 0 b 0', 1)) | |
产生两个八度之间的和弦的琶音 | arp(C('Cmaj7'), 3, 7) |
- Basic syntax of note type
- Basic syntax of chord type
- Basic syntax of scale type
- Basic syntax of piece type
- Basic syntax of track type
- Basic syntax of tempo type
- Basic syntax of pitch_bend type
- Basic syntax of pan type
- Basic syntax of volume type
- Basic syntax of drum type
- Basic syntax of rhythm type
- Musicpy composition code examples Part 1
- Musicpy composition code examples Part 2
- Musicpy composition code examples Part 3
- Introduction of musicpy algorithms module
- The algorithm to split the main melody and chords from a piece of music
- The algorithm to determine the chord type of any group of notes according to the logic of music theory
- The algorithm to analyze the chord progressions of a piece of music
- The algorithm to analyze tonality and modulations in a piece of music