tidal-sniffer.js - <short description TODO> Copyright (C) 2022 Strudel contributors - see https://codeberg.org/uzu/strudel/src/branch/main/packages/osc/tidal-sniffer.js This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.
7import OSC from 'osc-js';
9const config = { 10 receiver: 'ws', // @param {string} Where messages sent via 'send' method will be delivered to, 'ws' for Websocket clients, 'udp' for udp client 11 udpServer: { 12 host: 'localhost', // @param {string} Hostname of udp server to bind to 13 port: 57120, // @param {number} Port of udp client for messaging 14 exclusive: false, // @param {boolean} Exclusive flag 15 }, 16 udpClient: { 17 host: 'localhost', // @param {string} Hostname of udp client for messaging 18 // port: 57120, // @param {number} Port of udp client for messaging 19 port: 41235, // @param {number} Port of udp client for messaging 20 }, 21 wsServer: { 22 host: 'localhost', // @param {string} Hostname of WebSocket server 23 port: 8080, // @param {number} Port of WebSocket server 24 }, 25}; 26const osc = new OSC({ plugin: new OSC.BridgePlugin(config) }); 27 28osc.open(); // start a WebSocket server on port 8080 29 30console.log('osc client running on port', config.udpClient.port); 31console.log('osc server running on port', config.udpServer.port); 32console.log('websocket server running on port', config.wsServer.port);
listen for messages from the client
example tidal messages:
received: /dirt/play [ 'id', '1', 'cps', 0.5625, 'cycle', 503.5, 'delta', 0.8888888359069824, 'orbit', 0, 's', 'bd' ] received: /dirt/play [ 'id', '1', 'cps', 0.5625, 'cycle', 503.6666564941406, 'delta', 0.592592716217041, 'orbit', 0, 's', 'hh' ] received: /dirt/play [ 'id', '1', 'cps', 0.5625, 'cycle', 504, 'delta', 0.8888888359069824, 'orbit', 0, 's', 'bd' ] received: /dirt/play [ 'id', '1', 'cps', 0.5625, 'cycle', 504, 'delta', 0.592592716217041, 'orbit', 0, 's', 'hh' ] received: /dirt/play [ 'id', '1', 'cps', 0.5625, 'cycle', 504.3333435058594, 'delta', 0.5925922393798828, 'orbit', 0, 's', 'hh' ] received: /dirt/play [ 'id', '1', 'cps', 0.5625, 'cycle', 504.5, 'delta', 0.8888888359069824, 'orbit', 0, 's', 'bd' ] received: /dirt/play [ 'id', '1', 'cps', 0.5625, 'cycle', 504.6666564941406, 'delta', 0.592592716217041, 'orbit', 0, 's', 'hh' ]