Skip to content

Releases: demberto/PyFLP

v2.2.1

05 Jun 13:15
v2.2.1
edfb438
Compare
Choose a tag to compare

Fixed

  • Python 3.8 compatibility.

v2.2.0

28 May 11:44
v2.2.0
97c656a
Compare
Choose a tag to compare

Changed

  • All event parsing happens during pyflp.parse itself.
  • colour.Color replaced with pyflp.types.RGBA.
  • Increase line-length of 100.

Fixed

  • Backtracking issues in nested dictionaries.

Removed

  • Python 3.7 support.
  • Bunch of intermediate EventBase subclasses.
  • Removed dependency on colour library.

v2.1.1

24 May 15:45
v2.1.1
7e1b108
Compare
Choose a tag to compare

Changed

  • Refactored VSTPluginEvent sub-event handling into _VSTPluginProp.
  • All VSTPluginEvent string sub-events decoded as UTF8.

Fixed

  • VSTPlugin.name encoded in UTF8 [#150].

v2.1.0

18 Apr 17:22
v2.1.0
505a688
Compare
Choose a tag to compare

Added

  • Plugin data parsers: FruitKick and Plucked.
  • ArrangementsID.PLSelection [#132].

Changed

  • Unbound descriptors return self - more propertyesque behaviour.
    This is primarily done to allow flpinspect to inspect descriptor types.
  • Moved Sampler.pitch_shift upto its base class _SamplerInstrument.

Deprecated

  • ArrangementID.LoopPos [#132].

v2.0.0

18 Mar 12:18
v2.0.0
f7e1303
Compare
Choose a tag to compare

Welcome PyFLP 2.0 🎉
Read the previous changelogs to get the complete list of changes.

Added

Changed

  • Docs are way more easier to navigate now.

Fixed

  • VSTPluginEvent.__setitem__ and _VSTPluginProp._set [#113].

Removed

  • Support for PyPy 3.7 (unable to run tox, cannot find a download).

v2.0.0a7.post0

19 Dec 14:16
v2.0.0a7.post0
95b6590
Compare
Choose a tag to compare
v2.0.0a7.post0 Pre-release
Pre-release

Added

  • Pattern timemarkers #27.
  • Low-level API support for FL Studio 21's PlaylistEvent #108.

Changed

  • Renamed PlaylistEvent.track_index to PlaylistEvent.track_rvidx.
  • Optimized Arrangement.tracks iteration logic - 50% lesser time to run tests.
  • StructEventBase.value raises NotImplementedError.
  • Ambiguous Pattern.__iter__ refactored into a property Pattern.notes.
  • Pattern.index renamed to Pattern.iid.
  • Improved __repr__ strings; replaced with ModelReprMixin at some places
    use __str__ for a more human readable representation.

Fixed

  • Patterns.__getitem__ didn't work with pattern names as documented.

Removed

  • Ambiguous __index__ methods from a bunch of model classes.
  • Unimplemented Slot.controllers.

v2.0.0a6

19 Nov 07:53
v2.0.0a6
e19a07f
Compare
Choose a tag to compare
v2.0.0a6 Pre-release
Pre-release

Added

  • Keyboard.main_pitch, Keyboard.add_root, Keyboard.key_region #92.
  • Sampler.filter and Filter #99.

Changed

  • Channel.group becomes a read-only property (modify event to change channel group).
  • PLItemBase.offsets and its fields in PlaylistEvent are float32
    Thanks to chrslg from Stackoverflow and @jubabrut.
  • Track.height returns an str of its percentage e.g. 100%.
  • Instrument.plugin and Slot.plugin return _PluginBase for unimplemented
    native plugins #102.
  • Reimplemented EventTree to use a list and got a 10+% perf boost in unit tests.

Fixed

  • Channel.group remained unitialised #100.
  • Chanel.plugin failed due to base class type parameter check #101.

Removed

  • Track.locked_height as what this quantity stores is unknown to me yet.
  • Use of fixture factories in unittests #74.

v2.0.0a5.post

31 Oct 11:14
ae5ac35
Compare
Choose a tag to compare
v2.0.0a5.post Pre-release
Pre-release

Changed

  • Upgrade construct-typing to 0.5.3.

v2.0.0a5

28 Oct 11:43
1ff5254
Compare
Choose a tag to compare
v2.0.0a5 Pre-release
Pre-release

Added

  • Implementation for Channel and Pattern playlist items #84.
  • FX.remove_dc, FX.trim, FX.fix_trim, FX.crossfade,
    FX.length, FX.normalize, FX.inverted, FX.start #55.
  • Normalized linear values for certain properties, more user friendly to deal with.
    The required encode / decode is done at event level itself.
  • TimeStretching.time, TimeStretching.pitch, TimeStretching.multiplier #87.
  • (Undiscovered) MIDIControllerEvent.
  • Delay.mod_x, Delay.mod_y, Delay.fat_mode and Delay.ping_pong #88.
  • Improve enum performance by using f-enum library (pyflp.parse is 50% faster).
  • Time.gate, Time.shift and Time.full_porta #89.
  • Experimental Python 3.11 support is back.
  • A shit ton of flags in VSTPlugin and refactoring #95.
  • WrapperEvent.page, WrapperEvent.height, WrapperEvent.width #93.
  • ItemModel.__setitem__ propagates back changes to owner event #97.

Changed

  • PlaylistItemBase.offsets now returns start and end offsets.
  • Use git commit for construct-typing which has fixed certain bugs.
  • Rename PlaylistItemBase to PLItemBase and PatternPlaylistItem to PatternPLItem.
  • Rename Polyphony members is_mono to mono and is_porta to porta.
  • NoModelsFound also bases LookupError now.
  • Compiled VSTPluginEvent.STRUCT.

Fixed

  • EventTree.divide fails to yield the only element #90.
  • TrackID.Name events were grouped instead of getting divided #96.
  • PropBase.__set__ always raises PropertyCannotBeSet #97.

Removed

  • PlaylistItemBase.start_offset and PlaylistItemBase.end_offset.
  • Redundant exceptions ExpectedValue, UnexpectedType.
  • Undiscovered num_inputs, num_outputs and vst_number from VSTPlugin.

v2.0.0a4

22 Oct 11:37
ecfd7d4
Compare
Choose a tag to compare
v2.0.0a4 Pre-release
Pre-release

The way models were passed events has changed. I designed a new data structure
called EventTree (check pyflp._events) to allow the insertion and
deletion of events like a list while preserving the speed of a dict lookups.

Sounds awfully like multidict except that it doesn't allow mutable views.
EventTree knows its parents and any attempt to insert or delete an event
from it will also affect its parents and vice-versa. Took quite some to do.

EventTree will allow for insertion / removal of events when corresponding
descriptor setters / deleters (yet to implement) are invoked. This can allow
for wonderful things like creating new channels, moving inserts etc.

Added

  • A multidict with mutable dict view EventTree.
  • PyPy 3.7+ support #77.
  • Slicing for ModelBase collections #31.
  • Fruity Center parser #42.
  • Dependency on sortedcontainers library for EventTree.
  • Remaining and some new images for docstrings #47.
  • GUI locations of descriptors (w.r.t. FL 20.8.4) [#80].

Changed

  • Simplified some __repr__ strings.
  • Event IDs are all EventEnum members (better repr-strings).
  • PyFLP is guaranteed to be not thread-safe.
  • Moved up Sampler.cut_group to _SamplerInstrument.

Fixed

  • ModelReprMixin.

Removed

  • Track.index in favour of the redundant Track.__index__.
  • Track.items. Iterate over a track, to get them now.
  • Subclassing of protocol classes keeping PEP544 in mind #50.
  • Models are no longer hashable as events were made unhashable previously.
  • Commented out currently unimplemented Channel.controllers.