Arduino MIDI Library  Version 4.3.1
midi_UsbDefs.h
Go to the documentation of this file.
1 
28 #pragma once
29 
30 #include "midi_Defs.h"
31 
33 
35 {
36  enum
37  {
38  reserved = 0x00,
40 
41  cableEvent = 0x01,
44 
45  sysExStart = 0x04,
47 
50 
53  noteOff = 0x08,
54  noteOn = 0x09,
55  polyPressure = 0x0A,
56  controlChange = 0x0B,
57  programChange = 0x0C,
59  pitchBend = 0x0E,
60  singleByte = 0x0F,
61  };
62 
63  static inline byte getSize(byte inCodeIndexNumber)
64  {
65  switch (inCodeIndexNumber)
66  {
67  case noteOn:
68  case noteOff:
69  case controlChange:
70  case pitchBend:
71  case polyPressure:
72  case systemCommon3Bytes:
73  case sysExEnds3Bytes:
74  case sysExStart:
75  return 3;
76 
77  case programChange:
78  case channelPressure:
79  case systemCommon2Bytes:
80  case sysExEnds2Bytes:
81  return 2;
82 
83  case systemCommon1Byte:
84  case singleByte:
85  return 1;
86 
87  default:
88  break;
89  }
90  return 0; // Can be any length (1, 2 or 3).
91  }
92 };
93 
94 // -----------------------------------------------------------------------------
95 
97 {
98 public:
100  {
101  memset(mData, 0, 4 * sizeof(byte));
102  }
103 
104 public:
105  inline void setHeader(byte inCableNumber, byte inCodeIndexNumber)
106  {
107  const byte msb = (0x0f & inCableNumber) << 4;
108  const byte lsb = (0x0f & inCodeIndexNumber);
109  mData[0] = msb | lsb;
110  }
111  inline void setMidiData(const byte* inData)
112  {
113  mData[1] = *inData++;
114  mData[2] = *inData++;
115  mData[3] = *inData;
116  }
117  inline byte getCableNumber() const
118  {
119  return mData[0] >> 4;
120  }
121  inline byte getCodeIndexNumber() const
122  {
123  return mData[0] & 0x0f;
124  }
125  inline const byte* getMidiData() const
126  {
127  return mData + 1;
128  }
129  inline byte* getMidiData()
130  {
131  return mData + 1;
132  }
133  inline UsbMidiEventPacket& operator=(const byte* inData)
134  {
135  mData[0] = *inData++;
136  setMidiData(inData);
137  return *this;
138  }
139 
140 public:
141  byte mData[4];
142 };
143 
static byte getSize(byte inCodeIndexNumber)
Definition: midi_UsbDefs.h:63
const byte * getMidiData() const
Definition: midi_UsbDefs.h:125
void setHeader(byte inCableNumber, byte inCodeIndexNumber)
Definition: midi_UsbDefs.h:105
#define BEGIN_MIDI_NAMESPACE
#define END_MIDI_NAMESPACE
UsbMidiEventPacket & operator=(const byte *inData)
Definition: midi_UsbDefs.h:133
byte getCodeIndexNumber() const
Definition: midi_UsbDefs.h:121
uint8_t byte
Definition: midi_Defs.h:36
MIDI Library for the Arduino - Definitions.
void setMidiData(const byte *inData)
Definition: midi_UsbDefs.h:111
byte getCableNumber() const
Definition: midi_UsbDefs.h:117