Skip to content

Commit 7eb9c50

Browse files
Minor structure changes.
1 parent cd0369e commit 7eb9c50

3 files changed

Lines changed: 32 additions & 23 deletions

File tree

deno.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,6 @@
9696
]
9797
}
9898
},
99-
"nodeModulesDir": false,
99+
"nodeModulesDir": "none",
100100
"npmRegistry": "http://0.0.0.0:80/"
101101
}

src/micc/index.d.mts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ export class NakedMIDIEvent extends MICCBaseElement {
117117
*/
118118
isStale: boolean;
119119
/**
120-
* The offset of the current event in the original event stream, if the current event is created by a parser. Useful for debugging.
120+
* The offset of the current event in the original event stream, if the current event was created from a file-like binary event stream (e.g. SMF). Useful for debugging.
121121
*/
122122
offset?: number;
123123
/**

src/state/index.mjs

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2955,35 +2955,38 @@ let OctaviaDevice = class OctaviaDevice extends CustomEventSource {
29552955
return;
29562956
};
29572957
const upThis = this;
2958-
if (ingressEvent.type > 14) {
2958+
let warningMessage;
2959+
let mappedType = ingressEvent.type;
2960+
if (mappedType === 15) {
2961+
mappedType = 240;
2962+
};
2963+
if (mappedType >= 240) {
29592964
// System messages
2960-
let mappedType = ingressEvent.type;
2961-
if (mappedType === 240) {
2962-
mappedType = 15;
2963-
};
2964-
if (mappedType === 15) {
2965-
switch (ingressEvent.data.constructor) {
2966-
case Uint8Array:
2967-
case Uint8ClampedArray: {
2968-
break;
2969-
};
2970-
default: {
2965+
switch (ingressEvent.data.constructor) {
2966+
case Uint8Array:
2967+
case Uint8ClampedArray: {
2968+
break;
2969+
};
2970+
default: {
2971+
if (ingressEvent?.length > 0) {
29712972
ingressEvent.data = Uint8Array.from(ingressEvent.data);
29722973
};
29732974
};
29742975
};
2975-
const eventRunner = upThis.#chEventRun.get(ingressEvent.type);
2976+
const eventRunner = upThis.#chEventRun.get(mappedType);
29762977
if (typeof eventRunner === "function") {
29772978
eventRunner.call(upThis, ingressEvent);
29782979
} else {
2979-
console.warn(`Received an unknown type ${ingressEvent.type} message.`);
2980+
warningMessage = `Received an unknown type ${ingressEvent.type} message.`;
29802981
};
2981-
} else if (ingressEvent.type >= 8) {
2982-
const msgTypeSpec = eventTypes[ingressEvent.type]?.length > 0 ? `${eventTypes[ingressEvent.type]}${(0b11000 >> (ingressEvent.type - 8)) ? ingressEvent.data[0] : ""}` : `unknown type ${ingressEvent.type}`;
2982+
} else if (mappedType >= 15) {
2983+
warningMessage = `Received an unknown type ${ingressEvent.type} message.`;
2984+
} else if (mappedType >= 8) {
2985+
const msgTypeSpec = eventTypes[mappedType]?.length > 0 ? `${eventTypes[mappedType]}${(0b11000 >> (mappedType - 8)) ? ingressEvent.data[0] : ""}` : `unknown type ${mappedType}`;
29832986
if (typeof ingressEvent.ch === "number") {
29842987
// Channel messages
29852988
const mappedCh = (ingressEvent?.port < 16) ? (ingressEvent.port << 4) | ingressEvent.ch : upThis.chRedir(ingressEvent.ch, (ingressEvent.track < 16384) ? ingressEvent.track : 0, false);
2986-
const eventRunner = upThis.#chEventRun.get(ingressEvent.type);
2989+
const eventRunner = upThis.#chEventRun.get(mappedType);
29872990
if (typeof eventRunner === "function") {
29882991
let noReceipient = true;
29892992
for (const mappedPart of upThis.#receiveTree[mappedCh] ?? []) {
@@ -2993,19 +2996,25 @@ let OctaviaDevice = class OctaviaDevice extends CustomEventSource {
29932996
if (noReceipient) {
29942997
let msgPortCh = `CH${ingressEvent.ch + 1}`;
29952998
if (ingressEvent.port < 255) {
2996-
msgPortCh += ` on port ${ingressEvent.port}`;
2999+
msgPortCh += ` on port ${ingressEvent.port + 1}`;
29973000
};
29983001
msgPortCh += ` (CH${mappedCh})`;
29993002
console.warn(`A ${msgTypeSpec} message sent to ${msgPortCh} had no receipient.`);
30003003
};
30013004
} else {
3002-
console.warn(`Event type ${ingressEvent.type} does not have a valid runner.`);
3005+
warningMessage = `Event type ${ingressEvent.type} does not have a valid runner.`;
30033006
};
30043007
} else {
3005-
console.warn(`Received a ${msgTypeSpec} message without a specified channel.`);
3008+
warningMessage = `Received a ${msgTypeSpec} message without a specified channel.`;
30063009
};
30073010
} else {
3008-
console.warn(`Received an unknown type ${ingressEvent.type} message.`);
3011+
warningMessage = `Received an unknown type ${ingressEvent.type} message.`;
3012+
};
3013+
if (warningMessage?.length > 0) {
3014+
console.warning(`${warningMessage}`);
3015+
if (typeof ingressEvent.offset === "number") {
3016+
console.debug(`Binary stream offset at 0x${ingressEvent.offset.toString(16).padStart(6, "0")}.`);
3017+
};
30093018
};
30103019
if (upThis.#metaTexts.length > upThis.maxKeepMetaCount) {
30113020
upThis.#metaTexts.splice(upThis.maxKeepMetaCount >> 1, upThis.#metaTexts.length + 1 - (upThis.maxKeepMetaCount >> 1));

0 commit comments

Comments
 (0)