如何解决如何更改洋红色音符序列的速度?
我尝试更改 qpm。但它不会改变任何东西。 我想改变音符序列的速度。 我在 Colab 上工作,可以在 here 中找到我的笔记本。
from note_seq.protobuf import music_pb2
from note_seq import sequences_lib
twinkle_twinkle = music_pb2.NoteSequence()
# Add the notes to the sequence.
twinkle_twinkle.notes.add(pitch=60,start_time=0.0,end_time=0.5,veLocity=80)
twinkle_twinkle.notes.add(pitch=60,start_time=0.5,end_time=1.0,veLocity=80)
twinkle_twinkle.notes.add(pitch=67,start_time=1.0,end_time=1.5,start_time=1.5,end_time=2.0,veLocity=80)
twinkle_twinkle.notes.add(pitch=69,start_time=2.0,end_time=2.5,start_time=2.5,end_time=3.0,start_time=3.0,end_time=4.0,veLocity=80)
twinkle_twinkle.notes.add(pitch=65,start_time=4.0,end_time=4.5,start_time=4.5,end_time=5.0,veLocity=80)
twinkle_twinkle.notes.add(pitch=64,start_time=5.0,end_time=5.5,start_time=5.5,end_time=6.0,veLocity=80)
twinkle_twinkle.notes.add(pitch=62,start_time=6.0,end_time=6.5,start_time=6.5,end_time=7.0,start_time=7.0,end_time=8.0,veLocity=80)
twinkle_twinkle.total_time = 8
twinkle_twinkle.tempos.add(qpm=120);
# This is a colab utility method that visualizes a NoteSequence.
note_seq.plot_sequence(twinkle_twinkle)
# This is a colab utility method that plays a NoteSequence.
note_seq.play_sequence(twinkle_twinkle,synth=note_seq.fluidsynth)
解决方法
您可以在 github 的 magenta/demos 中找到几个示例。你可以在那里找到这个解决方案。希望能帮到你:
from note_seq.protobuf import music_pb2
import copy
def change_tempo(note_sequence,new_tempo):
new_sequence = copy.deepcopy(note_sequence)
ratio = note_sequence.tempos[0].qpm / new_tempo
for note in new_sequence.notes:
note.start_time = note.start_time * ratio
note.end_time = note.end_time * ratio
new_sequence.tempos[0].qpm = new_tempo
return new_sequence
twinkle_twinkle = music_pb2.NoteSequence()
# Add the notes to the sequence.
twinkle_twinkle.notes.add(pitch=60,start_time=0.0,end_time=0.5,velocity=80)
twinkle_twinkle.notes.add(pitch=60,start_time=0.5,end_time=1.0,velocity=80)
twinkle_twinkle.notes.add(pitch=67,start_time=1.0,end_time=1.5,start_time=1.5,end_time=2.0,velocity=80)
twinkle_twinkle.notes.add(pitch=69,start_time=2.0,end_time=2.5,start_time=2.5,end_time=3.0,start_time=3.0,end_time=4.0,velocity=80)
twinkle_twinkle.notes.add(pitch=65,start_time=4.0,end_time=4.5,start_time=4.5,end_time=5.0,velocity=80)
twinkle_twinkle.notes.add(pitch=64,start_time=5.0,end_time=5.5,start_time=5.5,end_time=6.0,velocity=80)
twinkle_twinkle.notes.add(pitch=62,start_time=6.0,end_time=6.5,start_time=6.5,end_time=7.0,start_time=7.0,end_time=8.0,velocity=80)
twinkle_twinkle.total_time = 8
twinkle_twinkle.tempos.add(qpm=60);
# New note sequence with changed tempo
twinkle_twinkle_tempo_changed = change_tempo(twinkle_twinkle,new_tempo = 130)
# This is a colab utility method that visualizes a NoteSequence.
note_seq.plot_sequence(twinkle_twinkle)
# This is a colab utility method that plays a NoteSequence.
note_seq.play_sequence(twinkle_twinkle,synth=note_seq.fluidsynth)
note_seq.play_sequence(twinkle_twinkle_tempo_changed,synth=note_seq.fluidsynth)
,
Apply a constant temporal stretch to a NoteSequence proto.
Args:
note_sequence: The NoteSequence to stretch.
stretch_factor: How much to stretch the NoteSequence. Values greater than
one increase the length of the NoteSequence (making it "slower"). Values
less than one decrease the length of the NoteSequence (making it
"faster").
in_place: If True,the input note_sequence is edited directly.
Returns:
A stretched copy of the original NoteSequence.
要使其速度提高 2 倍,您可以像这样使用 stretch_factor
的 0.5
:
from note_seq.sequences_lib import stretch_note_sequence
faster_twinkle_twinkle = stretch_note_sequence(twinkle_twinkle,0.5)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。