Skip to main content

event based framework for generative art

Project description

mutwo

Build Status docs License: GPL v3 PyPI version Code style: black

disclaimer: This framework is still in an early stage of development and the API may still change until version 1.0.0.

Mutwo is a flexible, event based framework for composing music or other time-based arts in Python. It aims to help composers to build musical structures in a meaningful way and translate those structures to different third party objects (e.g. midi files, csound scores, musical notation with Lilypond via abjad). The general design philosophy stresses out the independence and freedom of the user with the help of generic data structures and an easily extensible and tweakable software design.

The following example generates a short midi file:

from mutwo.events import basic, music
from mutwo.converters import frontends
simple_melody = basic.SequentialEvent(
    [
        music.NoteLike(pitch_name, duration=duration, volume="mf")
        for pitch_name, duration in (
            ("c", 0.75),
            ("a", 0.25),
            ("g", 1 / 6),
            ("es", 1 / 12),
        )
    ]
)
midi_file_converter = frontends.midi.MidiFileConverter()
midi_file_converter.convert(simple_melody, "my_simple_melody.mid")

Making Western notation via abjad of the same melody:

import abjad
abjad_voice_converter = frontends.abjad.SequentialEventToAbjadVoiceConverter()
abjad_voice = abjad_voice_converter.convert(simple_melody)
abjad_score = abjad.Score([abjad.Staff([abjad_voice])])
abjad.show(abjad_score)

Lilypond engraving

Documentation

For more information how to use mutwo read the documentation.

Installation

Mutwo is available on pypi and can be installed via pip:

pip3 install mutwo

For using different backends or frontends (midi, abjad, ...) mutwo may need additional extra requirements. They can be installed by adding the respective backend in parenthesis:

pip3 install mutwo[abjad]

To install all extra requirements simply run:

pip3 install mutwo[all]

Requirements

Depending on the used converter classes, mutwo may need additional software to work properly. For using the Csound converter, you should install Csound first. For using Lilypond via mutwos abjad Converter, install Lilypond first. For using the ISiS converter, install ISiS first.

Similar projects

There are a many similar composition frameworks. Maybe one of them fits better to your particular use-case:

Python based composition frameworks:

  • scamp: "SCAMP is a computer-assisted composition framework in Python designed to act as a hub, flexibly connecting the composer-programmer to a variety of resources for playback and notation."
  • isobar: "isobar is a Python library for creating and manipulating musical patterns, designed for use in algorithmic composition, generative music and sonification."
  • JythonMusic: "JythonMusic is an environment for music making and creative programming."

Composition frameworks in other languages:

  • slippery-chicken: "a Common Lisp and CLOS package for algorithmic composition."
  • OpenMusic: "OpenMusic (OM) is a visual programming language for computer-assisted music composition created at IRCAM, inheriting from a long tradition of computer-assisted composition research."
  • Euterpea: "Euterpea is a cross-platform, domain-specific language for computer music applications embedded in the Haskell programming language."
  • jMusic: "jMusic is a project designed to provide composers and software developers with a library of compositional and audio processing tools."
  • Comic: "A Lisp-Environment for Inter-Media Composition."

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

mutwo-0.42.0.tar.gz (141.5 kB view details)

Uploaded Source

Built Distribution

mutwo-0.42.0-py3-none-any.whl (167.0 kB view details)

Uploaded Python 3

File details

Details for the file mutwo-0.42.0.tar.gz.

File metadata

  • Download URL: mutwo-0.42.0.tar.gz
  • Upload date:
  • Size: 141.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for mutwo-0.42.0.tar.gz
Algorithm Hash digest
SHA256 117cf6c184336bcf13c444b597c23651edad115485c5e24789050d9f41254c40
MD5 fafcb1a74edb8f1455d27009d78c6ab2
BLAKE2b-256 32939dc16df43f29f03c07485fb5f42d5b6f8c6455dc2a5a7977c880b1b4122b

See more details on using hashes here.

File details

Details for the file mutwo-0.42.0-py3-none-any.whl.

File metadata

  • Download URL: mutwo-0.42.0-py3-none-any.whl
  • Upload date:
  • Size: 167.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for mutwo-0.42.0-py3-none-any.whl
Algorithm Hash digest
SHA256 edce380c7c62ff0ee3f56c4fd54abf6d507ea26742ca5be8a7c2e5a4c1227e43
MD5 1878939b0225ab375c9924c97b26f006
BLAKE2b-256 d1e46499464b21de23339ed013ae3dbd10ee1be4739c9032e238571fbe4b75c1

See more details on using hashes here.

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