Comments (2)
@demberto
I tried looking into Fruity Blood Overdrive
, but I am confused about how to interpret the plugin parameters.
Based on this and looking at FruityFastDist
as an example I planned to create the parameters "pre_band", "color", "pre_amp", "x100", "post_filter", "post_gain"
with all of them StructProp[int]
, except of x100
which probably will be an enum.IntEnum
(0,1).
However, when looking at the parameter values with FLPEdit this does not look at all like what I expected.
First of all, I have no idea what the 3
represents, as I expected this to be the value for pre_band
which should have been 0
or some similar minimum value.
I also expected the other values to be 0
, 128
, 512
or anything similar representing minimum or maximum values as per the current plugin settings.
I also tried to set all knobs to 100% to get a feeling for the range, but these values also do not make immediate sense to me.
In comparison to this Fruity Fast Distortion
's parameters fit very neatly with their values interpreted as int
.
I have the feeling I am missing something fundamental about event values here. π€
Any pointers for how to interpret this would be a great help.
from pyflp.
Ahh I remember Fruity Blood Overdrive, I had tried implementing it once earlier. IL probably made the representations closer to the one used by VST plugins.
VST plugins store an 8
or 10
(to indicate they are a VST) in the first 4 bytes. I think redesigned native plugins store a 3
.
That's the reason it never changes. Why they did it, IDK. The internal name "Fruity Wrapper" is enough to indicate a VST plugin is loaded, same goes for native plugins.
I also tried to set all knobs to 100% to get a feeling for the range, but these values also do not make immediate sense to me.
Yes the values will be like that. If you check the docstrings on the minimum, maximum and default values of plugin parameters, you will find out that ranges like 128
, 256
and 1024
are used a lot. Its indeed a space waste to use a 4 byte integer for such small values.
Match the list of parameters to the values you got starting from the first [16, 39, 0, ...
and you will immediately notice that you have cracked it π. All knobs have the same range and x100
being a button is stored as a 0
or 1
but in a space of 4 bytes. Hence remaining bytes will be empty.
To get a 4 byte integer, you do:
So, finally 36 bytes are divided into:
- 4 bytes "native plugin marker", always 3 (the next time you see a 3 at top, just ignore it)
- 6 params - 4 bytes each = 24 bytes
- Remaining 4 bytes will always be zero ig, maybe they are used when used in Patcher, but that's another topic.
I hope I helped. This is a time consuming job.
I misjudged the proportions this issue might reach, I am converting it to a discussion.
from pyflp.
Related Issues (20)
- π Custom enums broken in construct-typing 0.5.4 HOT 2
- π `VSTPlugin.plugin_path` setter fails HOT 1
- π `RuntimeWarning: VSTPluginEvent: Unknown marker 6 detected` HOT 3
- π Unlocking trial project fails on FL's latest version HOT 2
- π`Arrangements.loop_pos` doesn't work
- π Unlocking FLP does not work. HOT 6
- π `ChannelID.Parameters["fx.start"]` not always a `LogNormal` HOT 5
- π `VSTPlugin.name` encoded in UTF8 HOT 2
- πCan't unlock Sytrus HOT 3
- β¨ Comprehensive bounds checking for event values
- β¨ Stream and buffer support for `parse` and `save`
- β¨ Fruity Parametric EQ 2 parser HOT 1
- π UserWarning: Cannot parse event ArrangementID.Playlist HOT 1
- the worst doc i seeπ HOT 1
- π Python 3.12 Enum issue HOT 5
- β¨ Additional research into unknown fields HOT 2
- π FL 12 `fx.start` - `LogNormal` (duplicate) HOT 3
- π Example Code of "Implementing a plugin data parser" doesn't work
- π FLPEdit should be updated to an SDK-Project HOT 1
- β¨ MixerParamsEvent channel_data "type" field or similar
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pyflp.