MIDI Remote API
Programmer's Guide

About

Welcome to the Steinberg MIDI Remote API.

This document will guide you through the steps of writing a MIDI Remote API Script for a specific MIDI Controller Hardware.

NOTE: Scripts are written in the ES5 version of JavaScript

Basic Concept

The MIDI Remote API Script acts as a mediator between a Hardware Controller and Cubase / Nuendo

Cubase / Nuendo
Host
Host MIDI I/O
Host MIDI I/O
MIDI Remote Script
Written in Javascript (ES5)

MIDI Remote Script...
Host Functions
Quick Controls,
Selected Track,
MixConsole,
Key Commands,
...

Host Functions...
Viewer does not support full SVG 1.1

The MIDI Remote API Script emulates the hardware surface. This improves usability and recognizability.

Script Structure

The MIDI Remote API Script consists of three building blocks

  1. Driver Setup

    • create driver object
    • define driver ports to be associated with existing hardware midi ports
    • specify all possible port namings for automatic device detection
  2. Surface Layout

    • visualize the hardware's surface elements (e.g. knobs, faders, buttons)
    • bind surface elements to midi messages
  3. Host Mapping

    • create mapping pages for each user workflow (e.g. mixing, playing instruments, track navigation)
 

The following image illustrates that:

 
1. Driver Setup
Driver Setup
2. Surface Layout
Surface Layout
3. Host Mapping
Host Mapping
SurfaceElement
Knob, Fader, Button, ...
Element...
Page
Page
ValueBinding
ValueBinding
HostObject
Transport, MixConsole, ...
HostObject...
SurfaceValue
SurfaceValue
HostValue
HostValue
HostAccess
HostAccess
MIDI Input
MIDI Input
MIDI Output
MIDI Output
MIDI Binding
MIDI Binding
Viewer does not support full SVG 1.1

Getting Started

To get started please perform these steps:

  1. Make sure you have Visual Studio Code installed.
We highly recommend using Visual Studio Code for writing MIDI Remote API Scripts. We provide a JSDoc based auto-completion setup. You will not have to look up types and methods in a separate documentation. Visual Studio Code will help you write scripts intuitively.
  1. Make sure the folder of the Visual Studio Code executable is added to the PATH environment variable.

  2. Make sure you have the newest Cubase / Nuendo installed.

  3. Start Cubase / Nuendo.

  4. Create a project with audio and/or instrument tracks.

  5. Open the Remote tab in the lower zone.

  1. Open the MIDI Remote Driver Scripts folder.

Mac: /Users/<Username>/Documents/Steinberg/<Cubase or Nuendo>/MIDI Remote/Driver Scripts

Windows: C:\Users\<Username>\Documents\Steinberg&lt;Cubase or Nuendo>\MIDI Remote\Driver Scripts

 
  1. Open a console (win: cmd, mac: terminal) and go to the MIDI Remote Driver Scripts folder.

  2. Open Visual Studio Code from the command line like this:

code .

  1. Create a script file.

The MIDI Remote API Script file follows the structure:
<Driver Scripts Folder>/<Local or Public>/<vendor>/<device>/<vendor>_<device>.js

WARNING: Always use the folder Local for development, folder Public will be overwritten when starting Cubase / Nuendo.

Example:
<Driver Scripts Folder>/Local/Nektar/Impact_LX49Plus/Nektar_Impact_LX49Plus.js

  1. Connect your MIDI hardware controller.

  2. Open script console.

The Script Console appears like this:

After modifying the script file press the 'Reload Scripts' button.

Examples

Simple Device

To get to know the basic semantics of the API we will write a script for a fictional MIDI Controller having four encoder knobs. The visual representation in Cubase / Nuendo will appear like this:

 

Let's get right to the code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73//-----------------------------------------------------------------------------
// 1. DRIVER SETUP - create driver object, midi ports and detection information
//-----------------------------------------------------------------------------

// get the api's entry point
var midiremote_api = require('midiremote_api_v1')

// create the device driver main object
var deviceDriver = midiremote_api.makeDeviceDriver('ExampleCompany', 'SimpleDevice', 'Steinberg Media Technologies GmbH')

// create objects representing the hardware's MIDI ports
var midiInput = deviceDriver.mPorts.makeMidiInput()
var midiOutput = deviceDriver.mPorts.makeMidiOutput()

// define all possible namings the devices MIDI ports could have
// NOTE: Windows and MacOS handle port naming differently
deviceDriver.makeDetectionUnit().detectPortPair(midiInput, midiOutput)
    .expectInputNameEquals('SimpleDevice IN')
    .expectOutputNameEquals('SimpleDevice OUT')
    
deviceDriver.makeDetectionUnit().detectPortPair(midiInput, midiOutput)
    .expectInputNameEquals('SimpleDevice (MIDI IN)')
    .expectOutputNameEquals('SimpleDevice (MIDI OUT)')


//-----------------------------------------------------------------------------
// 2. SURFACE LAYOUT - create control elements and midi bindings
//-----------------------------------------------------------------------------

// create control element representing your hardware's surface
var knob1 = deviceDriver.mSurface.makeKnob(0, 0, 1, 1.5)
var knob2 = deviceDriver.mSurface.makeKnob(1, 0, 1, 1.5)
var knob3 = deviceDriver.mSurface.makeKnob(2, 0, 1, 1.5)
var knob4 = deviceDriver.mSurface.makeKnob(3, 0, 1, 1.5)

// bind midi ports to surface elements
knob1.mSurfaceValue.mMidiBinding
    .setInputPort(midiInput)
    .setOutputPort(midiOutput)
    .bindToControlChange (0, 21) // channel 0, cc 21

knob2.mSurfaceValue.mMidiBinding
    .setInputPort(midiInput)
    .setOutputPort(midiOutput)
    .bindToControlChange (0, 22) // channel 0, cc 22

knob3.mSurfaceValue.mMidiBinding
    .setInputPort(midiInput)
    .setOutputPort(midiOutput)
    .bindToControlChange (0, 23) // channel 0, cc 23

knob4.mSurfaceValue.mMidiBinding
    .setInputPort(midiInput)
    .setOutputPort(midiOutput)
    .bindToControlChange (0, 24) // channel 0, cc 24

//-----------------------------------------------------------------------------
// 3. HOST MAPPING - create mapping pages and host bindings
//-----------------------------------------------------------------------------

// create at least one mapping page
var page = deviceDriver.mMapping.makePage('Example Mixer Page')

// create host accessing objects
var hostSelectedTrackChannel = page.mHostAccess.mTrackSelection.mMixerChannel


// bind surface elements to host accessing object values
page.makeValueBinding(knob1.mSurfaceValue, hostSelectedTrackChannel.mValue.mVolume)
page.makeValueBinding(knob2.mSurfaceValue, hostSelectedTrackChannel.mSends.getByIndex(0).mLevel)
page.makeValueBinding(knob3.mSurfaceValue, hostSelectedTrackChannel.mSends.getByIndex(1).mLevel)
page.makeValueBinding(knob4.mSurfaceValue, hostSelectedTrackChannel.mSends.getByIndex(2).mLevel)
ExampleCompany_SimpleDevice.js

Next Device

Most MIDI hardware controllers have a repetitive layout.
The next example demonstrates how to define 8 mixer channels on the surface.

Surface:

Code:



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84...

//-----------------------------------------------------------------------------
// 2. SURFACE LAYOUT - create control elements and midi bindings
//-----------------------------------------------------------------------------

var knobs = []
var faders = []
var buttons = []

var numChannels = 8

for(var channelIndex = 0; channelIndex < numChannels; ++channelIndex) {
    
    var knob = deviceDriver.mSurface.makeKnob(channelIndex * 2, 0, 2, 2)
    
    knob.mSurfaceValue.mMidiBinding
        .setInputPort(midiInput).setOutputPort(midiOutput)
        .bindToControlChange (0, 21 + channelIndex)
    
    knobs.push(knob)

    var fader = deviceDriver.mSurface.makeFader(channelIndex * 2 + 0.5, 2, 1, 6)
    
    fader.mSurfaceValue.mMidiBinding
        .setInputPort(midiInput).setOutputPort(midiOutput)
        .bindToControlChange (0, 29 + channelIndex)

    faders.push(fader)

    var button = deviceDriver.mSurface.makeButton(channelIndex * 2, 8, 2, 1)

    button.mSurfaceValue.mMidiBinding
        .setInputPort(midiInput).setOutputPort(midiOutput)
        .bindToControlChange (0, 37 + channelIndex)

    buttons.push(button)
}

//-----------------------------------------------------------------------------
// 3. HOST MAPPING - create mapping pages and host bindings
//-----------------------------------------------------------------------------

var page = deviceDriver.mMapping.makePage('Example Mixer Page')

var hostMixerBankZone = page.mHostAccess.mMixConsole.makeMixerBankZone()
    .excludeInputChannels()
    .excludeOutputChannels()

for(var channelIndex = 0; channelIndex < numChannels; ++channelIndex) {
    var hostMixerBankChannel = hostMixerBankZone.makeMixerBankChannel()

    var knobSurfaceValue = knobs[channelIndex].mSurfaceValue;
    var faderSurfaceValue = faders[channelIndex].mSurfaceValue;
    var buttonSurfaceValue = buttons[channelIndex].mSurfaceValue;

    page.makeValueBinding(knobSurfaceValue, hostMixerBankChannel.mValue.mPan)
    page.makeValueBinding(faderSurfaceValue, hostMixerBankChannel.mValue.mVolume)
    page.makeValueBinding(buttonSurfaceValue, hostMixerBankChannel.mValue.mSelected)
}
ExampleCompany_NextDevice.js

Real World Device

This example demonstrates a full stack MIDI Remote API Script.

Surface:

Code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308//-----------------------------------------------------------------------------
// 0. INCLUDE common functions
//-----------------------------------------------------------------------------
var helper = require('./helper')

//-----------------------------------------------------------------------------
// 1. DRIVER SETUP - create driver object, midi ports and detection information
//-----------------------------------------------------------------------------

var midiremote_api = require('midiremote_api_v1')

var deviceDriver = midiremote_api.makeDeviceDriver('ExampleCompany', 'RealWorldDevice', 'Steinberg Media Technologies GmbH')

var midiInput = deviceDriver.mPorts.makeMidiInput()
var midiOutput = deviceDriver.mPorts.makeMidiOutput()

deviceDriver.makeDetectionUnit().detectPortPair(midiInput, midiOutput)
    .expectInputNameEquals('RealWorld In')
    .expectOutputNameEquals('RealWorld Out')

deviceDriver.makeDetectionUnit().detectPortPair(midiInput, midiOutput)
    .expectInputNameEquals('MIDIIN (RealWorld)')
    .expectOutputNameEquals('MIDIOUT (RealWorld)')

deviceDriver.makeDetectionUnit().detectPortPair(midiInput, midiOutput)
    .expectInputNameEquals('MIDIIN (RealWorld) 2')
    .expectOutputNameEquals('MIDIOUT (RealWorld) 2')

deviceDriver.makeDetectionUnit().detectPortPair(midiInput, midiOutput)
    .expectInputNameEquals('MIDIIN (RealWorld) 3')
    .expectOutputNameEquals('MIDIOUT (RealWorld) 3')

var surface = deviceDriver.mSurface

//-----------------------------------------------------------------------------
// 2. SURFACE LAYOUT - create control elements and midi bindings
//-----------------------------------------------------------------------------

