diff options
author | neauoire <[email protected]> | 2020-05-10 07:22:11 +0900 |
---|---|---|
committer | neauoire <[email protected]> | 2020-05-10 07:22:11 +0900 |
commit | d184725c87a41cb22805ce449bdf2bab71834f68 (patch) | |
tree | 5a97cdf8c542691720b2ba84d260ee9a07dadf72 /desktop | |
parent | a61b035b31b327848b759d158515395fb6eb0a85 (diff) | |
download | Orca-d184725c87a41cb22805ce449bdf2bab71834f68.tar.gz Orca-d184725c87a41cb22805ce449bdf2bab71834f68.zip |
Added selection to midi and udp io
Diffstat (limited to 'desktop')
-rw-r--r-- | desktop/sources/scripts/client.js | 2 | ||||
-rw-r--r-- | desktop/sources/scripts/commander.js | 9 | ||||
-rw-r--r-- | desktop/sources/scripts/core/io/midi.js | 4 | ||||
-rw-r--r-- | desktop/sources/scripts/core/io/udp.js | 52 |
4 files changed, 42 insertions, 25 deletions
diff --git a/desktop/sources/scripts/client.js b/desktop/sources/scripts/client.js index 0fbfc36..f1e4706 100644 --- a/desktop/sources/scripts/client.js +++ b/desktop/sources/scripts/client.js @@ -12,7 +12,7 @@ /* global Theme */ function Client () { - this.version = 175 + this.version = 176 this.library = library this.theme = new Theme(this) diff --git a/desktop/sources/scripts/commander.js b/desktop/sources/scripts/commander.js index 9f108e2..71ee1dd 100644 --- a/desktop/sources/scripts/commander.js +++ b/desktop/sources/scripts/commander.js @@ -24,7 +24,14 @@ function Commander (client) { this.actives = { // Ports osc: (p) => { client.io.osc.select(p.int) }, - udp: (p) => { client.io.udp.select(p.int) }, + udp: (p) => { + client.io.udp.selectOutput(p.x) + if (p.y !== null) { client.io.udp.selectInput(p.y) } + }, + midi: (p) => { + client.io.midi.selectOutput(p.x) + if (p.y !== null) { client.io.midi.selectInput(p.y) } + }, ip: (p) => { client.io.setIp(p.str) }, cc: (p) => { client.io.cc.setOffset(p.int) }, pg: (p) => { client.io.cc.stack.push({ channel: clamp(p.ints[0], 0, 15), bank: p.ints[1], sub: p.ints[2], pgm: clamp(p.ints[3], 0, 127), type: 'pg' }); client.io.cc.run() }, diff --git a/desktop/sources/scripts/core/io/midi.js b/desktop/sources/scripts/core/io/midi.js index a298237..5fda0ae 100644 --- a/desktop/sources/scripts/core/io/midi.js +++ b/desktop/sources/scripts/core/io/midi.js @@ -146,7 +146,7 @@ function Midi (client) { this.selectOutput = function (id) { if (id === -1) { this.outputIndex = -1; console.log('MIDI', 'Select Output Device: None'); return } - if (!this.outputs[id]) { return } + if (!this.outputs[id]) { console.warn('MIDI',`Unknown device with id ${id}`); return } this.outputIndex = parseInt(id) console.log('MIDI', `Select Output Device: ${this.outputDevice().name}`) @@ -155,7 +155,7 @@ function Midi (client) { this.selectInput = function (id) { if (this.inputDevice()) { this.inputDevice().onmidimessage = null } if (id === -1) { this.inputIndex = -1; console.log('MIDI', 'Select Input Device: None'); return } - if (!this.inputs[id]) { return } + if (!this.inputs[id]) { console.warn('MIDI',`Unknown device with id ${id}`); return } this.inputIndex = parseInt(id) this.inputDevice().onmidimessage = (msg) => { this.receive(msg) } diff --git a/desktop/sources/scripts/core/io/udp.js b/desktop/sources/scripts/core/io/udp.js index 3c05055..0fe131a 100644 --- a/desktop/sources/scripts/core/io/udp.js +++ b/desktop/sources/scripts/core/io/udp.js @@ -5,31 +5,15 @@ function Udp (client) { this.stack = [] this.port = null - this.options = { default: 49161, orca: 49160 } this.socket = dgram ? dgram.createSocket('udp4') : null this.listener = dgram ? dgram.createSocket('udp4') : null this.start = function () { - if (!this.socket || !this.listener) { console.warn('UDP', 'Could not start.'); return } + if (!dgram || !this.socket || !this.listener) { console.warn('UDP', 'Could not start.'); return } console.info('UDP', 'Starting..') - this.listener.on('message', (msg, rinfo) => { - client.commander.trigger(`${msg}`) - }) - - this.listener.on('listening', () => { - const address = this.listener.address() - console.info('UDP', `Started socket at ${address.address}:${address.port}`) - }) - - this.listener.on('error', (err) => { - console.warn('UDP', `Server error:\n ${err.stack}`) - this.listener.close() - }) - - this.listener.bind(49160) - - this.select() + this.selectInput() + this.selectOutput() } this.clear = function () { @@ -53,10 +37,36 @@ function Udp (client) { }) } - this.select = function (port = this.options.default) { + this.selectOutput = function (port = 49161) { + if (!dgram) { console.warn('UDP', 'Unavailable.'); return } if (parseInt(port) === this.port) { console.warn('UDP', 'Already selected'); return } if (isNaN(port) || port < 1000) { console.warn('UDP', 'Unavailable port'); return } - console.info('UDP', `Selected port: ${port}`) + + console.log('UDP', `Output: ${port}`) this.port = parseInt(port) } + + this.selectInput = (port = 49160) => { + if (!dgram) { console.warn('UDP', 'Unavailable.'); return } + if (this.listener) { this.listener.close() } + + console.log('UDP', `Input: ${port}`) + this.listener = dgram.createSocket('udp4') + + this.listener.on('message', (msg, rinfo) => { + client.commander.trigger(`${msg}`) + }) + + this.listener.on('listening', () => { + const address = this.listener.address() + console.info('UDP', `Started socket at ${address.address}:${address.port}`) + }) + + this.listener.on('error', (err) => { + console.warn('UDP', `Server error:\n ${err.stack}`) + this.listener.close() + }) + + this.listener.bind(port) + } } |