Source code for jdxi_editor.midi.wave.spec

"""
Wave Osc Behaviour
"""

[docs] WAVE_OSC_METADATA = { "SAW": ("SAW", "Sawtooth"), "SQUARE": ("SQR", "Square"), "PW_SQUARE": ("PWM", "Pulse Width Square"), "TRIANGLE": ("TRI", "Triangle"), "TRI": ("TRI", "Triangle"), "SINE": ("SINE", "Sine"), "NOISE": ("NOISE", "Noise"), "SUPER_SAW": ("S-SAW", "Super Saw"), "PCM": ("PCM", "PCM Wave"), }
[docs] class WaveOscBehavior: """Impose behaviour on Wave Osc"""
[docs] def is_pwm(self) -> bool: return self.name == "PW_SQUARE"
[docs] def is_noise(self) -> bool: return self.name == "NOISE"
[docs] def is_pcm(self) -> bool: return self.name == "PCM"
@property
[docs] def display_name(self) -> str: try: return WAVE_OSC_METADATA[self.name][0] except KeyError: return self.name
@property
[docs] def description(self) -> str: try: return WAVE_OSC_METADATA[self.name][1] except KeyError: return self.name.title().replace("_", " ")
@property
[docs] def midi_value(self) -> int: return int(self.value)