function makeFaderStrip(channelIndex, x, y) {
    var faderStrip = {}

    faderStrip.btnMute = surface.makeButton(x + 2 * channelIndex, y, 2, 1)
    faderStrip.btnSolo = surface.makeButton(x + 2 * channelIndex, y + 1, 2, 1)
    faderStrip.fader = surface.makeFader(x + 2 * channelIndex, y + 3, 2, 6).setTypeVertical()

    faderStrip.btnMute.mSurfaceValue.mMidiBinding.setInputPort(midiInput).bindToControlChange(15, 59 + channelIndex)
    faderStrip.btnSolo.mSurfaceValue.mMidiBinding.setInputPort(midiInput).bindToControlChange(15, 67 + channelIndex)
    faderStrip.fader.mSurfaceValue.mMidiBinding.setInputPort(midiInput).bindToControlChange(15, 41 + channelIndex)

    faderStrip.fader.mSurfaceValue.mOnProcessValueChange = function (context, newValue, oldValue) {
        midiOutput.sendMidi(context, helper.sysex.setDisplayValueOfColumn(channelIndex, 0, newValue * (127)))
    }

    faderStrip.fader.mSurfaceValue.mOnDisplayValueChange = function (context, value, units) {
        midiOutput.sendMidi(context, helper.sysex.displaySetTextOfColumn(channelIndex, 2, value))
    }

    faderStrip.fader.mSurfaceValue.mOnTitleChange = function (context, objectTitle, valueTitle) {
        midiOutput.sendMidi(context, helper.sysex.displaySetTextOfColumn(channelIndex, 0, objectTitle))
        midiOutput.sendMidi(context, helper.sysex.displaySetTextOfColumn(channelIndex, 1, valueTitle))
    }

    faderStrip.fader.mSurfaceValue.mOnColorChange = function (context, r, g, b, a, isActive) {
        function updateRow(rowIdx, r, g, b, a) {
            midiOutput.sendMidi(context, helper.sysex.setDisplayColorOfColumn(channelIndex, rowIdx, r * 127 * a, g * 127 * a, b * 127 * a))
        }

        function updateAllRows(r, g, b, a) {
            for(var rowIdx = 0; rowIdx < 4; ++rowIdx)
                updateRow(rowIdx, r, g, b, a)
        }

        if(isActive)
            updateAllRows(r, g, b, a)
        else
            updateAllRows(1, 1, 1, 1)
    }

    return faderStrip
}

function makeKnobStrip(knobIndex, x, y) {
    var knobStrip = {}
    
    knobStrip.knob = surface.makeKnob(x + 2 * knobIndex, y, 2, 2)
    knobStrip.knob.mSurfaceValue.mMidiBinding.setInputPort(midiInput).bindToControlChange(15, 21 + knobIndex).setTypeRelativeTwosComplement()

    knobStrip.button = surface.makeButton(x + 2 * knobIndex, y + 4, 2, 1)
    knobStrip.button.mSurfaceValue.mMidiBinding.setInputPort(midiInput).bindToControlChange(15, 51 + knobIndex)

    knobStrip.pad1 = surface.makeTriggerPad(x + 2 * knobIndex, y + 5, 2, 2)
    knobStrip.pad1.mSurfaceValue.mMidiBinding.setInputPort(midiInput).bindToNote(15, 96 + knobIndex)

    knobStrip.pad2 = surface.makeTriggerPad(x + 2 * knobIndex, y + 7, 2, 2)
    knobStrip.pad2.mSurfaceValue.mMidiBinding.setInputPort(midiInput).bindToNote(15, 112 + knobIndex)

    return knobStrip
}

function makeTransport(x, y) {
    var transport = {}

    var w = 2
    var h = 2

    var currX = x

    function bindMidiCC(button, chn, num) {
        button.mSurfaceValue.mMidiBinding.setInputPort(midiInput).bindToControlChange(chn, num)
    }
    
    transport.btnRewind = surface.makeButton(currX, y, w, h)
    bindMidiCC(transport.btnRewind, 15, 112)
    currX = currX + w

    transport.btnForward = surface.makeButton(currX, y, w, h)
    bindMidiCC(transport.btnForward, 15, 113)
    currX = currX + w

    transport.btnStop = surface.makeButton(currX, y, w, h)
    bindMidiCC(transport.btnStop, 15, 114)
    currX = currX + w

    transport.btnStart = surface.makeButton(currX, y, w, h)
    bindMidiCC(transport.btnStart, 15, 115)
    currX = currX + w

    transport.btnCycle = surface.makeButton(currX, y, w, h)
    bindMidiCC(transport.btnCycle, 15, 116)
    currX = currX + w

    transport.btnRecord = surface.makeButton(currX, y, w, h)
    bindMidiCC(transport.btnRecord, 15, 117)
    currX = currX + w

    return transport
}

function makeSurfaceElements() {
    var surfaceElements = {}

    surfaceElements.btn_prevTrack = surface.makeButton(0, 7, 2, 1)
    surfaceElements.btn_prevTrack.mSurfaceValue.mMidiBinding.setInputPort(midiInput).bindToControlChange(15, 102)

    surfaceElements.btn_nextTrack = surface.makeButton(2, 7, 2, 1)
    surfaceElements.btn_nextTrack.mSurfaceValue.mMidiBinding.setInputPort(midiInput).bindToControlChange(15, 103)

    surfaceElements.btn_prevBinding = surface.makeButton(0, 3, 2, 1)
    surfaceElements.btn_prevBinding.mSurfaceValue.mMidiBinding.setInputPort(midiInput).bindToControlChange(15, 81)
    
    surfaceElements.btn_nextBinding = surface.makeButton(0, 4, 2, 1)
    surfaceElements.btn_nextBinding.mSurfaceValue.mMidiBinding.setInputPort(midiInput).bindToControlChange(15, 82)
    
    surfaceElements.btn_prevChannelBank = surface.makeButton(2, 3, 2, 1)
    surfaceElements.btn_prevChannelBank.mSurfaceValue.mMidiBinding.setInputPort(midiInput).bindToControlChange(15, 85)
    
    surfaceElements.btn_nextChannelBank = surface.makeButton(2, 4, 2, 1)
    surfaceElements.btn_nextChannelBank.mSurfaceValue.mMidiBinding.setInputPort(midiInput).bindToControlChange(15, 86)

    surfaceElements.numStrips = 8

    surfaceElements.knobStrips = {}
    surfaceElements.faderStrips = {}

    var xKnobStrip = 5
    var yKnobStrip = 0

    surfaceElements.knobStripBlindPanel = surface.makeBlindPanel(xKnobStrip, yKnobStrip + 2, surfaceElements.numStrips * 2, 2)

    for(var i = 0; i < surfaceElements.numStrips; ++i) {
        surfaceElements.knobStrips[i] = makeKnobStrip(i, xKnobStrip, yKnobStrip)
        surfaceElements.faderStrips[i] = makeFaderStrip(i, 24, 0)
    }

    surfaceElements.transport = makeTransport(41, 7)

    surfaceElements.pianoKeys = surface.makePianoKeys(5, 10, 48, 7, 0, 48)

    return surfaceElements
}

var surfaceElements = makeSurfaceElements()

function makeTransportDisplayFeedback(button, ledID, colorID) {
	button.mSurfaceValue.mOnProcessValueChange = function (context, newValue) {
		midiOutput.sendMidi(context, [ 0xbf, ledID, colorID * newValue ])
	}
}

makeTransportDisplayFeedback(surfaceElements.transport.btnRewind, 112, 3)
makeTransportDisplayFeedback(surfaceElements.transport.btnForward, 113, 3)
makeTransportDisplayFeedback(surfaceElements.transport.btnStop, 114, 3)
makeTransportDisplayFeedback(surfaceElements.transport.btnStart, 115, 21)
makeTransportDisplayFeedback(surfaceElements.transport.btnCycle, 116, 49)
makeTransportDisplayFeedback(surfaceElements.transport.btnRecord, 117, 5)

//-----------------------------------------------------------------------------
// 3. HOST MAPPING - create mapping pages and host bindings
//-----------------------------------------------------------------------------

function makePageWithDefaults(name) {
    var page = deviceDriver.mMapping.makePage(name)

    page.makeActionBinding(surfaceElements.btn_prevTrack.mSurfaceValue, page.mHostAccess.mTrackSelection.mAction.mPrevTrack)
    page.makeActionBinding(surfaceElements.btn_nextTrack.mSurfaceValue, page.mHostAccess.mTrackSelection.mAction.mNextTrack)

    page.makeValueBinding(surfaceElements.transport.btnRewind.mSurfaceValue, page.mHostAccess.mTransport.mValue.mRewind)
    page.makeValueBinding(surfaceElements.transport.btnForward.mSurfaceValue, page.mHostAccess.mTransport.mValue.mForward)
    page.makeValueBinding(surfaceElements.transport.btnStop.mSurfaceValue, page.mHostAccess.mTransport.mValue.mStop).setTypeToggle()
    page.makeValueBinding(surfaceElements.transport.btnStart.mSurfaceValue, page.mHostAccess.mTransport.mValue.mStart).setTypeToggle()
    page.makeValueBinding(surfaceElements.transport.btnCycle.mSurfaceValue, page.mHostAccess.mTransport.mValue.mCycleActive).setTypeToggle()
    page.makeValueBinding(surfaceElements.transport.btnRecord.mSurfaceValue, page.mHostAccess.mTransport.mValue.mRecord).setTypeToggle()

    return page
}

function makeSubPage(subPageArea, name) {
    var subPage = subPageArea.makeSubPage(name)
    var msgText = 'sub page ' + name + ' activated'
    subPage.mOnActivate = function(activeDevice) {
        console.log(msgText)
    }
    return subPage
}

function makePageMixer() {
    var page = makePageWithDefaults('Mixer')

    var knobSubPageArea = page.makeSubPageArea('Knobs')

    var subPageVolume = makeSubPage(knobSubPageArea, 'Volume')
    var subPagePan = makeSubPage(knobSubPageArea, 'Pan')

    var subPageListSendLevel = []

    var numSendLevelSubPages = midiremote_api.mDefaults.getNumberOfSendSlots ()
    for(var subPageIdx = 0; subPageIdx < numSendLevelSubPages; ++subPageIdx) {
        var nameSubPage = 'Send Level ' + (subPageIdx + 1).toString()
        var subPageSendLevel = makeSubPage(knobSubPageArea, nameSubPage)
        subPageListSendLevel.push(subPageSendLevel)
    }

    var hostMixerBankZone = page.mHostAccess.mMixConsole.makeMixerBankZone()
        .excludeInputChannels()
        .excludeOutputChannels()

    page.makeActionBinding(surfaceElements.btn_prevChannelBank.mSurfaceValue, hostMixerBankZone.mAction.mPrevBank)
    page.makeActionBinding(surfaceElements.btn_nextChannelBank.mSurfaceValue, hostMixerBankZone.mAction.mNextBank)

    page.makeActionBinding(surfaceElements.btn_prevBinding.mSurfaceValue, knobSubPageArea.mAction.mPrev)
    page.makeActionBinding(surfaceElements.btn_nextBinding.mSurfaceValue, knobSubPageArea.mAction.mNext)

    function bindChannelBankItem(index) {
        var channelBankItem = hostMixerBankZone.makeMixerBankChannel()

        var knobValue = surfaceElements.knobStrips[index].knob.mSurfaceValue
        var selectedButtonValue = surfaceElements.knobStrips[index].button.mSurfaceValue

        var muteValue = surfaceElements.faderStrips[index].btnMute.mSurfaceValue
        var soloValue = surfaceElements.faderStrips[index].btnSolo.mSurfaceValue
        var faderValue = surfaceElements.faderStrips[index].fader.mSurfaceValue

        page.makeValueBinding (knobValue, channelBankItem.mValue.mVolume).setSubPage(subPageVolume)
        page.makeValueBinding (knobValue, channelBankItem.mValue.mPan).setSubPage(subPagePan)

        for(var subPageIdx = 0; subPageIdx < numSendLevelSubPages; ++subPageIdx) {
            var sendLevel = channelBankItem.mSends.getByIndex(subPageIdx).mLevel
            var subPage = subPageListSendLevel[subPageIdx]
            page.makeValueBinding (knobValue, sendLevel).setSubPage(subPage)
        }

        page.makeValueBinding (selectedButtonValue, channelBankItem.mValue.mSelected)

        page.makeValueBinding (muteValue, channelBankItem.mValue.mMute).setTypeToggle()
        page.makeValueBinding (soloValue, channelBankItem.mValue.mSolo).setTypeToggle()
        page.makeValueBinding (faderValue, channelBankItem.mValue.mVolume)
    }

    for(var i = 0; i < 8; ++i)
        bindChannelBankItem(i)

    return page
}

function makePageSelectedTrack() {
    var page = makePageWithDefaults('Selected Track')

    var selectedTrackChannel = page.mHostAccess.mTrackSelection.mMixerChannel

    for(var idx = 0; idx < surfaceElements.knobStrips.length; ++idx)
        page.makeValueBinding (surfaceElements.knobStrips[idx].knob.mSurfaceValue, selectedTrackChannel.mQuickControls.getByIndex(idx))
    
    return page
}

var pageMixer = makePageMixer()
var pageSelectedTrack = makePageSelectedTrack()

pageMixer.mOnActivate = function (context) {
	helper.display.reset(context, midiOutput)
	console.log('from script: RealWorldDevice page "Mixer" activated')
}

