Skip to main content

A python package for music notation and generation

Project description

Musiclang

MusicLang logo

Documentation Status

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

Read our documentation.

How to install

MusicLang is available on Pypi :

pip install musiclang

Examples

  1. 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')
  1. 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à !

Happy birthday score

  1. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

musiclang-0.26.0.tar.gz (182.6 kB view hashes)

Uploaded Source

Built Distribution

musiclang-0.26.0-py3-none-any.whl (231.5 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page