Source code for rv.modules.base.lfo

# -- DO NOT EDIT THIS FILE DIRECTLY --
"""
Base class for Lfo
This file was auto-generated by genrv.
"""
from enum import IntEnum

from rv.controller import Controller, DependentRange, WarnOnlyRange


class BaseLfo:
    name = "Lfo"
    mtype = "LFO"
    mgroup = "Effect"
    flags = 1105

    class Type(IntEnum):
        amplitude = 0
        panning = 1

    class Waveform(IntEnum):
        sin = 0
        square = 1
        sin2 = 2
        saw = 3
        saw2 = 4
        random = 5
        triangle = 6
        random_interpolated = 7

    class Channels(IntEnum):
        stereo = 0
        mono = 1

    class FrequencyUnit(IntEnum):
        hz_64 = 0
        ms = 1
        hz = 2
        tick = 3
        line = 4
        line_2 = 5
        line_3 = 6

    class SmoothTransitions(IntEnum):
        off = 0
        waveform = 1

    volume = Controller((0, 512), 256)
    type = Controller(Type, Type.amplitude)
    amplitude = Controller((0, 256), 256)
    freq = Controller(
        DependentRange(
            "frequency_unit",
            {
                FrequencyUnit.hz_64: WarnOnlyRange(1, 2048),
                FrequencyUnit.ms: WarnOnlyRange(1, 4000),
                FrequencyUnit.hz: WarnOnlyRange(1, 16384),
                FrequencyUnit.tick: WarnOnlyRange(1, 256),
                FrequencyUnit.line: WarnOnlyRange(1, 256),
                FrequencyUnit.line_2: WarnOnlyRange(1, 256),
                FrequencyUnit.line_3: WarnOnlyRange(1, 256),
            },
            WarnOnlyRange(1, 2048),
        ),
        256,
    )
    waveform = Controller(Waveform, Waveform.sin)
    set_phase = Controller((0, 256), 0)
    channels = Controller(Channels, Channels.stereo)
    frequency_unit = Controller(FrequencyUnit, FrequencyUnit.hz_64)
    duty_cycle = Controller((0, 256), 128)
    generator = Controller(bool, False)
    freq_scale_pct = Controller((0, 200), 100)
    smooth_transitions = Controller(SmoothTransitions, SmoothTransitions.waveform)