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

"""
Analog Specs
"""

from enum import Enum

from jdxi_editor.midi.data.base.oscillator import OscillatorWidgetTypes
from jdxi_editor.midi.wave.spec import WaveOscBehavior


[docs] class AnalogWaveOsc(WaveOscBehavior, Enum): """Analog oscillator waveform types"""
[docs] SAW = 0
[docs] TRI = 1
[docs] SQUARE = 2
[docs] class AnalogSubOscType(Enum): """Analog sub oscillator types"""
[docs] OFF = 0x00 # Sub oscillator off
[docs] OCT_DOWN_1 = 0x01 # -1 octave
[docs] OCT_DOWN_2 = 0x02 # -2 octaves
@property
[docs] def display_name(self) -> str: """Get digital name for sub oscillator preset_type""" names = {0x00: "OFF", 0x01: "-1 OCT", 0x02: "-2 OCT"} return names.get(self.value, "???")
@property
[docs] def midi_value(self) -> int: """Get MIDI value for sub oscillator preset_type""" return self.value
[docs] class AnalogOscillatorWidgetTypes(OscillatorWidgetTypes): """Base class for Oscillator Widgets"""
[docs] SUB_OSC_TYPE_SWITCH: str = "sub_oscillator_type_switch"