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 onmatplotlib
). Check out the filters page for more. Fade
class starts gradual retirement from public eye, to be superseded byFadeIn
andFadeOut
(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 ofplay()
andexport()
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 moduleaifc
. - Fixed starting phase issues in
Triangle
andSawtooth
.
For developers:
Audio
instances can indexed directly - instead of modifying theAudio.audio[..., ...]
property when overloadingTransform.realise
, it's now possible to use the shorter syntaxAudio[..., ...]
, which will delegate the indexing to theAudio.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.