* Wed Oct 31 2018 Todd R <firstname.lastname@example.org>
- Update to version 0.9.1
* On Windows, use 'directsound' as the default audio host (much more
reliable than 'wasapi').
* Fixed phase shifting between the frequency bands of FourBand and MultiBand.
* Added a new object: MultiBand, frequency splitter using Linkwitz-Riley
* Fixed Compress output level when input's rms is above unity.
* Added the ability to remove a project from the project tree.
* Added getPrecision() function. Removed print statement when importing pyo.
User should use getVersion() and getPrecision() functions if needed.
* Fixed crash when asking for more input or output channels than available.
* Fixed Server window's Interpreter field scrolling history on MacOS.
* Wed May 16 2018 email@example.com
- Update to version 0.9.0
- Bug Fixes:
* Fixed HRTF impulse responses interpolation. Interpolation is perform in the
spectral domain to avoid phase cancellation that occur in the time domain.
- New features:
* Added a new object: Expand, which expand the dynamic range of an audio signal.
* Added a new object: RMS, which return the rms value of an audio signal.
* Added a new object: MidiLinseg, a midi-triggered breakpoints envelope.
* Added a Server.makenote(pitch, velocity, duration, channel=0) method, which
build both noteon and noteof messages.
- Update to version 0.8.9
- Bug Fixes:
* Fixed erroneous condition in listscramble function.
* Fixed pa_get_devices_infos() function on Windows.
* Fixed segfault at exit when a Server object is created but never
booted (fixed issue #117).
* Fixed window shape in the Harmonizer object (use an halfsine instead
of an hanning).
* Fixed crash when trying to draw a ControlSlider with width or height of 0.
* Changed the stereo panning law for cosine/sine within Pan object.
* Speed-up computation for various objects.
* Allow the "mode" argument of Resample object to be changed dynamically.
* Added new object: HRTF, Head-Related Transfert Function 3D spatialization.
- Update to version 0.8.8
- Bug Fixes:
* Added missing binding to stop method in MidiListener.
* Removed internal import of the random module. Scripts importing
both pyo and random modules segfault on garbage collection at exit.
* Added missing static declaration to functions in pyomodule.
* E-Pyo: Fixed startup crash when preferences contains unicode characters.
* Granulator now compensates for the difference between the loaded sound's
sampling rate and pyo's sampling rate, if any.
* Fixed PyoArgumentTypeError when ctrl() is called for an object with
dataOnly parameter and tk is used instead of wxpython.
* Don't try to deactivate jack if it is stopped externally (ex. from qjackctl).
* Fixed audio and midi backends memory allocation.
* Properly incref and decref server references inside pyo objects.
* Fixed path encoding on windows for python 3.6.
* Added Jack midi support to the Server.
* Added a new init argument (wintitle) to Scope and Spectrum objects to
allow the user to set the title name of their windows. Also added a
method to show/hide the channel labels in the GUI.
* Added a callback attribute to PVAnal. The function receives magnitudes
and true frequencies for every analysis frame.
- Update to version 0.8.7
- Bug Fixes:
* Disable Microsoft Midi devices by default. Added
Server.allowMicrosoftMidiDevices() method to enable them.
* Wrap jack api detection inside a try-except statement in case
jack2-dbus is used instead of jackd.
* Fixed bugs in Expr object's unicode handling.
* Fixed windows 10 dependencies.
* Fixed ending point of TableRec's time stream (now keep the last
value instead of switching back to 0).
* Fixed clean-up of VoiceManager object.
* Fixed encoding of file path on windows for various objects.
* The server now allow up to 16 channel rms outputs for GUI drawing.
* Added getInterpolated method to PyoMatrixObject class. Returns the
interpolated value for a floating-point position in the matrix.
* OscDataSend now can send more than one message per buffer size.
* Update MacOS and Windows build routine to compile for python 2.7,
3.5 and 3.6.
- Update to version 0.8.6
- Bug Fixes:
* Fixed TableRead which continues to play when freq is negative and loop is off.
* Fixed CallAfter segfault when deleted inside its own callback.
* Fixed segfault when updating ControlSlider value from the audio thread.
* Updated liblo from 0.26 to 0.28 on Windows. This fixes a bug with socket
not properly closed.
* Fixed segfault in Resample_dealloc function.
* Fixed libraries dynamic links in MacOS installer scripts.
* Fixed TableRec, TrigTableRec and Looper time stream not started on play.
* Added "speed" argument to Seq object. Useful to create continuous time
deceleration or acceleration.
* Added setRandomType(dist, x) method to SfMarkerShuffler object.
* Added a "Copy" menu item in PyoObject.ctrl() and DataTable.graph() windows.
- Update to version 0.8.5
- What's new:
* Added pa_get_default_devices_from_host(host) function. This function can
greatly help finding the device indexes (especially on Windows) to give to
the server in order to use to desired audio host.
* Added a new winhost argument to the Server's initialization. On Windows, it
defaults to WASAPI.
* Check the jack api version before compiling to ensure existing functions are
* Added two examples in 07-effects, 01-flanger.py and 02-schroeder-reverb.py.
- Update to version 0.8.4
- Bug fixes:
* Fixed GIL conflicts with portaudio, portmidi and jack library calls.
* Updated portaudio interface to make it much more secure.
* Fixed segfault in MidiListener callback function with python3.
* Fixed SfMarkerLooper and SfMarkerShuffler markers not accurate
when soundfile sampling rate is not the same as the server's
- New features:
* Midi input refactoring. Events are now spreaded over the buffer size
according to the event's timestamp.
* MidiDispatcher can send sysex message with sendx() method.
* Added a "title" argument to Server.gui() method.
* Added a "setMode" method to Selector object to switch between
equal power mode and linear fade.
* Added a "setKeepLast" method to TableRead object (will hold last value).
* Added "setIsJackTransportSlave" method to Server object (it allows to
start/stop the Server from jack transport).
* Added "setJackInputPortNames" and "setJackOutputPortNames" methods to
Server object. This allow the user to rename jack input/output ports.
* Added "id" and "object" attributes to wxgui's object events.
- Update to version 0.8.2
- What's new:
* Fixed latency issue when using portaudio as audio backend.
* TrigFunc and Pattern now accept a tuple as "arg" argument (fixed issue #90).
* E-Pyo: Fixed a bug in the documentation window.
* Fixed midi input events handling.
* Set interpolation to off by default for midi continuous controllers.
- Update to version 0.8.1
- New objects:
* LogiMap, random generator based on the logistic map.
- New functionalities:
* Added a method (sysexout()) to send sysex messages to the Server object.
* Added PyoTableObject.getBuffer() method. The PyoTableObject now support
the buffer protocol (see PEP 3118), which allow a table to share its data
memory with any object that support the buffer protocol (ex. numpy array).
* Added Server.setCallback() method to allow the user to define a custom
process function. This function will be called once per buffer size, just
before the computation of the audio objects tree.
* Added Server.getCurrentTime() and Server.getCurrentAmp() methods.
* Improve Looper object: Added a time stream, which gives the current
normalized position. Added loopnow() method, which allows to start a new
loop immediately with crossfade. Added appendFadeTime() and fadeInSeconds()
methods to give a more flexible control of the behavior of the object.
* Added an 'inverse' argument to PVGate object. When set to True, the
damping factor is applied to bins with an amplitude above the threshold.
* Added a `callback` argument to PyoObject.set() method. The given callback
will be executed at the end of the ramp.
* Added ctrl() method (and some missing setter) to midi objects.
* TableWrite object now takes into account the feedback argument of NewTable
object and interpolates to fill in gaps if its writing pointer moves faster
than the sampling rate.
* Added a reset() method to various delay line-based objects (AllpassWG,
Chorus, Freeverb, Harmonizer, STRev, WGVerb, Waveguide).
* All objects can be used as iterator (will iterate over its internal sterams).
* SigTo ramp time now can be controlled at audio rate.
* Iter object now sends a trigger when it reaches the last value.
* Iter object now accepts PyoObjects in its list of values.
- Bug fixes:
* Fixed jack ports auto-connection algorithm.
* Several minor bug fixes.
* Added low-latency driver WDMKS in the portaudio build routine for Windows.
* Replaced all printf calls with PySys_WriteStdout. This allow to redirect
messages from pyo to a string or a file, instead of the stdout.
* Added new examples, 05-envelopes/ and 06-filters/.
* Added a new file, called "How to improve performance of your pyo programs",
to the documentation.
- Implement single-spec version
* Tue Nov 18 2014 firstname.lastname@example.org
- Update to version 0.7.3
* Added new objet: Scope, an audio waveform display.
* E-Pyo: Fix marker's line numbering.
* E-Pyo: Added Save As Template... menu item.
* Fixed bug in Fader decreasing ramp.
* Added midi output methods to the Server object. noteout, afterout, ctlout,
programout, pressout and bendout.
* Server.setMidiOutputDevice(idx) with `idx` greater than the higher portmidi
devices index opens all available output devices.
* Added new object: FToM, converts an audio stream containning frequencies in
hertz to a midi note audio stream.
* Added new function: hzToMidi, converts a frequency in hertz to a midi note
- Update to version 0.7.2
* Server.setMidiInputDevice(idx) with `idx` greater than the higher portmidi
input index opens all available devices.
* OSX installer: Also install pyo in anaconda site-packages directory if
* Added new object : TrigBurst, generates a time/amplitude expandable trigger
* Added new object : Euclide, Euclidean rhythm generator.
* Windows installers now check for the current python installation directory
before installing files.
* E-Pyo: Fixed inconsistencies in Find/Replace behaviours.
* Added new object : SmoothDelay, a delay line that does not produce clicks
or pitch shifting when the delay time is changing.
* Added new object : AttackDetector, audio signal onset detection.
* Added new object : Centroid, Computes the spectral centroid of an input
- Update to version 0.7.2
* E-Pyo: Added RadioPyo to the template choices.
* Fixed Compare when used with None or a string. Print a warning and set
'comp' attribute to 0.
* Fixed live interpreter of the server window when using arrow keys
* E-Pyo: Check if WxPython 3.0 is installed, otherwise uses 2.8.
* Added anti-aliasing to PyoTableObject's grapher widget. Fixed Ctrl+W on the
- Update to version 0.7.0
* pyo can now be used without any GUI toolkit (WxPython or TKinter). Widgets
are simply disabled.
* Added Server methods to auto-connect Jack ports to already opened ports.
* E-Pyo: output log now in realtime.
* Added new object: Tanh, hyperbolic tangent function on audio signal.
- Update to version 0.6.9
* Added lot of methods to PyoTableObject (retify, bipolarGain, invert,
lowpass, fadein, fadeout, pow).
* Added new object: PartialTable, generates waveforms made of inharmonic
* Added a Scope example in examples/utilities.
* Added new object: STRev, Stereo reverb.
* Added dataOnly argument to SLMap. User can now control parameters, in ctrl
window, that do not accept audio signal but discreet values.
* Added new object: ComplexRes, Complex one-pole resonator filter.
* Added new object: TrackHold, Performs a 'thru' and hold on its input
- Update to version 0.6.8
* Added multi server facility and and embeded callback support for plugin
development (code by Guillaume Barrette).
* Add a channel offset to the server physical inputs and outputs.
* Added support for reading/writing various soundfile formats. FLAC and OGG
need libsndfile to be compiled with both of them enabled.
* Added new object: PVMix, Mix the most prominent components from two phase
vocoder streaming objects.
* Added new object: TableScale, Scales values from a table and writes them
into another table.
* Added new object: Granule, another granular synthesis generator.
* Added new object: PVBufTabLoops, phase vocoder buffer with bin independent
speed playback (controlled with a PyoTableObject).
* Added new object: PVBufLoops, phase vocoder buffer with bin independent
* Added new objects: PVShift, spectral frequency shifter. PVAmpMod and
PVFreqMod, frequency independent modulations.
* Added new objects: PVDelay, spectral delays and PVBuffer, phase vocoder
recorder and playback.
* Added setJackAuto method to the Server to disable (enabled by default) Jack
* Added graph() method to DataTable object. Opens a multisliders window to
edit the table content.
* Added new object: PVFilter. Spectral filtering.
* Added new object: PVCross, PVMult, PVMorph. Spectral morphing.
* Added new object: PVAddSynth, Phase Vocoder additive synthesis object.
* Phase Vocoder, first draft. PVAnal, PVSynth, PVTranspose, PVVerb and
* E-Pyo: Added "Search in Project Files" option.
* E-Pyo: Added Filters Menu. User-defined text processing functions.
* Now using Sphinx to generate the API documentation.
* Added new objects: ButLP, ButHP, ButBP, ButBR, second-order Butterworth
* Added new objects: Reson and Resonx, second-order resonant bandpass