@blackmagic-controller/core
Version:
An npm module for interfacing with the Blackmagic usb/bluetooth controllers
163 lines • 9.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ResolveReplayEditorFactory = ResolveReplayEditorFactory;
const base_js_1 = require("./base.js");
const id_js_1 = require("../id.js");
const controlsGenerator_js_1 = require("../controlsGenerator.js");
const callback_hook_js_1 = require("../services/callback-hook.js");
const default_js_1 = require("../services/properties/default.js");
const default_js_2 = require("../services/input/default.js");
const ledBuffer_js_1 = require("../services/led/ledBuffer.js");
const resolveReplayEditorControls = [
(0, controlsGenerator_js_1.createBasicButtonDefinition)(0, 0, 'undo', 0x65, null),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(0, 1, 'new-tline', 0x3e, null),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(0, 6, 'cue', 0x3f, 0),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(0, 7, 'run', 0x40, 1),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(0, 8, 'dump', 0x41, 2),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(0, 10, 'go-to-end', 0x6b, null),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(0, 11, 'input-view', 0x42, 3),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(0, 12, 'multi-src', 0x43, 4),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(0, 14, 'single-clip', 0x44, 5),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(1, 1, 'trim-all', 0x3d, null),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(1, 3, 'ripl-del', 0x2b, null),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(1, 4, 'video-only', 0x25, 6),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(1, 5, 'auto-sting', 0x45, 7),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(1, 6, 'ramp-down', 0x46, null),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(1, 7, 'speed-pos', 0x47, 8),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(1, 9, 'sync-bin', 0x1f, null),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(1, 10, 'add-mark', 0x68, null),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(1, 11, 'full-view', 0x2d, 9),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(2, 4, 'audio-only', 0x26, 10),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(2, 5, 'sel-sting', 0x48, 11),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(2, 6, 'slow', 0x49, null),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(2, 7, 'set-speed', 0x4a, 12),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(2, 9, 'split', 0x2f, null),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(2, 10, 'snap', 0x2e, 13),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(2, 11, 'mv-view', 0x4b, 14),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(2, 12, 'source', 0x1a, null),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(2, 14, 'timeline', 0x1b, null),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(3, 0, 'live-speed', 0x63, 15),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(3, 1, 'smart-insert', 0x01, null),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(3, 2, 'appnd', 0x02, null),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(3, 3, 'ripl-owr', 0x03, null),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(4, 1, 'close-up', 0x04, 16),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(4, 2, 'place-on-top', 0x05, null),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(4, 3, 'src-owr', 0x06, null),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(4, 4, 'set-poi', 0x4d, 17),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(4, 5, 'go-to-poi', 0x4c, null),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(4, 6, '2sec', 0x5d, 18),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(4, 7, '3sec', 0x5e, 19),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(4, 8, '4sec', 0x5f, 20),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(4, 9, '5sec', 0x60, 21),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(4, 10, '6sec', 0x61, 22),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(4, 11, '7sec', 0x62, 23),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(4, 12, 'slow-jog', 0x69, -4), // this negative is a hack, to differentiate them to the special command
(0, controlsGenerator_js_1.createBasicButtonDefinition)(4, 13, 'jog-jog', 0x1d, -1), // this negative is a hack, to differentiate them to the special command
(0, controlsGenerator_js_1.createBasicButtonDefinition)(4, 14, 'scrl-jog', 0x1e, -3), // this negative is a hack, to differentiate them to the special command
(0, controlsGenerator_js_1.createBasicButtonDefinition)(5, 1, 'in', 0x07, null),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(5, 3, 'out', 0x08, null),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(5, 4, 'all-cams', 0x64, 24),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(5, 5, 'cams-9-16', 0x5c, 25),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(5, 6, 'title1', 0x4e, 26),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(5, 7, 'title2', 0x4f, 27),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(5, 8, 'title3', 0x50, 28),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(5, 9, 'title4', 0x51, 29),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(5, 10, 'title5', 0x52, 30),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(5, 11, 'title6', 0x53, 31),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(6, 1, 'trim-in', 0x09, null),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(6, 2, 'trim-out', 0x0a, null),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(6, 3, 'roll', 0x0b, null),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(7, 1, 'slip', 0x67, null),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(7, 2, 'slide', 0x66, null),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(7, 3, 'trans-dur', 0x0e, null),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(7, 4, 'cam1', 0x54, 32),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(7, 5, 'cam2', 0x55, 33),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(7, 6, 'cam3', 0x56, 34),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(7, 7, 'cam4', 0x57, 35),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(7, 8, 'cam5', 0x58, 36),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(7, 9, 'cam6', 0x59, 37),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(7, 10, 'cam7', 0x5a, 38),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(7, 11, 'cam8', 0x5b, 39),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(8, 1, 'cut', 0x0f, 40),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(8, 2, 'dis', 0x10, 41),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(8, 3, 'trans', 0x22, 42),
(0, controlsGenerator_js_1.createBasicButtonDefinition)(8, 4, 'stop-play', 0x3c, null),
{
type: 'tbar',
id: 0,
row: 4,
column: 0,
columnSpan: 1,
rowSpan: 5,
ledSegments: 16,
ledBitIndex: 43,
},
{
type: 'jog',
id: 0,
row: 5,
column: 12,
columnSpan: 3,
rowSpan: 4,
},
];
const resolveReplayEditorProperties = {
MODEL: id_js_1.DeviceModelId.DaVinciResolveReplayEditor,
PRODUCT_NAME: 'DaVinci Resolve Replay Editor',
CONTROLS: (0, controlsGenerator_js_1.freezeDefinitions)(resolveReplayEditorControls),
};
function ResolveReplayEditorFactory(device, options) {
const events = new callback_hook_js_1.CallbackHook();
return new base_js_1.BlackmagicControllerBase(device, options, {
deviceProperties: resolveReplayEditorProperties,
events,
properties: new default_js_1.DefaultPropertiesService(device, {
batteryReportId: 7,
firmwareReportId: 1,
serialReportId: 8,
}),
inputService: new default_js_2.DefaultInputService(resolveReplayEditorProperties, events, {
buttonReportId: 0x04,
tbarReportId: 0x0a,
jogReportId: 0x03,
batteryReportId: 0x06,
}),
led: new ResolveReplayLedService(device),
});
}
class ResolveReplayLedService {
#device;
#primaryBuffer = new ledBuffer_js_1.LedBuffer(0x09, 33);
#jobBuffer = new ledBuffer_js_1.LedBuffer(0x04, 2);
constructor(device) {
this.#device = device;
}
async setControlColors(values) {
this.#primaryBuffer.prepareNewBuffers();
this.#jobBuffer.prepareNewBuffers();
let changedPrimary = false;
let changedJob = false;
for (const value of values) {
if (value.type === 'button-on-off' && value.control.ledBitIndex < 0) {
changedJob = true;
this.#jobBuffer.maskControlBits(-value.control.ledBitIndex - 1, [value.on]);
}
else {
changedPrimary = true;
this.#primaryBuffer.setControlColor(value);
}
}
const result = [];
if (changedJob)
result.push(...this.#jobBuffer.getBuffers());
if (changedPrimary)
result.push(...this.#primaryBuffer.getBuffers());
await this.#device.sendReports(result);
}
async clearPanel() {
this.#jobBuffer.clearBuffers();
this.#primaryBuffer.clearBuffers();
await this.#device.sendReports([...this.#jobBuffer.getBuffers(), ...this.#primaryBuffer.getBuffers()]);
}
}
//# sourceMappingURL=resolve-replay-editor.js.map