35 lines
1.1 KiB
JavaScript
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();
|
|
});
|