pageSelectedTrack.mOnActivate = function (context) {
	helper.display.reset(context, midiOutput)
	console.log('from script: RealWorldDevice page "Selected Track" activated')
}
ExampleCompany_RealWorldDevice.js

Sysex ID Detection

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21//-----------------------------------------------------------------------------
// 1. DRIVER SETUP - create driver object, midi ports and detection information
//-----------------------------------------------------------------------------

// get the api's entry point
var midiremote_api = require('midiremote_api_v1')

// create the device driver main object
var deviceDriver = midiremote_api.makeDeviceDriver('ExampleCompany', 'SysexIDExampleDevice', 'Steinberg Media Technologies GmbH')

// create objects representing the hardware's MIDI ports
var midiInput = deviceDriver.mPorts.makeMidiInput()
var midiOutput = deviceDriver.mPorts.makeMidiOutput()

// define all possible namings the devices MIDI ports could have
// NOTE: Windows and MacOS handle port naming differently
deviceDriver.makeDetectionUnit().detectPortPair(midiInput, midiOutput)
	.expectInputNameContains('unique port name fragment')
	.expectOutputNameContains('unique port name fragment')
	.expectSysexIdentityResponse(/*vendor id (1 or 3 bytes, here: 3 bytes)*/'00n1n2', /*device family*/'n1n2', /*model number*/'n1n2')

Command Bindings

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26//-----------------------------------------------------------------------------
// 1. DRIVER SETUP - create driver object, midi ports and detection information
//-----------------------------------------------------------------------------
var midiremote_api = require('midiremote_api_v1')
var deviceDriver = midiremote_api.makeDeviceDriver('ExampleCompany', 'CommandButtonDevice', 'Steinberg Media Technologies GmbH')

// ...

//-----------------------------------------------------------------------------
// 2. SURFACE LAYOUT - create control elements and midi bindings
//-----------------------------------------------------------------------------
var button1 = deviceDriver.mSurface.makeButton(0, 0, 2, 1)
var button2 = deviceDriver.mSurface.makeButton(2, 0, 2, 1)
var button3 = deviceDriver.mSurface.makeButton(4, 0, 2, 1)

// ...

//-----------------------------------------------------------------------------
// 3. HOST MAPPING - create mapping pages and host bindings
//-----------------------------------------------------------------------------
var page = deviceDriver.mMapping.makePage('Main Page')

