Source code for jdxi_editor.midi.message.effects.vocal

"""
VocalEffectMessage
==================

# Example usage:
# Set vocal effect level
>>> msg = VocalEffectMessage(param=VocalEffect.LEVEL.STATUS, value=100)  # Level 100

# Set auto pitch parameters
>>> msg = VocalEffectMessage(param=VocalEffect.AUTO_PITCH_SW.STATUS, value=1)  # ON

>>> msg = VocalEffectMessage(param=VocalEffect.AUTO_PITCH_TYPE.STATUS, value=0)  # SOFT

# Set vocoder parameters
>>> msg = VocalEffectMessage(param=VocalEffect.VOCODER_SW.STATUS, value=1)  # ON

>>> msg = VocalEffectMessage(param=VocalEffect.VOCODER_ENV.STATUS, value=1)  # SOFT
"""

from dataclasses import dataclass

from jdxi_editor.midi.data.address.address import AddressStartMSB, CommandID
from jdxi_editor.midi.message.roland import RolandSysEx


@dataclass
[docs] class VocalEffectMessage(RolandSysEx): """Program Vocal Effect parameter message"""
[docs] command: int = CommandID.DT1
[docs] area: int = AddressStartMSB.PROGRAM # 0x18: Program area
[docs] section: int = 0x01 # 0x01: Vocal Effect section
[docs] group: int = 0x00 # Always 0x00
[docs] lsb: int = 0x00 # Parameter number
[docs] value: int = 0x00 # Parameter value
[docs] def __post_init__(self): """Set up address and data""" self.address = [ self.msb, # Program area (0x18) self.section, # Vocal Effect section (0x01) self.group, # Always 0x00 self.param, # Parameter number ] self.data = [self.value]