Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save freddieventura/8cafa4321707b1309bc0f191b75c00b5 to your computer and use it in GitHub Desktop.
Save freddieventura/8cafa4321707b1309bc0f191b75c00b5 to your computer and use it in GitHub Desktop.
Create a Virtual Midi Device with Open Stage Control for Ableton (How-to Full Instructions)
_____ _ _ _
|_ _| _| |_ ___ _ __(_) __ _| |_
| || | | | __/ _ \| '__| |/ _` | (_)
| || |_| | || (_) | | | | (_| | |_
|_| \__,_|\__\___/|_| |_|\__,_|_(_)
_ _ _ _ _ _ _
__ _(_)_ __| |_ _ _ __ _| | _ __ ___ (_) __| (_) __| | _____ __
\ \ / / | '__| __| | | |/ _` | |_____| '_ ` _ \| |/ _` | |/ _` |/ _ \ \ / /
\ V /| | | | |_| |_| | (_| | |_____| | | | | | | (_| | | (_| | __/\ V /
\_/ |_|_| \__|\__,_|\__,_|_| |_| |_| |_|_|\__,_|_|\__,_|\___| \_/
_ _ _ _
(_) ___ ___ __ _(_) |_| |__
| |/ __/ _ \ \ \ /\ / / | __| '_ \
| | (_| __/ \ V V /| | |_| | | |
|_|\___\___| \_/\_/ |_|\__|_| |_|
_
___ _ __ ___ _ __ ___| |_ __ _ __ _ ___ ___ ___
/ _ \| '_ \ / _ \ '_ \ _____/ __| __/ _` |/ _` |/ _ \_____ / __/ _ \
| (_) | |_) | __/ | | |_____\__ \ || (_| | (_| | __/_____| (_| (_) |
\___/| .__/ \___|_| |_| |___/\__\__,_|\__, |\___| \___\___/
|_| |___/
_ _
_ __ | |_ _ __ ___ | |
| '_ \| __| '__/ _ \| |
| | | | |_| | | (_) | |
|_| |_|\__|_| \___/|_|
Links:
Open Stage Control Main Page: https://openstagecontrol.ammd.net/
Forum: https://openstagecontrol.discourse.group/
Download: https://openstagecontrol.ammd.net/download/
Documentation: https://openstagecontrol.ammd.net/docs/getting-started/introduction/
Docu-Widgets: https://openstagecontrol.ammd.net/docs/widgets/general-mechanics/
Docu-MIDI: https://openstagecontrol.ammd.net/docs/midi/midi-configuration/
Free-MIDI course on youtube by (Shiftedphase) : https://www.youtube.com/watch?v=5IQvu8zlmJk
Bonus for Ableton Users (remote-MIDI Scripts Isotonik BCRXL: https://www.youtube.com/watch?v=DvM45u14M-0 )
ClyphX for Ableton: https://www.youtube.com/watch?v=aCFFIVCculI
Note: Need a bit of Understanding on how MIDI protocl works , at least know how are the MIDI Messages
Note2: Steps differ slightly on Windows10 vs linux/mac
Note3: This tutorial will use generic paths and filenames, pay attention on how to change them to your ownones
1st) You need to write down the messages your MIDI Controller sends to Ableton
Write them down in a chart
Note that: different encoders, knobs, push buttons etc behave differently , check each component properly
2nd) You need to create 2 Virtual Midi Ports to communicate with the DAW :
- In linux/mac you can skip this part by just adding a parameter any time you invoke open-stage-control
$ open-stage-control --midi virtual-midicontroller:virtual
- In Windows10 you need to use a utility such as "loopMIDI" from Tobias Erichsen
New port-name: >> "virtual-midicontroller-in" >> +
New port-name: >> "virtual-midicontroller-out" >> +
3rd) Create a Session in open-stage-control with the same layout in a virtual MIDI Device
1st) Create the template:
$ open-stage-control
# save "/some/path/virtual-midicontoller.json"
2nd) Open again open-stage-control with the session and sending MIDI
$ open-stage-control --midi virtual-midicontroller --load "/some/path/virtual-midicontroller.json"
WinPowerShell : .\open-stage-control.exe -- --midi virtual-midicontroller:virtual-midicontroller-out,virtual-midicontroller-in --load "c:\some\path\virtual-midicontroller.json"
4th) Customize your session on open-stage-control to make it look like the real-hardware
Add widgets, knobs, buttons, sliders
On each widget you need to follow some rules in order to midi route their messages accordingly
Rule are in here
https://openstagecontrol.ammd.net/docs/midi/midi-messages/
For instance: a knob that is going to send Control Change messages
address: /control
pre-args: [1, 7] (MIDI channel 1, control number 7 )
range: {"min": 0, "max": 127}
target: midi:virtual-midicontroller
For Buttons, check if they behave as (toggle or push or tap)
on: 127
off: 0
mode: toggle
When finnishing with the first knob, check if its sending the messages properly (you can use a program such as MIDI-OX.exe on Win10 or "midisnoop" on linux)
-- Carry on populating the whole device, check the features of open-stage-control it may give you some cool ideas
on customizing the device
-- Once finnish Press Ctrl + S (Save)
-- You can even pop into the web-client, in a lan connected tablet, Browser: ip_address:8080 (you can customize the port) Carefull with firewall rules
5th) Open Ableton (or any DAW you are using)
> Preferences (Ctrl , ) > Link MIDI > Control Surface: Input Output
MIDI Controller Script virtual-midicontroller-in virtual-mid....-out
Takeover Mode: Value Scaling
MIDI Ports: Track Sync Remote
Input: MIDI Controller Script(...-in) On Off On
Output:MIDI Controller Script(...-out) On Off On
-- Enjoy!!
BonusTH) If using an Android Tablet to use with the Web-client
- Make use of the full screen by installing "Opera-Mini"
# top right corner > Opera Logo > Gear Logo > Fullscreen > Enabled
- Set-up inmersive mode in Android
## Hide the status bar (set inmersive mode)
adb start-server
## hide only the status bar
db shell settings put global policy_control immersive.status=*
## hide onle the navigation bar
adb shell settings put global policy_control immersive.navigation=*
## hide both
adb shell settings put global policy_control immersive.full=*
BonusTH) (only Ableton users)
Check the following utilities which will expand your interactivity with Ableton using the MIDI Contoller
ClyphPro : https://isotonikstudios.com/product/clyphx-pro/
Remote Surface Control: https://isotonikstudios.com/product-category/ableton-live/control-surface-scripts/
Preditor 2: https://isotonikstudios.com/product/preditor-2-control-surface-automapping-utility/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment