Skip to content
@mutwo-org

mutwo

Mutwo is a flexible, modular, event based framework for composing music or other time-based arts in Python

mutwo

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.Consecution(
    [
        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.ConsecutionToAbjadVoice()
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.

Modular design

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.core: Base package for mutwo ecosystem
  • mutwo.music: Add music parameters (pitch, volume, ...) and a SimpleEvent based class to represent a Note/Chord/Rest (NoteLike)
  • mutwo.common: Algorithmic generation of data to be used for artistic works
  • mutwo.timeline: Place events on a time line by start and end times.

Added conversion methods

Writing new plugins is simple, its basic structure can be understood at the mutwo.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."
  • musisc21: "A Toolkit for Computational Musicology"
  • musicpy: "Musicpy is a music programming language in Python designed to write music in very handy syntax through music theory and algorithms."
  • musx: "musx (pronounced muse ex) is a package for composing and processing symbolic music information."

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."
  • MusicKit: A framework for composing and transforming music in Swift
  • Opusmodus: “Opusmodus is a comprehensive computer-aided environment for the whole work of music composition a virtual space where a composer can develop ideas and experiments for projects large and small” (commercial, closed-source)
  • gm: "R Package for Music Score and Audio Generation"

Pinned

  1. mutwo.core mutwo.core Public

    core library of mutwo: event based library for composing music or other time-based arts in python

    Python 9 1

  2. mutwo.example mutwo.example Public

    Example extension for event based library mutwo

    Python

Repositories

Showing 10 of 17 repositories
  • .github Public
    0 0 0 0 Updated May 5, 2024
  • mutwo-org.github.io Public

    This repository hosts the documentation of event-based framework mutwo.

    0 GPL-3.0 0 1 0 Updated May 5, 2024
  • mutwo-nix Public

    nix repo for mutwo

    Nix 0 GPL-3.0 0 0 0 Updated May 5, 2024
  • mutwo.common Public

    Common generators extension for event based framework for generative art

    Python 0 GPL-3.0 0 0 0 Updated May 5, 2024
  • mutwo.acoustic Public

    acoustic functionalities for event based framework mutwo

    Python 0 GPL-3.0 0 0 0 Updated May 5, 2024
  • mutwo.mmml Public

    MMML extension for event based library mutwo

    Python 0 GPL-3.0 0 0 0 Updated May 5, 2024
  • mutwo.timeline Public

    Place events on timeline. Extension for mutwo.

    Python 0 GPL-3.0 0 0 0 Updated May 3, 2024
  • mutwo.reaper Public

    Reaper extension for event based library mutwo

    Python 1 GPL-3.0 1 0 0 Updated Apr 26, 2024
  • mutwo.csound Public

    Csound extension for event based library mutwo.

    Python 0 GPL-3.0 1 0 0 Updated Apr 26, 2024
  • mutwo.abjad Public

    Abjad extension for event based library mutwo

    Python 1 GPL-3.0 0 2 0 Updated Apr 26, 2024

Top languages

Loading…

Most used topics

Loading…