dont try to send midi if no midi output exists

This commit is contained in:
skelbon 2025-04-28 17:18:38 +01:00
parent 169da90607
commit 19abd758c7
2 changed files with 15 additions and 8 deletions

View File

@ -1,4 +1,8 @@
export async function sendMidiMessage(midiChannelName, sampleNumber, midiAccess) {
export async function sendMidiMessage(
midiChannelName,
sampleNumber,
midiAccess
) {
try {
console.log(midiChannelName, sampleNumber);
const availableMidiOutputs = midiAccess.outputs.values();
@ -16,6 +20,7 @@ export async function sendMidiMessage(midiChannelName, sampleNumber, midiAccess)
}
}
if (!midiOut) return;
// MIDI Note On (Play Note)
midiOut.send([0x90, 35 + sampleNumber, 127]);

View File

@ -4,7 +4,6 @@ import { DataStream } from "./socket.js";
import { Renderer } from "./render.js";
document.addEventListener("DOMContentLoaded", async () => {
const midiAccess = await navigator.requestMIDIAccess();
const conductor = new Conductor();
await conductor.init();
@ -13,24 +12,27 @@ document.addEventListener("DOMContentLoaded", async () => {
let strikes = 0;
const strikeEvery = 2;
const renderer = new Renderer();
dataStream.addEventListener("strike", () => {
console.log(strikes);
//** select instrument */
if (strikes === strikeEvery){
if (strikes === strikeEvery) {
const keys = Object.keys(instruments);
const randomIndex = Math.floor(Math.random() * keys.length);
const selectedInstrument = instruments[keys[randomIndex]];
//** select sample */
const numSamples = selectedInstrument.numSamples;
const randomSampleNumber = Math.floor(Math.random() * numSamples);
renderer.placeIcon(selectedInstrument);
sendMidiMessage(selectedInstrument.midiChannelName, randomSampleNumber + 1, midiAccess);
if (midiAccess)
sendMidiMessage(
selectedInstrument.midiChannelName,
randomSampleNumber + 1,
midiAccess
);
strikes = 0;
}
strikes++;