platypush/platypush/message/event/midi.py

58 lines
1.4 KiB
Python

from abc import ABC
from typing import Any, List, Optional
from platypush.message.event import Event
class MidiEvent(Event, ABC):
"""
Base class for MIDI events.
"""
def __init__(self, *args, device: Optional[str], port: Optional[int], **kwargs):
"""
:param device: The MIDI device name.
:param port: The MIDI device port number.
"""
super().__init__(*args, device=device, port=port, **kwargs)
class MidiMessageEvent(MidiEvent):
"""
Event triggered upon received MIDI message.
"""
def __init__(self, *args, message: List[int], data: Optional[Any] = None, **kwargs):
"""
:param message: The received MIDI message.
:param data: Additional data associated to the event.
"""
super().__init__(*args, message=message, data=data, **kwargs)
class MidiDeviceConnectedEvent(MidiEvent):
"""
Event triggered when a MIDI device is connected.
"""
class MidiDeviceDisconnectedEvent(MidiEvent):
"""
Event triggered when a MIDI device is disconnected.
"""
class MidiDeviceAddedEvent(MidiEvent):
"""
Event triggered when a MIDI device is added to the list of available devices.
"""
class MidiDeviceRemovedEvent(MidiEvent):
"""
Event triggered when a MIDI device is removed from the list of available devices.
"""
# vim:sw=4:ts=4:et: