isedit

A python library that combines score editing tools with audio output.

APACHE-2.0 License

Downloads
33
Stars
0

Interactive Score Editor

A python library that combines score editing tools with audio output. image image

Overview

Interactive Score Editor is a python library that helps bridge a music notation library (such as Lilypond via Abjad(https://abjad.github.io/index.html) to an audio player (such as pydub). The goal is to resolve the following: "Abjad provides no audio output beyond LilyPond’s built-in MIDI functionality" (https://abjad.github.io/first_steps/audience.html).

A successful implementation will be helpful both for individuals creating music-composition tools / applications, as well as individuals looking to play around with music composition and sound in a notebook, and will cut the time from starting a music project to hearing actual sound (an element which has been a personal annoyance).

Installation

Prerequisites:

  • Python >=3.7,
  • lilypond, portaudio
  • numpy, pyaudio, midiutil, ipython, pygame

To install python packages:

$ pip install numpy
$ pip install pyaudio
$ pip install midiutil
$ pip install ipython
$ pip install pygame

Lilypond (https://lilypond.org) and portaudio (http://www.portaudio.com) can be installed from their websites, with brew

$ brew install lilypond
$ brew install portaudio

or with apt

# sudo apt install portaudio19-dev python3-pyaudio
# sudo apt install -y lilypond

Ensure that lilypond runs from the command line by running

$ lilypond --version

Quick start example

import isedit
Piece = isedit.Piece
p1 = Piece(60, "3/4")

p1.addVoice("e' f' g'", 4)
p1.addVoice("e' f' g'", 4)
p1.addVoice("c'4 d'4 e'4 f'4 g'4 a'4 b'4 c''4 b'4 c''2.")
p1.play()
p1.getScore()

The above example demonstrates the primary functionality of the piece object; the ability to play and display notes using the same object. In the newest release, the experimental p1.getScoreObject() option makes editing notes even easier.

Contributions

See the guidelines for Contributing