Releases: demberto/PyFLP
Releases · demberto/PyFLP
v2.2.1
v2.2.0
Changed
- All event parsing happens during
pyflp.parse
itself. colour.Color
replaced withpyflp.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
v2.1.0
Added
- Plugin data parsers:
FruitKick
andPlucked
. ArrangementsID.PLSelection
[#132].
Changed
- Unbound descriptors return
self
- moreproperty
esque behaviour.
This is primarily done to allowflpinspect
to inspect descriptor types. - Moved
Sampler.pitch_shift
upto its base class_SamplerInstrument
.
Deprecated
ArrangementID.LoopPos
[#132].
v2.0.0
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
Added
Changed
- Renamed
PlaylistEvent.track_index
toPlaylistEvent.track_rvidx
. - Optimized
Arrangement.tracks
iteration logic - 50% lesser time to run tests. StructEventBase.value
raisesNotImplementedError
.- Ambiguous
Pattern.__iter__
refactored into a propertyPattern.notes
. Pattern.index
renamed toPattern.iid
.- Improved
__repr__
strings; replaced withModelReprMixin
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
Added
Changed
Channel.group
becomes a read-only property (modify event to change channel group).PLItemBase.offsets
and its fields inPlaylistEvent
are float32
Thanks tochrslg
from Stackoverflow and @jubabrut.Track.height
returns anstr
of its percentage e.g.100%
.Instrument.plugin
andSlot.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
Changed
- Upgrade
construct-typing
to 0.5.3.
v2.0.0a5
Added
- Implementation for
Channel
andPattern
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
andDelay.ping_pong
#88.- Improve enum performance by using
f-enum
library (pyflp.parse
is 50% faster). Time.gate
,Time.shift
andTime.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
toPLItemBase
andPatternPlaylistItem
toPatternPLItem
. - Rename
Polyphony
membersis_mono
tomono
andis_porta
toporta
. NoModelsFound
also basesLookupError
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 raisesPropertyCannotBeSet
#97.
Removed
PlaylistItemBase.start_offset
andPlaylistItemBase.end_offset
.- Redundant exceptions
ExpectedValue
,UnexpectedType
. - Undiscovered
num_inputs
,num_outputs
andvst_number
fromVSTPlugin
.
v2.0.0a4
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 forEventTree
. - 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
.