mirror of https://codeberg.org/Sonoj/osamc.de
56 lines
1.9 KiB
Plaintext
56 lines
1.9 KiB
Plaintext
= mod-host vs Pisound button
|
|
:customcss: presentation.css
|
|
:source-highlighter: highlight.js
|
|
:linkattrs:
|
|
|
|
https://sonoj.org/[Sonoj Convention, window=_blank]
|
|
|
|
https://github.com/danielappelt[Daniel Appelt, window=_blank] / 2023-09-30
|
|
|
|
== Pisound & the button
|
|
|
|
[%step]
|
|
* https://blokas.io/pisound/[Pisound, window=_blank] is a sound card and MIDI interface for the Raspberry Pi
|
|
* It comes with one https://github.com/BlokasLabs/pisound/blob/master/pisound-btn/pisound.conf[configurable button, window=_blank]
|
|
* Bash scripts are used for button action (https://github.com/BlokasLabs/pisound/blob/master/scripts/pisound-btn/toggle_wifi_hotspot.sh[example,window=_blank])
|
|
|
|
== mod-host
|
|
|
|
[%step]
|
|
* https://github.com/moddevices/mod-host[mod-host, window=_blank] is an LV2 host for JACK, controllable via socket or command line
|
|
* https://github.com/moddevices/mod-ui[mod-ui, window=_blank] is started together with mod-host in MODEP
|
|
* mod-ui uses file socket to communicate with mod-host
|
|
|
|
== Problem
|
|
|
|
[%step]
|
|
* Syncing mod-host as secondary via MIDI clock was unreliable
|
|
* How to start/stop transport in mod-host as MIDI clock primary not using mod-ui?
|
|
|
|
== Solution
|
|
|
|
[%step]
|
|
* Let Pisound button start/stop mod-host via web socket
|
|
* https://github.com/vi/websocat[websocat, window=_blank] is like netcat, curl and socat for WebSockets
|
|
* Example script to start/stop transport in mod-host
|
|
|
|
== Code
|
|
|
|
[source, bash]
|
|
----
|
|
#!/bin/sh
|
|
|
|
. /usr/local/pisound/scripts/common/common.sh
|
|
|
|
# Use websocket interface to mod-ui as the regular socket is exclusively used for
|
|
# communication between mod-ui and mod-host.
|
|
|
|
if [ -z $(echo -n '' | /usr/local/bin/websocat --text ws://127.0.0.1:80/websocket/ | grep 'transport 1') ]; then
|
|
# Start transport and blinking
|
|
echo 'transport-rolling 1' | /usr/local/bin/websocat ws://127.0.0.1:80/websocket/
|
|
else
|
|
# Stop transport and blinking
|
|
echo 'transport-rolling 0' | /usr/local/bin/websocat ws://127.0.0.1:80/websocket/
|
|
fi
|
|
----
|