Source code for quasimoto.enums.wave

"""
A module implementing enumeration interfaces related to WAVE files.
"""

# built-int
from typing import Optional

# third-party
from runtimepy.codec.protocol import Protocol
from runtimepy.enum.registry import EnumRegistry, RuntimeIntEnum
from runtimepy.primitives.byte_order import ByteOrder

ENUMS = EnumRegistry()


[docs] class WaveType(RuntimeIntEnum): """Enumeration for WAVE data formats.""" PCM = 1
[docs] @classmethod def id(cls) -> Optional[int]: """Override in sub-class to coerce enum id.""" return 10
WaveType.register_enum(ENUMS)
[docs] class WaveClass(RuntimeIntEnum): """An enumeration for valid kinds of WAVE configurations.""" MONO_8 = 1 STEREO_8 = 2 STEREO_16 = 4
[docs] @classmethod def id(cls) -> Optional[int]: """Override in sub-class to coerce enum id.""" return 11
WaveClass.register_enum(ENUMS)
[docs] class WaveShape(RuntimeIntEnum): """An enumeration describing possible wave shapes.""" SINE = 1 TRIANGLE = 2 SQUARE = 3 SAWTOOTH = 4
[docs] @classmethod def id(cls) -> Optional[int]: """Override in sub-class to coerce enum id.""" return 12
WaveShapelike = WaveShape | int | str WaveShape.register_enum(ENUMS) BYTE_ORDER = ByteOrder.LITTLE_ENDIAN
[docs] def wave_protocol() -> Protocol: """Get a protocol instance suitable for WAVE file interactions.""" return Protocol(ENUMS, byte_order=BYTE_ORDER)