Fly Me to the Moon#

初始化Midi对象#

from infmidi import Midi
song = Midi(bpm=123, time_signature='4/4', key_signature='C')

轨道1#

使用 sheet() 快速生成一段和弦进行。

track1 = song.new_track('chord track', instrument="5")

txt = '''
    A4:m7 | D4:m9   | G4:7 | C4:M7     |
    F4:M7 | B3:m7-5 | E4:7 | A4:m7 A4:7
'''

progression = sheet(txt)
track1.add(progression)

轨道2#

track2 = song.new_track('melody track', instrument="12")

txt = '''
    (C5 -)  (-  B4)  (A4 G4)  (- F4) | (-  -)  (- G4)  (A4 C5)  (- B4) |
     -      (-  A4)  (G4 F4)  (- E4) |  -               0              |
    (A4 -)  (-  G4)  (F4 E4)  (- D4) |  -      (- E4)  (F4  A4)  -     |
     G#4    (F4 E4)  (-  D4)  (- C4) |  -       -       -        C#4
'''
melody = sheet(txt)
track2.add(melody)

完整代码#

fly_me_to_the_moon.py#
 1from infmidi import Note, Clip, Track, Midi
 2from infmidi import chord, sheet
 3from infmidi import FluidSynth, Controller
 4from infmidi.effects.rhythm import delay
 5
 6
 7# ====== Initialize ======
 8synth = FluidSynth()
 9song = Midi(bpm=123, time_signature='4/4')
10
11
12# ====== Track 1 ======
13track1 = song.new_track('chord track', instrument=5)
14
15txt = '''
16    A4:m7 | D4:m9   | G4:7 | C4:M7     |
17    F4:M7 | B3:m7-5 | E4:7 | A4:m7 A4:7
18'''
19progression = sheet(txt)
20track1.add(progression)
21
22# ====== Track 2 ======
23track2 = song.new_track('melody track', instrument=12)
24
25txt = '''
26    (C5 -)  (-  B4)  (A4 G4)  (- F4) | (-  -)  (- G4)  (A4 C5)  (- B4) | 
27     -      (-  A4)  (G4 F4)  (- E4) |  -               0              | 
28    (A4 -)  (-  G4)  (F4 E4)  (- D4) |  -      (- E4)  (F4  A4)  -     |
29     G#4    (F4 E4)  (-  D4)  (- C4) |  -       -       -        C#4   
30'''
31
32melody = sheet(txt)
33
34delayed_melody = delay(melody, n=3, length=0.3, decay=0.7)
35bass_melody = melody - 24
36
37mixed_melody = delayed_melody + bass_melody
38track2.add(mixed_melody)
39
40# ====== play ======
41synth(song)