2020-04-25 20:53:49 +02:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <QObject>
|
|
|
|
|
|
|
|
namespace midi {
|
|
|
|
Q_NAMESPACE
|
|
|
|
|
|
|
|
enum class Command : uint8_t {
|
|
|
|
NoteOff,
|
|
|
|
NoteOn,
|
|
|
|
PolyphonicKeyPressure,
|
|
|
|
ControlChange,
|
|
|
|
ProgramChange,
|
|
|
|
ChannelPressure,
|
|
|
|
PitchBendChange
|
|
|
|
};
|
|
|
|
Q_ENUM_NS(Command)
|
|
|
|
|
|
|
|
struct MidiMessage
|
|
|
|
{
|
|
|
|
uint8_t channel:4;
|
|
|
|
Command cmd:3;
|
|
|
|
bool flag:1;
|
|
|
|
uint8_t note;
|
|
|
|
uint8_t velocity;
|
|
|
|
|
|
|
|
bool operator==(const MidiMessage &other) const;
|
|
|
|
};
|
|
|
|
|
2023-06-10 21:31:50 +02:00
|
|
|
static_assert(sizeof(MidiMessage) == 3);
|
|
|
|
|
2022-12-28 04:56:09 +01:00
|
|
|
} // namespace midi
|
|
|
|
|
|
|
|
Q_DECLARE_METATYPE(midi::Command)
|
2020-04-25 20:53:49 +02:00
|
|
|
Q_DECLARE_METATYPE(midi::MidiMessage)
|
2022-12-28 04:56:09 +01:00
|
|
|
|
|
|
|
QDebug operator<<(QDebug debug, const midi::MidiMessage &value);
|
|
|
|
|
|
|
|
QDataStream &operator<<(QDataStream &out, const midi::Command &value);
|
|
|
|
QDataStream &operator>>(QDataStream &in, midi::Command &value);
|
|
|
|
|
|
|
|
QDataStream &operator<<(QDataStream &out, const midi::MidiMessage &value);
|
|
|
|
QDataStream &operator>>(QDataStream &in, midi::MidiMessage &value);
|