Skip to main content

core library for event based framework mutwo

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, modular, 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 import core_events
from mutwo import music_events
from mutwo import midi_converters
simple_melody = core_events.SequentialEvent(
    [
        music_events.NoteLike(pitch_name, duration=duration, volume="mf")
        for pitch_name, duration in (
            ("c", 0.75),
            ("a", 0.25),
            ("g", 1 / 6),
            ("es", 1 / 12),
        )
    ]
)
event_to_midi_file = midi_converters.EventToMidiFile()
event_to_midi_file.convert(simple_melody, "my_simple_melody.mid")

Making Western notation via abjad of the same melody:

from mutwo import abjad_converters
import abjad
abjad_voice_converter = abjad_converters.SequentialEventToAbjadVoice()
abjad_voice = abjad_voice_converter.convert(simple_melody)
abjad_score = abjad.Score([abjad.Staff([abjad_voice])])
abjad.show(abjad_score)

Lilypond engraving

Installation

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

pip3 install mutwo.ext-core

This only installs the core functionality (see infos regarding plugins below).

Documentation

For more information how to use mutwo read the documentation.

Modules

Starting from version 0.43.0 mutwo uses a modular design. Only basic functionality is provided by the mutwo core package.

Added internal functionality

  • mutwo.ext-music: Add music parameters (pitch, volume, ...) and a SimpleEvent based class to represent a Note/Chord/Rest (NoteLike)
  • mutwo.ext-common-generators: Algorithmic generation of data to be used for artistic works

Added conversion methods

Writing new plugins is simple, its basic structure can be understood at the mutwo.ext-example repo.

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.core-0.61.6.tar.gz (53.1 kB view details)

Uploaded Source

Built Distribution

mutwo.core-0.61.6-py3-none-any.whl (60.5 kB view details)

Uploaded Python 3

File details

Details for the file mutwo.core-0.61.6.tar.gz.

File metadata

  • Download URL: mutwo.core-0.61.6.tar.gz
  • Upload date:
  • Size: 53.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for mutwo.core-0.61.6.tar.gz
Algorithm Hash digest
SHA256 f868782fda06ba3d53c76064d07bc7024cf8e3e1abe6e88bb89442eac71ccf43
MD5 4115c7d05653cad39832db9ef5bb5ac8
BLAKE2b-256 c395a250f1f5600cc2ad3a4f1796bbd2a49a8145fd81ccd7f41e540416cf9986

See more details on using hashes here.

File details

Details for the file mutwo.core-0.61.6-py3-none-any.whl.

File metadata

  • Download URL: mutwo.core-0.61.6-py3-none-any.whl
  • Upload date:
  • Size: 60.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for mutwo.core-0.61.6-py3-none-any.whl
Algorithm Hash digest
SHA256 d2146444a3fa921615702aad2f06d5f6361ae589cc02490f5f5dea9cfae89706
MD5 e73c82991a7f43417c63d755017d0a2d
BLAKE2b-256 374e1a33a8169d36bccc0d6f5b3d19c3eea8ed4eafea466d7a801aa9fb23e835

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