Version History - Quefumas/gensound GitHub Wiki

Version History

See what's new in the latest version of Gensound. I try to maintain backward compatibility for the most part, but it's not always possible. Non-minor behaviour changes and incompatibilities will be indicated, so updating your code should be relatively hassle-free as possible. Also, if you're interested in the plans for the next version, skip to the bottom.

New in 0.5

  • No outside libraries strictly required for playback; can either use system default player, or any of PyGame, simpleaudio or playsound, if installed (Gensound detects automatically; see I/O Guide).
  • Can read/export files of any format, provided that FFMPEG is installed (See I/O Guide).
  • New filters: SimpleBandPass, SimpleBandStop, SimpleNotch
  • Faster implementation of filters, and even faster if Scipy is installed.
  • New filters available via Scipy: ButterworthLowPass, ButterworthHighPass, ButterworthBandPass, ButterworthBandStop.
  • Introduced 'control tokens' to the Melodic Shorthand Notation syntax.
  • Audio.plot() function for visualisation waveforms.

New in 0.4

  • Our first 'official' filters now available under gensound.filters, plus visualization of frequency response (pending on matplotlib). Check out the filters page for more.
  • Fade class starts gradual retirement from public eye, to be superseded by FadeIn and FadeOut (see relevant section in Transforms Guide). This is also Gensound's first community contribution! (Congratz and thanks @zivkaplan)
  • As part of the above, both fades now support two general kinds of curves, one of which may be tweaked (see fades page). In particular, the default fade curve has changed (also for CrossFade), and the previously used curve is no longer available as it was deemed unnecessary. Let us know if this is an issue for you (compatibility).
  • A new effect, Vibrato.
  • Expanded Wiki documentation.
  • Output behaviour updated: the max_amplitude argument of play() and export() now behaves as described in the I/O guide (compatibility)
  • Resulting audio is now easily accessible in the form of array of floating-point samples or streamable bytes (see I/O guide).
  • Support for reading/writing AIFF/AIFC files using builtin module aifc.
  • Fixed starting phase issues in Triangle and Sawtooth.

For developers:

  • Audio instances can indexed directly - instead of modifying the Audio.audio[..., ...] property when overloading Transform.realise, it's now possible to use the shorter syntax Audio[..., ...], which will delegate the indexing to the Audio.audio object. More importantly, this indexing supports reading samples in non-integer positions, which are interpolated automatically, making some effects (e.g. Vibrato) much easier to implement.

Plans for 0.6

  • Filling holes in the documentation (automation) (done).
  • Parametric Stretch (done)
  • Clean approach to Issue 13
  • Reconsider behaviour of Raw audio when using different sample rate
  • Expose shorthand melodic notation to user
  • Keep doing awesome Oscillator experiments in preparation for the release
  • Anything you want in particular? Let me know in the discussions page.

More plans for later versions.