Differences between revisions 2 and 63 (spanning 61 versions)
Revision 2 as of 2004-11-02 06:02:12
Size: 10446
Editor: 211
Comment: +PyMedia
Revision 63 as of 2008-12-09 19:37:01
Size: 24580
Editor: 5ac0ddb7
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
Alphabetical as of yet non-comprehensive list of music / sound processing / audio software which uses python in some way or the other. This page is divided in four sections: Music software written in python, Music software supporting python, Music programming in python, and a category of unsorted (may still fit in the above)
Line 3: Line 3:
 * '''AthenaCL''' - AthenaCL is an open-source, cross-platform, command-line program that functions as both a pitch (class) set theory utility (capable of both set and voice-leading modeling and analysis) as well as an object-orientated, Python-scriptable algorithmic front-end to Csound. Combining these features allows rapid and flexible scoring of Csound instruments with the elegance of Python-written texture algorithms. These simple algorithms allow the organization of pitch-materials by ordered content-groups, employing 12-tone set-class and pitch-class notations. Rather than writing its own music, AthenaCL is a compositional assistant: the algorithms create complex textural surfaces, leaving the limitless mixture and placement of these textures and their attributes entirely in the hands of the composer. [http://www.flexatone.net/athena.html >] = Music software written in python =
Line 5: Line 5:
 * '''blue''' - blue is a java program for use with Csound. It's interface is much like a digital multitrack, but differs in that there timelines within timelines (polyObjects). This allows for a compositional organization in time that seems to me to be very intuitive, informative, and flexible. soundObjects are the building blocks within blue's score timeline. soundObjects can be lists of notes, algorithmic generators, python script code, csound instrument definitions, and whatever plugins that are developed for blue. these soundObjects may be text based, but they can be completely GUI based as well. [http://csounds.com/stevenyi/blue/index.html >] == Audio Players ==
Line 7: Line 7:
 * '''Csound / CsoundVST''' - Csound is a programming language designed and optimized for sound rendering and signal processing. The language consists of over 450 opcodes - the operational codes that the sound designer uses to build "instruments" or patches. Although there are an increasing number of graphical "front-ends" for the language, you typically design and modify your patches using a word processor. Usually, you create two text files - a .orc (orchestra) file containing the "instruments," and a .sco (score) file containing the "notes." In Csound, the complexity of your patches is limited by your knowledge, interest, and need, but never by the language itself. For instance, a 22,050 oscillator additive synthesizer with 1024 stage envelope generators on each is merely a copy-and-paste operation. The same goes for a 1 million voice granular texture! Have you ever dreamed of sounds such as these? Well in Csound you can. And in Csound these dreams can come true! [http://www.csounds.com/ >]  * '''Bluemindo''' - Bluemindo is a really simple but powerful audio player in Python/PyGTK, using Gstreamer. Bluemindo is a free (as in freedom) software, released under GPLv3, only. [[http://bluemindo.codingteam.net/|>]]
Line 9: Line 9:
 * '''dublin''' - Dublin is an object oriented framework to generate events in pd, short for [http://iem.kug.ac.at/pd/ Pure Data], a graphical Computer Music System written by [http://crca.ucsd.edu/~msp/ Miller S. Puckette]. Every object is defined in python and then it interacts with other objects in pure-data. The goal is not only the provide an external python facility to pd but also to give the functionality of a sequencer. As for the user interface, it uses Idle, the Python IDE to edit and run event scripts. [http://seqdublin.sourceforge.net/ >]  * '''cplay''' - a curses front-end for various audio players [[http://mask.tf.hut.fi/~flu/hacks/cplay/|>]]
Line 11: Line 11:
 * '''GNU Solfege''' - GNU Solfege is a computer program written to help you practice ear training.It can be useful when practicing the simple and mechanical exercises. [http://solfege.org/ >]  * '''edna''' - an MP3 server, edna allows you to access your MP3 collection from any networked computer. The web pages are dynamically constructed, adjusting to directory structure and the files in those directories. This is much nicer than using simple directory indexing.
 Rather than directly serving up an MP3, the software serves up a playlist. This gets passed to your player (e.g. WinAmp) which turns around with an HTTP request to stream the MP3. [[http://edna.sourceforge.net/|>]]
Line 13: Line 14:
 * '''Hypersonic''' - Hypersonic is for building and manipulating sound processing pipelines. It is designed for real-time control. It includes objects for oscillators, filters, file-io, soundcard and memory operations. [http://arrowtheory.com/software/hypersonic/index.html >]  * '''Listen''' - Music management and playback for GNOME [[http://listengnome.free.fr/|>]]
Line 15: Line 16:
 * '''ID3.py''' - This module allows one to read and manipulate so-called ID3 informational tags on MP3 files through an object-oriented Python interface. [http://id3-py.sourceforge.net/ >]  * '''MMA''' - Musical Midi Accompaniment. If you follow the above link you will find that Pymprovisator is no longer developed due to the fact that there is this similar, but more powerful GPL Python software. [[http://www.mellowood.ca/mma/|>]]
Line 17: Line 18:
 * '''id3reader.py''' - Id3reader.py is a Python module that reads ID3 metadata tags in MP3 files. It can read ID3v1, ID3v2.2, ID3v2.3, or ID3v2.4 tags. It does not write tags at all. [http://www.nedbatchelder.com/code/modules/id3reader.html >]  * '''Pymprovisator''' - Pymprovisator is a program that emulates the program Band in a Box from PG Music. You can think in it like the electronic version of the books+CD from Jamey Aebersold. You set the basic parameters in a song: title, style, key, chords sequence,... and the program will generate a Midi file with the correct accompaniment. [[http://pymprovisator.sourceforge.net/|>]] (dev suspended)
Line 19: Line 20:
 * '''m3ute2''' - m3ute2 is program for copying, moving, and otherwise organizing M3U playlists and directories. m3ute2 can also generate detailed reports about lists of files. [http://sourceforge.net/projects/m3ute2/ >]  * '''Pymps''' - Pymps is the PYthon Music Playing System - a web based mp3/ogg jukebox. It's written in Python and utilises the PostgreSQL database. [[http://www.anti-particle.com/pymps.shtml|>]]
Line 21: Line 22:
 * '''midi.py''' - Python MIDI classes: meaningful data structures that represent MIDI events and other objects. You can read MIDI files to create such objects, or generate a collection of objects and use them to write a MIDI file. [http://groups.google.com/groups?hl=en&selm=3C0F67FE.96E7CAE8%40alum.mit.edu >]  * '''Pymserv''' - PyMServ is a graphical client for mserv, a music server. It is written in python using pygtk and gconf to store prefs. [[http://home.gna.org/pymserv/|>]]
Line 23: Line 24:
 * '''MusicKit''' - The MusicKit is an object-oriented software system for building music, sound, signal processing, and MIDI applications. It has been used in such diverse commercial applications as music sequencers, computer games, and document processors. Professors and students in academia have used the MusicKit in a host of areas, including music performance, scientific experiments, computer-aided instruction, and physical modeling. Using the Python to Objective C bridge PyObjC enables applications and utilities to be written in Python, an interpreted object-oriented language. [http://musickit.sourceforge.net/ >]  * '''Pytone''' - Pytone is a music jukebox written in Python with a curses based GUI. While providing advanced features like crossfading and multiple players, special emphasis is put on ease of use, turning PyTone into an ideal jukebox system for use at parties. [[http://www.luga.de/pytone/|>]]
Line 25: Line 26:
 * '''Nam: not about music''' - A Python Extension for Digital Music Applications. Its purpose is Flexible realtime MIDI and audio processing and sequencing. [http://www.quitte.de/nam.html >]  * '''Quod Libet''' - Quod Libet is a GTK+-based audio player written in Python. It lets you make playlists based on regular expressions. It lets you display and edit any tags you want in the file. And it lets you do this for all the file formats it supports -- Ogg Vorbis, FLAC, MP3, Musepack, and MOD. [[http://sacredchao.net/quodlibet/|>]]
Line 27: Line 28:
 * '''OSC.py''' - Python classes for [http://cnmat.cnmat.berkeley.edu/OpenSoundControl/ OpenSoundControl] library client functionality. The OSC homepage is at [http://web.tiscali.it/mupuxeddu/csound/OSC.py >]  * '''TheTurcanator''' - a small midi piano tutor for windows and mac. Includes CoreMIDI wrapper written in pyrex. [[http://turcanator.tangentcode.com/|>]]
Line 29: Line 30:
 * '''PMIDI''' - The PMIDI library allows the generation of short MIDI sequences in Python code.The interface allows a programmer to specify songs, instruments, measures, and notes. Playback is handled by the Windows MIDI stream API so proper playback timing is handled by the OS rather than by client code. The library is especially useful for generating earcons. [http://sourceforge.net/projects/uncassist >]
Line 31: Line 31:
 * '''PyMedia''' - PyMedia is a Python module for the multimedia purposes. It provides rich and simple interface for the digital media manipulation( wav, mp3, ogg, avi, divx, dvd, cdda etc ). It includes parsing, demutiplexing, multiplexing, coding and decoding. It can be compiled for Windows, Linux and cygwin. [http://pymedia.org >] == Audio Convertors ==
Line 33: Line 33:
 * '''PMask''' - Python implementation of CMask, a stochastic event generator for Csound. [http://web.tiscali.it/mupuxeddu/csound/index.html >]  * '''audio-convert-mod''' - audio-convert-mod is a simple audio file converter that supporting many formats. At just a right-click, you can convert any amount of music files to WAV, MP3, AAC, Ogg and more. audio-convert-mod was designed with the same principles as fwbackups - keeping things simple. [[http://www.diffingo.com/oss/audio-convert-mod/|>]]
Line 35: Line 35:
 * '''PyID3''' - pyid3 is a pure python library for reading and writing id3 tags (version 1.0, 1.1, 2.3, 2.4, readonly support for 2.2). What makes this better than all the others? Testing! This library has been tested against some 200+ MB of just tags. [http://icepick.info/projects/pyid3/ >] == Ear Training ==
Line 37: Line 37:
 * '''Pymprovisator''' - Pymprovisator is a program that emulates the program Band in a Box from PG Music. You can think in it like the electronic version of the books+CD from Jamey Aebersold. [http://pymprovisator.sourceforge.net/ >]  * '''GNU Solfege''' - GNU Solfege is a computer program written to help you practice ear training. It can be useful when practicing the simple and mechanical exercises. [[http://www.solfege.org/|>]]
Line 39: Line 39:
 * '''PyJack''' - This is a Python C extension module which provides an interface to the Jack Audio Server. It is possible to access the Jack graph to perform port connections/disconnections, monitor graph change events, and to perform realtime audio capture and playback using Numeric Python arrays. This is released under the GPL. [http://www.a2hd.com/software/ >] == cSound ==
Line 41: Line 41:
 * '''PyMIDI''' - The MIDI module provides MIDI input parsers for Python [http://www.hyperreal.org/~est/python/MIDI/ >]  * '''athenaCL''' - modular, polyphonic, poly-paradigm algorithmic music composition in an interactive command-line environment. The athenaCL system is an open-source, cross-platform, object-oriented composition tool written in Python; it can be scripted and embedded, includes integrated instrument libraries, post-tonal and microtonal pitch modeling tools, multiple-format graphical outputs, and musical output in Csound, MIDI, audio file, XML, and text formats. [[http://www.flexatone.net/athena.html|>]]
Line 43: Line 43:
 * '''Pygame''' - Pygame is a set of Python modules designed for writing games. It is written on top of the excellent SDL library. This allows you to create fully featured games and multimedia programs in the python language. Pygame is highly portable and runs on nearly every platform and operating system. [http://pygame.org/ >]  * '''Cabel''' - Visual way to create csound instruments. [[http://cabel.sourceforge.net/install.html|>]]
Line 45: Line 45:
 * '''Pymps''' - Pymps is the PYthon Music Playing System - a web based mp3/ogg jukebox. It's written in Python and utilises the PostgreSQL database. [http://www.anti-particle.com/pymps.shtml >]  * '''Dex Tracker''' - Front end for csound that includes a tracker style score editor in a grid, text editor, cabel tested with python 2.5. [[http://www.stormpages.com/edexter/csound.html|>]]
Line 47: Line 47:
 * '''Pyper''' - Pyper is a musical development environment. It allows you to write Python scripts that generates music in real-time. Pyper uses QuickTime Musical Instruments for synthesis. [http://www.stanford.edu/~andyszy/pyper/ >]
Line 49: Line 48:
 * '''pySonic''' - pySonic is a Python wrapper around the high performance, cross platform [http://www.fmod.org/ FMOD sound library]. You get all the benefits of the FMOD library, but in a Pythonic, object oriented package. [http://pysonic.sourceforge.net/ >] == Audio (Visual) Programming Frameworks ==
Line 51: Line 50:
 * '''PythonMIDI''' - The Python Midi package is a collection of classes handling Midi in and output in the Python programming language. [http://www.mxm.dk/products/public/pythonmidi >]  * '''Hypersonic''' - Hypersonic is for building and manipulating sound processing pipelines. It is designed for real-time control. It includes objects for oscillators, filters, file-io, soundcard and memory operations. [[http://arrowtheory.com/software/hypersonic/index.html|>]]
Line 53: Line 52:
 * '''PythonSound''' - The Python Sound Project aims to develop a productive community around Python, Csound and other synthesis engines as tools for algorithmic and computer assisted composition of electroacoustic music. [http://pythonsound.sourceforge.net/ >] = Music programming in python =
Line 55: Line 54:
 * '''Snack''' - The Snack Sound Toolkit is designed to be used with a scripting language such as Tcl/Tk or Python. Using Snack you can create powerful multi-platform audio applications with just a few lines of code. Snack has commands for basic sound handling, such as playback, recording, file and socket I/O. Snack also provides primitives for sound visualization, e.g. waveforms and spectrograms. It was developed mainly to handle digital recordings of speech, but is just as useful for general audio. Snack has also successfully been applied to other one-dimensional signals. The combination of Snack and a scripting language makes it possible to create sound tools and applications with a minimum of effort. This is due to the rapid development nature of scripting languages. As a bonus you get an application that is cross-platform from start. It is also easy to integrate Snack based applications with existing sound analysis software. [http://www.speech.kth.se/snack/ >] == Playing & creating sound ==
Line 57: Line 56:
 * '''winmidi.pyd''' - A demo? of a python extension interfacing to the native windows midi libs that developed from [http://www.sabren.net/rants/2000/01/20000129a.php3 earlier] attempts. [http://www.sabren.net/code/python/midi/ >]  * '''audiolab''' - audiolab is a small python package to import data from audio files to numpy arrays and export data from numpy arrays to audio files. It uses libsndfile from Erik Castro de Lopo for the underlying IO, which supports many different audio formats: http://www.mega-nerd.com/libsndfile/ [[http://www.ar.media.kyoto-u.ac.jp/members/david/softwares/audiolab/|>]]

 * '''Loris''' - Loris is an Open Source C++ class library implementing analysis, manipulation, and synthesis of digitized sounds using the Reassigned Bandwidth-Enhanced Additive Sound Model. Loris supports modified resynthesis and manipulations of the model data, such as time- and frequency-scale modification and sound morphing. Loris includes support and wrapper code for building extension modules for various scripting languages (Python, Tcl, Perl). [[http://www.cerlsoundgroup.org/Loris/|>]]

 * '''mingus''' - mingus is an advanced music theory and notation package for python. It can be used to play around with music theory, to build editors, educational tools and other applications that need to process music. It can also be used to create sheet music with LilyPond and do automated musicological analysis. [[http://code.google.com/p/mingus/|>]]

 * '''MusicKit''' - The MusicKit is an object-oriented software system for building music, sound, signal processing, and MIDI applications. It has been used in such diverse commercial applications as music sequencers, computer games, and document processors. Professors and students in academia have used the MusicKit in a host of areas, including music performance, scientific experiments, computer-aided instruction, and physical modeling. PyObjC is required to use this library in python. [[http://musickit.sourceforge.net/|>]]

 * '''pyAudio''' - PyAudio provides Python bindings for PortAudio, the cross-platform audio I/O library. Using PyAudio, you can easily use Python to play and record audio on a variety of platforms. Seems to be a successor of fastaudio, a once popular binding for PortAudio [[http://people.csail.mit.edu/hubert/pyaudio/|>]]

 * '''Pygame''' - Pygame is a set of Python modules designed for writing games. It is written on top of the excellent SDL library. This allows you to create fully featured games and multimedia programs in the python language. Pygame is highly portable and runs on nearly every platform and operating system. [[http://pygame.org/|>]]

 * '''PyMedia''' - PyMedia is a Python module for the multimedia purposes. It provides rich and simple interface for the digital media manipulation( wav, mp3, ogg, avi, divx, dvd, cdda etc ). It includes parsing, demutiplexing, multiplexing, coding and decoding. It can be compiled for Windows, Linux and cygwin. [[http://pymedia.org|>]]

 * '''Pyper''' - Pyper is a musical development environment. It allows you to write Python scripts that generates music in real-time. Pyper uses QuickTime Musical Instruments for synthesis. [[http://andy.bigwhitebox.org/pyper/|>]]

 * '''pySonic''' - pySonic is a Python wrapper around the high performance, cross platform, but closed source, [[http://www.fmod.org/|FMOD sound library]]. You get all the benefits of the FMOD library, but in a Pythonic, object oriented package. [[http://pysonic.sourceforge.net/|>]]

 * '''PySndObj''' - The Sound Object Library is an object-oriented audio processing library. It provides objects for synthesis and processing of sound that can be used to build applications for computer-generated music. The core code, including soundfile and text input/output, is fully portable across several platforms. Platform-specific code includes realtime audio IO and MIDI input support for Linux (OSS,ALSA and Jack), Windows (MME and ASIO), MacOS X (CoreAudio, but no MIDI at moment), Silicon Graphics (Irix) machines and any Open Sound System-supported UNIX. The SndObj library also exists as python module, aka PySndObj. The programming principles for Python SndObj programming are similar to the ones used in C++. It is also possible to use the python interpreter for on-the-fly synthesis programming. [[http://sndobj.sourceforge.net/|>]]

 * '''Snack''' - (last update: December 2005) The Snack Sound Toolkit is designed to be used with a scripting language such as Tcl/Tk or Python. Using Snack you can create powerful multi-platform audio applications with just a few lines of code. Snack has commands for basic sound handling, such as playback, recording, file and socket I/O. Snack also provides primitives for sound visualization, e.g. waveforms and spectrograms. It was developed mainly to handle digital recordings of speech (being developped at the KTH music&speech department), but is just as useful for general audio. Snack has also successfully been applied to other one-dimensional signals. The combination of Snack and a scripting language makes it possible to create sound tools and applications with a minimum of effort. This is due to the rapid development nature of scripting languages. As a bonus you get an application that is cross-platform from start. It is also easy to integrate Snack based applications with existing sound analysis software. [[http://www.speech.kth.se/snack/|>]]


== Community ==

 * '''PythonSound''' - The Python Sound Project aims to develop a productive community around Python, Csound and other synthesis engines as tools for algorithmic and computer assisted composition of electroacoustic music. [[http://pythonsound.sourceforge.net/|>]]

== Csound ==

 * '''Csound / CsoundAC''' - Csound is a sound and music synthesis system, providing facilities for composition and performance over a wide range of platforms and for any style of music. The Csound orchestra language features over 1200 unit generators (called "opcodes") covering nearly every sound synthesis method and that the user can combine into "instruments" of unlimited complexity and flexibility. Csound 5 allows Python code to be called from or directly embedded into Csound orchestras. Additionally, the csnd Python extension module wraps the Csound API so that Csound can be embedded into Python applications. CsoundAC (for "Csound Algorithmic Composition") is a GUI front end to Csound with Python scripting and a Python module providing tools for the algorithmic generation or manipulation of Csound scores. [[http://csound.sourceforge.net/|Csound on Sourceforge]] [[http://www.csounds.com/|cSounds.com]]

 * '''Csound Routines''' - set of routines to manipulate and convert csound files [[https://sourceforge.net/project/showfiles.php?group_id=156455&package_id=202823|>]]

 * '''PMask''' - Python implementation of CMask, a stochastic event generator for Csound. [[http://web.tiscali.it/mupuxeddu/csound/index.html|>]]


== MP3 stuff and Metadata editors ==

 * '''eyed3''' - eyeD3 is a Python module and program for processing ID3 tags. Information about mp3 files (i.e bit rate, sample frequency, play time, etc.) is also provided. The formats supported are ID3 v1.0/v1.1 and v2.3/v2.4. [[http://eyed3.nicfit.net/|>]]

 * '''mutagen''' - Mutagen is a Python module to handle audio metadata. It supports ASF, FLAC, M4A, Monkey's Audio, MP3, Musepack, Ogg FLAC, Ogg Speex, Ogg Theora, Ogg Vorbis, True Audio, WavPack and OptimFROG audio files. All versions of ID3v2 are supported, and all standard ID3v2.4 frames are parsed. It can read Xing headers to accurately calculate the bitrate and length of MP3s. ID3 and APEv2 tags can be edited regardless of audio format. It can also manipulate Ogg streams on an individual packet/page level. [[http://code.google.com/p/quodlibet/wiki/Development/Mutagen|>]]

 * '''ID3.py''' - This module allows one to read and manipulate so-called ID3 informational tags on MP3 files through an object-oriented Python interface. [[http://id3-py.sourceforge.net/|>]]

 * '''id3reader.py''' - Id3reader.py is a Python module that reads ID3 metadata tags in MP3 files. It can read ID3v1, ID3v2.2, ID3v2.3, or ID3v2.4 tags. It does not write tags at all. [[http://www.nedbatchelder.com/code/modules/id3reader.html|>]]

 * '''mpgedit''' - mpgedit is an MPEG 1 layer 1/2/3 (mp3), MPEG 2, and MPEG 2.5 audio file editor that is capable of processing both Constant Bit Rate (CBR) and Variable Bit Rate (VBR) encoded files. mpgedit can cut an input MPEG file into one or more output files, as well as join one or more input MPEG files into a single output file. Since no file decoding / encoding occurs during editing, there is no audio quality loss when editing with mpgedit. A python development toolkit enables Python developers to utilize the core mpgedit API, providing access to mp3 file playback, editing and indexing functionality. [[http://www.mpgedit.org/mpgedit/|>]]

 * '''m3ute2''' - m3ute2 is program for copying, moving, and otherwise organizing M3U playlists and directories. m3ute2 can also generate detailed reports about lists of files. [[http://sourceforge.net/projects/m3ute2/|>]]

 * '''mmpython''' - MMPython is a Media Meta Data retrieval framework. It retrieves metadata from mp3, ogg, avi, jpg, tiff and other file formats. Among others it thereby parses ID3v2, ID3v1, EXIF, IPTC and Vorbis data into an object oriented struture. [[http://sourceforge.net/projects/mmpython/|>]]

 * '''PyID3''' - pyid3 is a pure python library for reading and writing id3 tags (version 1.0, 1.1, 2.3, 2.4, readonly support for 2.2). What makes this better than all the others? Testing! This library has been tested against some 200+ MB of just tags. [[http://github.com/myers/pyid3|>]]

 * see also: PySonic for programmable MP3 playback

== MIDI Mania ==

 * '''KeyKit''' - KeyKit used to be called Keynote. It is a programming language and graphical user interface for MIDI, useful for both algorithmic and realtime musical experimentation. (Note: technically not a python product, if you're into MIDI, KeyKit is one of the best free cross-platform tools to use with the python apps on this page.) [[http://nosuch.com/keykit/|>]]

 * '''midi''' - Provides object oriented programmatic manipulation of MIDI streams. Using this framework, you can read MIDI files from disk, build new MIDI streams, process, or filter preexisting streams, and write your changes back to disk. If you install this package on a Linux platform with alsalib, you can take advantage of the ALSA kernel sequencer, which provides low latency scheduling and receiving of MIDI events. SWIG is required to compile the ALSA extension sequencer extension. Although OS-X and Windows provide similar sequencer facilities, the current version of the API does not yet support them. [[https://sourceforge.net/projects/pymidi/|>]]

 * '''midi.py''' - Python MIDI classes: meaningful data structures that represent MIDI events and other objects. You can read MIDI files to create such objects, or generate a collection of objects and use them to write a MIDI file. [[http://groups.google.com/groups?hl=en&selm=3C0F67FE.96E7CAE8%40alum.mit.edu|>]]

 * '''milk''' - Superceding the older [[http://www.quitte.de/nam.html|Nam]], milk provides Python with classes representing key MIDI sequencer components: MIDI I/O, EventLists, Plugins and a realtime Flow class. The components can be freely interconnected in a fashion very similar to physical MIDI cabling, however the milk event system is not limited to MIDI events alone; you can define your own extensions should the need arise. [[http://www.quitte.de/milk.html|>]]

 * '''PMIDI''' - The PMIDI library allows the generation of short MIDI sequences in Python code.The interface allows a programmer to specify songs, instruments, measures, and notes. Playback is handled by the Windows MIDI stream API so proper playback timing is handled by the OS rather than by client code. The library is especially useful for generating earcons. [[http://sourceforge.net/projects/uncassist|>]]

 * '''portmidizero''' - portmidizero is a simple ctypes wrapper for PortMidi in pure python. [[http://gitorious.org/projects/portmidizero|>]]

 * '''PyChoReLib''' - Python Chord Recognition Library. This is a library that implements the transformation from a list of notenames to a chord name. The system can be taught new chords by example: tell it that ['c', 'e', 'g'] is called a 'C' chord, and using its built-in music knowledge it immediately recognizes all major triads in all keys and all inversions/permutations. Comes with a real-time midi-input demo program (needs PyPortMidi). [[http://chordrecognizer.sourceforge.net/|>]]

 * '''PyMIDI''' - The MIDI module provides MIDI input parsers for Python [[http://www.hyperreal.org/~est/python/MIDI/|>]]

 * '''PyPortMidi''' - PyPortMidi is a Python wrapper for PortMidi. PortMidi is a cross-platform C library for realtime MIDI control. Using PyPortMidi, you can send and receive MIDI data in realtime from Python. Besides using PyPortMidi to communicate to synthesizers and the like, it is possible to use PyPortMidi as a way to send MIDI messages between software packages on the same computer. For example, Using PyPortMidi and MIDI-YOKE on a Windows machine, it is possible to send realtime MIDI messages between programs on the same computer using loopback virtual MIDI ports. [[http://web.media.mit.edu/~harrison/pyportmidi.html|>]]

 * '''PythonMIDI''' - The Python Midi package is a collection of classes handling Midi in and output in the Python programming language. [[http://www.mxm.dk/products/public/pythonmidi|>]]

 * '''PySeq''' - Python bindings for ALSA using ctypes [[http://www.sci.ccny.cuny.edu/~brinkman/software/pyseq/|>]]



 * '''rtmidi''' - rtmidi provides realtime MIDI input/output across Linux (ALSA), Macintosh OS X, SGI, and Windows (Multimedia Library) operating systems. It is very fast, has a clean and pythonic interface, and supports virtual ports. [[http://www.patrickkidd.com/pk/trac/wiki/pyrtmidi|>]]

 * '''winmidi.pyd''' - A demo? of a python extension interfacing to the native windows midi libs that developed from [[http://www.sabren.net/rants/2000/01/20000129a.php3|earlier]] attempts. [[http://www.sabren.net/code/python/midi/|>]]

 * '''win32midi''' - A python extension for accessing the Win32 MIDI APIs on MS Windows Platforms. It also provides a simple player class for playing with MIDI sound using the synthesizer on the soundcard/onboard soundchip. A sample script is provided for testing it out. As it is still a work in progress, bugs are expected. [[http://wahloft.qoolife.com/oldsite/Software/win32midi.html|>]]


== Other protocols ==

 * '''OSC.py''' - Python classes for [[http://cnmat.cnmat.berkeley.edu/OpenSoundControl/|OpenSoundControl]] library client functionality. The OSC homepage is at [[http://v00d00.k-hornz.de/pub/OSC.py|>]]

 * '''pyalsaaudio''' - This package contains wrappers for accessing the ALSA API (The Advanced Linux Sound Architecture (ALSA) provides audio and MIDI functionality to the Linux operating system) from Python. It is fairly complete for PCM devices and Mixer access. [[http://pyalsaaudio.sourceforge.net/|>]]

 * '''pkaudio''' - pkaudio is a collection of python-based modules for midi input, osc communication with supercollider, and pyqt functionality. [[http://www.assembla.com/wiki/show/pkaudio|>]]

 * '''PyJack''' - This is a Python C extension module which provides an interface to the Jack Audio Server. It is possible to access the Jack graph to perform port connections/disconnections, monitor graph change events, and to perform realtime audio capture and playback using Numeric Python arrays. This is released under the GPL. [[http://www.a2hd.com/software/|>]]


== MAX/MSP & PureData ==

 * '''mxdublin''' - mxdublin is an object oriented framework to generate events in pd and [[http://www.cycling74.com/products/maxmsp.html|max]]. pd, short for [[http://iem.kug.ac.at/pd/|Pure Data]], a graphical Computer Music System written by [[http://crca.ucsd.edu/~msp/|Miller S. Puckette]]. mxdublin is a real time python user environment working within pd/max. It is designed to put logic into a sequence of events. Python has been chosen has the interface language to build and run sequencing objects. Has a prerequisites, the users needs to know a minimal of python and pd/max. [[http://www.le-son666.com/software/mxdublin/|>]]

 * '''net.loadbang.jython''' is a package which supports the Python scripting/programming language within MXJ for Max/MSP. We use the Jython interpreter, which allows Python and Java to interact, and gives Python access to the standard Java libraries (as well as any other Java code available to MXJ). [[http://www.loadbang.net/space/Software/net.loadbang.jython|>]]

 * '''OpenExposition''' - OpenExposition is a library aimed at automatic generation of user interfaces. The programmer only needs to specify what parts of the application need to be exposed to the user, and OpenExposition does the rest. At present, OpenExposition allows access to variables (either directly or through a pair of set/get methods), and class methods. It can construct the user interface graphically (using either the multi-platform FLTK library or Cocoa on Mac OS X), programatically (through Python), aurally (using the speech synthesis and recognition capabilities on Mac OS X), and by building MAX/MSP externals that can then be used in MAX/MSP. [[http://dancinghacker.com/code/openexposition/index.html|>]]

 * '''Py/pyext''' - Python script objects is an object library providing a full integration of the python scripting language into the PD (and in the future Max/MSP) real-time system. With the py object you can load python modules and execute the functions therein. With pyext you can use python classes to represent full-featured pd/Max message objects. Multithreading (detached methods) is supported for both objects. You can send messages to named objects or receive (with pyext) with python methods. [[http://grrrr.org/ext/py/|>]]


= Music software supporting python =

== Multitrack Studios ==

 * '''Ableton Live''' - Award-winning commercial music creation, production and performance platform for Mac OS and Windows. Live is far and away one of the most interesting and groundbreaking audio recording and sequencing tools to come along in the past five years. Live uses python internally and an experimental API has been exposed at [[http://code.google.com/p/liveapi/|this site]], and there is a discussion group [[http://groups.google.com/group/liveapi|here]]. [[http://www.ableton.com|>]]

 * '''blue''' - blue is a java program for use with Csound. It's interface is much like a digital multitrack, but differs in that there timelines within timelines (polyObjects). This allows for a compositional organization in time that seems to me to be very intuitive, informative, and flexible. soundObjects are the building blocks within blue's score timeline. soundObjects can be lists of notes, algorithmic generators, python script code, csound instrument definitions, and whatever plugins that are developed for blue. these soundObjects may be text based, but they can be completely GUI based as well. [[http://csounds.com/stevenyi/blue/index.html|>]]

 * '''Jokosher''' - Jokosher is a simple yet powerful multi-track studio. With it you can create and record music, podcasts and more, all from an integrated simple environment. Jokosher is written in Python and uses the GNOME platform and the GTK widget set. The audio engine is powered by GStreamer, and we use Cairo for some of the graphics. [[http://www.jokosher.org/|>]]

This page is divided in four sections: Music software written in python, Music software supporting python, Music programming in python, and a category of unsorted (may still fit in the above)

Music software written in python

Audio Players

  • Bluemindo - Bluemindo is a really simple but powerful audio player in Python/PyGTK, using Gstreamer. Bluemindo is a free (as in freedom) software, released under GPLv3, only. >

  • cplay - a curses front-end for various audio players >

  • edna - an MP3 server, edna allows you to access your MP3 collection from any networked computer. The web pages are dynamically constructed, adjusting to directory structure and the files in those directories. This is much nicer than using simple directory indexing. Rather than directly serving up an MP3, the software serves up a playlist. This gets passed to your player (e.g. WinAmp) which turns around with an HTTP request to stream the MP3. >

  • Listen - Music management and playback for GNOME >

  • MMA - Musical Midi Accompaniment. If you follow the above link you will find that Pymprovisator is no longer developed due to the fact that there is this similar, but more powerful GPL Python software. >

  • Pymprovisator - Pymprovisator is a program that emulates the program Band in a Box from PG Music. You can think in it like the electronic version of the books+CD from Jamey Aebersold. You set the basic parameters in a song: title, style, key, chords sequence,... and the program will generate a Midi file with the correct accompaniment. > (dev suspended)

  • Pymps - Pymps is the PYthon Music Playing System - a web based mp3/ogg jukebox. It's written in Python and utilises the PostgreSQL database. >

  • Pymserv - PyMServ is a graphical client for mserv, a music server. It is written in python using pygtk and gconf to store prefs. >

  • Pytone - Pytone is a music jukebox written in Python with a curses based GUI. While providing advanced features like crossfading and multiple players, special emphasis is put on ease of use, turning PyTone into an ideal jukebox system for use at parties. >

  • Quod Libet - Quod Libet is a GTK+-based audio player written in Python. It lets you make playlists based on regular expressions. It lets you display and edit any tags you want in the file. And it lets you do this for all the file formats it supports -- Ogg Vorbis, FLAC, MP3, Musepack, and MOD. >

  • TheTurcanator - a small midi piano tutor for windows and mac. Includes CoreMIDI wrapper written in pyrex. >

Audio Convertors

  • audio-convert-mod - audio-convert-mod is a simple audio file converter that supporting many formats. At just a right-click, you can convert any amount of music files to WAV, MP3, AAC, Ogg and more. audio-convert-mod was designed with the same principles as fwbackups - keeping things simple. >

Ear Training

  • GNU Solfege - GNU Solfege is a computer program written to help you practice ear training. It can be useful when practicing the simple and mechanical exercises. >

cSound

  • athenaCL - modular, polyphonic, poly-paradigm algorithmic music composition in an interactive command-line environment. The athenaCL system is an open-source, cross-platform, object-oriented composition tool written in Python; it can be scripted and embedded, includes integrated instrument libraries, post-tonal and microtonal pitch modeling tools, multiple-format graphical outputs, and musical output in Csound, MIDI, audio file, XML, and text formats. >

  • Cabel - Visual way to create csound instruments. >

  • Dex Tracker - Front end for csound that includes a tracker style score editor in a grid, text editor, cabel tested with python 2.5. >

Audio (Visual) Programming Frameworks

  • Hypersonic - Hypersonic is for building and manipulating sound processing pipelines. It is designed for real-time control. It includes objects for oscillators, filters, file-io, soundcard and memory operations. >

Music programming in python

Playing & creating sound

  • audiolab - audiolab is a small python package to import data from audio files to numpy arrays and export data from numpy arrays to audio files. It uses libsndfile from Erik Castro de Lopo for the underlying IO, which supports many different audio formats: http://www.mega-nerd.com/libsndfile/ >

  • Loris - Loris is an Open Source C++ class library implementing analysis, manipulation, and synthesis of digitized sounds using the Reassigned Bandwidth-Enhanced Additive Sound Model. Loris supports modified resynthesis and manipulations of the model data, such as time- and frequency-scale modification and sound morphing. Loris includes support and wrapper code for building extension modules for various scripting languages (Python, Tcl, Perl). >

  • mingus - mingus is an advanced music theory and notation package for python. It can be used to play around with music theory, to build editors, educational tools and other applications that need to process music. It can also be used to create sheet music with LilyPond and do automated musicological analysis. >

  • MusicKit - The MusicKit is an object-oriented software system for building music, sound, signal processing, and MIDI applications. It has been used in such diverse commercial applications as music sequencers, computer games, and document processors. Professors and students in academia have used the MusicKit in a host of areas, including music performance, scientific experiments, computer-aided instruction, and physical modeling. PyObjC is required to use this library in python. >

  • pyAudio - PyAudio provides Python bindings for PortAudio, the cross-platform audio I/O library. Using PyAudio, you can easily use Python to play and record audio on a variety of platforms. Seems to be a successor of fastaudio, a once popular binding for PortAudio >

  • Pygame - Pygame is a set of Python modules designed for writing games. It is written on top of the excellent SDL library. This allows you to create fully featured games and multimedia programs in the python language. Pygame is highly portable and runs on nearly every platform and operating system. >

  • PyMedia - PyMedia is a Python module for the multimedia purposes. It provides rich and simple interface for the digital media manipulation( wav, mp3, ogg, avi, divx, dvd, cdda etc ). It includes parsing, demutiplexing, multiplexing, coding and decoding. It can be compiled for Windows, Linux and cygwin. >

  • Pyper - Pyper is a musical development environment. It allows you to write Python scripts that generates music in real-time. Pyper uses QuickTime Musical Instruments for synthesis. >

  • pySonic - pySonic is a Python wrapper around the high performance, cross platform, but closed source, FMOD sound library. You get all the benefits of the FMOD library, but in a Pythonic, object oriented package. >

  • PySndObj - The Sound Object Library is an object-oriented audio processing library. It provides objects for synthesis and processing of sound that can be used to build applications for computer-generated music. The core code, including soundfile and text input/output, is fully portable across several platforms. Platform-specific code includes realtime audio IO and MIDI input support for Linux (OSS,ALSA and Jack), Windows (MME and ASIO), MacOS X (CoreAudio, but no MIDI at moment), Silicon Graphics (Irix) machines and any Open Sound System-supported UNIX. The SndObj library also exists as python module, aka PySndObj. The programming principles for Python SndObj programming are similar to the ones used in C++. It is also possible to use the python interpreter for on-the-fly synthesis programming. >

  • Snack - (last update: December 2005) The Snack Sound Toolkit is designed to be used with a scripting language such as Tcl/Tk or Python. Using Snack you can create powerful multi-platform audio applications with just a few lines of code. Snack has commands for basic sound handling, such as playback, recording, file and socket I/O. Snack also provides primitives for sound visualization, e.g. waveforms and spectrograms. It was developed mainly to handle digital recordings of speech (being developped at the KTH music&speech department), but is just as useful for general audio. Snack has also successfully been applied to other one-dimensional signals. The combination of Snack and a scripting language makes it possible to create sound tools and applications with a minimum of effort. This is due to the rapid development nature of scripting languages. As a bonus you get an application that is cross-platform from start. It is also easy to integrate Snack based applications with existing sound analysis software. >

Community

  • PythonSound - The Python Sound Project aims to develop a productive community around Python, Csound and other synthesis engines as tools for algorithmic and computer assisted composition of electroacoustic music. >

Csound

  • Csound / CsoundAC - Csound is a sound and music synthesis system, providing facilities for composition and performance over a wide range of platforms and for any style of music. The Csound orchestra language features over 1200 unit generators (called "opcodes") covering nearly every sound synthesis method and that the user can combine into "instruments" of unlimited complexity and flexibility. Csound 5 allows Python code to be called from or directly embedded into Csound orchestras. Additionally, the csnd Python extension module wraps the Csound API so that Csound can be embedded into Python applications. CsoundAC (for "Csound Algorithmic Composition") is a GUI front end to Csound with Python scripting and a Python module providing tools for the algorithmic generation or manipulation of Csound scores. Csound on Sourceforge cSounds.com

  • Csound Routines - set of routines to manipulate and convert csound files >

  • PMask - Python implementation of CMask, a stochastic event generator for Csound. >

MP3 stuff and Metadata editors

  • eyed3 - eyeD3 is a Python module and program for processing ID3 tags. Information about mp3 files (i.e bit rate, sample frequency, play time, etc.) is also provided. The formats supported are ID3 v1.0/v1.1 and v2.3/v2.4. >

  • mutagen - Mutagen is a Python module to handle audio metadata. It supports ASF, FLAC, M4A, Monkey's Audio, MP3, Musepack, Ogg FLAC, Ogg Speex, Ogg Theora, Ogg Vorbis, True Audio, WavPack and OptimFROG audio files. All versions of ID3v2 are supported, and all standard ID3v2.4 frames are parsed. It can read Xing headers to accurately calculate the bitrate and length of MP3s. ID3 and APEv2 tags can be edited regardless of audio format. It can also manipulate Ogg streams on an individual packet/page level. >

  • ID3.py - This module allows one to read and manipulate so-called ID3 informational tags on MP3 files through an object-oriented Python interface. >

  • id3reader.py - Id3reader.py is a Python module that reads ID3 metadata tags in MP3 files. It can read ID3v1, ID3v2.2, ID3v2.3, or ID3v2.4 tags. It does not write tags at all. >

  • mpgedit - mpgedit is an MPEG 1 layer 1/2/3 (mp3), MPEG 2, and MPEG 2.5 audio file editor that is capable of processing both Constant Bit Rate (CBR) and Variable Bit Rate (VBR) encoded files. mpgedit can cut an input MPEG file into one or more output files, as well as join one or more input MPEG files into a single output file. Since no file decoding / encoding occurs during editing, there is no audio quality loss when editing with mpgedit. A python development toolkit enables Python developers to utilize the core mpgedit API, providing access to mp3 file playback, editing and indexing functionality. >

  • m3ute2 - m3ute2 is program for copying, moving, and otherwise organizing M3U playlists and directories. m3ute2 can also generate detailed reports about lists of files. >

  • mmpython - MMPython is a Media Meta Data retrieval framework. It retrieves metadata from mp3, ogg, avi, jpg, tiff and other file formats. Among others it thereby parses ID3v2, ID3v1, EXIF, IPTC and Vorbis data into an object oriented struture. >

  • PyID3 - pyid3 is a pure python library for reading and writing id3 tags (version 1.0, 1.1, 2.3, 2.4, readonly support for 2.2). What makes this better than all the others? Testing! This library has been tested against some 200+ MB of just tags. >

  • see also: PySonic for programmable MP3 playback

MIDI Mania

  • KeyKit - KeyKit used to be called Keynote. It is a programming language and graphical user interface for MIDI, useful for both algorithmic and realtime musical experimentation. (Note: technically not a python product, if you're into MIDI, KeyKit is one of the best free cross-platform tools to use with the python apps on this page.) >

  • midi - Provides object oriented programmatic manipulation of MIDI streams. Using this framework, you can read MIDI files from disk, build new MIDI streams, process, or filter preexisting streams, and write your changes back to disk. If you install this package on a Linux platform with alsalib, you can take advantage of the ALSA kernel sequencer, which provides low latency scheduling and receiving of MIDI events. SWIG is required to compile the ALSA extension sequencer extension. Although OS-X and Windows provide similar sequencer facilities, the current version of the API does not yet support them. >

  • midi.py - Python MIDI classes: meaningful data structures that represent MIDI events and other objects. You can read MIDI files to create such objects, or generate a collection of objects and use them to write a MIDI file. >

  • milk - Superceding the older Nam, milk provides Python with classes representing key MIDI sequencer components: MIDI I/O, EventLists, Plugins and a realtime Flow class. The components can be freely interconnected in a fashion very similar to physical MIDI cabling, however the milk event system is not limited to MIDI events alone; you can define your own extensions should the need arise. >

  • PMIDI - The PMIDI library allows the generation of short MIDI sequences in Python code.The interface allows a programmer to specify songs, instruments, measures, and notes. Playback is handled by the Windows MIDI stream API so proper playback timing is handled by the OS rather than by client code. The library is especially useful for generating earcons. >

  • portmidizero - portmidizero is a simple ctypes wrapper for PortMidi in pure python. >

  • PyChoReLib - Python Chord Recognition Library. This is a library that implements the transformation from a list of notenames to a chord name. The system can be taught new chords by example: tell it that ['c', 'e', 'g'] is called a 'C' chord, and using its built-in music knowledge it immediately recognizes all major triads in all keys and all inversions/permutations. Comes with a real-time midi-input demo program (needs PyPortMidi). >

  • PyMIDI - The MIDI module provides MIDI input parsers for Python >

  • PyPortMidi - PyPortMidi is a Python wrapper for PortMidi. PortMidi is a cross-platform C library for realtime MIDI control. Using PyPortMidi, you can send and receive MIDI data in realtime from Python. Besides using PyPortMidi to communicate to synthesizers and the like, it is possible to use PyPortMidi as a way to send MIDI messages between software packages on the same computer. For example, Using PyPortMidi and MIDI-YOKE on a Windows machine, it is possible to send realtime MIDI messages between programs on the same computer using loopback virtual MIDI ports. >

  • PythonMIDI - The Python Midi package is a collection of classes handling Midi in and output in the Python programming language. >

  • PySeq - Python bindings for ALSA using ctypes >

  • rtmidi - rtmidi provides realtime MIDI input/output across Linux (ALSA), Macintosh OS X, SGI, and Windows (Multimedia Library) operating systems. It is very fast, has a clean and pythonic interface, and supports virtual ports. >

  • winmidi.pyd - A demo? of a python extension interfacing to the native windows midi libs that developed from earlier attempts. >

  • win32midi - A python extension for accessing the Win32 MIDI APIs on MS Windows Platforms. It also provides a simple player class for playing with MIDI sound using the synthesizer on the soundcard/onboard soundchip. A sample script is provided for testing it out. As it is still a work in progress, bugs are expected. >

Other protocols

  • OSC.py - Python classes for OpenSoundControl library client functionality. The OSC homepage is at >

  • pyalsaaudio - This package contains wrappers for accessing the ALSA API (The Advanced Linux Sound Architecture (ALSA) provides audio and MIDI functionality to the Linux operating system) from Python. It is fairly complete for PCM devices and Mixer access. >

  • pkaudio - pkaudio is a collection of python-based modules for midi input, osc communication with supercollider, and pyqt functionality. >

  • PyJack - This is a Python C extension module which provides an interface to the Jack Audio Server. It is possible to access the Jack graph to perform port connections/disconnections, monitor graph change events, and to perform realtime audio capture and playback using Numeric Python arrays. This is released under the GPL. >

MAX/MSP & PureData

  • mxdublin - mxdublin is an object oriented framework to generate events in pd and max. pd, short for Pure Data, a graphical Computer Music System written by Miller S. Puckette. mxdublin is a real time python user environment working within pd/max. It is designed to put logic into a sequence of events. Python has been chosen has the interface language to build and run sequencing objects. Has a prerequisites, the users needs to know a minimal of python and pd/max. >

  • net.loadbang.jython is a package which supports the Python scripting/programming language within MXJ for Max/MSP. We use the Jython interpreter, which allows Python and Java to interact, and gives Python access to the standard Java libraries (as well as any other Java code available to MXJ). >

  • OpenExposition - OpenExposition is a library aimed at automatic generation of user interfaces. The programmer only needs to specify what parts of the application need to be exposed to the user, and OpenExposition does the rest. At present, OpenExposition allows access to variables (either directly or through a pair of set/get methods), and class methods. It can construct the user interface graphically (using either the multi-platform FLTK library or Cocoa on Mac OS X), programatically (through Python), aurally (using the speech synthesis and recognition capabilities on Mac OS X), and by building MAX/MSP externals that can then be used in MAX/MSP. >

  • Py/pyext - Python script objects is an object library providing a full integration of the python scripting language into the PD (and in the future Max/MSP) real-time system. With the py object you can load python modules and execute the functions therein. With pyext you can use python classes to represent full-featured pd/Max message objects. Multithreading (detached methods) is supported for both objects. You can send messages to named objects or receive (with pyext) with python methods. >

Music software supporting python

Multitrack Studios

  • Ableton Live - Award-winning commercial music creation, production and performance platform for Mac OS and Windows. Live is far and away one of the most interesting and groundbreaking audio recording and sequencing tools to come along in the past five years. Live uses python internally and an experimental API has been exposed at this site, and there is a discussion group here. >

  • blue - blue is a java program for use with Csound. It's interface is much like a digital multitrack, but differs in that there timelines within timelines (polyObjects). This allows for a compositional organization in time that seems to me to be very intuitive, informative, and flexible. soundObjects are the building blocks within blue's score timeline. soundObjects can be lists of notes, algorithmic generators, python script code, csound instrument definitions, and whatever plugins that are developed for blue. these soundObjects may be text based, but they can be completely GUI based as well. >

  • Jokosher - Jokosher is a simple yet powerful multi-track studio. With it you can create and record music, podcasts and more, all from an integrated simple environment. Jokosher is written in Python and uses the GNOME platform and the GTK widget set. The audio engine is powered by GStreamer, and we use Cairo for some of the graphics. >

PythonInMusic (last edited 2022-01-08 08:49:10 by David Anderson)

Unable to edit the page? See the FrontPage for instructions.