就个人而言,我会尝试只使用 python。我知道您对此几乎没有经验;但是 python 比 R 更通用,应该能够做 R 可以做的任何事情。尝试同时使用两者似乎会产生额外的复杂性和您根本不需要的开销。
看起来这个音乐 21 记录了音符和长度;但是也有休息。假设您有一个名为“durations”的持续时间列表,以及一个名为 notes 的音符(和休止符)列表:
from music21 import *
mymusic = stream.Stream()
notes = ["F4", "F4", "rest", "F4"]
durations = [0.25, 1, 0.25, 1]
for n,d in zip(notes, durations):
if n == "rest":
mymusic.append(note.Rest(d))
else:
mymusic.append(note.Note(n,d))
mymusic.show("midi")
Music21 使用一种特殊的列表,称为流。我们首先创建一个空流,然后用音符和持续时间填充它。Zip 让我们可以同时浏览两个列表。我们检查该音符是否应该是休息;如果它是一个休息,我们添加正确的持续时间的休息,否则我们继续添加正确持续时间的音符。(注意我不是作曲家,你可以用任何你喜欢的方式生成音符和持续时间:-))。
如果你真的想要;您可以在 R 中编写一个 csv 文件或一些注释和持续时间,然后在 python 中读取它。但是,我认为在 python 本身中生成列表是一种更简洁的方法。
感谢您向我介绍这个music21 库,它看起来非常整洁。