page.makeCommandBinding(button1.mSurfaceValue, 'Edit', 'Undo')
page.makeCommandBinding(button2.mSurfaceValue, 'Edit', 'Redo')
page.makeCommandBinding(button3.mSurfaceValue, /*[PLACE TO PASTE COPIED SNIPPET]*/)
  • Add Track
    • Add Track...
    • Arranger
    • Audio
    • Audio Mono
    • Chord
    • FX Channel
    • Folder
    • Group Channel
    • Instrument
    • MIDI
    • Marker
    • Ruler
    • Sampler
    • Signature
    • Tempo
    • Transpose
    • Using Track Preset...
    • VCA Fader
    • Video
  • Analyze
    • Spectrum Analyzer
    • Statistics
  • Arranger
    • Activate
    • First Repeat
    • Last Repeat
    • Trigger Arranger Event 1
    • Trigger Arranger Event 2
    • Trigger Arranger Event 3
    • Trigger Arranger Event 4
    • Trigger Arranger Event 5
    • Trigger Arranger Event 6
    • Trigger Arranger Event 7
    • Trigger Arranger Event 8
    • Trigger Arranger Event 9
    • Trigger Arranger Event 10
    • Trigger Arranger Event 11
    • Trigger Arranger Event 12
    • Trigger Arranger Event 13
    • Trigger Arranger Event 14
    • Trigger Arranger Event 15
    • Trigger Arranger Event 16
    • Trigger Arranger Event 17
    • Trigger Arranger Event 18
    • Trigger Arranger Event 19
    • Trigger Arranger Event 20
  • Audio
    • Adjust Fades to Range
    • Apply Standard Fade In
    • Apply Standard Fade Out
    • Auto-Grid
    • Bounce Selection
    • Close Gaps
    • Close Gaps (Crossfade)
    • Constrain Delay Compensation
    • Convert Tracks: Mono to Multi-Channel
    • Convert Tracks: Multi-Channel to Mono
    • Copy Warp Markers from Selected Event.
    • Create Sampler Track
    • Crossfade
    • Decrement Event Volume
    • Decrement Fade-In Length
    • Decrement Fade-Out Length
    • Delete Overlaps
    • Detect Silence
    • Disable/Enable Track
    • Dissolve Part
    • Event or Range as Region
    • Events from Regions
    • Events to Part
    • Fade In to Cursor
    • Fade In to Range Start
    • Fade Out from Cursor
    • Fade Out from Range End
    • Find Selected in Pool
    • Generate Harmony Voices...
    • Increment Event Volume
    • Increment Fade-In Length
    • Increment Fade-Out Length
    • Invert Phase On/Off
    • Make Extension Permanent
    • Minimize File
    • Move Events to Origin
    • Open Fade Editors
    • Paste Warp Markers to Selected Events.
    • Remove Extension from Selected Events
    • Remove Fade In
    • Remove Fade Out
    • Remove Fades
    • Remove Volume Curve
    • Set Definition From Tempo
    • Set Tempo From Event
    • Snap Point to Cursor
    • Stretch to Project Tempo
    • Update Origin
  • Audio Alignment
    • Add Selection as Alignment Reference
    • Add Selection as Alignment Target
    • Align Audio
    • Open Audio Alignment Panel
    • Remove Alignment Reference
    • Remove All Alignment Targets
  • Audio Export
    • Increase Counter Start Value
    • Perform Audio Export
    • Reset Counter Start Value
    • Sync Channel Selection with MixConsole
  • Audio Performance
    • Reset Processing Overload Indicator
  • Audio Realtime Processing
    • Create Warp Markers from Hitpoints
    • Flatten Realtime Processing
    • Unstretch Audio
  • Automation
    • Automation Mode - Auto-Latch
    • Automation Mode - Cross-Over
    • Automation Mode - Touch
    • Automation Mode - Trim
    • Delete All Automation in Project
    • Delete Automation in Range
    • Delete Automation of Selected Tracks
    • Fill Gaps
    • Fill Gaps on Selected Tracks
    • Fill Gaps with Current Value (Selected Tracks)
    • Fill Loop
    • Fill To End
    • Fill To Punch
    • Fill To Start
    • Freeze All Trim Automation in Project
    • Freeze Trim Automation of Selected Tracks
    • Hide All Automation
    • Hide Automation
    • Open Panel
    • Punch Out of Latch Automation
    • Read Automation for All Tracks On/Off
    • Read Automation for Selected Tracks On/Off
    • Show All - Used Only
    • Show All EQ Automation
    • Show All Insert Automation
    • Show All Pan Automation
    • Show All Send Automation
    • Show All Used Automation
    • Show All Volume Automation
    • Show Automation
    • Show Used Automation (Selected Tracks)
    • Suspend Reading All
    • Suspend Reading Dynamics
    • Suspend Reading EQ
    • Suspend Reading Inserts
    • Suspend Reading Mute
    • Suspend Reading Others
    • Suspend Reading Pan
    • Suspend Reading Sends
    • Suspend Reading Volume
    • Suspend Reading/Writing All
    • Suspend Writing All
    • Suspend Writing Dynamics
    • Suspend Writing EQ
    • Suspend Writing Inserts
    • Suspend Writing Mute
    • Suspend Writing Others
    • Suspend Writing Pan
    • Suspend Writing Sends
    • Suspend Writing Volume
    • Use Virgin Territories
    • Write Automation for All Tracks On/Off
    • Write Automation for Selected Tracks On/Off
  • Beat Designer
    • Fill Loop with Pattern
    • Insert Pattern at Cursor
    • Insert Pattern at Left Locator
    • Insert Subbank at Cursor
    • Insert Subbank at Left Locator
  • Channel & Track Visibility
    • Agents: Hide Muted Tracks
    • Agents: Hide Selected Channels/Tracks
    • Agents: Redo Visibility Change
    • Agents: Show All Channels/Tracks
    • Agents: Show Channels that are Connected to the First Selected Channel
    • Agents: Show Channels/Tracks with Data
    • Agents: Show Channels/Tracks with Data at the Cursor Position
    • Agents: Show Channels/Tracks with Data between the Locators
    • Agents: Show Only Selected Channels/Tracks
    • Agents: Show Tracks with Selected Events
    • Agents: Undo Visibility Change
    • Create Visibility Configuration
    • Sync Visibility of Project and MixConsole: On/Off
    • Update Visibility Configuration
    • Visibility Configuration 1
    • Visibility Configuration 2
    • Visibility Configuration 3
    • Visibility Configuration 4
    • Visibility Configuration 5
    • Visibility Configuration 6
    • Visibility Configuration 7
    • Visibility Configuration 8
  • Channel Settings
    • Show/Hide Direct Routing
    • Show/Hide Output Chain
  • Chords
    • Assign Voices to Notes
    • Chord Editing - Add to Chord Track
    • Chord Editing - Drop 2
    • Chord Editing - Drop 2 + 4
    • Chord Editing - Drop 3
    • Chord Editing - Inversions: Move Down
    • Chord Editing - Inversions: Move Up
    • Chord Editing - Match with Chord Track
    • Chord Pads Setup...
    • Chords to MIDI
    • Create Chord Events
    • Map to Chord Track
    • Set up Musical Scales...
    • Show/Hide Chord Pads
  • Control Room
    • AFL/PFL
    • Click On/Off
    • Control Room On/Off
    • Cue 1 On/Off
    • Cue 2 On/Off
    • Cue 3 On/Off
    • Cue 4 On/Off
    • Deactivate All Listen States
    • Dim Signal On/Off
    • Enable/Disable Listen for Output (LE)
    • Phones Channel On/Off
    • Reference Level On/Off
    • Select Control Room Source
    • Select Downmix Preset 1
    • Select Downmix Preset 2
    • Select Downmix Preset 3
    • Select Downmix Preset 4
    • Select Monitor 1
    • Select Monitor 2
    • Select Monitor 3
    • Select Monitor 4
    • Speaker Solo: Cancel
    • Speaker Solo: Center
    • Speaker Solo: Front
    • Speaker Solo: LFE
    • Speaker Solo: Left
    • Speaker Solo: Left of Center
    • Speaker Solo: Left-Right
    • Speaker Solo: Rear
    • Speaker Solo: Rear to Front
    • Speaker Solo: Right
    • Speaker Solo: Right of Center
    • Speaker Solo: Side
    • Speaker Solo: Side Left
    • Speaker Solo: Side Right
    • Speaker Solo: Solo to Center
    • Speaker Solo: Surround Left
    • Speaker Solo: Surround Right
    • Speaker Solo: Top Side Left
    • Speaker Solo: Top Side Right
    • Talkback On/Off
  • Crossfade Editor
    • Play Crossfade
    • Play Fade In
    • Play Fade Out
  • Devices
    • Audio Connections
    • Control Room Mixer
    • MIDI Device Manager
    • MIDI Remote Manager
    • MMC Master
    • MixConsole Lower Zone
    • Mixer
    • Mixer 2
    • Mixer 3
    • Mixer 4
    • Plug-in Information
    • Plug-in Manager
    • Record Time Max
    • Setup
    • Show Panel
    • TestMixerFDH
    • Time Display
    • VST Channel Load
    • VST Instruments
    • VST Network Monitor
    • VST Performance
    • VST Routing
    • Video
    • Virtual Keyboard
  • Direct Offline Processing
    • Add Plug-in
    • Add Process
    • Apply
    • Bank 1
    • Bank 2
    • Bank 3
    • Bank 4
    • Bypass Selected Process
    • Direct Offline Processing
    • Discard
    • Favorite 1
    • Favorite 2
    • Favorite 3
    • Favorite 4
    • Favorite 5
    • Favorite 6
    • Favorite 7
    • Favorite 8
    • Favorite 9
    • Make All Permanent
    • Toggle Auto Apply
  • Edit
    • Acoustic Feedback On/Off
    • Activate/Deactivate Focused Object
    • Apply Click Pattern to Equal Signatures
    • Apply Project Logical Preset...
    • Auto Select Events under Cursor
    • Auto-Scroll On/Off
    • Automation Follows Events
    • Clean Up Lanes
    • Click Pattern to Default
    • Convert to Real Copy
    • Copy
    • Copy A<->B Setting
    • Copy Click Pattern to Clipboard
    • Create Tracks from Lanes
    • Crop Range
    • Cut
    • Cut Head
    • Cut Tail
    • Cut Time
    • Deactivate All Mute States
    • Deactivate All Solo States
    • Delete
    • Delete Time
    • Duplicate
    • Edit Active Part Only
    • Edit Channel Panner
    • Edit Channel Settings
    • Edit Info Line
    • Edit VST Instrument
    • Enlarge Selected Track
    • Equal Pitch - all Octaves
    • Equal Pitch - same Octave
    • Expand/Reduce
    • Fill Loop
    • Find Track/Channel
    • Global Copy
    • Glue
    • Grid Type: Adapt to Zoom
    • Grid Type: Bar
    • Grid Type: Beat
    • Grid Type: Use Quantize
    • Group
    • Group Editing on Selected Tracks On/Off
    • History
    • Insert Bars
    • Insert Silence
    • Invert
    • Invert Selection
    • Key Commands
    • Left Selection Side to Cursor
    • Listen
    • Lock
    • Lock/Unlock Track
    • Monitor
    • Move Event Ends to Cursor
    • Move Event Starts to Cursor
    • Move Events to Back
    • Move Events to Front
    • Move Events to Selected Track
    • Move Insert Cursor To Part Start
    • Mute
    • Mute Events
    • Mute/Unmute Objects
    • Open
    • Open Device Panel
    • Open Project Logical Editor...
    • Paste
    • Paste Click Pattern to Selected Signatures
    • Paste Relative to Cursor
    • Paste Time
    • Paste Time at Origin
    • Paste at Origin
    • Paste to Matching Track Name
    • Preferences
    • Primary Parameter: Decrease
    • Primary Parameter: Fine Decrease
    • Primary Parameter: Fine Increase
    • Primary Parameter: Increase
    • Process Tempo
    • Profile Manager...
    • Read
    • Record Enable
    • Redo
    • Rename
    • Rename First Selected Track
    • Render Audio Click between Locators
    • Render MIDI Click between Locators
    • Repeat
    • Reset to Default
    • Right Selection Side to Cursor
    • Ruler Display Format
    • Ruler Mode: Bars+Beats Linear
    • Ruler Mode: Time Linear
    • Save as Default
    • Scale Assistant: Quantize Pitches
    • Scale Assistant: Toggle Show Scale Note Guides
    • Scale Assistant: Toggle Snap Live Input
    • Scale Assistant: Toggle Snap Pitch Editing
    • Secondary Parameter: Decrease
    • Secondary Parameter: Fine Decrease
    • Secondary Parameter: Fine Increase
    • Secondary Parameter: Increase
    • Select All
    • Select All on Tracks
    • Select Controllers in Note Range
    • Select Event
    • Select Events under Cursor
    • Select None
    • Select from Cursor to End
    • Select from Start to Cursor
    • Select in Loop
    • Set Spacer between Selected Events
    • Show Click Patterns
    • Show Lanes
    • Slip Event Content Left
    • Slip Event Content Right
    • Snap Off
    • Snap On
    • Snap On/Off
    • Snap Type: Events
    • Snap Type: Events + Cursor
    • Snap Type: Events + Grid + Cursor
    • Snap Type: Grid
    • Snap Type: Grid + Cursor
    • Snap Type: Grid Relative
    • Snap Type: Magnetic Cursor
    • Snap Type: Shuffle
    • Solo
    • Solo Defeat
    • Solo Lane
    • Split Loop
    • Split Range
    • Split at Cursor
    • Stationary Cursor
    • Switch MIDI Editor Grid Type
    • Toggle A/B Setting
    • Undo
    • Ungroup
    • Unlock
    • Unmute Events
    • Write
  • Editors
    • Edit In-Place
    • Open Audio Part Editor
    • Open Audio Part Editor in Lower Zone
    • Open Audio Part Editor in Window
    • Open Drum Editor
    • Open Drum Editor in Lower Zone
    • Open Drum Editor in Window
    • Open In-Place Editor
    • Open Key Editor
    • Open Key Editor in Lower Zone
    • Open Key Editor in Window
    • Open List Editor
    • Open Sample Editor
    • Open Sample Editor in Lower Zone
    • Open Sample Editor in Window
    • Open Score Editor
    • Open Score Editor in Lower Zone
    • Open Score Editor in Window
    • Open in separate Window/Lower Zone
    • Open/Close Editor
    • Set up Editor Preferences
    • Show/Hide Global Tracks in Editor
  • Export
    • AAF...
  • File
    • Back up Project
    • Close
    • Export Audio Mixdown
    • Export MIDI File
    • Export MIDI Loop
    • Export Master Track
    • Export MusicXML
    • Export Notepad Data
    • Export Pool
    • Export Selected Events
    • Export Selected Tracks
    • Export Video
    • Import Audio File
    • Import Audio from Video
    • Import MIDI File
    • Import Master Track
    • Import MusicXML
    • Import Pool
    • Import Track Archive
    • Import Tracks from Project
    • Import Video File
    • Import from Audio CD
    • New
    • New Empty Project
    • New Library
    • Open
    • Open Library
    • Page Setup...
    • Perform Export Selected Events
    • Print
    • Quit
    • Revert
    • Save
    • Save As
    • Save Library...
    • Save New Version
    • Save as Template
    • Scores...
    • Write MIDI File to Project Folder
  • Focus
    • Back
    • Confirm
    • Escape
    • Forward
  • Game Audio Connect
    • Trigger Export to Game Audio Engine
  • HeadTracking
    • Head Tracking
  • Hitpoints
    • Calculate
    • Create Audio Slices from Hitpoints
    • Create Markers from Hitpoints
    • Divide Audio Events at Hitpoints
    • Remove Hitpoints
  • Hub
    • Hub
  • Import
    • AAF...
  • Inspector
    • Toggle Channel Section
    • Toggle Cue Sends Section
    • Toggle Device Panel Section
    • Toggle Direct Routing Section
    • Toggle Equalizers Section
    • Toggle Expression Map Section
    • Toggle Inserts Section
    • Toggle MIDI Modifiers Section
    • Toggle Note Expression Section
    • Toggle Notepad Section
    • Toggle Quick Controls Section
    • Toggle Sends Section
    • Toggle Standard Section
  • Key Commands
    • Open Key Commands Launcher
  • MIDI
    • Apply Logical Preset...
    • Auto Select Controllers
    • Bounce MIDI
    • Controller Lane Setup 1
    • Controller Lane Setup 2
    • Controller Lane Setup 3
    • Controller Lane Setup 4
    • Controller Lane Setup 5
    • Controller Lane Setup 6
    • Controller Lane Setup 7
    • Controller Lane Setup 8
    • Controller Lane Setup 9
    • Controller Lane Setup 10
    • Controller Lane Setup 11
    • Controller Lane Setup 12
    • Controller Lane Setup 13
    • Controller Lane Setup 14
    • Controller Lane Setup 15
    • Controller Lane Setup 16
    • Delete Continuous Controllers
    • Delete Controllers
    • Delete Doubles
    • Delete Notes
    • Delete Overlaps (mono)
    • Delete Overlaps (poly)
    • Dissolve Part
    • Drum Editor: Show Note Length On/Off
    • Drum Map Setup...
    • Expression Map Setup...
    • Extract MIDI Automation
    • Fixed Lengths
    • Fixed Velocity
    • Freeze Length
    • Freeze MIDI Modifiers
    • Insert Velocity 1
    • Insert Velocity 2
    • Insert Velocity 3
    • Insert Velocity 4
    • Insert Velocity 5
    • Legato
    • List Editor: Show/Hide Filters
    • Merge MIDI in Loop
    • Merge Tempo from Tapping
    • Mirror
    • O-Note Conversion
    • Open CC Automation Setup Dialog
    • Open Insert Velocities Dialog
    • Open Logical Editor...
    • Pedals to Note Length
    • Pitch Visibility: On/Off
    • Pitchbend: Snap Pitchbend Events On/Off
    • Project Input Transformer...
    • Record In Editor
    • Repeat Loop
    • Reset
    • Restrict Polyphony
    • Reverse
    • Send All Notes Off Message
    • Show Used Controllers
    • Show/Hide Controller Lanes
    • Thin Out
    • Toggle Computer Keyboard Input
    • Toggle MIDI Input
    • Toggle Step Input
    • Transpose
    • Transpose Notes
    • Type of New Controller Events: Toggle Step/Ramp
    • Velocity
  • MIDI Remote
    • Open MIDI Remote Mapping Assistant
    • Scripting Tools: Highlight Bounding Rects
    • Scripting Tools: Open Console
    • Scripting Tools: Open ReadMe
    • Scripting Tools: Open Script Folder
    • Scripting Tools: Reload Scripts
    • Show/Hide Functions Browser in MIDI Remote Mapping Assistant
  • Marker
    • Activate Marker Track
    • Insert and name Cycle Marker
    • Insert and name Marker
  • Media
    • Add Favorite
    • Browse: Back
    • Browse: Forward
    • Browse: Up
    • Convert Files
    • Create Folder
    • Create New Folder
    • Create Sampler Track
    • Debug Browser
    • Empty Trash
    • Find Missing Files
    • Generate Thumbnail Cache
    • Hide Folders That Are Not Scanned
    • Import Medium
    • Import from Audio CD
    • Insert into Project at Cursor
    • Insert into Project at Left Locator
    • Insert into Project at Origin
    • Loop Browser
    • New Version
    • Open MediaBay
    • Open Remote Browser
    • Open/Close Attribute Inspector
    • Open/Close Favorites
    • Open/Close File Browser
    • Open/Close Filters
    • Open/Close Previewer
    • Prepare Archive
    • Preview Active On/Off
    • Preview AutoPlay On/Off
    • Preview Cycle On/Off
    • Preview Pause On/Off
    • Preview Start
    • Preview Stop
    • Preview Sync On/Off
    • Preview in Context On/Off
    • Reconstruct
    • Refresh Views
    • Remove Favorite
    • Remove Missing Files
    • Remove Unused Media
    • Rescan Disk
    • Reset All Filters
    • Reset Result Filters
    • Results: Include Folders and Subfolders
    • Revert
    • Select In Project
    • Select Media Types
    • Set Record Folder
    • Show Only Selected Folder
    • Show in Explorer
    • Shuffle Results
    • Sound Browser
    • Stop Updating Results
    • Update Results
    • Write Attributes to File
  • MediaInspector
    • RemoveAttribute
  • MediaList
    • CommitTags
    • RemoveWriteProtection
    • SetWriteProtection
  • MixConsole History
    • Redo MixConsole Step
    • Undo MixConsole Step
  • MixConsole Snapshots
    • Save MixConsole Snapshot
  • Mixer
    • Activate Record Enable for All Audio Tracks
    • Add Track To Selected: FX Channel
    • Add Track To Selected: Group Channel
    • Add Track To Selected: VCA Fader
    • Bypass: Channel Strip
    • Bypass: Channel Strip on Main Mix
    • Bypass: EQs
    • Bypass: EQs on Main Mix
    • Bypass: Inserts
    • Bypass: Inserts on Main Mix
    • Bypass: Sends
    • Deactivate Record Enable for All Audio Tracks
    • Direct Routing: Summing Mode On/Off
    • EQ/Filter Transition: Quick
    • EQ/Filter Transition: Soft
    • Edit Channel Panner for selected
    • Edit Channel Settings for selected
    • Expand: Channel Strip
    • Expand: Cue Sends
    • Expand: Device Panels
    • Expand: Direct Routing
    • Expand: EQs
    • Expand: Filters/Gain
    • Expand: Inserts
    • Expand: Quick Controls
    • Expand: Routing
    • Expand: Sends
    • Expand: VCA
    • File: Load Selected Channels
    • File: Save Selected Channels
    • Hide: Audio
    • Hide: Groups
    • Hide: Inputs
    • Hide: Instruments
    • Hide: MIDI
    • Hide: Outputs
    • Hide: Returns
    • Hide: VCAs
    • Listen for All Visible Channels On/Off
    • Loudness: Enable
    • Loudness: Reset
    • Loudness: Switch between +9dB and +18dB Scale
    • Loudness: Switch between LU and LUFS
    • Master Meter: AES17 (+3dB)
    • Meters: Hold Forever
    • Meters: Hold Peaks
    • Meters: Input
    • Meters: Post Fader
    • Meters: Post Panner
    • Meters: Reset
    • Pre/Post
    • Show All
    • Show/Hide Channel Overview
    • Show/Hide Channel Racks
    • Show/Hide Channel Selector
    • Show/Hide Control Room/Meter
    • Show/Hide Equalizer Curve
    • Show/Hide Meter Bridge
    • Show/Hide Notepad
    • Show/Hide Pictures
    • Show: EQs
    • Show: Sends
    • Views: Channel Strip
    • Views: Cue Sends
    • Views: Device Panels
    • Views: Direct Routing
    • Views: EQs
    • Views: Filters/Gain
    • Views: Inserts
    • Views: Quick Controls
    • Views: Routing
    • Views: Sends
    • Views: VCA
    • Windows: Close All Plug-Ins
    • Zoom In
    • Zoom In Vertically
    • Zoom Out
    • Zoom Out Vertically
  • Note Expression
    • Consolidate Note Expression Overlaps
    • Convert to Note Expression
    • Dissolve Note Expression
    • Double-Click opens Note Expression Editor On/Off
    • Editor Size: Decrease
    • Editor Size: Increase
    • Note Expression MIDI Setup
    • Open/Close Editor
    • Paste Note Expression
    • Record MIDI as Note Expression
    • Remove Note Expression
    • Resolve Note Expression
    • Show/Hide Note Expression Data
    • Trim Note Expression to Note Length
  • Nudge
    • Down
    • Down (Larger Step)
    • Graphical Bottom
    • Graphical Left
    • Graphical Right
    • Graphical Top
    • Left
    • Loop Range Left
    • Loop Range Right
    • Nudge Bottom Down
    • Nudge Bottom Up
    • Nudge End Left
    • Nudge End Right
    • Nudge Start Left
    • Nudge Start Right
    • Nudge Top Down
    • Nudge Top Up
    • Right
    • Up
    • Up (Larger Step)
  • Preset
    • Open/Close Browser
    • Track Preset: Open Browser
  • Process
    • Envelope
    • Fade In
    • Fade Out
    • Gain
    • Invert Phase
    • Normalize
    • Pitch Shift
    • Remove DC Offset
    • Resample
    • Reverse
    • Silence
    • Stereo Flip
    • Time Stretch
  • Project
    • Auto Fades Settings
    • Beat Calculator
    • Bring To Front
    • Colors
    • Divide Track List
    • Duplicate Tracks
    • Folding: Fold Tracks
    • Folding: Toggle Selected Track
    • Folding: Toggle Tracks
    • Folding: Unfold Tracks
    • Move Selected Tracks to New Folder
    • Notepad
    • Open Browser
    • Open Layout...
    • Open Markers
    • Open Pool
    • Open Tempo Track
    • Remove Empty Tracks
    • Remove Selected Tracks
    • Set Timecode
    • Set Track/Event Color
    • Setup
    • Tempo Detection...
    • Track Controls Settings
  • Quantize Category
    • AudioWarp Quantize On/Off
    • Auto Quantize On/Off
    • Create Groove Quantize Preset
    • Freeze MIDI Quantize
    • Quantize
    • Quantize MIDI Event Ends
    • Quantize MIDI Event Lengths
    • Quantize Panel
    • Reset Quantize
    • Set Quantize to 128th
    • Set Quantize to 16th
    • Set Quantize to 1th
    • Set Quantize to 2th
    • Set Quantize to 32th
    • Set Quantize to 4th
    • Set Quantize to 64th
    • Set Quantize to 8th
    • Soft Quantize On/Off
    • Toggle Quantize Dotted
    • Toggle Quantize Triplet
  • Render in Place
    • Render (with Current Settings)
    • Render Settings...
  • Sample Editor
    • Bypass Warping
    • Reanalyze Audio
    • VariAudio - Bypass VariAudio
    • VariAudio - Correct Pitch
    • VariAudio - Extract MIDI (no Dialog)
    • VariAudio - Extract MIDI...
    • VariAudio - Reset All Changes
    • VariAudio - Reset Formant Shift Changes
    • VariAudio - Reset Pitch Changes
    • VariAudio - Reset Pitch Curve Changes
    • VariAudio - Reset Volume Changes
    • VariAudio - Reset Warp Changes
    • VariAudio - Show MIDI Reference Track
    • VariAudio - Toggle Pitch Snap Mode
    • VariAudio - Toggle Smart Control Mode
    • Zoom Mode: Clip-Based
    • Zoom Mode: Global
  • Score Align Elements
    • Bottom
    • Center Horizontally
    • Center Vertically
    • Dynamics
    • Left
    • Right
    • Top
  • Score Functions
    • 100%
    • 120%
    • 200%
    • 300%
    • 400%
    • 50%
    • 600%
    • 75%
    • Attribute Set 1
    • Attribute Set 2
    • Attribute Set 3
    • Attribute Set 4
    • Attribute Set 5
    • Attribute Set 6
    • Attribute Set 7
    • Attribute Set 8
    • Attribute Set 9
    • Attribute Set 10
    • Attribute Set 11
    • Attribute Set 12
    • Attribute Set 13
    • Attribute Set 14
    • Attribute Set 15
    • Attribute Set 16
    • Auto Layout
    • Auto Layout: Bars and Staves
    • Auto Layout: Hide All Empty Staves
    • Auto Layout: Hide Empty Staves
    • Auto Layout: Move All Bars
    • Auto Layout: Move All Staves
    • Auto Layout: Move Bars
    • Auto Layout: Move Staves
    • Auto Layout: Optimize All
    • Auto Layout: Spread All Pages
    • Auto Layout: Spread Page
    • Build Accelerando...
    • Build N-Tuplet...
    • Build Repeat...
    • Build Trill...
    • Clear Bar
    • Convert to Grace Note
    • Display Markers
    • Enharmonic Shift: #
    • Enharmonic Shift: ##
    • Enharmonic Shift: ()
    • Enharmonic Shift: ?
    • Enharmonic Shift: b
    • Enharmonic Shift: bb
    • Enharmonic Shift: no (hide)
    • Enharmonic Shift: off (automatic)
    • Explode
    • Extract Voices
    • Flip
    • Force Update
    • Get Info
    • Group Notes
    • Hide
    • Insert Slur
    • Insert Voice: 1
    • Insert Voice: 2
    • Insert Voice: 3
    • Insert Voice: 4
    • Make Chord Symbols
    • Marker Track to Form
    • Merge All Staves
    • Move To String 1
    • Move To String 2
    • Move To String 3
    • Move To String 4
    • Move To String 5
    • Move To String 6
    • Move To String 7
    • Move To String 8
    • Move To String 9
    • Move To String 10
    • Move To String 11
    • Move To String 12
    • Move To Voice 1
    • Move To Voice 2
    • Move To Voice 3
    • Move To Voice 4
    • Move To Voice 5
    • Move To Voice 6
    • Move To Voice 7
    • Move To Voice 8
    • Number of Bars
    • One down
    • One up
    • Paste Note Attributes
    • Position Panel
    • Reset Layout...
    • Score Notes to MIDI
    • Show Bar Repeat Sign
    • Show Chord Track
    • Show Regular Notation
    • Show Rhythmic Notation
    • Spacer and Hidden to Layout
    • Verse 1
    • Verse 2
    • Verse 3
    • Verse 4
    • Verse 5
    • Verse 6
  • Score Meter Scale
    • 100%
    • 120%
    • 200%
    • 300%
    • 400%
    • 50%
    • 600%
    • 75%
    • CM
    • Edit Mode: 100 %
    • Edit Mode: 150 %
    • Edit Mode: 200 %
    • Edit Mode: 50 %
    • Edit Mode: 80 %
    • Fit Page
    • Fit Width
    • Hide Unused
    • Inch
    • Off
    • PT
  • Score Symbol Editor
    • 100%
    • 200%
    • 400%
    • 600%
    • 800%
    • Align Bottom
    • Align Center Horizontally
    • Align Center Vertically
    • Align Left
    • Align Right
    • Align Top
    • Bring To Front
    • Flip +90
    • Flip -90
    • Group
    • Mirror horizontal
    • Mirror vertical
    • Send To Back
    • Ungroup
  • Score Symbol Palettes
    • Chord Symbols
    • Clef
    • Clef etc.
    • Dynamic Mapping
    • Dynamics
    • Expression Map
    • Favorites
    • Form Symbols
    • Guitar Symbols
    • Keys
    • Line/Trill
    • Note Symbols
    • Other
    • Time Sign
    • User Symbols
    • Words
  • Scores
    • Auto Group Notes
    • Computer Keyboard Input On/Off
    • Find and Replace...
    • Lyrics from Clipboard
    • Note Editing Overlay On/Off
    • Page Mode
    • Score Editor in Lower Zone: Toggle Inspector
    • Settings...
    • Staff Setup
    • Text from Clipboard
    • User Symbols...
  • Scores Statusbar
    • Toggle Filter: Bar Handles
    • Toggle Filter: Cutflag
    • Toggle Filter: Grouping
    • Toggle Filter: Hidden Notes
    • Toggle Filter: Hide
    • Toggle Filter: Layout Tool
    • Toggle Filter: Quantize
    • Toggle Filter: Split Rests
    • Toggle Filter: Stems/Beams
  • Set Insert Length
    • 1/ 1
    • 1/ 2
    • 1/ 4
    • 1/ 8
    • 1/ 16
    • 1/ 32
    • 1/ 64
    • 1/128
    • Toggle Dotted
    • Toggle Triplet
  • Tool
    • Audio Tempo Definition Tool
    • Color Tool
    • Combine Selection Tools On/Off
    • Comp Tool
    • Curve Tool
    • Cut Tool
    • Display Quantize Tool
    • Draw Tool
    • Drumstick Tool
    • Erase Tool
    • Export Range Tool
    • Free Warp Tool
    • Glue Tool
    • Hitpoint Tool
    • Insert Note Tool
    • Layout Tool
    • Mute Tool
    • Object Selection Tool
    • Object Selection Tool: Normal Sizing
    • Object Selection Tool: Sizing Applies Time Stretch
    • Object Selection Tool: Sizing Moves Content
    • Play Tool
    • Pop-up Toolbox
    • Range Selection Tool
    • Score Zoom Tool
    • Scrub Tool
    • Split Tool
    • TimeWarp Tool
    • Tool 1
    • Tool 2
    • Tool 3
    • Tool 4
    • Tool 5
    • Tool 6
    • Tool 7
    • Tool 8
    • Tool 9
    • Tool 10
    • Trim Tool
    • VariAudio Tool
    • Zoom Tool
  • Track Versions
    • Assign Common Version ID
    • Create Lanes from Versions
    • Create Versions from Lanes
    • Delete Inactive Versions of All Tracks
    • Delete Inactive Versions of Selected Tracks
    • Delete Version
    • Duplicate Version
    • New Version
    • Rename Version
    • Select Tracks with Same Version ID
  • Transport
    • Activate External Sync
    • Activate Metronome
    • Activate Punch In
    • Activate Punch Out
    • Audio Record Mode
    • Auto Quantize in Record
    • Cycle
    • Enter Left Locator
    • Enter Locator Range Duration
    • Enter Project Cursor Position
    • Enter Punch In Position
    • Enter Punch Out Position
    • Enter Right Locator
    • Enter Tempo
    • Enter Time Signature
    • Exchange Left & Right Locator Positions
    • Exchange Time Formats
    • Fast Forward
    • Fast Rewind
    • Forward
    • Go to Left Locator
    • Go to Project End
    • Go to Project Start
    • Go to Punch In Position
    • Go to Punch Out Position
    • Go to Right Locator
    • Insert Cycle Marker
    • Insert Marker
    • Jog Left
    • Jog Right
    • Locate Selection End
    • Locate Selection Start
    • Locators to Selection
    • Lock Punch Points to Locators
    • Lock Record
    • Loop Selection
    • MIDI Cycle Record Mode
    • MIDI Record Mode
    • MIDI Retrospective Record: Empty All Buffers
    • MIDI Retrospective Record: Insert from All MIDI Inputs
    • MIDI Retrospective Record: Insert from Track Input as Cycle Recording
    • MIDI Retrospective Record: Insert from Track Input as Linear Recording
    • Metronome Setup
    • Nudge +1 Bar
    • Nudge +1 Frame
    • Nudge -1 Bar
    • Nudge -1 Frame
    • Nudge Cursor +10 Seconds
    • Nudge Cursor +20 Seconds
    • Nudge Cursor +5 Seconds
    • Nudge Cursor -10 Seconds
    • Nudge Cursor -20 Seconds
    • Nudge Cursor -5 Seconds
    • Nudge Cursor Left
    • Nudge Cursor Right
    • Panel
    • Play Selection Range
    • Play from Selection End
    • Play from Selection Start
    • Play until Selection End
    • Play until Selection Start
    • Post-roll from Selection End
    • Post-roll from Selection Start
    • Pre-roll to Selection End
    • Pre-roll to Selection Start
    • Project Synchronization Setup
    • Recall Cycle Marker 1
    • Recall Cycle Marker 2
    • Recall Cycle Marker 3
    • Recall Cycle Marker 4
    • Recall Cycle Marker 5
    • Recall Cycle Marker 6
    • Recall Cycle Marker 7
    • Recall Cycle Marker 8
    • Recall Cycle Marker 9
    • Recall Cycle Marker X
    • Record
    • Record: Punch In & Out/Re-Record
    • Record: Start at Cursor/Left Locator
    • Restart from Last Stop Position
    • Return to Start Position
    • Rewind
    • Set Left Locator to Project Cursor Position
    • Set Marker 1
    • Set Marker 2
    • Set Marker 3
    • Set Marker 4
    • Set Marker 5
    • Set Marker 6
    • Set Marker 7
    • Set Marker 8
    • Set Marker 9
    • Set Punch In to Project Cursor Position
    • Set Punch Out to Project Cursor Position
    • Set Punch Points to Selection Range
    • Set Right Locator to Project Cursor Position
    • Shuttle Play 1/2x
    • Shuttle Play 1/4x
    • Shuttle Play 1/8x
    • Shuttle Play 1x
    • Shuttle Play 2x
    • Shuttle Play 4x
    • Shuttle Play 8x
    • Shuttle Play Reverse 1/2x
    • Shuttle Play Reverse 1/4x
    • Shuttle Play Reverse 1/8x
    • Shuttle Play Reverse 1x
    • Shuttle Play Reverse 2x
    • Shuttle Play Reverse 4x
    • Shuttle Play Reverse 8x
    • Start
    • StartStop
    • StartStop Preview
    • Stop
    • To Cycle Marker 1
    • To Cycle Marker 2
    • To Cycle Marker 3
    • To Cycle Marker 4
    • To Cycle Marker 5
    • To Cycle Marker 6
    • To Cycle Marker 7
    • To Cycle Marker 8
    • To Cycle Marker 9
    • To Cycle Marker X
    • To Marker 1
    • To Marker 2
    • To Marker 3
    • To Marker 4
    • To Marker 5
    • To Marker 6
    • To Marker 7
    • To Marker 8
    • To Marker 9
    • To Marker X
    • Toggle: Cycle follows when locating to Markers
    • Unlock Record
    • Use Post-roll
    • Use Pre-/Post-Roll
    • Use Pre-roll
    • Use Precount
    • Use Tempo Track
    • Use Video Follows Edit Mode
  • VRPlayerRemote
    • GoPro VR Player Remote
  • Video
    • Mute all video tracks
  • Window Zones
    • Show/Hide Info Line
    • Show/Hide Left Zone
    • Show/Hide Lower Zone
    • Show/Hide Overview
    • Show/Hide Regions
    • Show/Hide Right Zone
    • Show/Hide Status Line
    • Show/Hide Transport Zone
    • Show/Hide Upper Zone
  • Windows
    • Close All
    • Close All Plug-in Windows
    • Maximize
    • Minimize
    • Minimize All
    • Restore All
    • Show/Hide Desktop
    • Show/Hide Plug-ins
  • Workspaces
    • New
    • No Workspace
    • Organize
    • Update Workspace
    • Workspace 1
    • Workspace 2
    • Workspace 3
    • Workspace 4
    • Workspace 5
    • Workspace 6
    • Workspace 7
    • Workspace 8
    • Workspace 9
    • Workspace X
  • Zoom
    • Redo Zoom
    • Undo Zoom
    • Zoom 4 Tracks
    • Zoom 8 Tracks
    • Zoom Cycle Marker 1
    • Zoom Cycle Marker 2
    • Zoom Cycle Marker 3
    • Zoom Cycle Marker 4
    • Zoom Cycle Marker 5
    • Zoom Cycle Marker 6
    • Zoom Cycle Marker 7
    • Zoom Cycle Marker 8
    • Zoom Cycle Marker 9
    • Zoom Full
    • Zoom In
    • Zoom In On Waveform Vertically
    • Zoom In Tracks
    • Zoom In Vertically
    • Zoom MEM
    • Zoom N Tracks
    • Zoom Out
    • Zoom Out Of Waveform Vertically
    • Zoom Out Tracks
    • Zoom Out Vertically
    • Zoom Preset 1
    • Zoom Preset 2
    • Zoom Preset 3
    • Zoom Preset 4
    • Zoom Preset 5
    • Zoom Tracks 1 Row
    • Zoom Tracks 2 Rows
    • Zoom Tracks 3 Rows
    • Zoom Tracks 4 Rows
    • Zoom Tracks Exclusive
    • Zoom Tracks Full
    • Zoom Tracks Minimal
    • Zoom Tracks N Rows
    • Zoom ZAP
    • Zoom to Event
    • Zoom to Locators
    • Zoom to Selection
    • Zoom to Selection Horizontally

