reaper-osc
Version:
Controls Cockos Reaper using OSC
358 lines • 30.7 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PreviousSelectedTrackFxPreset = exports.NextSelectedTrackFxPreset = exports.SetSelectedTrackFxOpenUi = exports.SetSelectedTrackFxBypass = exports.SetSelectedTrackMonitoringMode = exports.SetSelectedTrackVolumeDb = exports.SetSelectedTrackVolume = exports.SetSelectedTrackPan2 = exports.SetSelectedTrackPan = exports.SetSelectedTrackName = exports.SetSelectedTrackSelect = exports.ToggleSelectedTrackRecordArm = exports.SetSelectedTrackRecordArm = exports.ToggleSelectedTrackSolo = exports.SetSelectedTrackSolo = exports.ToggleSelectedTrackMute = exports.SetSelectedTrackMute = exports.PreviousTrackFxPreset = exports.NextTrackFxPreset = exports.SetTrackFxOpenUi = exports.SetTrackFxBypass = exports.SetTrackMonitoringMode = exports.SetTrackVolumeDb = exports.SetTrackVolume = exports.SetTrackPan2 = exports.SetTrackPan = exports.SetTrackName = exports.SetTrackSelect = exports.ToggleTrackRecordArm = exports.SetTrackRecordArm = exports.ToggleTrackSolo = exports.SetTrackSolo = exports.ToggleTrackMute = exports.SetTrackMute = exports.SetLoopEnd = exports.SetLoopStart = exports.SetFrames = exports.SetBeat = exports.SetTime = exports.ToggleRepeat = exports.SetFastForward = exports.SetRewind = exports.ToggleRecord = exports.Pause = exports.Stop = exports.Play = exports.TriggerAction = exports.ResetSolos = exports.ToggleAutoRecordArm = exports.ToggleMetronome = void 0;
exports.PreviousDeviceFxInstrumentParameterBank = exports.NextDeviceFxInstrumentParameterBank = exports.SelectDeviceFxInstrumentParameterBank = exports.PreviousDeviceFxParameterBank = exports.NextDeviceFxParameterBank = exports.SelectDeviceFxParameterBank = exports.PreviousDeviceFx = exports.NextDeviceFx = exports.SelectDeviceFx = exports.PreviousDeviceTrackBank = exports.NextDeviceTrackBank = exports.SelectDeviceTrackBank = exports.PreviousDeviceTrack = exports.NextDeviceTrack = exports.SelectDeviceTrack = exports.ZoomY = exports.ZoomX = exports.ScrollY = exports.ScrollX = exports.SetZoomOutY = exports.SetZoomInY = exports.SetZoomOutX = exports.SetZoomInX = exports.SetScrollDown = exports.SetScrollUp = exports.SetScrollRight = exports.SetScrollLeft = exports.SetRegionNumber = exports.SetRegionLength = exports.SetRegionTime = exports.SetRegionName = exports.SetMarkerNumber = exports.SetMarkerTime = exports.SetMarkerName = exports.GotoRegion = exports.GotoMarker = exports.ToggleSetLoop = exports.ToggleRewindByMarker = exports.SetSelectedTrackReceivePan = exports.SetSelectedTrackReceiveVolume = exports.SetSelectedTrackSendPan = exports.SetSelectedTrackSendVolume = exports.SetTrackReceivePan = exports.SetTrackReceiveVolume = exports.SetTrackSendPan = exports.SetTrackSendVolume = exports.PreviousSelectedFxPreset = exports.NextSelectedFxPreset = exports.SetSelectedFxOpenUi = exports.SetSelectedFxBypass = void 0;
exports.commandToOscMessage = exports.RawMessage = exports.PreviousDeviceRegionBank = exports.NextDeviceRegionBank = exports.SelectDeviceRegionBank = exports.PreviousDeviceMarkerBank = exports.NextDeviceMarkerBank = exports.SelectDeviceMarkerBank = void 0;
/**
* Strongly typed commands accepted by {@link ReaperOscClient} for sending messages to Reaper
* @module
*/
const Messages_1 = require("../Messages");
function ToggleMetronome() { return { type: 'metronome:toggle' }; }
exports.ToggleMetronome = ToggleMetronome;
function ToggleAutoRecordArm() { return { type: 'autoRecordArm:toggle' }; }
exports.ToggleAutoRecordArm = ToggleAutoRecordArm;
function ResetSolos() { return { type: 'soloReset' }; }
exports.ResetSolos = ResetSolos;
function TriggerAction(commandId, value) { return { type: 'action', commandId, value }; }
exports.TriggerAction = TriggerAction;
function Play() { return { type: 'transport:play' }; }
exports.Play = Play;
function Stop() { return { type: 'transport:stop' }; }
exports.Stop = Stop;
function Pause() { return { type: 'transport:pause' }; }
exports.Pause = Pause;
function ToggleRecord() { return { type: 'transport:record' }; }
exports.ToggleRecord = ToggleRecord;
function SetRewind(rewinding) { return { type: 'transport:rewind', rewinding }; }
exports.SetRewind = SetRewind;
function SetFastForward(fastForwarding) { return { type: 'transport:fastForward', fastForwarding }; }
exports.SetFastForward = SetFastForward;
function ToggleRepeat() { return { type: 'transport:repeat:toggle' }; }
exports.ToggleRepeat = ToggleRepeat;
function SetTime(time) { return { type: 'transport:time', time }; }
exports.SetTime = SetTime;
function SetBeat(beat) { return { type: 'transport:beat', beat }; }
exports.SetBeat = SetBeat;
function SetFrames(frames) { return { type: 'transport:frames', frames }; }
exports.SetFrames = SetFrames;
function SetLoopStart(time) { return { type: 'transport:loopStart', time }; }
exports.SetLoopStart = SetLoopStart;
function SetLoopEnd(time) { return { type: 'transport:loopEnd', time }; }
exports.SetLoopEnd = SetLoopEnd;
function SetTrackMute(trackNumber, muted) { return { type: 'track:mute', trackNumber, muted }; }
exports.SetTrackMute = SetTrackMute;
function ToggleTrackMute(trackNumber) { return { type: 'track:mute:toggle', trackNumber }; }
exports.ToggleTrackMute = ToggleTrackMute;
function SetTrackSolo(trackNumber, soloed) { return { type: 'track:solo', trackNumber, soloed }; }
exports.SetTrackSolo = SetTrackSolo;
function ToggleTrackSolo(trackNumber) { return { type: 'track:solo:toggle', trackNumber }; }
exports.ToggleTrackSolo = ToggleTrackSolo;
function SetTrackRecordArm(trackNumber, armed) { return { type: 'track:recordArm', trackNumber, armed }; }
exports.SetTrackRecordArm = SetTrackRecordArm;
function ToggleTrackRecordArm(trackNumber) { return { type: 'track:recordArm:toggle', trackNumber }; }
exports.ToggleTrackRecordArm = ToggleTrackRecordArm;
function SetTrackSelect(trackNumber, selected) { return { type: 'track:select', trackNumber, selected }; }
exports.SetTrackSelect = SetTrackSelect;
function SetTrackName(trackNumber, name) { return { type: 'track:name', trackNumber, name }; }
exports.SetTrackName = SetTrackName;
function SetTrackPan(trackNumber, pan) { return { type: 'track:pan', trackNumber, pan }; }
exports.SetTrackPan = SetTrackPan;
function SetTrackPan2(trackNumber, pan2) { return { type: 'track:pan2', trackNumber, pan2 }; }
exports.SetTrackPan2 = SetTrackPan2;
function SetTrackVolume(trackNumber, volume) { return { type: 'track:volume', trackNumber, volume }; }
exports.SetTrackVolume = SetTrackVolume;
function SetTrackVolumeDb(trackNumber, volumeDb) { return { type: 'track:volumeDb', trackNumber, volumeDb }; }
exports.SetTrackVolumeDb = SetTrackVolumeDb;
function SetTrackMonitoringMode(trackNumber, mode) { return { type: 'track:monitoringMode', trackNumber, mode: mode }; }
exports.SetTrackMonitoringMode = SetTrackMonitoringMode;
function SetTrackFxBypass(trackNumber, fxNumber, bypassed) { return { type: 'track:fx:bypass', trackNumber, fxNumber, bypassed }; }
exports.SetTrackFxBypass = SetTrackFxBypass;
function SetTrackFxOpenUi(trackNumber, fxNumber, open) { return { type: 'track:fx:openUi', trackNumber, fxNumber, open }; }
exports.SetTrackFxOpenUi = SetTrackFxOpenUi;
function NextTrackFxPreset(trackNumber, fxNumber) { return { type: 'track:fx:preset:next', trackNumber, fxNumber }; }
exports.NextTrackFxPreset = NextTrackFxPreset;
function PreviousTrackFxPreset(trackNumber, fxNumber) { return { type: 'track:fx:preset:previous', trackNumber, fxNumber }; }
exports.PreviousTrackFxPreset = PreviousTrackFxPreset;
function SetSelectedTrackMute(muted) { return { type: 'selectedTrack:mute', muted }; }
exports.SetSelectedTrackMute = SetSelectedTrackMute;
function ToggleSelectedTrackMute() { return { type: 'selectedTrack:mute:toggle' }; }
exports.ToggleSelectedTrackMute = ToggleSelectedTrackMute;
function SetSelectedTrackSolo(soloed) { return { type: 'selectedTrack:solo', soloed }; }
exports.SetSelectedTrackSolo = SetSelectedTrackSolo;
function ToggleSelectedTrackSolo() { return { type: 'selectedTrack:solo:toggle' }; }
exports.ToggleSelectedTrackSolo = ToggleSelectedTrackSolo;
function SetSelectedTrackRecordArm(armed) { return { type: 'selectedTrack:recordArm', armed }; }
exports.SetSelectedTrackRecordArm = SetSelectedTrackRecordArm;
function ToggleSelectedTrackRecordArm() { return { type: 'selectedTrack:recordArm:toggle' }; }
exports.ToggleSelectedTrackRecordArm = ToggleSelectedTrackRecordArm;
function SetSelectedTrackSelect(selected) { return { type: 'selectedTrack:select', selected }; }
exports.SetSelectedTrackSelect = SetSelectedTrackSelect;
function SetSelectedTrackName(name) { return { type: 'selectedTrack:name', name }; }
exports.SetSelectedTrackName = SetSelectedTrackName;
function SetSelectedTrackPan(pan) { return { type: 'selectedTrack:pan', pan }; }
exports.SetSelectedTrackPan = SetSelectedTrackPan;
function SetSelectedTrackPan2(pan2) { return { type: 'selectedTrack:pan2', pan2 }; }
exports.SetSelectedTrackPan2 = SetSelectedTrackPan2;
function SetSelectedTrackVolume(volume) { return { type: 'selectedTrack:volume', volume }; }
exports.SetSelectedTrackVolume = SetSelectedTrackVolume;
function SetSelectedTrackVolumeDb(volumeDb) { return { type: 'selectedTrack:volumeDb', volumeDb }; }
exports.SetSelectedTrackVolumeDb = SetSelectedTrackVolumeDb;
function SetSelectedTrackMonitoringMode(mode) { return { type: 'selectedTrack:monitoringMode', mode: mode }; }
exports.SetSelectedTrackMonitoringMode = SetSelectedTrackMonitoringMode;
function SetSelectedTrackFxBypass(fxNumber, bypassed) { return { type: 'selectedTrack:fx:bypass', fxNumber, bypassed }; }
exports.SetSelectedTrackFxBypass = SetSelectedTrackFxBypass;
function SetSelectedTrackFxOpenUi(fxNumber, open) { return { type: 'selectedTrack:fx:openUi', fxNumber, open }; }
exports.SetSelectedTrackFxOpenUi = SetSelectedTrackFxOpenUi;
function NextSelectedTrackFxPreset(fxNumber) { return { type: 'selectedTrack:fx:preset:next', fxNumber }; }
exports.NextSelectedTrackFxPreset = NextSelectedTrackFxPreset;
function PreviousSelectedTrackFxPreset(fxNumber) { return { type: 'selectedTrack:fx:preset:previous', fxNumber }; }
exports.PreviousSelectedTrackFxPreset = PreviousSelectedTrackFxPreset;
function SetSelectedFxBypass(bypassed) { return { type: 'selectedFx:bypass', bypassed }; }
exports.SetSelectedFxBypass = SetSelectedFxBypass;
function SetSelectedFxOpenUi(open) { return { type: 'selectedFx:openUi', open }; }
exports.SetSelectedFxOpenUi = SetSelectedFxOpenUi;
function NextSelectedFxPreset() { return { type: 'selectedFx:preset:next' }; }
exports.NextSelectedFxPreset = NextSelectedFxPreset;
function PreviousSelectedFxPreset() { return { type: 'selectedFx:preset:previous' }; }
exports.PreviousSelectedFxPreset = PreviousSelectedFxPreset;
function SetTrackSendVolume(trackNumber, sendNumber, volume) { return { type: 'track:send:volume', trackNumber, sendNumber, volume }; }
exports.SetTrackSendVolume = SetTrackSendVolume;
function SetTrackSendPan(trackNumber, sendNumber, pan) { return { type: 'track:send:pan', trackNumber, sendNumber, pan }; }
exports.SetTrackSendPan = SetTrackSendPan;
function SetTrackReceiveVolume(trackNumber, receiveNumber, volume) { return { type: 'track:recv:volume', trackNumber, receiveNumber, volume }; }
exports.SetTrackReceiveVolume = SetTrackReceiveVolume;
function SetTrackReceivePan(trackNumber, receiveNumber, pan) { return { type: 'track:recv:pan', trackNumber, receiveNumber, pan }; }
exports.SetTrackReceivePan = SetTrackReceivePan;
function SetSelectedTrackSendVolume(sendNumber, volume) { return { type: 'selectedTrack:send:volume', sendNumber, volume }; }
exports.SetSelectedTrackSendVolume = SetSelectedTrackSendVolume;
function SetSelectedTrackSendPan(sendNumber, pan) { return { type: 'selectedTrack:send:pan', sendNumber, pan }; }
exports.SetSelectedTrackSendPan = SetSelectedTrackSendPan;
function SetSelectedTrackReceiveVolume(receiveNumber, volume) { return { type: 'selectedTrack:recv:volume', receiveNumber, volume }; }
exports.SetSelectedTrackReceiveVolume = SetSelectedTrackReceiveVolume;
function SetSelectedTrackReceivePan(receiveNumber, pan) { return { type: 'selectedTrack:recv:pan', receiveNumber, pan }; }
exports.SetSelectedTrackReceivePan = SetSelectedTrackReceivePan;
function ToggleRewindByMarker() { return { type: 'transport:rewindByMarker:toggle' }; }
exports.ToggleRewindByMarker = ToggleRewindByMarker;
function ToggleSetLoop() { return { type: 'transport:setLoop:toggle' }; }
exports.ToggleSetLoop = ToggleSetLoop;
function GotoMarker(markerNumber) { return { type: 'transport:gotoMarker', markerNumber }; }
exports.GotoMarker = GotoMarker;
function GotoRegion(regionNumber) { return { type: 'transport:gotoRegion', regionNumber }; }
exports.GotoRegion = GotoRegion;
function SetMarkerName(id, name) { return { type: 'markerById:name', id, name }; }
exports.SetMarkerName = SetMarkerName;
function SetMarkerTime(id, time) { return { type: 'markerById:time', id, time }; }
exports.SetMarkerTime = SetMarkerTime;
function SetMarkerNumber(id, number) { return { type: 'markerById:number', id, number }; }
exports.SetMarkerNumber = SetMarkerNumber;
function SetRegionName(id, name) { return { type: 'regionById:name', id, name }; }
exports.SetRegionName = SetRegionName;
function SetRegionTime(id, time) { return { type: 'regionById:time', id, time }; }
exports.SetRegionTime = SetRegionTime;
function SetRegionLength(id, length) { return { type: 'regionById:length', id, length }; }
exports.SetRegionLength = SetRegionLength;
function SetRegionNumber(id, number) { return { type: 'regionById:number', id, number }; }
exports.SetRegionNumber = SetRegionNumber;
function SetScrollLeft(active) { return { type: 'viewport:scroll:left', active }; }
exports.SetScrollLeft = SetScrollLeft;
function SetScrollRight(active) { return { type: 'viewport:scroll:right', active }; }
exports.SetScrollRight = SetScrollRight;
function SetScrollUp(active) { return { type: 'viewport:scroll:up', active }; }
exports.SetScrollUp = SetScrollUp;
function SetScrollDown(active) { return { type: 'viewport:scroll:down', active }; }
exports.SetScrollDown = SetScrollDown;
function SetZoomInX(active) { return { type: 'viewport:zoom:in:x', active }; }
exports.SetZoomInX = SetZoomInX;
function SetZoomOutX(active) { return { type: 'viewport:zoom:out:x', active }; }
exports.SetZoomOutX = SetZoomOutX;
function SetZoomInY(active) { return { type: 'viewport:zoom:in:y', active }; }
exports.SetZoomInY = SetZoomInY;
function SetZoomOutY(active) { return { type: 'viewport:zoom:out:y', active }; }
exports.SetZoomOutY = SetZoomOutY;
function ScrollX(value) { return { type: 'viewport:scrollX', value }; }
exports.ScrollX = ScrollX;
function ScrollY(value) { return { type: 'viewport:scrollY', value }; }
exports.ScrollY = ScrollY;
function ZoomX(value) { return { type: 'viewport:zoomX', value }; }
exports.ZoomX = ZoomX;
function ZoomY(value) { return { type: 'viewport:zoomY', value }; }
exports.ZoomY = ZoomY;
function SelectDeviceTrack(index) { return { type: 'device:track:select', index }; }
exports.SelectDeviceTrack = SelectDeviceTrack;
function NextDeviceTrack() { return { type: 'device:track:next' }; }
exports.NextDeviceTrack = NextDeviceTrack;
function PreviousDeviceTrack() { return { type: 'device:track:previous' }; }
exports.PreviousDeviceTrack = PreviousDeviceTrack;
function SelectDeviceTrackBank(index) { return { type: 'device:trackBank:select', index }; }
exports.SelectDeviceTrackBank = SelectDeviceTrackBank;
function NextDeviceTrackBank() { return { type: 'device:trackBank:next' }; }
exports.NextDeviceTrackBank = NextDeviceTrackBank;
function PreviousDeviceTrackBank() { return { type: 'device:trackBank:previous' }; }
exports.PreviousDeviceTrackBank = PreviousDeviceTrackBank;
function SelectDeviceFx(index) { return { type: 'device:fx:select', index }; }
exports.SelectDeviceFx = SelectDeviceFx;
function NextDeviceFx() { return { type: 'device:fx:next' }; }
exports.NextDeviceFx = NextDeviceFx;
function PreviousDeviceFx() { return { type: 'device:fx:previous' }; }
exports.PreviousDeviceFx = PreviousDeviceFx;
function SelectDeviceFxParameterBank(index) { return { type: 'device:fx:parameterBank:select', index }; }
exports.SelectDeviceFxParameterBank = SelectDeviceFxParameterBank;
function NextDeviceFxParameterBank() { return { type: 'device:fx:parameterBank:next' }; }
exports.NextDeviceFxParameterBank = NextDeviceFxParameterBank;
function PreviousDeviceFxParameterBank() { return { type: 'device:fx:parameterBank:previous' }; }
exports.PreviousDeviceFxParameterBank = PreviousDeviceFxParameterBank;
function SelectDeviceFxInstrumentParameterBank(index) { return { type: 'device:fx:instrumentParameterBank:select', index }; }
exports.SelectDeviceFxInstrumentParameterBank = SelectDeviceFxInstrumentParameterBank;
function NextDeviceFxInstrumentParameterBank() { return { type: 'device:fx:instrumentParameterBank:next' }; }
exports.NextDeviceFxInstrumentParameterBank = NextDeviceFxInstrumentParameterBank;
function PreviousDeviceFxInstrumentParameterBank() { return { type: 'device:fx:instrumentParameterBank:previous' }; }
exports.PreviousDeviceFxInstrumentParameterBank = PreviousDeviceFxInstrumentParameterBank;
function SelectDeviceMarkerBank(index) { return { type: 'device:markerBank:select', index }; }
exports.SelectDeviceMarkerBank = SelectDeviceMarkerBank;
function NextDeviceMarkerBank() { return { type: 'device:markerBank:next' }; }
exports.NextDeviceMarkerBank = NextDeviceMarkerBank;
function PreviousDeviceMarkerBank() { return { type: 'device:markerBank:previous' }; }
exports.PreviousDeviceMarkerBank = PreviousDeviceMarkerBank;
function SelectDeviceRegionBank(index) { return { type: 'device:regionBank:select', index }; }
exports.SelectDeviceRegionBank = SelectDeviceRegionBank;
function NextDeviceRegionBank() { return { type: 'device:regionBank:next' }; }
exports.NextDeviceRegionBank = NextDeviceRegionBank;
function PreviousDeviceRegionBank() { return { type: 'device:regionBank:previous' }; }
exports.PreviousDeviceRegionBank = PreviousDeviceRegionBank;
function RawMessage(message) { return { type: 'raw', message }; }
exports.RawMessage = RawMessage;
/** Translates a typed command into the corresponding OSC message */
function commandToOscMessage(command) {
var _a;
switch (command.type) {
// Global
case 'metronome:toggle': return new Messages_1.OscMessage('/click');
case 'autoRecordArm:toggle': return new Messages_1.OscMessage('/autorecarm');
case 'soloReset': return new Messages_1.OscMessage('/soloreset');
case 'action': return new Messages_1.ActionMessage(command.commandId, (_a = command.value) !== null && _a !== void 0 ? _a : null);
// Transport
case 'transport:play': return new Messages_1.OscMessage('/play');
case 'transport:stop': return new Messages_1.OscMessage('/stop');
case 'transport:pause': return new Messages_1.OscMessage('/pause');
case 'transport:record': return new Messages_1.OscMessage('/record');
case 'transport:rewind': return new Messages_1.BooleanMessage('/rewind', command.rewinding);
case 'transport:fastForward': return new Messages_1.BooleanMessage('/forward', command.fastForwarding);
case 'transport:repeat:toggle': return new Messages_1.OscMessage('/repeat');
case 'transport:time': return new Messages_1.FloatMessage('/time', command.time);
case 'transport:beat': return new Messages_1.StringMessage('/beat/str', command.beat);
case 'transport:frames': return new Messages_1.StringMessage('/frames/str', command.frames);
case 'transport:loopStart': return new Messages_1.FloatMessage('/loop/start/time', command.time);
case 'transport:loopEnd': return new Messages_1.FloatMessage('/loop/end/time', command.time);
// Track
case 'track:mute': return new Messages_1.BooleanMessage(`/track/${command.trackNumber}/mute`, command.muted);
case 'track:mute:toggle': return new Messages_1.OscMessage(`/track/${command.trackNumber}/mute/toggle`);
case 'track:solo': return new Messages_1.BooleanMessage(`/track/${command.trackNumber}/solo`, command.soloed);
case 'track:solo:toggle': return new Messages_1.OscMessage(`/track/${command.trackNumber}/solo/toggle`);
case 'track:recordArm': return new Messages_1.BooleanMessage(`/track/${command.trackNumber}/recarm`, command.armed);
case 'track:recordArm:toggle': return new Messages_1.OscMessage(`/track/${command.trackNumber}/recarm/toggle`);
case 'track:select': return new Messages_1.BooleanMessage(`/track/${command.trackNumber}/select`, command.selected);
case 'track:name': return new Messages_1.StringMessage(`/track/${command.trackNumber}/name`, command.name);
case 'track:pan': return new Messages_1.FloatMessage(`/track/${command.trackNumber}/pan`, command.pan);
case 'track:pan2': return new Messages_1.FloatMessage(`/track/${command.trackNumber}/pan2`, command.pan2);
case 'track:volume': return new Messages_1.FloatMessage(`/track/${command.trackNumber}/volume`, command.volume);
case 'track:volumeDb': return new Messages_1.FloatMessage(`/track/${command.trackNumber}/volume/db`, command.volumeDb);
case 'track:monitoringMode': return new Messages_1.IntegerMessage(`/track/${command.trackNumber}/monitor`, command.mode);
// Track FX (bypass is inverted on the wire: false = bypassed)
case 'track:fx:bypass': return new Messages_1.BooleanMessage(`/track/${command.trackNumber}/fx/${command.fxNumber}/bypass`, !command.bypassed);
case 'track:fx:openUi': return new Messages_1.BooleanMessage(`/track/${command.trackNumber}/fx/${command.fxNumber}/openui`, command.open);
case 'track:fx:preset:next': return new Messages_1.OscMessage(`/track/${command.trackNumber}/fx/${command.fxNumber}/preset+`);
case 'track:fx:preset:previous': return new Messages_1.OscMessage(`/track/${command.trackNumber}/fx/${command.fxNumber}/preset-`);
// Selected track
case 'selectedTrack:mute': return new Messages_1.BooleanMessage('/track/mute', command.muted);
case 'selectedTrack:mute:toggle': return new Messages_1.OscMessage('/track/mute/toggle');
case 'selectedTrack:solo': return new Messages_1.BooleanMessage('/track/solo', command.soloed);
case 'selectedTrack:solo:toggle': return new Messages_1.OscMessage('/track/solo/toggle');
case 'selectedTrack:recordArm': return new Messages_1.BooleanMessage('/track/recarm', command.armed);
case 'selectedTrack:recordArm:toggle': return new Messages_1.OscMessage('/track/recarm/toggle');
case 'selectedTrack:select': return new Messages_1.BooleanMessage('/track/select', command.selected);
case 'selectedTrack:name': return new Messages_1.StringMessage('/track/name', command.name);
case 'selectedTrack:pan': return new Messages_1.FloatMessage('/track/pan', command.pan);
case 'selectedTrack:pan2': return new Messages_1.FloatMessage('/track/pan2', command.pan2);
case 'selectedTrack:volume': return new Messages_1.FloatMessage('/track/volume', command.volume);
case 'selectedTrack:volumeDb': return new Messages_1.FloatMessage('/track/volume/db', command.volumeDb);
case 'selectedTrack:monitoringMode': return new Messages_1.IntegerMessage('/track/monitor', command.mode);
// Selected track FX (bypass inverted)
case 'selectedTrack:fx:bypass': return new Messages_1.BooleanMessage(`/fx/${command.fxNumber}/bypass`, !command.bypassed);
case 'selectedTrack:fx:openUi': return new Messages_1.BooleanMessage(`/fx/${command.fxNumber}/openui`, command.open);
case 'selectedTrack:fx:preset:next': return new Messages_1.OscMessage(`/fx/${command.fxNumber}/preset+`);
case 'selectedTrack:fx:preset:previous': return new Messages_1.OscMessage(`/fx/${command.fxNumber}/preset-`);
// Selected FX (bypass inverted)
case 'selectedFx:bypass': return new Messages_1.BooleanMessage('/fx/bypass', !command.bypassed);
case 'selectedFx:openUi': return new Messages_1.BooleanMessage('/fx/openui', command.open);
case 'selectedFx:preset:next': return new Messages_1.OscMessage('/fx/preset+');
case 'selectedFx:preset:previous': return new Messages_1.OscMessage('/fx/preset-');
// Track sends
case 'track:send:volume': return new Messages_1.FloatMessage(`/track/${command.trackNumber}/send/${command.sendNumber}/volume`, command.volume);
case 'track:send:pan': return new Messages_1.FloatMessage(`/track/${command.trackNumber}/send/${command.sendNumber}/pan`, command.pan);
// Track receives
case 'track:recv:volume': return new Messages_1.FloatMessage(`/track/${command.trackNumber}/recv/${command.receiveNumber}/volume`, command.volume);
case 'track:recv:pan': return new Messages_1.FloatMessage(`/track/${command.trackNumber}/recv/${command.receiveNumber}/pan`, command.pan);
// Selected track sends
case 'selectedTrack:send:volume': return new Messages_1.FloatMessage(`/track/send/${command.sendNumber}/volume`, command.volume);
case 'selectedTrack:send:pan': return new Messages_1.FloatMessage(`/track/send/${command.sendNumber}/pan`, command.pan);
// Selected track receives
case 'selectedTrack:recv:volume': return new Messages_1.FloatMessage(`/track/recv/${command.receiveNumber}/volume`, command.volume);
case 'selectedTrack:recv:pan': return new Messages_1.FloatMessage(`/track/recv/${command.receiveNumber}/pan`, command.pan);
// Marker/Region transport
case 'transport:rewindByMarker:toggle': return new Messages_1.OscMessage('/bymarker');
case 'transport:setLoop:toggle': return new Messages_1.OscMessage('/editloop');
case 'transport:gotoMarker': return new Messages_1.IntegerMessage('/marker', command.markerNumber);
case 'transport:gotoRegion': return new Messages_1.IntegerMessage('/region', command.regionNumber);
// Marker write-by-ID
case 'markerById:name': return new Messages_1.StringMessage(`/marker_id/${command.id}/name`, command.name);
case 'markerById:time': return new Messages_1.FloatMessage(`/marker_id/${command.id}/time`, command.time);
case 'markerById:number': return new Messages_1.IntegerMessage(`/marker_id/${command.id}/number`, command.number);
// Region write-by-ID
case 'regionById:name': return new Messages_1.StringMessage(`/region_id/${command.id}/name`, command.name);
case 'regionById:time': return new Messages_1.FloatMessage(`/region_id/${command.id}/time`, command.time);
case 'regionById:length': return new Messages_1.FloatMessage(`/region_id/${command.id}/length`, command.length);
case 'regionById:number': return new Messages_1.IntegerMessage(`/region_id/${command.id}/number`, command.number);
// Viewport scroll (boolean)
case 'viewport:scroll:left': return new Messages_1.BooleanMessage('/scroll/x/-', command.active);
case 'viewport:scroll:right': return new Messages_1.BooleanMessage('/scroll/x/+', command.active);
case 'viewport:scroll:up': return new Messages_1.BooleanMessage('/scroll/y/-', command.active);
case 'viewport:scroll:down': return new Messages_1.BooleanMessage('/scroll/y/+', command.active);
// Viewport zoom (boolean)
case 'viewport:zoom:in:x': return new Messages_1.BooleanMessage('/zoom/x/+', command.active);
case 'viewport:zoom:out:x': return new Messages_1.BooleanMessage('/zoom/x/-', command.active);
case 'viewport:zoom:in:y': return new Messages_1.BooleanMessage('/zoom/y/+', command.active);
case 'viewport:zoom:out:y': return new Messages_1.BooleanMessage('/zoom/y/-', command.active);
// Viewport scroll/zoom (rotary)
case 'viewport:scrollX': return new Messages_1.FloatMessage('/scroll/x', command.value);
case 'viewport:scrollY': return new Messages_1.FloatMessage('/scroll/y', command.value);
case 'viewport:zoomX': return new Messages_1.FloatMessage('/zoom/x', command.value);
case 'viewport:zoomY': return new Messages_1.FloatMessage('/zoom/y', command.value);
// Device navigation
case 'device:track:select': return new Messages_1.OscMessage(`/device/track/select/${command.index}`);
case 'device:track:next': return new Messages_1.OscMessage('/device/track/+');
case 'device:track:previous': return new Messages_1.OscMessage('/device/track/-');
case 'device:trackBank:select': return new Messages_1.OscMessage(`/device/track/bank/select/${command.index}`);
case 'device:trackBank:next': return new Messages_1.OscMessage('/device/track/bank/+');
case 'device:trackBank:previous': return new Messages_1.OscMessage('/device/track/bank/-');
case 'device:fx:select': return new Messages_1.OscMessage(`/device/fx/select/${command.index}`);
case 'device:fx:next': return new Messages_1.OscMessage('/device/fx/+');
case 'device:fx:previous': return new Messages_1.OscMessage('/device/fx/-');
case 'device:fx:parameterBank:select': return new Messages_1.OscMessage(`/device/fxparam/bank/select/${command.index}`);
case 'device:fx:parameterBank:next': return new Messages_1.OscMessage('/device/fxparam/bank/+');
case 'device:fx:parameterBank:previous': return new Messages_1.OscMessage('/device/fxparam/bank/-');
case 'device:fx:instrumentParameterBank:select': return new Messages_1.OscMessage(`/device/fxinstparam/bank/select/${command.index}`);
case 'device:fx:instrumentParameterBank:next': return new Messages_1.OscMessage('/device/fxinstparam/bank/+');
case 'device:fx:instrumentParameterBank:previous': return new Messages_1.OscMessage('/device/fxinstparam/bank/-');
case 'device:markerBank:select': return new Messages_1.OscMessage(`/device/marker/bank/select/${command.index}`);
case 'device:markerBank:next': return new Messages_1.OscMessage('/device/marker/bank/+');
case 'device:markerBank:previous': return new Messages_1.OscMessage('/device/marker/bank/-');
case 'device:regionBank:select': return new Messages_1.OscMessage(`/device/region/bank/select/${command.index}`);
case 'device:regionBank:next': return new Messages_1.OscMessage('/device/region/bank/+');
case 'device:regionBank:previous': return new Messages_1.OscMessage('/device/region/bank/-');
// Raw
case 'raw': return command.message;
}
}
exports.commandToOscMessage = commandToOscMessage;
//# sourceMappingURL=Commands.js.map