const WebSocket = require('ws') const osc = require('osc') const wwIP = process.argv[2] const bwIP = process.argv[3] const DEBUG = { osc: true } const oscWS = new osc.WebSocketPort({ url: `ws://${wwIP}:6676`, metadata: false }) const bwPortUkazi = 8000 const bwPortStanje = 9000 const oscBW = new osc.UDPPort({ localAddress: bwIP, remotePort: bwPortUkazi, localPort: bwPortStanje, metadata: false }) oscWS.on('ready', () => { console.log(`Povezan sem na WW ${wwIP}`) /* setInterval(() => { console.log('ping') oscWS.send({ address: '/ping', args: [true]}) }, 500) */ }) oscBW.on('ready', () => { console.log(`Povezan sem na bitwig ${bwIP}`) }) const STANJE = { predvajam: 0, track: 0, clip: 0, } oscWS.on('message', ({ address, args }) => { DEBUG.osc && console.log('MSG OSC', address, args.map(x => x.toFixed(4))) // Wavey Wind sporočila const re = /\/ww\/(\d+)\/([a-zA-Z]+)/ const m = address.match(re) if (m) { console.log(address, m) let bwUkaz = '/' + address.split('/').splice(3).join('/') if (STANJE.predvajam && bwUkaz == '/play') { bwUkaz = '/stop' } if (bwUkaz == '/track/next') { bwUkaz = `/track/${STANJE.track}/selected` oscBW.send({ address: bwUkaz, args: [0] }) bwUkaz = `/track/${STANJE.track+1}/selected` oscBW.send({ address: bwUkaz, args: [1] }) } if (bwUkaz == '/track/previous') { bwUkaz = `/track/${STANJE.track}/selected` oscBW.send({ address: bwUkaz, args: [0] }) bwUkaz = `/track/${STANJE.track-1}/selected` oscBW.send({ address: bwUkaz, args: [1] }) } oscBW.send({ address: bwUkaz }) /* oscWS.send({ address: '/midi', args: [midiKanal, visina, 127] }) */ } }) oscBW.on('message', ({ address, args }) => { DEBUG.osc && console.log('BITWIG OSC', address, args) if (address == '/play') { console.log('MENJAVA SATANJA PLAY', args) STANJE.predvajam = args[0] } if (address == '/track/selected/position') { STANJE.track = args[0] console.log('MENJAVA SATANJA TRACKA', STANJE.track) } }) oscWS.open() oscBW.open()