event based framework for generative art
Project description
mutwo
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.core.events import basic
from mutwo.ext.events import music
from mutwo.ext.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)
Plugins
Starting from version 0.43.0 mutwo uses a plugin based design. Only basic and internal functionality is provided by the main mutwo core package. For adding various third party converter support and additional functionality the mutwo ecosystem supports plugin-like extension packages. The following list gives an overview of currently supported extensions:
- mutwo.ext-music: Improve workflow in writing traditional note based music by adding the
mutwo.ext.events.music
module - mutwo.ext-common-generators: Algorithmic generation of data to be used for artistic works
- mutwo.ext-midi: Render mutwo events to midi files
- mutwo.ext-abjad: Build Lilypond based Western score notation via Abjad
- mutwo.ext-csound: Create electronic music parts via csound
- mutwo.ext-isis: Use singing synthesis via ISiS
- mutwo.ext-reaper: Helpful converters for the Reaper DAW
- mutwo.ext-ekmelily: Simplify writing microtonal notation in Lilypond by rendering files for the Lilypond extension Ekmelily
- mutwo.ext-mmml: Write music in plain text files and convert it to mutwo events (experimental)
Writing new plugins is simple, its basic structure can be understood at the mutwo.ext-example repo.
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
This only installs the core functionality (see plugins above).
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
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
File details
Details for the file mutwo-0.49.1.tar.gz
.
File metadata
- Download URL: mutwo-0.49.1.tar.gz
- Upload date:
- Size: 49.9 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
Algorithm | Hash digest | |
---|---|---|
SHA256 | f4dece631988066e990d2caa18d6dbe721dbb24a203d1f8961be10135e872135 |
|
MD5 | 18fd23cacd2428e5f771dde6316247d2 |
|
BLAKE2b-256 | 6d078523c4c65fc9f027cc3e3cd1e07a465e97c66e33b4bfcc66ec33b253bca5 |
File details
Details for the file mutwo-0.49.1-py3-none-any.whl
.
File metadata
- Download URL: mutwo-0.49.1-py3-none-any.whl
- Upload date:
- Size: 58.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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 92747b370a065b5f8b0552848cdf1c5f435885893abf14a05a38e3227400fdd4 |
|
MD5 | 74f43adef9f4a7edefe2893e16d90153 |
|
BLAKE2b-256 | f8aa2ef330a59474417afbec526f31dadf1644852c2aa5306cf79c22208c10a4 |