A python package for music notation and generation
Project description
Musiclang
The Python framework to write, analyze, transform and predict music.
What is MusicLang ?
MusicLang which simply stands for "music language" is a Python framework implementing a new language for tonal music. This language allows composers to load, write, transform and predict symbolic music in a simple, condensed and high level manner.
MusicLang internally uses a LLM (Large Language Model) to predict what could happen next in a musical score. /!\ Please note that : we decoupled AI from the language itself in a new package called musiclang_predict. If you want to use AI capabilities of musiclang please install musiclang_predict package.
This framework is well suited to :
- Generate musical ideas quickly.
- Do symbolic music prediction or inpainting.
- Create an interpretable and rich text representation of a midi file
How to install
MusicLang is available on Pypi :
pip install musiclang
Examples
- A hello world example to create a C-major chord in musiclang and save it to midi :
from musiclang.library import *
# Write a C major chord (First degree of C major scale)
score = (I % I.M)(piano=[s0, s2, s4])
# Store it to midi
score.to_midi('c_major.mid')
- Create, transform and harmonize a theme quickly :
from musiclang.library import *
# Create a cool melody (the beginning of happy birthday, independant of any harmonic context)
melody = s4.ed + s4.s + s5 + s4 + s0.o(1) + s6.h
# Create a simple accompaniment with a cello and a oboe
acc_melody = r + s0.o(-1).q * 3 + s0.o(-1).h
accomp = {'cello__0': acc_melody, 'oboe__0': acc_melody.o(1)}
# Play it in F-major
score = (I % IV.M)(violin__0=melody, **accomp)
# Repeat the score a second time in F-minor and forte
score += (score % I.m).f
# Just to create an anachrusis at the first bar
score = (I % I.M)(violin__0=r.h) + score
# Transform a bit the accompaniment by applying counterpoint rules automatically
score = score.get_counterpoint(fixed_parts=['violin__0'])
# Save it to musicxml
score.to_musicxml('happy_birthday.musicxml', signature=(3, 4), title='Happy birthday !')
# Et voilà !
- Predict a score using a deep learning model trained on musiclang language :
See MusicLang Predict for more information.
Contact us
If you want to help shape the future of open source music generation / language modeling, please contact us
License
The MusicLang base language (this package) is licensed under the BSD 3-Clause License. The MusicLang predict package and its associated models is licensed under the GPL-3.0 License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for musiclang-0.24.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f4ae211d5de7e932be6dfe87f35b2e3d71456384bd5b19b20584e23c0824b232 |
|
MD5 | 0ac80d48ddaf7abc3dcd16820676a179 |
|
BLAKE2b-256 | 4b57805a611d76c257a2c44fa5c9de47b47e66ac7e8f777066c5f1ab53807a95 |