Changes

Jump to navigation Jump to search
Line 85: Line 85:  
The rest of units in a layer normally are FX units that process the audio coming-out from the first unit (root).
 
The rest of units in a layer normally are FX units that process the audio coming-out from the first unit (root).
   −
All units in a layer receive all the MIDI events coming from the assigned channel. Special layers don't have an assigned MIDI channel and receive all MIDI channels.
+
All units in a layer receive all the MIDI events coming from the assigned channel. Some special layers (MOD-UI) don't have an assigned MIDI channel and receive all MIDI channels.
    
=The Zynthian UI Workflow=
 
=The Zynthian UI Workflow=
Line 123: Line 123:  
* '''PANIC! All Notes/Sounds Off''' => All notes and sounds are stopped abruptly by sending CC#123 and CC#120 to all channels.
 
* '''PANIC! All Notes/Sounds Off''' => All notes and sounds are stopped abruptly by sending CC#123 and CC#120 to all channels.
   −
The last option, ''All Notes/Sounds Off'', can be triggered by bold clicking CTRL-1 (layer) from the layer screen (contextual action). You can trigger this actions from any point in the workflow by simply bold-clicking twice CTRL-1. Also, you can add a ''panic-button'' to your zynthian using the extra pins from the AllInOne circuit. [[Adding Extra Switches|Read this for a detailed explanation about how to add a panic button to your Zynthian]].
+
The last option, ''All Notes/Sounds Off'', can be triggered by bold clicking CTRL-1 (layer) from the layer screen (contextual action). You can trigger this actions from any point in the workflow by simply bold-clicking twice CTRL-1. Also, you can add a ''panic-button'' to your zynthian using the extra pins from the AllInOne circuit or the Zynscreen. [[Adding Extra Switches|Read this for a detailed explanation about how to add a panic button to your Zynthian]].
    
<br clear=all>
 
<br clear=all>
Line 139: Line 139:  
* '''Clone MIDI to...''' => clone the '''layer's MIDI channel''' messages to other MIDI channels. Note that only note on/off, pitch-bending, and key-press messages are cloned, while the rest are kept independent (CC, channel-pressure, program change, ...)
 
* '''Clone MIDI to...''' => clone the '''layer's MIDI channel''' messages to other MIDI channels. Note that only note on/off, pitch-bending, and key-press messages are cloned, while the rest are kept independent (CC, channel-pressure, program change, ...)
 
* '''Transpose''' => transpose the '''layer's MIDI channel''' up and down, by semitones.
 
* '''Transpose''' => transpose the '''layer's MIDI channel''' up and down, by semitones.
* '''Audio Routing''' => route the '''layer's''' audio output to available audio input ports, whats allows processing the audio in any way you imagine. You can use this feature for creating your own customized/bizarre FX chains.
+
* '''Audio Routing''' => route the '''layer's''' audio output to available audio input ports, allowing to process the audio in any way you imagine. You can use this feature for creating your own customized/bizarre FX chains. If this is not enough for you, try MOD-UI engine with the MOD-UI web GUI. ;-)
 
* '''MIDI chan''' => change the MIDI Channel assigned.
 
* '''MIDI chan''' => change the MIDI Channel assigned.
 
* '''Remove Layer''' => Remove the layer.
 
* '''Remove Layer''' => Remove the layer.
Line 146: Line 146:  
* '''Remove All Effects''' => Clean the FX-chain, deleting all the effects.
 
* '''Remove All Effects''' => Clean the FX-chain, deleting all the effects.
   −
* '''Effect List''' => The list of effects in the layer's FX-chain. By bold-clicking on an effect, you will access the Effect's Options:
+
* '''Effect List''' => The list of effects in the layer's FX-chain. By bold-clicking on an effect and you will access the Effect's Options:
 
** '''Effect Presets'''
 
** '''Effect Presets'''
 
** '''Move Upchain'''
 
** '''Move Upchain'''
Line 156: Line 156:  
==Engine Selection==
 
==Engine Selection==
 
[[File:Zynthian_ui_engine_list.png|400px|right]]
 
[[File:Zynthian_ui_engine_list.png|400px|right]]
When you create a new layer, you are asked about which engine/plugin you want to use for it. A list of engines to choose from is displayed. They can be synthesizers, effects, generators or special engines, depending on the type of layer you are creating. When you click on the list,  
+
When you create a new layer, you are asked about which engine/plugin you want to use for it. A list of engines to choose from is displayed. They can be synthesizers, effects, generators or special engines, depending on the type of layer you are creating. When you select an element from the list,  
 
