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