From 0be2a99dd34cd8bb53ad04cc722357547a99e8ad Mon Sep 17 00:00:00 2001 From: Tim Taschke Date: Mon, 26 Sep 2022 22:35:22 +0900 Subject: [PATCH 1/3] feat: add blood overdrive plugin parser --- docs/reference/plugins.rst | 2 + pyflp/mixer.py | 3 ++ pyflp/plugin.py | 96 ++++++++++++++++++++++++++++++++++++++ tests/test_plugin.py | 14 +++++- 4 files changed, 114 insertions(+), 1 deletion(-) diff --git a/docs/reference/plugins.rst b/docs/reference/plugins.rst index 6d46344..b31b81c 100644 --- a/docs/reference/plugins.rst +++ b/docs/reference/plugins.rst @@ -37,6 +37,8 @@ Effects :members: .. autoclass:: FruityFastDist :members: +.. autoclass:: FruityBloodOverdrive + :members: .. autoclass:: FruityNotebook2 :members: .. autoclass:: FruitySend diff --git a/pyflp/mixer.py b/pyflp/mixer.py index 774b1c9..344a4d4 100644 --- a/pyflp/mixer.py +++ b/pyflp/mixer.py @@ -68,6 +68,8 @@ from .plugin import ( FruityBalance, FruityBalanceEvent, + FruityBloodOverdrive, + FruityBloodOverdriveEvent, FruityFastDist, FruityFastDistEvent, FruityNotebook2, @@ -385,6 +387,7 @@ def __index__(self) -> int: VSTPluginEvent: VSTPlugin, FruityBalanceEvent: FruityBalance, FruityFastDistEvent: FruityFastDist, + FruityBloodOverdriveEvent: FruityBloodOverdrive, FruityNotebook2Event: FruityNotebook2, FruitySendEvent: FruitySend, FruitySoftClipperEvent: FruitySoftClipper, diff --git a/pyflp/plugin.py b/pyflp/plugin.py index d36ea8a..9c99bd9 100644 --- a/pyflp/plugin.py +++ b/pyflp/plugin.py @@ -44,6 +44,7 @@ __all__ = [ "BooBass", "FruityBalance", + "FruityBloodOverdrive", "FruityFastDist", "FruityFastDistKind", "FruityNotebook2", @@ -67,6 +68,23 @@ class _FruityBalanceStruct(StructBase): PROPS = {"pan": "I", "volume": "I"} +class _FruityBloodOverdriveStruct(StructBase): + PROPS = dict.fromkeys( + ( + "plugin_marker", + "pre_band", + "color", + "pre_amp", + "x100", + "post_filter", + "post_gain", + "unknown_event_first", + "unknown_event_second", + ), + "I", + ) + + class _FruityFastDistStruct(StructBase): PROPS = dict.fromkeys(("pre", "threshold", "kind", "mix", "post"), "I") @@ -113,6 +131,10 @@ class FruityBalanceEvent(StructEventBase): STRUCT = _FruityBalanceStruct +class FruityBloodOverdriveEvent(StructEventBase): + STRUCT = _FruityBloodOverdriveStruct + + class FruityFastDistEvent(StructEventBase): STRUCT = _FruityFastDistStruct @@ -450,6 +472,80 @@ class FruityBalance(_PluginBase[FruityBalanceEvent], _IPlugin, ModelReprMixin): """ +class FruityBloodOverdrive( + _PluginBase[FruityBloodOverdriveEvent], _IPlugin, ModelReprMixin +): + """![]()""" # noqa + + INTERNAL_NAME = "Fruity Blood Overdrive" + + plugin_marker = _PluginDataProp[int]() # 3 + + pre_band = _PluginDataProp[int]() + """Linear. + + | Type | Value | Representation | + |---------|-------|----------------| + | Min | 0 | 0.0000 | + | Max | 10000 | 1.0000 | + | Default | 0 | 0.0000 | + """ + + color = _PluginDataProp[int]() + """Linear. + + | Type | Value | Representation | + |---------|-------|----------------| + | Min | 0 | 0.0000 | + | Max | 10000 | 1.0000 | + | Default | 5000 | 0.5000 | + + """ + + pre_amp = _PluginDataProp[int]() + """Linear. + + | Type | Value | Representation | + |---------|-------|----------------| + | Min | 0 | 0.0000 | + | Max | 10000 | 1.0000 | + | Default | 0 | 0.0000 | + """ + + x100 = _PluginDataProp[bool]() + """Boolean. + + | Type | Value | Representation | + |---------|-------|----------------| + | Off | 0 | Off | + | On | 1 | On | + | Default | 0 | Off | + """ + + post_filter = _PluginDataProp[int]() + """Linear. + + | Type | Value | Representation | + |---------|-------|----------------| + | Min | 0 | 0.0000 | + | Max | 10000 | 1.0000 | + | Default | 0 | 0.0000 | + """ + + post_gain = _PluginDataProp[int]() + """Linear. + + | Type | Value | Representation | + |---------|-------|----------------| + | Min | 0 | -1.0000 | + | Max | 10000 | 0.0000 | + | Default | 10000 | 0.0000 | + """ + + unknown_event_first = _PluginDataProp[int]() + unknown_event_second = _PluginDataProp[int]() + + @enum.unique class FruityFastDistKind(enum.IntEnum): """Used by :attr:`FruityFastDist.kind`.""" diff --git a/tests/test_plugin.py b/tests/test_plugin.py index 625671d..87545db 100644 --- a/tests/test_plugin.py +++ b/tests/test_plugin.py @@ -8,6 +8,7 @@ from pyflp.plugin import ( AnyPlugin, FruityBalance, + FruityBloodOverdrive, FruityFastDist, FruityFastDistKind, FruitySend, @@ -23,7 +24,7 @@ @pytest.fixture(scope="session") def plugins(inserts: tuple[Insert, ...]): - return [slot.plugin for slot in inserts[19]][:7] + return [slot.plugin for slot in inserts[19]][:8] def test_plugin_types(plugins: tuple[AnyPlugin, ...]): @@ -35,6 +36,7 @@ def test_plugin_types(plugins: tuple[AnyPlugin, ...]): FruityStereoEnhancer, Soundgoodizer, VSTPlugin, + FruityBloodOverdrive, ] @@ -91,3 +93,13 @@ def test_vst_plugin(plugins: tuple[AnyPlugin, ...]): with pytest.raises(KeyError): ott.fourcc + + +def test_fruity_blood_overdrive(plugins: tuple[AnyPlugin, ...]): + fruity_blood_overdrive = cast(FruityBloodOverdrive, plugins[7]) + print(plugins[7].color) + assert fruity_blood_overdrive.pre_band == 0 + assert fruity_blood_overdrive.color == 5000 + assert fruity_blood_overdrive.pre_amp == 0 + assert fruity_blood_overdrive.x100 == 0 + assert fruity_blood_overdrive.post_filter == 0 From cb69ddb20ff634f33a462778cd705c8e8c48f316 Mon Sep 17 00:00:00 2001 From: Tim Taschke Date: Tue, 27 Sep 2022 21:37:33 +0900 Subject: [PATCH 2/3] fix: plugin order in documentation --- docs/reference/plugins.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/reference/plugins.rst b/docs/reference/plugins.rst index b31b81c..68de6df 100644 --- a/docs/reference/plugins.rst +++ b/docs/reference/plugins.rst @@ -35,10 +35,10 @@ Effects .. autoclass:: FruityBalance :members: -.. autoclass:: FruityFastDist - :members: .. autoclass:: FruityBloodOverdrive :members: +.. autoclass:: FruityFastDist + :members: .. autoclass:: FruityNotebook2 :members: .. autoclass:: FruitySend From 6b9e1674228ae979bd83fdf22a38a81ed215cc55 Mon Sep 17 00:00:00 2001 From: Tim Taschke Date: Tue, 27 Sep 2022 21:40:22 +0900 Subject: [PATCH 3/3] rename unknown events --- pyflp/plugin.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pyflp/plugin.py b/pyflp/plugin.py index 9c99bd9..0c9bfc0 100644 --- a/pyflp/plugin.py +++ b/pyflp/plugin.py @@ -78,8 +78,8 @@ class _FruityBloodOverdriveStruct(StructBase): "x100", "post_filter", "post_gain", - "unknown_event_first", - "unknown_event_second", + "_u1", + "_u2", ), "I", ) @@ -542,8 +542,8 @@ class FruityBloodOverdrive( | Default | 10000 | 0.0000 | """ - unknown_event_first = _PluginDataProp[int]() - unknown_event_second = _PluginDataProp[int]() + _u1 = _PluginDataProp[int]() + _u2 = _PluginDataProp[int]() @enum.unique