API Reference

MidiRemoteAPI

Entry point to the MIDI Remote API.

Properties

Methods

  • makeDeviceDriver (vendorName : string, deviceName : string, createdBy : string) : DeviceDriver

Example

1
2
3
4
5
6
7
8
9


//-----------------------------------------------------------------------------
// 1. DRIVER SETUP - create driver object, midi ports and detection information
//-----------------------------------------------------------------------------

// get the api's entry point
var midiremote_api = require('midiremote_api_v1')

// create the device driver main object
var deviceDriver = midiremote_api.makeDeviceDriver('ExampleCompany', 'SimpleDevice', 'Steinberg Media Technologies GmbH')

...
ExampleCompany_SimpleDevice.js

HostDefaults

Referenced by: MidiRemoteAPI

Methods

  • getAppName () : string
  • getNumberOfInsertEffectSlots () : number
  • getNumberOfStripEffectSlots () : number
  • getNumberOfSendSlots () : number
  • getNumberOfQuickControls () : number
  • getMaxControlRoomTalkbackChannels () : number
  • getMaxControlRoomExternalInputChannels () : number
  • getMaxControlRoomCueChannels () : number
  • getMaxControlRoomPhonesChannels () : number
  • getMaxControlRoomMonitorChannels () : number

DeviceDriver

