Source code for jdxi_editor.midi.data.analog.lfo

"""Analog LFO"""

from enum import Enum

[docs] LFO_RANGES = { "shape": (0, 5), "rate": (0, 127), "fade": (0, 127), "sync": (0, 1), "sync_note": (0, 19), "pitch": (-63, 63), "filter": (-63, 63), "amp": (-63, 63), "key_trig": (0, 1), }
[docs] LFO_TEMPO_SYNC_NOTES = [ "16", # 0 "12", # 1 "8", # 2 "4", # 3 "2", # 4 "1", # 5 "3/4", # 6 "2/3", # 7 "1/2", # 8 "3/8", # 9 "1/3", # 10 "1/4", # 11 "3/16", # 12 "1/6", # 13 "1/8", # 14 "3/32", # 15 "1/12", # 16 "1/16", # 17 "1/24", # 18 "1/32", # 19 ]
[docs] class AnalogLFOShape(Enum): """Analog LFO waveform shapes"""
[docs] TRIANGLE = 0 # Triangle wave
[docs] SINE = 1 # Sine wave
[docs] SAW = 2 # Sawtooth wave
[docs] SQUARE = 3 # Square wave
[docs] SAMPLE_HOLD = 4 # Sample & Hold
[docs] RANDOM = 5 # Random
@property
[docs] def display_name(self) -> str: """Get display name for LFO shape""" names = {0: "TRI", 1: "SIN", 2: "SAW", 3: "SQR", 4: "S&H", 5: "RND"} return names.get(self.value, "???")
[docs] class AnalogLFOTempoSyncNote(Enum): """LFO tempo sync note values"""
[docs] NOTE_16 = 0 # 16 bars
[docs] NOTE_12 = 1 # 12 bars
[docs] NOTE_8 = 2 # 8 bars
[docs] NOTE_4 = 3 # 4 bars
[docs] NOTE_2 = 4 # 2 bars
[docs] NOTE_1 = 5 # 1 bar
[docs] NOTE_3_4 = 6 # 3/4
[docs] NOTE_2_3 = 7 # 2/3
[docs] NOTE_1_2 = 8 # 1/2
[docs] NOTE_3_8 = 9 # 3/8
[docs] NOTE_1_3 = 10 # 1/3
[docs] NOTE_1_4 = 11 # 1/4
[docs] NOTE_3_16 = 12 # 3/16
[docs] NOTE_1_6 = 13 # 1/6
[docs] NOTE_1_8 = 14 # 1/8
[docs] NOTE_3_32 = 15 # 3/32
[docs] NOTE_1_12 = 16 # 1/12
[docs] NOTE_1_16 = 17 # 1/16
[docs] NOTE_1_24 = 18 # 1/24
[docs] NOTE_1_32 = 19 # 1/32