From d22fa8b3677147768eba5e9eec7691569a509d97 Mon Sep 17 00:00:00 2001 From: rnentjes Date: Fri, 21 Jun 2024 21:32:08 +0200 Subject: [PATCH] Broadcast --- src/jsMain/kotlin/nl/astraeus/vst/chip/Main.kt | 4 ++-- .../nl/astraeus/vst/chip/{channel => midi}/Broadcaster.kt | 8 +++++++- src/jsMain/kotlin/nl/astraeus/vst/chip/view/MainView.kt | 6 +++--- 3 files changed, 12 insertions(+), 6 deletions(-) rename src/jsMain/kotlin/nl/astraeus/vst/chip/{channel => midi}/Broadcaster.kt (90%) diff --git a/src/jsMain/kotlin/nl/astraeus/vst/chip/Main.kt b/src/jsMain/kotlin/nl/astraeus/vst/chip/Main.kt index a673959..5a31583 100644 --- a/src/jsMain/kotlin/nl/astraeus/vst/chip/Main.kt +++ b/src/jsMain/kotlin/nl/astraeus/vst/chip/Main.kt @@ -3,8 +3,8 @@ package nl.astraeus.vst.chip import kotlinx.browser.document import kotlinx.browser.window import nl.astraeus.komp.Komponent -import nl.astraeus.vst.chip.channel.Broadcaster -import nl.astraeus.vst.chip.channel.MidiMessage +import nl.astraeus.vst.chip.midi.Broadcaster +import nl.astraeus.vst.chip.midi.MidiMessage import nl.astraeus.vst.chip.midi.Midi import nl.astraeus.vst.chip.view.MainView import org.khronos.webgl.Uint8Array diff --git a/src/jsMain/kotlin/nl/astraeus/vst/chip/channel/Broadcaster.kt b/src/jsMain/kotlin/nl/astraeus/vst/chip/midi/Broadcaster.kt similarity index 90% rename from src/jsMain/kotlin/nl/astraeus/vst/chip/channel/Broadcaster.kt rename to src/jsMain/kotlin/nl/astraeus/vst/chip/midi/Broadcaster.kt index f4bfca3..ddcf9e3 100644 --- a/src/jsMain/kotlin/nl/astraeus/vst/chip/channel/Broadcaster.kt +++ b/src/jsMain/kotlin/nl/astraeus/vst/chip/midi/Broadcaster.kt @@ -1,6 +1,6 @@ @file:OptIn(ExperimentalJsExport::class) -package nl.astraeus.vst.chip.channel +package nl.astraeus.vst.chip.midi import kotlinx.browser.window import org.khronos.webgl.Uint8Array @@ -63,6 +63,7 @@ object Broadcaster { val channels = mutableMapOf() fun getChannel(channel: Int): BroadcastChannel = channels.getOrPut(channel) { + println("Opening broadcast channel $channel") val bcChannel = BroadcastChannel("audio-worklet-$channel") bcChannel.onmessage = { event -> @@ -75,6 +76,10 @@ object Broadcaster { private fun onMessage(channel: Int, event: MessageEvent) { val data: dynamic = event.data.asDynamic() + console.log( + "Received broadcast message on channel $channel", + event + ) if (data.type == MessageType.SYNC.name) { val syncMessage = SyncMessage( data.timeOrigin, @@ -92,6 +97,7 @@ object Broadcaster { } fun send(channel: Int, message: Any) { + console.log("Sending broadcast message on channel $channel:", message) getChannel(channel).postMessage(message) } diff --git a/src/jsMain/kotlin/nl/astraeus/vst/chip/view/MainView.kt b/src/jsMain/kotlin/nl/astraeus/vst/chip/view/MainView.kt index 686e439..62cde7b 100644 --- a/src/jsMain/kotlin/nl/astraeus/vst/chip/view/MainView.kt +++ b/src/jsMain/kotlin/nl/astraeus/vst/chip/view/MainView.kt @@ -33,8 +33,8 @@ import nl.astraeus.komp.Komponent import nl.astraeus.vst.chip.audio.VstChipWorklet import nl.astraeus.vst.chip.midi.Midi import org.khronos.webgl.Uint8Array +import org.w3c.dom.HTMLInputElement import org.w3c.dom.HTMLSelectElement -import org.w3c.performance.Performance object MainView : Komponent() { private var messages: MutableList = ArrayList() @@ -112,7 +112,7 @@ object MainView : Komponent() { type = InputType.number value = Midi.inputChannel.toString() onChangeFunction = { event -> - val target = event.target as HTMLSelectElement + val target = event.target as HTMLInputElement Midi.inputChannel = target.value.toInt() } } @@ -156,7 +156,7 @@ object MainView : Komponent() { type = InputType.number value = Midi.outputChannel.toString() onChangeFunction = { event -> - val target = event.target as HTMLSelectElement + val target = event.target as HTMLInputElement Midi.outputChannel = target.value.toInt() } }