如何从Music21制作的音乐中产生实时音频输出.如果做不到这一点,我如何通过开源软件从Music21制作的音乐中产生任何音频输出?谢谢您的帮助.
我正在尝试music21库,以准备一个涉及类型分类和分类的机器学习项目。我和以下可用一些教程在这里。我将MuseScore用作我的MusicXML程序,并且试图从iPython运行整个程序。
尽管我可以从终端运行一些教程,但是某些元素在iPython内部似乎运行不佳。例如:
In [3]: sBach.show()
Out[3]: <music21.ipython21.objects.IPythonPNGObject at 0x10da0aa10>
Run Code Online (Sandbox Code Playgroud)
上面的行显示已创建PNG对象,但未显示。上面3的预期输出如下:
通过尝试以下iPython命令,我获得了图像的占位符,但没有图像。
In [6]: %load_ext music21.ipython21.ipExtension
In [7]: sBach.show()
Run Code Online (Sandbox Code Playgroud)
我的MusicXMLPath找不到任何问题。本教程涉及在Anaconda中使用musc21,但是我的所有开发工作都是通过Enthought完成的,因此,我不希望运行其他虚拟环境来在iPython中使用music21。
有什么方法可以在Enthought / iPython笔记本中运行music21吗?
运行时出错:
from music21 import *
n1 = note.Note('C4', quarterLength=1)
n2 = note.Note('A4', quarterLength=1)
s = stream.Stream()
s.append(n1)
s.append(n2)
s.show('lily.svg')
Traceback (most recent call last):
File "C:\Python34\test.py", line 7, in <module>
s.show('lily.svg')
File "C:\Python34\lib\site-packages\music21\base.py", line 2206, in show
return formatWriter.show(self, regularizedConverterFormat, app=app, subformats=subformats, **keywords)
File "C:\Python34\lib\site-packages\music21\converter\subConverters.py", line 277, in show
returnedFilePath = self.write(obj, fmt, subformats=subformats, **keywords)
File "C:\Python34\lib\site-packages\music21\converter\subConverters.py", line 245, in write
conv = lily.translate.LilypondConverter()
File "C:\Python34\lib\site-packages\music21\lily\translate.py", line 147, in __init__
self.setupTools()
File "C:\Python34\lib\site-packages\music21\lily\translate.py", line 177, in setupTools
versionString = versionString.split()[-1] …
Run Code Online (Sandbox Code Playgroud) 所以,我已经按照这个问题来播放Music21的声音了,这里是代码:
from music21 import *
import random
def main():
# Set up a detuned piano
# (where each key has a random
# but consistent detuning from 30 cents flat to sharp)
# and play a Bach Chorale on it in real time.
keyDetune = []
for i in range(0, 127):
keyDetune.append(random.randint(-30, 30))
b = corpus.parse('bach/bwv66.6')
for n in b.flat.notes:
n.microtone = keyDetune[n.midi]
sp = midi.realtime.StreamPlayer(b)
sp.play()
return 0
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
这是追溯:
Traceback …
Run Code Online (Sandbox Code Playgroud) 我有一个包含多个 ' notes
'、' chords
' 和 ' rest
' 对象的列表,并尝试将它们写入 MIDI 文件。我正在尝试使用以下代码
midi_stream = stream.Stream(output_notes)
midi_stream.write('midi', fp='test_output.mid')
Run Code Online (Sandbox Code Playgroud)
在读取创建的 midi 文件时,我发现rest
midi 文件中没有附加“ ”对象。
output_notes 变量的内容是:
<music21.note.Rest rest> <music21.chord.Chord A1 E2>
<music21.chord.Chord A1 E2> <music21.chord.Chord A1 E2>
<music21.note.Rest rest> <music21.chord.Chord A1 E2>
<music21.note.Rest rest> <music21.note.Rest rest>
<music21.chord.Chord A1 E2> <music21.chord.Chord A1 E2>
<music21.note.Rest rest> <music21.note.Rest rest>
<music21.note.Rest rest> <music21.note.Note A> <music21.note.Rest rest>
<music21.note.Rest rest> <music21.note.Note A> <music21.note.Rest rest>
<music21.note.Rest rest> <music21.note.Rest rest> <music21.note.Note G>
<music21.note.Note G> <music21.note.Note G> <music21.note.Note …
Run Code Online (Sandbox Code Playgroud) 我有 abc 表示法文件,我想将其转换为 midi 或 mp3 格式。
我确实找到了music21 (docs) 库,它说它可以将 abc 转换为 midi,但我不知道如何操作。
我还发现了一个网站mandolintab可以将下面的文件转换为 midi。我希望在 python 中做同样的事情。
有人可以帮忙吗?
p6
E (G/A/) \
| eAFE ~Ez | D2 zB AG | E2 EE ED |
EE E2 | (EA) A2 | Ac ef | g2 fe | (e3 d) ec |
d2 BA Bd | c2 BA ^c/d/ | e2 A/A/ cA/A/ | Ad c2 ||
((3c/d/e/)) | f2 ff e2 dc | d^c de f2 (gf/e/) | …
Run Code Online (Sandbox Code Playgroud) 如何使用music21模块在Python中保存音频输出?我已阅读所述模块的整个[用户指南](http://music21.readthedocs.org/en/latest/usersGuide/index.html),但我找不到任何有关将输出保存为音频文件的信息可以通过Windows识别,无需任何其他软件(例如MIDI).
我正在寻找 python 库来找出以 MP3 格式录制的歌曲的键和节奏。我找到了 music21 库,允许这样做。但它似乎只适用于 MIDI 文件。有人知道如何使用 music21 解析 MP3 文件并获得所需的声音特征吗?如果不可能,请建议另一个库。
我正在尝试用另一个音高替换乐谱中的一个音高(最终目标是产生和声部分)。
>>> from music21 import *
>>> score = converter.parse('test.mid')
>>> type(score)
<class 'music21.stream.Score'>
>>> p0 = score.parts[0].pitches[0]
>>> p0sharp = p0.transpose(1)
>>> print p0
A3
>>> print p0sharp
B-3
>>> score.replace(p0, p0sharp)
>>> print score.parts[0].pitches[0]
A3
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
更新:我在这里发布了我的“test.mid”文件。
我有一个多轨 MIDI 文件,正在用 music21 读取:
import music21
f = music21.midi.MidiFile()
f.open('1079-02.mid')
f.read()
stream = music21.midi.translate.midiFileToStream(f).flat
note_filter = music21.stream.filters.ClassFilter('Note')
for n in stream.recurse().addFilter(note_filter):
offset = n.offset # offset from song start in beats
note = n.pitch # letter of the note, e.g. C4, F5
midi_note = n.pitch.midi # midi number of the pitch, e.g. 60, 72
duration = n.duration # duration of the note in beats
instrument = n.activeSite.getInstrument() # instrument voice
Run Code Online (Sandbox Code Playgroud)
我想弄清楚该流中的每个音符属于哪个轨道。例如,当我在 GarageBand 中打开文件时,音符会组织成曲目:
在 中mido
,每个轨道 …
我发现的唯一方法是使用music21:
m = converter.parse(path)
for m in m.parts:
print(m[0])
Run Code Online (Sandbox Code Playgroud)
但它的输出不正确:
Piano
Piano
Run Code Online (Sandbox Code Playgroud)
空位也是一个乐器名称,它只是无法读取它,但问题不在文件中,因为我可以将其正确导入到tuxguitar 中。此外,music21 无法传递大的 MIDI 文件并卡住。我尝试了 mido 库,但没有办法获得 track instrument,我找到了一个属性,但不知道如何使用它。
如何用python解析midi曲目的乐器?