Source code for quasimoto.wave.protocol
"""
A module implementing a protocol factory for the 'fmt ' chunk data.
"""
# third-party
from runtimepy.codec.protocol import Protocol, ProtocolFactory
# internal
from quasimoto.enums.wave import wave_protocol
[docs]
class WaveFormat(ProtocolFactory):
"""Parse the WAVE format data from bytes."""
protocol: Protocol = wave_protocol()
[docs]
@classmethod
def initialize(cls, protocol: Protocol) -> None:
"""Initialize this protocol."""
protocol.add_field("type", "uint16", enum="WaveType")
protocol.add_field("channels", "uint16")
protocol.add_field("sample_rate", "uint32")
protocol.add_field("bytes_per_second", "uint32")
protocol.add_field("class", "uint16", enum="WaveClass")
protocol.add_field("bits_per_sample", "uint16")