Support MIDI map clip launching and scripting in Bitwig Studio. This script based on bitwig/generic-keyboard. Cliplet idea is inspired by ClyphX. ClyphX is great software for Ableton Live.
This controller script includes:
npm install
grunt
- [Generic MIDI Keyboard with Cliplet.control.js](Generic MIDI Keyboard with Cliplet.control.js)
or - [Generic MIDI Keyboard with Cliplet.mini.control.js](Generic MIDI Keyboard with Cliplet.mini.control.js) (minified script)
put into
OS| Location :---|:---|:---| Windows|%USERPROFILE%\Documents\Bitwig Studio\Controller Scripts\Generic Mac| ~/Documents/Bitwig Studio/Controller Scripts/Generic
Cliplet is tiny javascript code stored in clip launcher or scene slot.
var cliplet = {
name:'MyClip',
ch:1,
note:64,
que:function($) {
$.msg('Hello world!');
}
}
Put flatten single line string into clip or scene slot name in inspector panel. like this:
name:'MyClip', ch:1, note:64, que:function($){$.msg('Hello world!');}
All properties are optional. Function is not supported in scene slot.
property|type|description :---|:---|:---|:---| name| string | If you want to access clip by name, must be specified. ch| Number 1 - 16 | MIDI channel to launch clip. If not specified, launch on all channel. note| Number 0 - 127 | MIDI note# to launch clip. cc| Number 0 - 127 | MIDI CC# to launch clip. if specified cc and note, launch on both. que| function | called just after the clip is queued (launched). ply| function | called just after the clip start playing. stp| function | called just after the clip stop playing. rec| function | called just after the clip start recording. sel| function | called just after the clip is selected.
- 32 main track maximum.
- 2 effect track maximum
- 1 master track
- 32 scene maximum.
Scripting is independent from MIDI devices. If you want to use this function with other controller, at least one unused MIDI-in port is needed.
The all Cliplet's function has two arguments context and track.
context
que:function($) {$.trk('Master').clp(2).launch();}
same meaning as follow:
que:function() {this.trk('Master').clp(2).launch();}
if this clip exist on Track 2.
que:function($,t) {t.clp(2).launch();}
same meaning as follow:
que:function($) {$.trk(2).clp(2).launch();}
Various accessor methods can be used to access controller API.
method|abbrev|description
:---|:---|:---|:---|
application()
|app()
| return instance of Application class
arranger()
|arr()
| return instance of Arranger class
clip(tid, cid)
|clp(tid, cid)
|return instance of ClipLauncherSlot class
tid - track index 1-32 or name.
cid - clip slot index 1-32 or name.
cursorDevice()
|cdv()
|return instance of CursorDevice class
groove()
|grv()
|return instance of Groove class
scene(id)
|scn(id)
|return instance of ClipLauncherSceneOrSlot class
id - scene slot index 1-32 or name.
transport()
|trp()
|return instance of Transport class
track(id)
|trk(id)
|return instance of Track class
id - track index 1- 32 or name.
[track].clip(id)
|[track].clp(id)
|return instance of ClipLauncherSlot class
id - track index 1-32 or name.
[track].primaryDevice()
|[track].pdv(id)
|return instance of PrimaryDevice class