Line 326:
Line 326:
<br clear=all>
<br clear=all>
−
=Key bindings=
+
=MIDI-learning=
+
+
MIDI-learning allows you to easily bind specific MIDI events with Zynthian-UI actions. There are 2 types of MIDI events you can learn:
+
+
====MIDI CC====
+
[[File:Zynthian_ui_midi_cc_learn_01.png|400px|right]]
+
[[File:Zynthian_ui_midi_cc_learn_02.png|400px|right]]
+
You can map any parameter in the Zynthian UI to a CC knob/slider on your external MIDI controller. I intend to extend this feature to other MIDI messages, but currently only CC messages are supported. Until then, MIDI-filter rules can be used instead.
+
+
Learning a MIDI-CC is quite easy:
+
+
'''1.''' From the control screen, you click the snapshot button. You will be in CC MIDI-learn screen. It’s identical to the Control screen except that all the controllers have a tiny yellow “???” in the bottom.
+
+
'''2.''' Move a zynthian controller. Its tiny “???” will change to green while the other 3 will go back to normal state.
+
+
'''3.''' Finally, move a knob/fader in your MIDI keyboard/controller and the binding is done. The new CC number should appear in the bottom of the learned controller, replacing the tiny "???".
+
+
Of course, MIDI-learning configuration, including CC mappings, is stored and restored with snapshots.
+
+
'''Technical Note:''' MIDI-CC learning works with all the engines. It uses the engine’s native MIDI-learning capabilities when available. Zynthian’s MIDI-filter mappings are used for the rest. To be more explicit, native MIDI-learning is used for MOD-UI and ZynAddSubFX OSC parameters. All the other parameters are managed by Zynthian’s MIDI-filter mapping.
+
+
<br clear=all>
+
+
====MIDI Program Change====
+
[[File:Zynthian_ui_midi_zs3_learn.png|400px|right]]
+
You can map "SubSnapshots" (ZS3) to MIDI programs. The idea behind this feature is to have a fast preset-change mechanism that can be used on stage. In combination with the “Single Layer” feature, it turns Zynthian in a “Stage-Beast”. You can prepare a snapshot for the full performance, and use ZS3 for fast changing from a song to another, or between parts inside the same song.
+
+
Learning a SubSnapShot is obscenely easy:
+
+
'''1.''' From the control screen, you click the snapshot button '''twice'''. You will see the current list of ZS3s and a message: “Waiting for Program Change…”
+
+
'''2.''' Simply push a “Program Change” button in your keyboard/controller and the ZS3 will be stored in memory, associated with the Program number you send.
+
+
After that, you can recall any stored ZS3 by simply pushing the same PC button again. Of course, the memory-stored zs3s will be saved with your snapshot and restored when loaded again.
+
+
Every zs3 includes:
+
+
- Layer ID
+
- Bank
+
- Preset
+
- Controller values
+
+
As you can see, it has sense in a SnapShot context, where a set of layers are defined. Zs3 changing is very fast, as no engine must be started.
+
<br clear=all>
+
+
====MIDI-CC Learning with touch interface====
+
+
First, you need a working touch interface in your display. If you don't have a touchscreen, you could use a mouse ...
+
+
[[File:Zynthian_ui_midi_learning.png|400px|right]]
+
'''Learning:'''
+
1. In the "Instrument Control" screen, navigate through the parameter screen list to get to the parameter you want to learn.
+
2. In the parameter/controller area, slide with your fingernail from '''left to right'''. A green "??" should appear at the bottom.
+
3. On your MIDI controller, move the desired knob/slider (or a CC-assigned pad). The green "??" should be replaced by a tiny number, and the parameter should change when you move the knob/slider or push the pad. CC-assigned pads can be very useful for on/off parameters.
+
<br clear=all>
+
+
[[File:Zynthian_ui_midi_unlearning.png|400px|right]]
+
'''Unlearning:'''
+
1. In the "Instrument Control" screen, navigate through the parameter screen list until you get to the parameter you want to unlearn.
+
2. In the parameter/controller area, slide with your fingernail from '''right to left'''. The tiny number, indicating the current CC assignment, should disappear or change. If the parameter is an engine-specific controlled engine, the number will disappear. If the parameter is a hardcoded MIDI-mapped parameter, then the number will change.
+
<br clear=all>
+
+
=CUIA: Callable UI Actions=
+
+
The Zynthian UI can be controlled remotely using a set of commands called CUIA: Callable UI Actions. These CUIA are available on several interfaces: Key Bindings, MIDI, OSC, etc.
+
+
==Key Bindings: Controlling the UI with a computer keyboard==
The user interface may be driven using a USB keyboard, e.g. QWERTY, Dvorak, etc.
The user interface may be driven using a USB keyboard, e.g. QWERTY, Dvorak, etc.
Line 397:
Line 463:
|}
|}
+
==Controlling the UI with MIDI messages==
−
=MIDI-learning=
+
These actions are available using MIDI messages on the Master Channel (default 16, but configurable with the webconf tool), specifically, note-on messages (0x9) are used so you can use a MIDI keyboard for controlling the Zynthian UI. For instance, to Power Off the zynthian, you send this message:
−
+
−
MIDI-learning allows you to easily bind specific MIDI events with Zynthian-UI actions. There are 2 types of MIDI events you can learn:
+
0x9F ( Channel 16 Note ON)
−
+
0x00 ( Note code for POWER_OFF as below )
−
====MIDI CC====
+
0x00 (Velocity/parameter)
−
[[File:Zynthian_ui_midi_cc_learn_01.png|400px|right]]
−
[[File:Zynthian_ui_midi_cc_learn_02.png|400px|right]]
−
You can map any parameter in the Zynthian UI to a CC knob/slider on your external MIDI controller. I intend to extend this feature to other MIDI messages, but currently only CC messages are supported. Until then, MIDI-filter rules can be used instead.
−
−
Learning a MIDI-CC is quite easy:
−
−
'''1.''' From the control screen, you click the snapshot button. You will be in CC MIDI-learn screen. It’s identical to the Control screen except that all the controllers have a tiny yellow “???” in the bottom.
−
−
'''2.''' Move a zynthian controller. Its tiny “???” will change to green while the other 3 will go back to normal state.
−
−
'''3.''' Finally, move a knob/fader in your MIDI keyboard/controller and the binding is done. The new CC number should appear in the bottom of the learned controller, replacing the tiny "???".
−
−
Of course, MIDI-learning configuration, including CC mappings, is stored and restored with snapshots.
−
−
'''Technical Note:''' MIDI-CC learning works with all the engines. It uses the engine’s native MIDI-learning capabilities when available. Zynthian’s MIDI-filter mappings are used for the rest. To be more explicit, native MIDI-learning is used for MOD-UI and ZynAddSubFX OSC parameters. All the other parameters are managed by Zynthian’s MIDI-filter mapping.
−
−
<br clear=all>
−
−
====MIDI Program Change====
−
[[File:Zynthian_ui_midi_zs3_learn.png|400px|right]]
−
You can map "SubSnapshots" (ZS3) to MIDI programs. The idea behind this feature is to have a fast preset-change mechanism that can be used on stage. In combination with the “Single Layer” feature, it turns Zynthian in a “Stage-Beast”. You can prepare a snapshot for the full performance, and use ZS3 for fast changing from a song to another, or between parts inside the same song.
−
−
Learning a SubSnapShot is obscenely easy:
−
'''1.''' From the control screen, you click the snapshot button '''twice'''. You will see the current list of ZS3s and a message: “Waiting for Program Change…”
+
or play the A-3 key, if your keyboard have it ;-)
−
'''2.''' Simply push a “Program Change” button in your keyboard/controller and the ZS3 will be stored in memory, associated with the Program number you send.
+
This is the full list:
−
After that, you can recall any stored ZS3 by simply pushing the same PC button again. Of course, the memory-stored zs3s will be saved with your snapshot and restored when loaded again.
+
"0": "POWER_OFF",
+
"1": "REBOOT",
+
"2": "RESTART_UI",
+
"3": "RELOAD_MIDI_CONFIG",
−
Every zs3 includes:
+
"10": "ALL_NOTES_OFF",
+
"11": "ALL_SOUNDS_OFF",
+
"12": "ALL_OFF",
−
- Layer ID
+
"51": "SELECT", D#3/Eb3
−
- Bank
+
"52": "SELECT_UP", E3
−
- Preset
+
"53": "SELECT_DOWN", F3
−
- Controller values
−
As you can see, it has sense in a SnapShot context, where a set of layers are defined. Zs3 changing is very fast, as no engine must be started.
+
"64": "SWITCH_BACK_SHORT", E4
−
<br clear=all>
+
"63": "SWITCH_BACK_BOLD", D#4/Eb4
+
"62": "SWITCH_BACK_LONG", D4
−
====MIDI-CC Learning with touch interface====
+
"65": "SWITCH_SELECT_SHORT", F4
−
+
"66": "SWITCH_SELECT_BOLD", F#4/Gb4
−
First, you need a working touch interface in your display. If you don't have a touchscreen, you could use a mouse ...
+
"67": "SWITCH_SELECT_LONG", G4
+
+
"60": "SWITCH_LAYER_SHORT", C4
+
"61": "SWITCH_LAYER_BOLD", C#4/Db4
+
"59": "SWITCH_LAYER_LONG", B4
−
[[File:Zynthian_ui_midi_learning.png|400px|right]]
+
"71": "SWITCH_SNAPSHOT_SHORT", B5
−
'''Learning:'''
+
"72": "SWITCH_SNAPSHOT_BOLD", C5
−
1. In the "Instrument Control" screen, navigate through the parameter screen list to get to the parameter you want to learn.
+
"73": "SWITCH_SNAPSHOT_LONG" C#5/Db5
−
2. In the parameter/controller area, slide with your fingernail from '''left to right'''. A green "??" should appear at the bottom.
−
3. On your MIDI controller, move the desired knob/slider (or a CC-assigned pad). The green "??" should be replaced by a tiny number, and the parameter should change when you move the knob/slider or push the pad. CC-assigned pads can be very useful for on/off parameters.
−
<br clear=all>
−
[[File:Zynthian_ui_midi_unlearning.png|400px|right]]
+
[[File:2Oct_Keyboard_CUIA.png|600px|Keyboard]]
−
'''Unlearning:'''
−
1. In the "Instrument Control" screen, navigate through the parameter screen list until you get to the parameter you want to unlearn.
−
2. In the parameter/controller area, slide with your fingernail from '''right to left'''. The tiny number, indicating the current CC assignment, should disappear or change. If the parameter is an engine-specific controlled engine, the number will disappear. If the parameter is a hardcoded MIDI-mapped parameter, then the number will change.
−
<br clear=all>