如何在 Python 中将 ABC 表示法的音乐文件转换为 midi 或 mp3 [关闭]

Posted

技术标签:

【中文标题】如何在 Python 中将 ABC 表示法的音乐文件转换为 midi 或 mp3 [关闭]【英文标题】:How to convert music file in ABC notation to midi or mp3 in Python [closed] 【发布时间】:2021-05-02 06:20:44 【问题描述】:

我有 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/) | f2 ed cAGE | F2 D2 D2 ((3ABc)|
          dcdA GFGB | Adfe   dcAc | dcde    fedc | A2 A>G A2    :|


X:1758
T:The Sirit Peallow
M:C|
L:1/8
N:"collected by J. O'Neill"
B:O'Neill's 1429
Z:"Transcribed by Bob Safranek, rjs@gsp.org"
K:D
(D | F)ABA    FAFD  | (F2AGF) DFAF | DEFE DEFD | EFAF DFAF |
dD ((3DDD) (FA) BcdF|   E2 ((3EFG) A2    ||
       d2  (fd) cBAG | F2 (AG) FDAD | ((3FED) (AD) CEEG    |    FEFG AB G2 :|
((3fgf) (df) (ed) B2 |  A2 (Ac)      BcdB   | Adfa    gfe^d | e2 (ae) fedc |
       BGDF   GABc  d2 (ga) | ((3fga) (fd) efge | ((3fga) (ec)

【问题讨论】:

【参考方案1】:

一般来说,如果你有一个 xyz.abc 文件,你可以在 python 中将它转换为 music21 中的 MIDI:

from music21 import converter
s = converter.parse('xyz.abc')
s.show('midi')  # or s.write('midi', fp='output.mid')

或者如果它是 abc 分数的集合,您可以通过以下方式获得特定分数:

from music21 import converter
s = converter.parse('xyz.abc', number=1758)
s.show('midi')  # or s.write('midi', fp='output.mid')

这样就可以了(然后您可以将其转换为 mp3。

O'Neill 收藏中的曲目应该已经在 music21 的语料库中,但我们的版本中似乎没有这首曲目。

【讨论】:

以上部分是使用 ML 模型生成的。我尝试了您提到的方式,我得到了 ABCHandlerException: no active default note length provided for note processing。 tPrev:无,t:,tNext: 错误

以上是关于如何在 Python 中将 ABC 表示法的音乐文件转换为 midi 或 mp3 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Python图像特征的音乐序列生成解析ABC格式的文件

如何在python中将一个对象引用到另一个对象?

如何用一句python代码打印五行“abc”,注意是十行?

如何在python中将数组保存到文本文件?

如何在python中将字典项作为函数参数传递? [复制]

如何在 Python 中将类对象转换为 JSON