- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想使用 MIDIUtil 在每个音符上实现渐强(音量上升)。有没有办法做到这一点?我有简单的 MIDIUtil 演示代码并对其进行了修改,以便每个音符持续 5 个节拍。我有一个像这样的基本代码:
from midiutil.MidiFile import *
degrees = [60, 62, 64, 65, 67, 69, 71, 72]
track = 0
channel = 0
time = 0
duration = 5
tempo = 120
volume = 100
MyMIDI = MIDIFile(1)
MyMIDI.addTempo(track,time, tempo)
for pitch in degrees:
MyMIDI.addNote(track, channel, pitch, time, duration, volume)
time = time + 1
with open("major-scale.mid", "wb") as output_file:
MyMIDI.writeFile(output_file)
非常感谢。
最佳答案
您可以通过增加音量
参数的值来提高每个音符的力度。像这样的事情:
from midiutil.MidiFile import *
degrees = [60, 62, 64, 65, 67, 69, 71, 72]
track = 0
channel = 0
time = 0
duration = 4
tempo = 120
volume = 15
MyMIDI = MIDIFile(1)
MyMIDI.addTempo(track,time, tempo)
for pitch in degrees:
MyMIDI.addNote(track, channel, pitch, time, duration, volume)
time = time + 4
volume = volume + 15
with open("major-scale.mid", "wb") as output_file:
MyMIDI.writeFile(output_file)
这将使每个音符的力度比前一个音符更高,但音符发声时音量不会增加。 (另请注意,我将持续时间更改为 4,并将每个音符的 time
增加 4。这使得每个音符成为一个没有重叠的完整音符。在您的示例中,每个音符长 5 个节拍,并开始一个节拍在上一个注释之后,导致大量重叠。)
调用这个参数volume
是MIDIUtil实现者的一个错误。应该称为“速度”。 MIDI 中的音量是完全不同的东西。音量是连续 Controller #7,影响该 MIDI channel 上所有声音的音量。力度是敲击单个音符的强度。甚至不能保证力度会影响音符的音量。这很常见,但可以对声音进行编程,以便速度影响声音的任何方面,而不仅仅是响度。
这是一个类似的程序,它使用音量连续 Controller 在每个音符(速度均为 80)发声时增加音量。 (这不是优雅的代码。我不是一个 Python 程序员,而且已经过了我的 sleep 时间。)
from midiutil.MidiFile import *
degrees = [60, 62, 64, 65, 67, 69, 71, 72]
track = 0
channel = 0
time = 0
duration = 4
tempo = 120
volume = 8
MyMIDI = MIDIFile(1)
MyMIDI.addTempo(track, time, tempo)
for pitch in degrees:
MyMIDI.addNote(track, channel, pitch, time, duration, 80)
for i in range (0, 15):
MyMIDI.addControllerEvent(track, channel, time + i * 4 / 15, 7, volume)
volume = volume + 1
time = time + 4
with open("major-scale-with-volume.mid", "wb") as output_file:
MyMIDI.writeFile(output_file)
前几项措施如下:
关于python - MIDIUtil 渐强 : Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42834826/
我想使用 MIDIUtil 在每个音符上实现渐强(音量上升)。有没有办法做到这一点?我有简单的 MIDIUtil 演示代码并对其进行了修改,以便每个音符持续 5 个节拍。我有一个像这样的基本代码: f
所以,我正在放弃一个 python 应用程序来编辑 .mid 文件,我正在使用 MIDIUtil 来帮助我完成这项工作。我只是要一张图表,其中包含 MIDIUtil 中的每个乐器及其程序更改编号(从零
我是一名优秀的程序员,十分优秀!