From EMC Electronic Music Coders
Jump to navigation Jump to search

Python is an interpreted high-level general-purpose programming language. Its design philosophy emphasizes code readability with its use of significant indentation. Its language constructs as well as its object-oriented approach aim to help programmers write clear, logical code for small and large-scale projects.

The standard programming language for data science and for us especially:

  • audio analysis and manipulation using librosa

Also used to interface with 3d software such as poser 3d/blender and audacity and Libre Office.

Package Manager[edit]

  • Miniconda is a minimal installer of conda
  • Conda is an open-source package management system and environment management system that runs on Windows, macOS, and Linux. Conda quickly installs, runs, and updates packages and their dependencies. Conda easily creates, saves, loads, and switches between environments on your local computer. It was created for Python programs but it can package and distribute software for any language.

Statements and control flow[edit]

Python's Statement include (among others):

  • The Assignment (computer science)|assignment statement, using a single equals sign =.
  • The if-then-else|if statement, which conditionally executes a block of code, along with else and elif (a contraction of else-if).
  • The Foreach#Python|for]] statement, which iterates over an iterable object, capturing each element to a local variable for use by the attached block.
  • The While loop#Python|while]] statement, which executes a block of code as long as its condition is true.
  • The Exception handling syntax#Python|try statement, which allows exceptions raised in its attached code block to be caught and handled by except clauses; it also ensures that clean-up code in a finally block will always be run regardless of how the block exits.
  • The raise statement, used to raise a specified exception or re-raise a caught exception.
  • The class statement, which executes a block of code and attaches its local namespace to a class (computer science)|class, for use in object-oriented programming.
  • The def statement, which defines a function or method.
  • The dispose pattern#Language constructs|with statement, which encloses a code block within a context manager (for example, acquiring a lock before the block of code is run and releasing the lock afterwards, or opening a file and then closing it), allowing resource acquisition is initialization (RAII)-like behavior and replaces a common try/finally idiom.
  • The break statement, exits from a loop.
  • The continue statement, skips this iteration and continues with the next item.
  • The del statement, removes a variable, which means the reference from the name to the value is deleted and trying to use that variable will cause an error. A deleted variable can be reassigned.
  • The pass statement, which serves as a NOP. It is syntactically needed to create an empty code block.
  • The assertion (programming)|assert statement, used during debugging to check for conditions that should apply.
  • The yield statement, which returns a value from a generator (computer programming)#Python|generator function and yield is also an operator. This form is used to implement coroutines.
  • The return statement, used to return a value from a function.
  • The include directive|import statement, which is used to import modules whose functions or variables can be used in the current program.

Essential Software[edit]






Graphing and visual displays in Music21 are provided by Matplotlib. Matplotlib itself has additional dependencies (such as NumPy).

On Mac if you are using the version from, run:

pip3 install matplotlib

and you should be set. If you are using a version from anaconda (conda, miniconda, etc.), you should run these lines:

conda install matplotlib conda install numpy Numeric extensions to Python. Included with Matplotlib.

On Mac if you are using the version of python 3 from, run:

pip3 install numpy and you should be set.


Scientific extensions to Python. These are used to accelerate audio searching and fast-Fourier transforms in music21. If you will only be using symbolic music, it is not used, and not essential in any case.

On Mac if you are using the version from, run:

pip3 install scipy and you should be set.


Allows for recording within python. We use it for the audioSearch module, and nowhere else. Not essential. Requires portaudio and, on the Mac, the XCode command-line development tools.

On the Mac, run:

xcode-select --install brew install portaudio pip3 install pyaudio


Allows for realtime MIDI performance. We use it in the midi.realtime module, and nowhere else. It is therefore not essential.

On the Mac, run:

pip3 install pygame Installing Additional Software Components Additional functionality of music21 is available with the installation of numerous helper applications. While not essential for all applications, these tools will aid in working with music21.


MuseScore offers a free, full-featured, cross-platform (Windows, Mac OS, Ubuntu, Debian, and Fedora) application for viewing and editing music notation. MuseScore can import and export MusicXML, and provides an excellent way to view, edit, and export musical data for working in music21. Downloading MuseScore (version 2 or higher) is highly recommended for working with music21.


Lilypond is a free, open-source music display program that can produce beautiful scores. Music21 can generate PDF or PNG (like JPG) files automatically if Lilypond is installed on your system. Download it at: