-
Notifications
You must be signed in to change notification settings - Fork 19
Expand file tree
/
Copy pathtest_plugin.py
More file actions
193 lines (155 loc) · 5.95 KB
/
test_plugin.py
File metadata and controls
193 lines (155 loc) · 5.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
from __future__ import annotations
from typing import TypeVar
from pyflp.plugin import (
AnyPlugin,
BooBass,
FruitKick,
FruityBalance,
FruityBloodOverdrive,
FruityCenter,
FruityFastDist,
FruitySend,
FruitySlicer,
FruitySoftClipper,
FruityStereoEnhancer,
Plucked,
PluginID,
Soundgoodizer,
VSTPlugin,
WrapperPage,
)
from .conftest import get_model
T = TypeVar("T", bound=AnyPlugin)
def get_plugin(preset_file: str, type: type[T]):
return get_model(f"plugins/{preset_file}", type, PluginID.Data, PluginID.Wrapper)
def test_boobass():
boobass = get_plugin("boobass.fst", BooBass)
assert boobass.bass == boobass.mid == boobass.high == 32767
def test_fruit_kick():
fruit_kick = get_plugin("fruit-kick.fst", FruitKick)
assert fruit_kick.max_freq == -876
assert fruit_kick.min_freq == 75
assert fruit_kick.freq_decay == 163
assert fruit_kick.amp_decay == 208
assert fruit_kick.click == 39
assert fruit_kick.distortion == 62
def test_fruity_balance():
fruity_balance = get_plugin("fruity-balance.fst", FruityBalance)
assert fruity_balance.volume == 256
assert fruity_balance.pan == 0
def test_fruity_blood_overdrive():
fruity_blood_overdrive = get_plugin("fruity-blood-overdrive.fst", FruityBloodOverdrive)
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
def test_fruity_center():
fruity_center = get_plugin("fruity-center.fst", FruityCenter)
assert not fruity_center.enabled
def test_fruity_fast_dist():
fruity_fast_dist = get_plugin("fruity-fast-dist.fst", FruityFastDist)
assert fruity_fast_dist.pre == 128
assert fruity_fast_dist.threshold == 10
assert fruity_fast_dist.kind == "A"
assert fruity_fast_dist.mix == 128
assert fruity_fast_dist.post == 128
def test_fruity_send():
fruity_send = get_plugin("fruity-send.fst", FruitySend)
assert fruity_send.dry == 256
assert fruity_send.send_to == -1
assert fruity_send.pan == 0
assert fruity_send.volume == 256
def test_fruity_slicer():
fruity_slicer = get_plugin("fruity-slicer.fst", FruitySlicer)
assert fruity_slicer.bpm == 60
assert fruity_slicer.pitch_shift == 100
assert fruity_slicer.time_stretch == 4300
assert fruity_slicer.stretching_method == "transient"
assert fruity_slicer.fade_in == 56
assert fruity_slicer.fade_out == 5
assert fruity_slicer.file_path == r"Z:\home\user\Music\audio.wav"
test_slice = fruity_slicer.slices[0]
assert test_slice.name == "1 - Beat 1"
assert test_slice.sample_offset == 0
assert test_slice.key == -1
assert test_slice.reversed is False
assert fruity_slicer.animate is False
assert fruity_slicer.start_note == 0
assert fruity_slicer.play_to_end is False
assert fruity_slicer.bitrate == 44100
assert fruity_slicer.auto_dump is False
assert fruity_slicer.declick is True
assert fruity_slicer.auto_fit is False
assert fruity_slicer.view_spectrum is False
def test_fruity_soft_clipper():
fruity_soft_clipper = get_plugin("fruity-soft-clipper.fst", FruitySoftClipper)
assert fruity_soft_clipper.threshold == 100
assert fruity_soft_clipper.post == 128
def test_fruity_stereo_enhancer():
fruity_stereo_enhancer = get_plugin("fruity-stereo-enhancer.fst", FruityStereoEnhancer)
assert fruity_stereo_enhancer.stereo_separation == 0
assert fruity_stereo_enhancer.effect_position == "post"
assert fruity_stereo_enhancer.phase_offset == 0
assert fruity_stereo_enhancer.phase_inversion == "none"
assert fruity_stereo_enhancer.pan == 0
assert fruity_stereo_enhancer.volume == 256
def test_plucked():
plucked = get_plugin("plucked.fst", Plucked)
assert plucked.decay == 176
assert plucked.color == 56
assert plucked.normalize
assert plucked.gate
assert not plucked.widen
def test_soundgoodizer():
soundgoodizer = get_plugin("soundgoodizer.fst", Soundgoodizer)
assert soundgoodizer.amount == 600
assert soundgoodizer.mode == "A"
def test_vst_plugin():
djmfilter = get_plugin("xfer-djmfilter.fst", VSTPlugin)
assert djmfilter.name == "DJMFilter"
assert djmfilter.vendor == "Xfer Records"
assert (
djmfilter.plugin_path
== r"C:\Program Files\Common Files\VST2\Xfer Records\DJMFilter_x64.dll"
)
def test_fruity_wrapper():
wrapper = get_plugin("fruity-wrapper.fst", VSTPlugin)
# WrapperEvent properties
assert not wrapper.compact
assert not wrapper.demo_mode
assert not wrapper.detached
assert not wrapper.directx
assert not wrapper.disabled
assert wrapper.generator
assert wrapper.height == 410
assert not wrapper.minimized
assert wrapper.multithreaded
assert wrapper.page == WrapperPage.Settings
assert not wrapper.smart_disable
assert wrapper.visible
assert wrapper.width == 561
# VSTPluginEvent properties
assert wrapper.automation.notify_changes
assert wrapper.compatibility.buffers_maxsize
assert wrapper.compatibility.fast_idle
assert not wrapper.compatibility.fixed_buffers
assert wrapper.compatibility.process_maximum
assert wrapper.compatibility.reset_on_transport
assert wrapper.compatibility.send_loop
assert not wrapper.compatibility.use_time_offset
assert wrapper.midi.input == 6
assert wrapper.midi.output == 9
assert wrapper.midi.pb_range == 36
assert not wrapper.midi.send_modx
assert not wrapper.midi.send_pb
assert wrapper.midi.send_release
assert wrapper.processing.allow_sd
assert not wrapper.processing.bridged
assert wrapper.processing.keep_state
assert wrapper.processing.multithreaded
assert wrapper.processing.notify_render
assert wrapper.ui.accept_drop
assert not wrapper.ui.always_update
assert wrapper.ui.dpi_aware
assert not wrapper.ui.scale_editor