Represents specific hardware device.

Referenced by: MidiRemoteAPI

Properties

Methods

Example

1
2
3
4
5
6
7
8
9
10
11
12


//-----------------------------------------------------------------------------
// 1. DRIVER SETUP - create driver object, midi ports and detection information
//-----------------------------------------------------------------------------

// get the api's entry point
var midiremote_api = require('midiremote_api_v1')

// create the device driver main object
var deviceDriver = midiremote_api.makeDeviceDriver('ExampleCompany', 'SimpleDevice', 'Steinberg Media Technologies GmbH')

// create objects representing the hardware's MIDI ports
var midiInput = deviceDriver.mPorts.makeMidiInput()

...
ExampleCompany_SimpleDevice.js

Ports

Device driver sub section for creating midi port objects.

Referenced by: DeviceDriver

Methods

Example



12
13


...

var midiInput = deviceDriver.mPorts.makeMidiInput()
var midiOutput = deviceDriver.mPorts.makeMidiOutput()

...
ExampleCompany_SimpleDevice.js

DeviceMidiInput

Device driver MIDI input port.

Referenced by: Ports, SurfaceValueMidiBinding, DetectionPortPair, DetectionSingleInput

Properties

Example



12


...

var midiInput = deviceDriver.mPorts.makeMidiInput()

...
ExampleCompany_SimpleDevice.js

DeviceMidiOutput

Device driver MIDI output port.

Referenced by: Ports, SurfaceValueMidiBinding, DetectionPortPair

Methods

Example



13


...

var midiOutput = deviceDriver.mPorts.makeMidiOutput()

...
ExampleCompany_SimpleDevice.js

Surface

Emulates hardware surface elements.

Referenced by: DeviceDriver

Methods

  • makePushEncoder (x : number, y : number, w : number, h : number) : PushEncoder
  • makeKnob (x : number, y : number, w : number, h : number) : Knob
  • makeFader (x : number, y : number, w : number, h : number) : Fader
  • makeButton (x : number, y : number, w : number, h : number) : Button
  • makeModWheel (x : number, y : number, w : number, h : number) : ModWheel
  • makePitchBend (x : number, y : number, w : number, h : number) : PitchBend
  • makeTriggerPad (x : number, y : number, w : number, h : number) : TriggerPad
  • makePadXY (x : number, y : number, w : number, h : number) : PadXY
  • makeJoyStickXY (x : number, y : number, w : number, h : number) : JoyStickXY
  • makeLamp (x : number, y : number, w : number, h : number) : Lamp
  • makeBlindPanel (x : number, y : number, w : number, h : number) : BlindPanel
  • makePianoKeys (x : number, y : number, w : number, h : number, firstKeyIndex : number, lastKeyIndex : number) : PianoKeys
  • makeLabelField (x : number, y : number, w : number, h : number) : SurfaceLabelField
  • makeControlLayerZone (name : string) : ControlLayerZone
  • makeCustomValueVariable (name : string) : SurfaceCustomValueVariable

Example



26
27
28
29
30
31
32
33
34
35
36


...

//-----------------------------------------------------------------------------
// 2. SURFACE LAYOUT - create control elements and midi bindings
//-----------------------------------------------------------------------------

// create control element representing your hardware's surface
var knob1 = deviceDriver.mSurface.makeKnob(0, 0, 1, 1.5)
var knob2 = deviceDriver.mSurface.makeKnob(1, 0, 1, 1.5)
var knob3 = deviceDriver.mSurface.makeKnob(2, 0, 1, 1.5)
var knob4 = deviceDriver.mSurface.makeKnob(3, 0, 1, 1.5)

// bind midi ports to surface elements

...
ExampleCompany_SimpleDevice.js

SurfaceElement

Inherited by: PushEncoder, Knob, Fader, Button, ModWheel, PitchBend, TriggerPad, PadXY, JoyStickXY, Lamp, BlindPanel, PianoKeys

Referenced by: Surface

PushEncoder

Inherits From: SurfaceElement

Referenced by: Surface

Properties

Methods

Knob

Inherits From: SurfaceElement

Referenced by: Surface

Methods

Fader

Inherits From: SurfaceElement

Referenced by: Surface

Methods

  • setTypeVertical () : this
  • setTypeHorizontal () : this
  • setControlLayer (controlLayer : ControlLayer) : this

Button

Inherits From: SurfaceElement

Referenced by: Surface

Methods

  • setTypePush () : this
  • setTypeToggle () : this
  • setShapeRectangle () : this
  • setShapeCircle () : this
  • setControlLayer (controlLayer : ControlLayer) : this

ModWheel

Inherits From: SurfaceElement

Referenced by: Surface

Methods

PitchBend

Inherits From: SurfaceElement

Referenced by: Surface

Methods

TriggerPad

Inherits From: SurfaceElement

Referenced by: Surface

Methods

PadXY

Inherits From: SurfaceElement

Referenced by: Surface

Methods

JoyStickXY

Inherits From: SurfaceElement

Referenced by: Surface

Methods

Lamp

Inherits From: SurfaceElement

Referenced by: Surface

Properties

Methods

  • setShapeRectangle () : this
  • setShapeCircle () : this

BlindPanel

Inherits From: SurfaceElement

Referenced by: Surface

Methods

  • setShapeRectangle () : this
  • setShapeCircle () : this

PianoKeys

Inherits From: SurfaceElement

Referenced by: Surface

SurfaceLabelField

Referenced by: Surface

Methods

ControlLayerZone

Referenced by: Surface

Methods

ControlLayer

Referenced by: ControlLayerZone, PushEncoder, Knob, Fader, Button, ModWheel, PitchBend, TriggerPad, PadXY, JoyStickXY

SurfaceValue

Represents a continuous value state of a SurfaceElement.

Inherited by: SurfaceElementValue, SurfaceCustomValueVariable

Referenced by: ValueBinding, CommandBinding, ActionBinding

SurfaceElementValue

Represents a continuous value state of a SurfaceElement.

Inherits From: SurfaceValue

