MCPcopy Create free account
hub / github.com/RomanKubiak/ctrlr / packDsiMidiData

Function packDsiMidiData

Source/Lua/CtrlrLuaUtils.cpp:65–103  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

63}
64
65PackedVoice packDsiMidiData(UnpackedVoice unpacked)
66{
67 uint8 data[DSI_VOICE_DATA_MAX];
68 uint8 packbyte = 0; /* Composite of high bits of next 7 bytes */
69 int pos = 0; /* Current position of 7 */
70 int ixu; /* Unpacked byte index */
71 int size = 0; /* Packed voice size */
72 uint8 packet[7]; /* Current packet */
73 uint8 i; /* Packet output index */
74 unsigned char c; /* Current source byte */
75 for (ixu = 0; ixu < unpacked.size; ixu++)
76 {
77 c = unpacked.data[ixu];
78 if (pos == 7) {
79 data[size++] = (uint8)packbyte;
80 for (i = 0; i < pos; i++)
81 {
82 data[size++] = packet[i];
83 }
84 packbyte = 0;
85 pos = 0;
86 }
87 if (c & 0x80) {
88 packbyte += (1 << pos);
89 c &= 0x7f;
90 }
91 packet[pos] = c;
92 pos++;
93 if ((size + 8) > DSI_VOICE_DATA_MAX) break;
94 }
95 data[size++] = packbyte;
96 for (i = 0; i < pos; i++)
97 {
98 data[size++] = packet[i];
99 }
100
101 PackedVoice packed = {size, data};
102 return packed;
103}
104
105LMemoryBlock *CtrlrLuaUtils::unpackDsiData (MemoryBlock &dataToUnpack)
106{

Callers 1

packDsiDataMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected