UNPKG

@blackmagic-controller/core

Version:

An npm module for interfacing with the Blackmagic usb/bluetooth controllers

163 lines 9.91 kB
"use strict"; 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