Musiclang
用于编写、分析、转换和预测音乐的Python框架。
什么是MusicLang?
MusicLang简单地代表"音乐语言",是一个实现了新的调性音乐语言的Python框架。 这种语言允许作曲家以简单、简洁和高级的方式加载、编写、转换和预测符号音乐。
MusicLang内部使用LLM(大型语言模型)来预测音乐乐谱中接下来可能发生的内容。 /!\ 请注意:我们将AI从语言本身分离到一个名为musiclang_predict的新包中。如果你想使用musiclang的AI功能,请安装musiclang_predict包。
这个框架非常适合:
- 快速生成音乐创意。
- 进行符号音乐预测或补全。
- 创建MIDI文件的可解释和丰富的文本表示。
如何安装
MusicLang可在Pypi上获取:
pip install musiclang
示例
- 一个在musiclang中创建C大调和弦并保存为MIDI的"Hello World"示例:
from musiclang.library import *
# 写一个C大调和弦(C大调音阶的第一级)
score = (I % I.M)(piano=[s0, s2, s4])
# 存储为MIDI
score.to_midi('c_major.mid')
- 快速创建、转换和和声化一个主题:
from musiclang.library import *
# 创建一个酷炫的旋律(生日快乐歌的开头,独立于任何和声背景)
melody = s4.ed + s4.s + s5 + s4 + s0.o(1) + s6.h
# 用大提琴和双簧管创建一个简单的伴奏
acc_melody = r + s0.o(-1).q * 3 + s0.o(-1).h
accomp = {'cello__0': acc_melody, 'oboe__0': acc_melody.o(1)}
# 在F大调中演奏
score = (I % IV.M)(violin__0=melody, **accomp)
# 在F小调和强音中重复第二遍
score += (score % I.m).f
# 只是为了在第一小节创建一个弱起
score = (I % I.M)(violin__0=r.h) + score
# 通过自动应用对位法规则稍微改变伴奏
score = score.get_counterpoint(fixed_parts=['violin__0'])
# 保存为musicxml
score.to_musicxml('happy_birthday.musicxml', signature=(3, 4), title='生日快乐!')
# 完成!
- 使用在musiclang语言上训练的深度学习模型预测乐谱:
更多信息请参见MusicLang Predict。
联系我们
如果你想帮助塑造开源音乐生成/语言建模的未来, 请联系我们
许可证
MusicLang基础语言(本包)根据BSD 3-Clause许可证授权。 MusicLang predict包及其相关模型根据GPL-3.0许可证授权。