From 9545b65984daa6f13190cf550f80ef2b2535e60b Mon Sep 17 00:00:00 2001 From: StefanSchmelz Date: Wed, 16 Sep 2020 21:57:40 +0200 Subject: [PATCH 1/2] fixed branch issues for new sample --- samples/midi-io/extension/index.ts | 63 ++++++++++++++++++++++++++++++ samples/midi-io/package.json | 25 ++++++++++++ samples/midi-io/tsconfig.json | 3 ++ 3 files changed, 91 insertions(+) create mode 100644 samples/midi-io/extension/index.ts create mode 100644 samples/midi-io/package.json create mode 100644 samples/midi-io/tsconfig.json diff --git a/samples/midi-io/extension/index.ts b/samples/midi-io/extension/index.ts new file mode 100644 index 000000000..ad75e6b15 --- /dev/null +++ b/samples/midi-io/extension/index.ts @@ -0,0 +1,63 @@ +import { NodeCG } from "nodecg/types/server"; +import { requireService } from "nodecg-io-core/extension/serviceClientWrapper"; +import { MidiInputServiceClient } from "nodecg-io-midi-input/extension"; +import { MidiOutputServiceClient } from "nodecg-io-midi-output/extension"; +import { Input, Output } from "easymidi"; + +module.exports = function (nodecg: NodeCG) { + nodecg.log.info("Sample bundle for started"); + + const inputService = requireService(nodecg, "midi-input"); + const outputService = requireService(nodecg, "midi-output"); + + let midiInput: null | Input = null; + let midiOutput: null | Output = null; + + inputService?.onAvailable((client) => { + nodecg.log.info("Midi-input client has been updated."); + midiInput = client.getNativeClient(); + if (midiOutput != null) { + setListeners(midiInput, midiOutput); + } + }); + outputService?.onAvailable((client) => { + nodecg.log.info("Midi-output client has been updated."); + midiOutput = client.getNativeClient(); + if (midiInput != null) { + setListeners(midiInput, midiOutput); + } + }); + + inputService?.onUnavailable(() => nodecg.log.info("Midi-input client has been unset.")); + outputService?.onUnavailable(() => nodecg.log.info("Midi-output client has been unset.")); + // Copy from "samples/midi-input/extension/index.ts" + // eslint-disable-next-line @typescript-eslint/no-explicit-any + function printMessage(msg: any, event: string) { + let str = ""; + for (const prop in msg) { + str += prop + " " + msg[prop].toString() + " "; + } + nodecg.log.info(event + " " + str); + } + + function setListeners(inp: Input, out: Output) { + inp.on("cc", (msg) => { + printMessage(msg, "cc"); + if (msg.value > 63) { + msg.value = Math.round(Math.random() * 127); + } + out.send("cc", msg); + }); + inp.on("noteon", (msg) => { + printMessage(msg, "noteon"); + if (msg.velocity != 0) { + msg.velocity = Math.round(Math.random() * 127); + } + out.send("noteon", msg); + }); + inp.on("noteoff", (msg) => { + printMessage(msg, "noteoff"); + out.send("noteoff", msg); + }); + } +}; diff --git a/samples/midi-io/package.json b/samples/midi-io/package.json new file mode 100644 index 000000000..2762241a8 --- /dev/null +++ b/samples/midi-io/package.json @@ -0,0 +1,25 @@ +{ + "name": "midi-io", + "version": "0.1.0", + "nodecg": { + "compatibleRange": "^1.1.1", + "bundleDependencies": { + "nodecg-io-midi-input": "0.1.0", + "nodecg-io-midi-output": "0.1.0" + } + }, + "scripts": { + "build": "tsc", + "watch": "tsc -w", + "list": "node ../midi-input/helperscripts/listDevices.js" + }, + "license": "MIT", + "dependencies": { + "nodecg-io-midi-input": "0.1.0", + "nodecg-io-midi-output": "0.1.0", + "nodecg-io-core": "0.1.0", + "@types/node": "^14.6.4", + "nodecg": "^1.6.1", + "typescript": "^4.0.2" + } +} diff --git a/samples/midi-io/tsconfig.json b/samples/midi-io/tsconfig.json new file mode 100644 index 000000000..c8bb01bee --- /dev/null +++ b/samples/midi-io/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "../../tsconfig.common.json" +} From a4e21a384dcba06d3a5c00aeed6a208146713fd9 Mon Sep 17 00:00:00 2001 From: Daniel Huber Date: Thu, 17 Sep 2020 18:57:06 +0200 Subject: [PATCH 2/2] Update samples/midi-io/extension/index.ts --- samples/midi-io/extension/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/midi-io/extension/index.ts b/samples/midi-io/extension/index.ts index ad75e6b15..4b5e552b3 100644 --- a/samples/midi-io/extension/index.ts +++ b/samples/midi-io/extension/index.ts @@ -5,7 +5,7 @@ import { MidiOutputServiceClient } from "nodecg-io-midi-output/extension"; import { Input, Output } from "easymidi"; module.exports = function (nodecg: NodeCG) { - nodecg.log.info("Sample bundle for started"); + nodecg.log.info("midi-io sample bundle started"); const inputService = requireService(nodecg, "midi-input"); const outputService = requireService(nodecg, "midi-output");