Referenced by: PushEncoder, Knob, Fader, Button, ModWheel, PitchBend, TriggerPad, PadXY, JoyStickXY, Lamp, ValueBinding, CommandBinding, ActionBinding

SurfaceCustomValueVariable

Represents a continuous value state of a SurfaceElement.

Inherits From: SurfaceValue

Referenced by: Surface, ValueBinding, CommandBinding, ActionBinding

SurfaceValueMidiBinding

Referenced by: SurfaceElementValue, SurfaceCustomValueVariable

Methods

MidiBindingValueRange7Bit

Referenced by: MidiBindingToNote, MidiBindingToControlChange, MidiBindingToChannelPressure

MidiBindingValueRange14Bit

Referenced by: MidiBindingToControlChange14Bit, MidiBindingToControlChange14BitNRPN, MidiBindingToPitchBend

MidiChannelBinding

Inherited by: MidiBindingToNote, MidiBindingToControlChange, MidiBindingToControlChange14Bit, MidiBindingToControlChange14BitNRPN, MidiBindingToPitchBend, MidiBindingToChannelPressure

Referenced by: SurfaceValueMidiBinding

MidiBindingToNote

Inherits From: MidiChannelBinding

Referenced by: SurfaceValueMidiBinding

Methods

  • setValueRange (min : number, max : number) : this

MidiBindingToControlChange

Inherits From: MidiChannelBinding

Referenced by: SurfaceValueMidiBinding

Methods

  • setValueRange (min : number, max : number) : this

MidiBindingToControlChange14Bit

Inherits From: MidiChannelBinding

Inherited by: MidiBindingToControlChange14BitNRPN

Referenced by: SurfaceValueMidiBinding

Methods

  • setValueRange (min : number, max : number) : this

MidiBindingToControlChange14BitNRPN

Inherits From: MidiChannelBinding

Referenced by: SurfaceValueMidiBinding

Methods

  • setValueRange (min : number, max : number) : this

MidiBindingToPitchBend

Inherits From: MidiChannelBinding

Referenced by: SurfaceValueMidiBinding

Properties

MidiBindingToChannelPressure

Inherits From: MidiChannelBinding

Referenced by: SurfaceValueMidiBinding

Properties

Mapping

Inherited by: FactoryMapping

FactoryMapping

Inherits From: Mapping

Referenced by: DeviceDriver

Methods

Page

Inherited by: FactoryMappingPage

FactoryMappingPage

Inherits From: Page

Referenced by: FactoryMapping

Methods

HostAccess

Provides objects and methods to bind the defined Surface to host functions.

Referenced by: FactoryMappingPage

Properties

Example



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73


...

//-----------------------------------------------------------------------------
// 3. HOST MAPPING - create mapping pages and host bindings
//-----------------------------------------------------------------------------

// create at least one mapping page
var page = deviceDriver.mMapping.makePage('Example Mixer Page')

// create host accessing objects
var hostSelectedTrackChannel = page.mHostAccess.mTrackSelection.mMixerChannel


// bind surface elements to host accessing object values
page.makeValueBinding(knob1.mSurfaceValue, hostSelectedTrackChannel.mValue.mVolume)
page.makeValueBinding(knob2.mSurfaceValue, hostSelectedTrackChannel.mSends.getByIndex(0).mLevel)
page.makeValueBinding(knob3.mSurfaceValue, hostSelectedTrackChannel.mSends.getByIndex(1).mLevel)
page.makeValueBinding(knob4.mSurfaceValue, hostSelectedTrackChannel.mSends.getByIndex(2).mLevel)


...
ExampleCompany_SimpleDevice.js

HostObject

Inherited by: HostObjectUndefined, Transport, QuickControls, FocusedQuickControls, HostPluginParameterBankZone, HostStripEffectSlotFolder, SendSlotFolder, ControlRoomCueSendSlotFolder, MixerBankChannel, SelectedTrackChannel, HostMouseCursor, HostControlRoomChannelMain, HostControlRoomChannelPhonesByIndex, HostControlRoomChannelCueByIndex, HostControlRoomChannelExternalInputByIndex, HostControlRoomChannelTalkbackByIndex, HostControlRoomChannelMonitorByIndex, HostControlRoom, MixConsole, TransportValues, PreFilter, ChannelEQBand, ChannelEQ, HostInstrumentPluginSlot, HostStripEffectSlotGate, HostStripEffectSlotCompressor, HostStripEffectSlotLimiter, HostStripEffectSlotSaturator, HostStripEffectSlotTools, HostInsertEffectViewer, HostInsertAndStripEffects, SendSlot, ControlRoomCueSendSlot, MixerChannelValues, MixerBankZone, TrackSelection

HostObjectUndefined

Inherits From: HostObject

Referenced by: FactoryMappingPage

Methods

Transport

Access transport functions.

Inherits From: HostObject

Referenced by: HostAccess

Properties

QuickControls

Inherits From: HostObject

Inherited by: FocusedQuickControls

Referenced by: MixerBankChannel, SelectedTrackChannel

Methods

FocusedQuickControls

Inherits From: HostObject

Referenced by: HostAccess, MixerBankChannel, SelectedTrackChannel

Properties

Methods

HostPluginParameterBankZone

Inherits From: HostObject

Referenced by: HostInstrumentPluginSlot, HostStripEffectSlotGate, HostStripEffectSlotCompressor, HostStripEffectSlotLimiter, HostStripEffectSlotSaturator, HostStripEffectSlotTools, HostInsertEffectViewer

Properties

Methods

HostStripEffectSlotFolder

Inherits From: HostObject

Referenced by: HostInsertAndStripEffects

Properties

SendSlotFolder

Inherits From: HostObject

Referenced by: MixerBankChannel, SelectedTrackChannel

Methods

  • getByIndex (index : number) : SendSlot
  • getSize () : number

ControlRoomCueSendSlotFolder

Inherits From: HostObject

Referenced by: MixerBankChannel, SelectedTrackChannel

Properties

Methods

MixerBankChannel

Inherits From: HostObject

Referenced by: MixerBankZone

SelectedTrackChannel

Inherits From: HostObject

Referenced by: TrackSelection

HostMouseCursor

Inherits From: HostObject

Referenced by: HostAccess

Properties

HostControlRoomChannelMain

Inherits From: HostObject

Referenced by: HostControlRoom

Properties

Methods

HostControlRoomChannelPhonesByIndex

Inherits From: HostObject

Referenced by: HostControlRoom

Properties

Methods

HostControlRoomChannelCueByIndex

Inherits From: HostObject

Referenced by: HostControlRoom

Properties

HostControlRoomChannelExternalInputByIndex

Inherits From: HostObject

Referenced by: HostControlRoom

Properties

HostControlRoomChannelTalkbackByIndex

Inherits From: HostObject

Referenced by: HostControlRoom

Properties

HostControlRoomChannelMonitorByIndex

Inherits From: HostObject

Referenced by: HostControlRoom

Properties

HostControlRoom

Inherits From: HostObject

Referenced by: HostAccess

Properties

Methods

MixConsole

Inherits From: HostObject

Referenced by: HostAccess

Methods

TransportValues

Inherits From: HostObject

Referenced by: Transport

Properties

PreFilter

Inherits From: HostObject

Referenced by: MixerBankChannel, SelectedTrackChannel

Properties

ChannelEQBand

Inherits From: HostObject

Referenced by: ChannelEQ

Properties

ChannelEQ

Inherits From: HostObject

Referenced by: MixerBankChannel, SelectedTrackChannel

Properties

HostInstrumentPluginSlot

Inherits From: HostObject

Referenced by: MixerBankChannel, SelectedTrackChannel

HostStripEffectSlotGate

Inherits From: HostObject

Referenced by: HostStripEffectSlotFolder

HostStripEffectSlotCompressor

Inherits From: HostObject

Referenced by: HostStripEffectSlotFolder

HostStripEffectSlotLimiter

Inherits From: HostObject

Referenced by: HostStripEffectSlotFolder

HostStripEffectSlotSaturator

Inherits From: HostObject

Referenced by: HostStripEffectSlotFolder

HostStripEffectSlotTools

Inherits From: HostObject

Referenced by: HostStripEffectSlotFolder

HostInsertEffectViewer

Inherits From: HostObject

Referenced by: HostInsertAndStripEffects

Properties

Methods

  • includeEmptySlotsOnly () : this
  • excludeEmptySlots () : this
  • followPluginWindowInFocus () : this

HostInsertAndStripEffects

Inherits From: HostObject

Referenced by: MixerBankChannel, SelectedTrackChannel

Properties

Methods

SendSlot

Inherits From: HostObject

Referenced by: SendSlotFolder

Properties

ControlRoomCueSendSlot

Inherits From: HostObject

Referenced by: ControlRoomCueSendSlotFolder

Properties

MixerChannelValues

Inherits From: HostObject

Referenced by: MixerBankChannel, SelectedTrackChannel

Properties

MixerBankZone

Inherits From: HostObject

Referenced by: MixConsole

Properties

Methods

  • includeAudioChannels () : this
  • includeInstrumentChannels () : this
  • includeSamplerChannels () : this
  • includeMIDIChannels () : this
  • includeFXChannels () : this
  • includeGroupChannels () : this
  • includeVCAChannels () : this
  • includeInputChannels () : this
  • includeOutputChannels () : this
  • includeWindowZoneLeftChannels () : this
  • includeWindowZoneRightChannels () : this
  • excludeAudioChannels () : this
  • excludeInstrumentChannels () : this
  • excludeSamplerChannels () : this
  • excludeMIDIChannels () : this
  • excludeFXChannels () : this
  • excludeGroupChannels () : this
  • excludeVCAChannels () : this
  • excludeInputChannels () : this
  • excludeOutputChannels () : this
  • excludeWindowZoneLeftChannels () : this
  • excludeWindowZoneRightChannels () : this
  • setFollowVisibility (followVisibility : boolean) : this
  • makeMixerBankChannel () : MixerBankChannel

TrackSelection

Inherits From: HostObject

Referenced by: HostAccess

Properties

HostValue

Represents a continuous value state of a HostObject.

Inherited by: HostValueUndefined, StartValue, StopValue, RecordValue, RewindValue, ForwardValue, CycleActiveValue, MetronomeActiveValue, MetronomeClickLevel, VolumeValue, PanValue, MuteValue, SoloValue, MonitorEnableValue, RecordEnableValue, EditorOpenValue, InstrumentOpenValue, SelectedValue, AutomationReadValue, AutomationWriteValue, VUMeterValue, VUMeterMaxValue, VUMeterClipValue, VUMeterPeakValue, SendOn, SendPrePost, SendLevel, ControlRoomCueSendOnValue, ControlRoomCueSendPrePostValue, ControlRoomCueSendLevelValue, ControlRoomCueSendPanValue, ControlRoomCueSendFolderBypassValue, PluginOnValue, PluginBypassValue, PluginEditValue, PreFilterBypassValue, PreFilterGainValue, PreFilterPhaseSwitchValue, PreFilterHighCutFrequencyValue, PreFilterHighCutOnValue, PreFilterHighCutSlopeValue, PreFilterLowCutFrequencyValue, PreFilterLowCutOnValue, PreFilterLowCutSlopeValue, EQBandGainValue, EQBandFrequencyValue, EQBandQualityValue, EQBandOnValue, EQBandFilterTypeValue, QuickControlValue, FocusedQuickControlsLockedStateValue, HostPluginParameterBankValue, HostValueAtMouseCursor, HostValueAtMouseCursorLockedState, HostControlRoomValue, HostControlRoomSelectSourceCueValueByIndex, HostControlRoomSelectTargetMonitorValueByIndex, HostControlRoomSelectSourceExternalInputValueByIndex

Referenced by: ValueBinding

HostValueUndefined

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: HostObjectUndefined, ValueBinding

StartValue

Indicates if transport has been started.

Inherits From: HostValue

Referenced by: TransportValues, ValueBinding

StopValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: TransportValues, ValueBinding

RecordValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: TransportValues, ValueBinding

RewindValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: TransportValues, ValueBinding

ForwardValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: TransportValues, ValueBinding

CycleActiveValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: TransportValues, ValueBinding

MetronomeActiveValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: TransportValues, ValueBinding

MetronomeClickLevel

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: TransportValues, ValueBinding

VolumeValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: MixerChannelValues, ValueBinding

PanValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: MixerChannelValues, ValueBinding

MuteValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: MixerChannelValues, ValueBinding

SoloValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: MixerChannelValues, ValueBinding

MonitorEnableValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: MixerChannelValues, ValueBinding

RecordEnableValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: MixerChannelValues, ValueBinding

EditorOpenValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: MixerChannelValues, ValueBinding

InstrumentOpenValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: MixerChannelValues, ValueBinding

SelectedValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: MixerChannelValues, ValueBinding

AutomationReadValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: HostInstrumentPluginSlot, HostStripEffectSlotGate, HostStripEffectSlotCompressor, HostStripEffectSlotLimiter, HostStripEffectSlotSaturator, HostStripEffectSlotTools, HostInsertEffectViewer, MixerChannelValues, ValueBinding

AutomationWriteValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: HostInstrumentPluginSlot, HostStripEffectSlotGate, HostStripEffectSlotCompressor, HostStripEffectSlotLimiter, HostStripEffectSlotSaturator, HostStripEffectSlotTools, HostInsertEffectViewer, MixerChannelValues, ValueBinding

VUMeterValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: MixerChannelValues, ValueBinding

VUMeterMaxValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: MixerChannelValues, ValueBinding

VUMeterClipValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: MixerChannelValues, ValueBinding

VUMeterPeakValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: MixerChannelValues, ValueBinding

SendOn

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: SendSlot, ValueBinding

SendPrePost

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: SendSlot, ValueBinding

SendLevel

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: SendSlot, ValueBinding

ControlRoomCueSendOnValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: ControlRoomCueSendSlot, ValueBinding

ControlRoomCueSendPrePostValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: ControlRoomCueSendSlot, ValueBinding

ControlRoomCueSendLevelValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: ControlRoomCueSendSlot, ValueBinding

ControlRoomCueSendPanValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: ControlRoomCueSendSlot, ValueBinding

ControlRoomCueSendFolderBypassValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: ControlRoomCueSendSlotFolder, ValueBinding

PluginOnValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: HostInstrumentPluginSlot, HostStripEffectSlotGate, HostStripEffectSlotCompressor, HostStripEffectSlotLimiter, HostStripEffectSlotSaturator, HostStripEffectSlotTools, HostInsertEffectViewer, ValueBinding

PluginBypassValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: HostInstrumentPluginSlot, HostStripEffectSlotGate, HostStripEffectSlotCompressor, HostStripEffectSlotLimiter, HostStripEffectSlotSaturator, HostStripEffectSlotTools, HostInsertEffectViewer, ValueBinding

PluginEditValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: HostInstrumentPluginSlot, HostStripEffectSlotGate, HostStripEffectSlotCompressor, HostStripEffectSlotLimiter, HostStripEffectSlotSaturator, HostStripEffectSlotTools, HostInsertEffectViewer, ValueBinding

PreFilterBypassValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: PreFilter, ValueBinding

PreFilterGainValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: PreFilter, ValueBinding

PreFilterPhaseSwitchValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: PreFilter, ValueBinding

PreFilterHighCutFrequencyValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: PreFilter, ValueBinding

PreFilterHighCutOnValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: PreFilter, ValueBinding

PreFilterHighCutSlopeValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: PreFilter, ValueBinding

PreFilterLowCutFrequencyValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: PreFilter, ValueBinding

PreFilterLowCutOnValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: PreFilter, ValueBinding

PreFilterLowCutSlopeValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: PreFilter, ValueBinding

EQBandGainValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: ChannelEQBand, ValueBinding

EQBandFrequencyValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: ChannelEQBand, ValueBinding

EQBandQualityValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: ChannelEQBand, ValueBinding

EQBandOnValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: ChannelEQBand, ValueBinding

EQBandFilterTypeValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: ChannelEQBand, ValueBinding

QuickControlValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: QuickControls, FocusedQuickControls, ValueBinding

FocusedQuickControlsLockedStateValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: FocusedQuickControls, ValueBinding

HostPluginParameterBankValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: HostPluginParameterBankZone, ValueBinding

HostValueAtMouseCursor

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: HostMouseCursor, ValueBinding

HostValueAtMouseCursorLockedState

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: HostMouseCursor, ValueBinding

HostControlRoomValue

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: HostControlRoomChannelMain, HostControlRoomChannelPhonesByIndex, HostControlRoomChannelCueByIndex, HostControlRoomChannelExternalInputByIndex, HostControlRoomChannelTalkbackByIndex, HostControlRoomChannelMonitorByIndex, HostControlRoom, ValueBinding

HostControlRoomSelectSourceCueValueByIndex

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: HostControlRoomChannelMain, HostControlRoomChannelPhonesByIndex, ValueBinding

HostControlRoomSelectTargetMonitorValueByIndex

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: HostControlRoom, ValueBinding

HostControlRoomSelectSourceExternalInputValueByIndex

Represents a continuous value state of a HostObject.

Inherits From: HostValue

Referenced by: HostControlRoom, ValueBinding

TransportTimeDisplayDetails

Inherited by: TransportTimeDisplayDetailsPrimary, TransportTimeDisplayDetailsSecondary

TransportTimeDisplayDetailsPrimary

Inherits From: TransportTimeDisplayDetails

Referenced by: TransportTimeDisplay

TransportTimeDisplayDetailsSecondary

Inherits From: TransportTimeDisplayDetails

Referenced by: TransportTimeDisplay

TransportTimeDisplay

Referenced by: Transport

Properties

Methods

TransportTime

Referenced by: TransportTimeDisplayDetailsPrimary, TransportTimeDisplayDetailsSecondary

Properties

Methods

HostPluginParameterBankZoneActions

Referenced by: HostPluginParameterBankZone

Properties

HostInsertEffectFilter

Inherited by: HostInsertEffectFilterIncludeEmptySlotsOnly, HostInsertEffectFilterExcludeEmptySlots, HostInsertEffectFilterFollowPluginWindowInFocus

Referenced by: HostInsertEffectViewer

HostInsertEffectFilterIncludeEmptySlotsOnly

Inherits From: HostInsertEffectFilter

Referenced by: HostInsertEffectViewer

HostInsertEffectFilterExcludeEmptySlots

Inherits From: HostInsertEffectFilter

Referenced by: HostInsertEffectViewer

HostInsertEffectFilterFollowPluginWindowInFocus

Inherits From: HostInsertEffectFilter

Referenced by: HostInsertEffectViewer

HostInsertEffectViewerActions

Referenced by: HostInsertEffectViewer

Properties

MixerBankZoneActions

Referenced by: MixerBankZone

Properties

TrackSelectionActions

Referenced by: TrackSelection

Properties

HostBinding

Inherited by: ValueBinding, CommandBinding, ActionBinding

Referenced by: FactoryMappingPage

ValueBinding

Inherits From: HostBinding

Referenced by: FactoryMappingPage

Methods

  • setTypeDefault () : this
  • setTypeToggle () : this
  • setValueTakeOverModeJump () : this
  • setValueTakeOverModePickup () : this
  • setValueTakeOverModeScaled () : this
  • setSubPage (subPage : SubPage) : this
  • filterByValue (filterValue : number) : this
  • filterByValueRange (from : number, to : number) : this
  • mapToValue (mapValue : number) : this
  • mapToValueRange (from : number, to : number) : this

CommandBinding

Inherits From: HostBinding

Referenced by: FactoryMappingPage

Methods

  • makeRepeating (delaySeconds : number, rateHz : number) : Repeating
  • setSubPage (subPage : SubPage) : this
  • filterByValue (filterValue : number) : this
  • filterByValueRange (from : number, to : number) : this
  • mapToValue (mapValue : number) : this
  • mapToValueRange (from : number, to : number) : this

ActionBinding

Inherits From: HostBinding

Referenced by: FactoryMappingPage

Methods

  • makeRepeating (delaySeconds : number, rateHz : number) : Repeating
  • setSubPage (subPage : SubPage) : this
  • filterByValue (filterValue : number) : this
  • filterByValueRange (from : number, to : number) : this
  • mapToValue (mapValue : number) : this
  • mapToValueRange (from : number, to : number) : this

SubPageArea

Referenced by: FactoryMappingPage

Properties

Methods

  • makeSubPage (name : string) : SubPage

SubPageAreaActions

Referenced by: SubPageArea

Properties

SubPage

Referenced by: SubPageArea, ValueBinding, CommandBinding, ActionBinding

Properties

SubPageActions

Referenced by: SubPage

Properties

Repeating

Referenced by: CommandBinding, ActionBinding

MappingPageActions

Referenced by: FactoryMappingPage

Properties

DeviceDetectionUnit

Define device auto detection.

Referenced by: DeviceDriver

Methods

Example



11
12
13
14
15
16
17
18
19
20
21
22
23
24


...

// create objects representing the hardware's MIDI ports
var midiInput = deviceDriver.mPorts.makeMidiInput()
var midiOutput = deviceDriver.mPorts.makeMidiOutput()

// define all possible namings the devices MIDI ports could have
// NOTE: Windows and MacOS handle port naming differently
deviceDriver.makeDetectionUnit().detectPortPair(midiInput, midiOutput)
    .expectInputNameEquals('SimpleDevice IN')
    .expectOutputNameEquals('SimpleDevice OUT')
    
deviceDriver.makeDetectionUnit().detectPortPair(midiInput, midiOutput)
    .expectInputNameEquals('SimpleDevice (MIDI IN)')
    .expectOutputNameEquals('SimpleDevice (MIDI OUT)')


...
ExampleCompany_SimpleDevice.js

DetectionEntry

Inherited by: DetectionPortPair, DetectionSingleInput

Referenced by: DeviceDetectionUnit

DetectionPortPair

Define port naming pair.

Inherits From: DetectionEntry

Referenced by: DeviceDetectionUnit

Methods

  • expectInputNameContains (filterValue : string) : this
  • expectInputNameEquals (filterValue : string) : this
  • expectInputNameStartsWith (filterValue : string) : this
  • expectInputNameEndsWith (filterValue : string) : this
  • expectOutputNameContains (filterValue : string) : this
  • expectOutputNameEquals (filterValue : string) : this
  • expectOutputNameStartsWith (filterValue : string) : this
  • expectOutputNameEndsWith (filterValue : string) : this
  • expectSysexIdentityResponse (manufacturerID : string, deviceFamily : string, modelNumber : string) : this

Example



17
18
19
20


...

deviceDriver.makeDetectionUnit().detectPortPair(midiInput, midiOutput)
    .expectInputNameEquals('SimpleDevice IN')
    .expectOutputNameEquals('SimpleDevice OUT')
    

...
ExampleCompany_SimpleDevice.js

DetectionSingleInput

Inherits From: DetectionEntry

Referenced by: DeviceDetectionUnit

Methods

  • expectInputNameContains (filterValue : string) : this
  • expectInputNameEquals (filterValue : string) : this
  • expectInputNameStartsWith (filterValue : string) : this
  • expectInputNameEndsWith (filterValue : string) : this

DeviceDriverActions

Referenced by: DeviceDriver

Properties

InitialSysexFile

Referenced by: DeviceDriver

UserGuide

Referenced by: DeviceDriver

HostAction

Inherited by: HostPluginParameterBankZoneAction, HostInsertEffectViewerAction, MixerBankZoneAction, TrackSelectionAction, SubPageActionActivate, SubPageAreaAction, MappingPageActionActivate, DeviceDriverAction

Referenced by: ActionBinding

HostPluginParameterBankZoneAction

Inherits From: HostAction

Referenced by: HostPluginParameterBankZoneActions, ActionBinding

HostInsertEffectViewerAction

Inherits From: HostAction

Referenced by: HostInsertEffectViewerActions, ActionBinding

MixerBankZoneAction

Inherits From: HostAction

Referenced by: MixerBankZoneActions, ActionBinding

TrackSelectionAction

Inherits From: HostAction

Referenced by: TrackSelectionActions, ActionBinding

SubPageActionActivate

Inherits From: HostAction

Referenced by: SubPageActions, ActionBinding

SubPageAreaAction

Inherits From: HostAction

Referenced by: SubPageAreaActions, ActionBinding

MappingPageActionActivate

Inherits From: HostAction

Referenced by: MappingPageActions, ActionBinding

DeviceDriverAction

Inherits From: HostAction

Referenced by: DeviceDriverActions, ActionBinding

ActiveDevice

Represents a detected and activated device of a specific DeviceDriver.

Methods

  • setState (key : string, val : string)
  • getState (key : string) : string

ActiveMapping