C Python Shell C++ Inno Setup Makefile Other
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
doc-sphinx Added getPrecision() function. Removed print statement when importing… Mar 2, 2018
embedded Updated juce plugin README for MacOS. Dec 17, 2017
examples Update 05_mixer.py Feb 11, 2018
externals Changed C implementation to use true division everywhere. Nov 5, 2016
include Review error messaging. Mar 4, 2018
installers Upgraded version number to 0.9.0. Feb 17, 2018
pyolib Use monospace font for the number inside a slider's knob. Apr 17, 2018
release-notes Added release notes for version 0.9.0 to the sources tree. Mar 1, 2018
scripts Upgraded version number to 0.9.0. Feb 17, 2018
src Fixed Compress level when input's rms is above unity. Apr 17, 2018
tests Removed path encoding algorithm from the Server object because it bre… Aug 31, 2017
utils Added the ability to remove a project from the project tree. Mar 4, 2018
work-in-progress Added work-in-progree directory. Mar 23, 2017
.gitignore Get rid of unwanted warnings. May 2, 2016
COPYING.LESSER.txt Changed license to the more permissive LGPL version 3. Mar 5, 2015
COPYING.txt Added license file. Aug 15, 2014
ChangeLog Added the ability to remove a project from the project tree. Mar 4, 2018
README.md Updated README. Mar 1, 2018
TODO.md Added the ability to remove a project from the project tree. Mar 4, 2018
pyo.py Added getPrecision() function. Removed print statement when importing… Mar 2, 2018
pyo64.py Removed references to the 'six' module. I don't want pyo to depend on… Nov 12, 2016
setup.py Upgraded version number to 0.9.0. Feb 17, 2018


Pyo - Python DSP module

pyo is a Python module written in C to help digital signal processing script creation.

pyo is a Python module containing classes for a wide variety of audio signal processing types. With pyo, user will be able to include signal processing chains directly in Python scripts or projects, and to manipulate them in real time through the interpreter. Tools in pyo module offer primitives, like mathematical operations on audio signal, basic signal processing (filters, delays, synthesis generators, etc.), but also complex algorithms to create sound granulation and others creative audio manipulations. pyo supports OSC protocol (Open Sound Control), to ease communications between softwares, and MIDI protocol, for generating sound events and controlling process parameters. pyo allows creation of sophisticated signal processing chains with all the benefits of a mature, and widely used, general programming language.

Systems : macOS (10.6 -> 10.12), linux, Windows (XP, Vista, 7, 8, 10)

Python versions : 2.7.x, 3.5.x, 3.6.x (recommended)


Download latest binaries, source release and documentation HERE!

How to get pyo running from sources on OS X and linux: INSTALL Instructions

pyo was awarded second prize in the Lomus 2012 Free Software Competition.

You want to help the development of pyo ? Go to the pyo features market and make a donation for the feature you want to promote. You can also submit new features on the mailing-list ( pyo-discuss@googlegroups.com ).

Radio Pyo

If you want to listen to scripts rendered in real-time, just connect to Radio Pyo !

You want to have your script played on the radio ? Follow the instructions on this post !

Softwares using pyo as audio engine

Zyne : A modular soft synthesizer.

Soundgrain : A graphical interface where users can draw and edit trajectories to control granular sound synthesis.

Cecilia 5 : An audio signal processing environment.

PsychoPy : An open-source application to allow the presentation of stimuli and collection of data for a wide range of neuroscience, psychology and psychophysics experiments.

Pyo Synth : Pyo Synth is an open source application that makes the manipulation of pyo scripts easier by letting you control it with a midi keyboard.


pyo is fully integrated to Python and very simple to use.

Play a sound:

>>> from pyo import *
>>> s = Server().boot()
>>> s.start()
>>> sf = SfPlayer("path/to/your/sound.aif", speed=1, loop=True).out()

Granulate an audio buffer:

>>> s = Server().boot()
>>> s.start()
>>> snd = SndTable("path/to/your/sound.aif")
>>> env = HannTable()
>>> pos = Phasor(freq=snd.getRate()*.25, mul=snd.getSize())
>>> dur = Noise(mul=.001, add=.1)
>>> g = Granulator(snd, env, [1, 1.001], pos, dur, 24, mul=.1).out()

Generate melodies:

>>> s = Server().boot()
>>> s.start()
>>> wav = SquareTable()
>>> env = CosTable([(0,0), (100,1), (500,.3), (8191,0)])
>>> met = Metro(.125, 12).play()
>>> amp = TrigEnv(met, table=env, mul=.1)
>>> pit = TrigXnoiseMidi(met, dist='loopseg', x1=20, scale=1, mrange=(48,84))
>>> out = Osc(table=wav, freq=pit, mul=amp).out()


This project is developed by Olivier Bélanger on his free time to provide a fully integrated Python dsp module for sound exploration and music composition. If you feel this project is useful to you and want to support it and it's future development please consider donating money. I only ask for a small donation, but of course I appreciate any amount.