From 1d4cb251e93ed69b24faf9e23aa4e2adf59f6fea Mon Sep 17 00:00:00 2001 From: Joel Wetzell Date: Mon, 30 Mar 2026 15:16:35 -0500 Subject: [PATCH] switch to WebMIDI driver when building JS --- app/demo/index.html | 9 ++-- app/demo/main.go | 64 +++-------------------- internal/module/desktop.go | 7 +++ internal/module/midi-input.go | 3 +- internal/module/midi-output.go | 3 +- internal/module/web.go | 7 +++ internal/processor/midi-message-create.go | 2 +- internal/processor/midi-message-decode.go | 2 +- internal/processor/midi-message-encode.go | 2 +- internal/processor/midi-message-unpack.go | 2 +- 10 files changed, 30 insertions(+), 71 deletions(-) create mode 100644 internal/module/desktop.go create mode 100644 internal/module/web.go diff --git a/app/demo/index.html b/app/demo/index.html index ca18c54..872f5f8 100644 --- a/app/demo/index.html +++ b/app/demo/index.html @@ -11,7 +11,7 @@ margin: 0; padding: 0; } - #editor-container { + #output-container { flex-grow: 1; } #log-container { @@ -50,11 +50,8 @@ -
- - -
-
+
+
diff --git a/app/demo/main.go b/app/demo/main.go index 929abf7..012a2a2 100644 --- a/app/demo/main.go +++ b/app/demo/main.go @@ -23,76 +23,26 @@ func main() { }, Modules: []config.ModuleConfig{ { - Id: "timer", - Type: "time.interval", + Id: "midi", + Type: "midi.input", Params: map[string]any{ - "duration": 1000, - }, - }, - { - Id: "button1", - Type: "web.onclick", - Params: map[string]any{ - "id": "button1", - }, - }, - { - Id: "button2", - Type: "web.onclick", - Params: map[string]any{ - "id": "button2", + "port": "Launchpad S", }, }, }, Routes: []config.RouteConfig{ { - Input: "timer", + Input: "midi", Processors: []config.ProcessorConfig{ { Type: "debug.log", }, - }, - }, - { - Input: "button1", - Processors: []config.ProcessorConfig{ - { - Type: "string.create", - Params: map[string]any{ - "template": "{{.Payload.UnixMilli}}", - }, - }, - { - Type: "debug.log", - }, { Type: "web.set", Params: map[string]any{ - "id": "output1", - "property": "innerText", - "value": "Button1 Pressed @ {{.Payload}}", - }, - }, - }, - }, - { - Input: "button2", - Processors: []config.ProcessorConfig{ - { - Type: "string.create", - Params: map[string]any{ - "template": "{{.Payload.UnixMilli}}", - }, - }, - { - Type: "debug.log", - }, - { - Type: "web.set", - Params: map[string]any{ - "id": "output2", - "property": "innerText", - "value": "Button2 Pressed @ {{.Payload}}", + "id": "output", + "property": "textContent", + "value": "{{.Payload}}", }, }, }, diff --git a/internal/module/desktop.go b/internal/module/desktop.go new file mode 100644 index 0000000..0a16535 --- /dev/null +++ b/internal/module/desktop.go @@ -0,0 +1,7 @@ +//go:build cgo + +package module + +import ( + _ "gitlab.com/gomidi/midi/v2/drivers/rtmididrv" +) diff --git a/internal/module/midi-input.go b/internal/module/midi-input.go index c875998..0eedfae 100644 --- a/internal/module/midi-input.go +++ b/internal/module/midi-input.go @@ -1,4 +1,4 @@ -//go:build cgo +//go:build cgo || js package module @@ -12,7 +12,6 @@ import ( "github.com/jwetzell/showbridge-go/internal/common" "github.com/jwetzell/showbridge-go/internal/config" "gitlab.com/gomidi/midi/v2" - _ "gitlab.com/gomidi/midi/v2/drivers/rtmididrv" ) type MIDIInput struct { diff --git a/internal/module/midi-output.go b/internal/module/midi-output.go index 58973e0..64a840c 100644 --- a/internal/module/midi-output.go +++ b/internal/module/midi-output.go @@ -1,4 +1,4 @@ -//go:build cgo +//go:build cgo || js package module @@ -12,7 +12,6 @@ import ( "github.com/jwetzell/showbridge-go/internal/common" "github.com/jwetzell/showbridge-go/internal/config" "gitlab.com/gomidi/midi/v2" - _ "gitlab.com/gomidi/midi/v2/drivers/rtmididrv" ) type MIDIOutput struct { diff --git a/internal/module/web.go b/internal/module/web.go new file mode 100644 index 0000000..4e310ba --- /dev/null +++ b/internal/module/web.go @@ -0,0 +1,7 @@ +//go:build js + +package module + +import ( + _ "gitlab.com/gomidi/midi/v2/drivers/webmididrv" +) diff --git a/internal/processor/midi-message-create.go b/internal/processor/midi-message-create.go index a4291be..46e1062 100644 --- a/internal/processor/midi-message-create.go +++ b/internal/processor/midi-message-create.go @@ -1,4 +1,4 @@ -//go:build cgo +//go:build cgo || js package processor diff --git a/internal/processor/midi-message-decode.go b/internal/processor/midi-message-decode.go index a0f87be..113962f 100644 --- a/internal/processor/midi-message-decode.go +++ b/internal/processor/midi-message-decode.go @@ -1,4 +1,4 @@ -//go:build cgo +//go:build cgo || js package processor diff --git a/internal/processor/midi-message-encode.go b/internal/processor/midi-message-encode.go index 3dea40a..7b6122d 100644 --- a/internal/processor/midi-message-encode.go +++ b/internal/processor/midi-message-encode.go @@ -1,4 +1,4 @@ -//go:build cgo +//go:build cgo || js package processor diff --git a/internal/processor/midi-message-unpack.go b/internal/processor/midi-message-unpack.go index 0087303..2e66525 100644 --- a/internal/processor/midi-message-unpack.go +++ b/internal/processor/midi-message-unpack.go @@ -1,4 +1,4 @@ -//go:build cgo +//go:build cgo || js package processor