the zynthian logo on the top-right will be animated while the engine is being started.  
 
the zynthian logo on the top-right will be animated while the engine is being started.  
   Line 165: Line 165:  
* '''Aeolus''': By default, 4 layers are created, assigned to different MIDI channels (1,2,3 & 4), each one corresponding to the 3 manuals + 1 pedal of the Aeolus default instrument definition. You can change the MIDI channel assignments from the Aeolus native UI. If you want to use a different instrument definition, you will have to tweak the engine's code a little bit. Ask in the forum ;-)
 
* '''Aeolus''': By default, 4 layers are created, assigned to different MIDI channels (1,2,3 & 4), each one corresponding to the 3 manuals + 1 pedal of the Aeolus default instrument definition. You can change the MIDI channel assignments from the Aeolus native UI. If you want to use a different instrument definition, you will have to tweak the engine's code a little bit. Ask in the forum ;-)
   −
* '''MOD-UI''': Only one layer is allowed to be created and it's assigned to ALL MIDI channels. If you want to filter the messages by channel, you can do it within the MOD-UI patch. (There are plans for improving this behavior.)
+
* '''MOD-UI''': Only one layer of this type is allowed and it will receive ALL MIDI channels. If you want to filter the messages by channel, you can do it within the MOD-UI patch. (There are plans for improving this behavior.)
* '''PureData''': Only one layer is allowed to be created and it's assigned to ALL MIDI channels. If you want to filter the messages by channel, you can do it within the PD patch. (There are plans for improving this behavior.)
+
* '''PureData''': Only one layer of this type is allowed, but it can be assigned to a MIDI channel.
 
   
 
   
   Line 192: Line 192:  
If the '''preload with note-on''' feature is enabled, you can preload the presets by playing notes. When you do so, the highlighted preset will be pre-loaded before clicking select.  
 
If the '''preload with note-on''' feature is enabled, you can preload the presets by playing notes. When you do so, the highlighted preset will be pre-loaded before clicking select.  
   −
You can return to the control screen directly, without selecting any preset, by clicking "bold-back". In such a case, the previously selected instrument will be loaded again in case you pre-loaded some preset.
+
You can return to the control screen directly, without selecting any preset, by clicking "bold-back". In such a case, the previously selected instrument will be restored in case you pre-loaded some preset.
    
<br clear=all>
 
<br clear=all>
Line 200: Line 200:  
This screen is shown after you have chosen a preset. Your instrument is now enabled and playable and you can modify the parameters.
 
This screen is shown after you have chosen a preset. Your instrument is now enabled and playable and you can modify the parameters.
   −
Turning any of the 4 knobs changes the values of the synth parameters displayed in the squares at the sides of the screen adjacent to each knob. You also can use the touch interface to change the values. See below.
+
Turning any of the 4 knobs changes the values of the parameters displayed in the boxes at the sides of the screen adjacent to each knob. You also can use the touch interface to change the values. See below.
 
<br clear=all>
 
<br clear=all>
    
[[File:Zynthian_ui_instrument_control_02.png|400px|right]]
 
[[File:Zynthian_ui_instrument_control_02.png|400px|right]]
The central list shows the different pages of parameters that you may alter. You can navigate the page of parameters by clicking short-Select to step by one page.
+
The central list shows the different pages of parameters that you may alter. You can navigate the page of parameters by clicking short-select to step by one page.
 
<br clear=all>
 
<br clear=all>
    
[[File:Zynthian_ui_instrument_control_03.png|400px|right]]
 
[[File:Zynthian_ui_instrument_control_03.png|400px|right]]
If the page list is long, you can "bold click" the Select switch to navigate the list using the Select knob.
+
If the page list is long, you can "bold click" the ''select'' switch to navigate the list using the ''select'' knob.
 
<br clear=all>
 
<br clear=all>
   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 366: Line 432:  
|S||Ctrl||Long SNAPSHOT
 
|S||Ctrl||Long SNAPSHOT
 
|-
 
|-
|R||None||Start audio Record
+
|A||None||Start audio Record
 +
|-
 +
|A||Shift||Stop audio Record
 +
|-
 +
|A||Alt||Toggle audio Record
 
|-
 
|-
|R||Shift||Stop audio Record
+
|A||Ctrl||Start audio Play
 +
|-
 +
|A||Ctrl+Shift||Stop audio Play
 
|-
 
|-
 
|M||None||Start MIDI Record
 
|M||None||Start MIDI Record
Line 374: Line 446:  
|M||Shift||Stop MIDI Record
 
|M||Shift||Stop MIDI Record
 
|-
 
|-
|M||Ctrl||Reload MIDI Config
+
|M||Ctrl||Start MIDI Play
 +
|-
 +
|M||Ctrl+Shift||Stop MIDI Play
 
|-
 
|-
 
|Space||None||All Notes Off
 
|Space||None||All Notes Off
Line 382: Line 456:  
|Space||Ctrl||All off
 
|Space||Ctrl||All off
 
|-
 
|-
|Insert||None||Restart UI
+
|Home||Shift||Restart UI
 +
|-
 +
|Insert||Ctrl||Reload MIDI Config
 
|-
 
|-
|Insert||Shift||Reboot
+
|Home||Ctrl||Reboot
 
|-
 
|-
|Insert||Ctrl||Power Off
+
|End||Ctrl||Power Off
 
|-
 
|-
 
|Up||None||Listbox Up
 
|Up||None||Listbox Up
Line 397: Line 473:  
|}
 
|}
    +
==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:
 +
 +
0x9F  (Channel 16 Note ON)
 +
0x00  (Note code for POWER_OFF as below)
 +
0x00  (Velocity/parameter)
   −
MIDI-learning allows you to easily bind specific MIDI events with Zynthian-UI actions. There are 2 types of MIDI events you can learn:
+
or play the C-1 key, if your keyboard has it ;-)
   −
====MIDI CC====
+
This is the full list:
[[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:
+
'''Num'''  '''CUIA'''                      '''Note'''        '''System'''
 +
0    POWER_OFF                  C-1
 +
1    REBOOT                    C#-1
 +
2    RESTART_UI                D-1
 +
3    RELOAD_MIDI_CONFIG        D#-1
   −
'''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.
+
10    ALL_NOTES_OFF              A#-1
 +
11    ALL_SOUNDS_OFF            B-1
 +
12    ALL_OFF                    C0
   −
'''2.''' Move a zynthian controller. Its tiny “???” will change to green while the other 3 will go back to normal state.
+
23    TOGGLE_AUDIO_RECORD        B1
 +
24    START_AUDIO_RECORD        C1
 +
25    STOP_AUDIO_RECORD          C#1
 +
26    START_AUDIO_PLAY          D1
 +
27    STOP_AUDIO_PLAY            D#1
   −
'''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 "???".
+
35    TOGGLE_MIDI_RECORD        B2
 +
36    START_MIDI_RECORD          C2
 +
37    STOP_MIDI_RECORD          C#2
 +
38    START_MIDI_PLAY            D2          Start/Continue: 0xFA, 0xFB
 +
39    STOP_MIDI_PLAY            D#2          Stop: 0xFC
   −
Of course, MIDI-learning configuration, including CC mappings, is stored and restored with snapshots.
+
51    SELECT                    D#3/Eb3
 +
52    SELECT_UP                  E3
 +
53    SELECT_DOWN                F3
   −
  '''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.
+
  64    SWITCH_BACK_SHORT          E4
 +
63    SWITCH_BACK_BOLD          D#4/Eb4
 +
62    SWITCH_BACK_LONG          D4
   −
<br clear=all>
+
65    SWITCH_SELECT_SHORT        F4
 +
66    SWITCH_SELECT_BOLD        F#4/Gb4
 +
67    SWITCH_SELECT_LONG        G4
   −
====MIDI Program Change====
+
60    SWITCH_LAYER_SHORT        C4
[[File:Zynthian_ui_midi_zs3_learn.png|400px|right]]
+
61    SWITCH_LAYER_BOLD          C#4/Db4
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.
+
59    SWITCH_LAYER_LONG          B4
   −
Learning a SubSnapShot is obscenely easy:
+
71    SWITCH_SNAPSHOT_SHORT      B5
 +
72    SWITCH_SNAPSHOT_BOLD      C5
 +
73    SWITCH_SNAPSHOT_LONG      C#5/Db5
   −
'''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…”
+
[[File:2Oct_Keyboard_CUIA.png|600px|Keyboard]]
   −
'''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.
+
[[File:Midi-note-chart.jpg]]
 
  −
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>
 

Navigation menu