conductor/src/script.js

35 lines
1.1 KiB
JavaScript

import { sendMidiMessage } from "./midi.js";
import { Conductor } from "./conductor.js";
import { DataStream } from "./socket.js";
import { Renderer } from "./render.js";
document.addEventListener("DOMContentLoaded", async () => {
sendMidiMessage();
const conductor = new Conductor();
await conductor.init();
const dataStream = new DataStream();
const instruments = await conductor.instruments;
const renderer = new Renderer();
dataStream.addEventListener("strike", () => {
//** select instrument */
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);
console.log(selectedInstrument.midiChannelName, randomSampleNumber + 1);
});
dataStream.init();
conductor.showMainContent();
});