from enum import Enum
from rv.controller import Controller
from rv.modules import Behavior as B, Module
[docs]class Filter(Module):
name = mtype = 'Filter'
mgroup = 'Effect'
behaviors = {B.receives_audio, B.sends_audio}
[docs] class Type(Enum):
lp = 0
hp = 1
bp = 2
notch = 3
[docs] class Mode(Enum):
hq = 0
hq_mono = 1
lq = 2
lq_mono = 3
[docs] class RollOff(Enum):
db_12 = 0
db_24 = 1
db_36 = 2
db_48 = 3
[docs] class LfoFreqUnit(Enum):
hz_0_02 = 0 # hz * 0.02
ms = 1
hz = 2
tick = 3
line = 4
line_2 = 5 # line / 2
line_3 = 6 # line / 3
volume = Controller((0, 256), 256)
freq = Controller((0, 14000), 14000)
resonance = Controller((0, 1530), 0)
type = Controller(Type, Type.lp)
response = Controller((0, 256), 8)
mode = Controller(Mode, Mode.hq)
impulse = Controller((0, 14000), 0)
mix = Controller((0, 256), 256)
lfo_freq = Controller((0, 1024), 8)
lfo_amp = Controller((0, 256), 0)
set_lfo_phase = Controller((0, 256), 0) # used to reset module
exponential_freq = Controller(bool, False)
roll_off = Controller(RollOff, RollOff.db_12)
lfo_freq_unit = Controller(LfoFreqUnit, LfoFreqUnit.hz_0_02)
lfo_waveform = Controller(LfoWaveform, LfoWaveform.sin)