Changes

Jump to navigation Jump to search
Line 1: Line 1:     
=General Concepts=
 
=General Concepts=
 +
 
[[File:zynthian_controllers.png|430px|right]]
 
[[File:zynthian_controllers.png|430px|right]]
[[File:zynthian_ui_workflow_1.png|400px|thumb]]
  −
[[File:zynthian_ui_workflow_2.png|400px|thumb]]
     −
The Zynthian UI is displayed on a touch display and controlled by 4 rotary-encoders with switches (push).
+
The Zynthian UI is displayed on a touch display and controlled by 4 knobs (rotary-encoders with push-switches).
The encoders/switch knobs are used to navigate between the different screens/menus, select options and change the instrument parameters, acting as MIDI/OSC controllers. You can emulate the knobs behaviour using the touch-display, but it's sub-optimal and accessing some features could be tricky.
+
The knobs are used to navigate between the different screens/menus, select options and change the instrument parameters, acting as MIDI/OSC controllers. You can emulate the knob's behaviour using the touch-display, but it's sub-optimal and accessing some features could be tricky.
   −
Currently there are two main screen-types (screen-layouts):
+
There are two main screen layout types:
    
* '''Selector Screen''': a list of items that you can scroll and select with the SELECT (4) knob
 
* '''Selector Screen''': a list of items that you can scroll and select with the SELECT (4) knob
 
* '''Controller Screen''': In the corners, 4 control widgets (one for each knob), with label and value indicator (graphic and numeric). In the middle, a list of controller maps which you can use to change or rotate using the SELECT (4) knob.
 
* '''Controller Screen''': In the corners, 4 control widgets (one for each knob), with label and value indicator (graphic and numeric). In the middle, a list of controller maps which you can use to change or rotate using the SELECT (4) knob.
   −
Almost every Zynthian UI screen fits in one of these 2 types, however, other screen-types does exist:
+
Almost every Zynthian UI screen is one of these 2 types, however, other screen-types do exist:
    
* '''Confirmation Screen''': It will ask you to confirm some operation.
 
* '''Confirmation Screen''': It will ask you to confirm some operation.
 
* '''XY Controller Screen''': It allows to modify 2 parameters at once using the touch interface.
 
* '''XY Controller Screen''': It allows to modify 2 parameters at once using the touch interface.
* '''Info Screen''': It display info about some operation, like "Update Software", or "Network Info"
+
* '''Info Screen''': It displays info about an operation, like "Update Software", or "Network Info"
* '''Sequencer''': It's a planned feature not implemented yet ;-)
+
* '''Sequencer''': It's a planned feature, not implemented yet ;-)
   −
There are 3 types of clicks (push) that can be performed, depending on how long you hold down the knob (or push on the touch-display):
+
There are 3 types of clicks (push-switch actions) that can be performed, depending on how long you hold down the knob (or hold your finger on the touch-display):
   −
* '''short:''' less than 0.3 seconds
+
* '''short click:''' less than 0.3 seconds
* '''bold:''' between 0.3 and 2 seconds
+
* '''bold click:''' between 0.3 and 2 seconds
* '''long:''' more than 2 seconds
+
* '''long click:''' more than 2 seconds
   −
Actions for each knob and click-type are context dependent. Generally, the SELECT knob is used to navigate and a short click on it will select an item on a "Selector Screen". Inside a "Controller Screen", short clicks can be used to rotate between layers (LAYER knob) or between controller pages (SELECT knob). "Bold-clicks" are intended as shortcuts for jumping to some specific screens. Clicking the BACK knob generally jumps to the previous screen in the workflow sequence.
+
Click actions for each knob are context dependent. Generally, the SELECT knob is used to navigate and a short click on it will select an item on a "Selector Screen". Inside a "Controller Screen", short clicks can be used to rotate between layers (LAYER knob) or between controller pages (SELECT knob). "Bold-clicks" are intended as shortcuts for jumping to some specific screens. Clicking the BACK knob generally jumps to the previous screen in the workflow sequence.
   −
Most of actions depends on context (the current screen), but there are some actions that are global and will work from any screen:
+
Most of the actions depend of context (current screen), but there are some actions that are global and will work from any screen:
    
* '''long-back''': go to the admin menu
 
* '''long-back''': go to the admin menu
 
* '''long-select''': power off
 
* '''long-select''': power off
   −
Snapshot actions are also global an will work from any point in the workflow. If you click SNAPSHOT (3) once, you get the Load Snapshot menu, another click and you will be in the Save Snapshot menu. If you bold-click SNAPSHOT then you will go directly to the Save Snapshot screen. The Snapshot screen have 2 levels: bank selection (directory) and snapshot (file). These actions are better explained below.
+
Snapshot actions are almost global and will work from any point of the workflow. If you short-click SNAPSHOT (3) once, you get the Load Snapshot menu, another short-click and you will be in the Save Snapshot menu. If you bold-click SNAPSHOT then you will go directly to the Save Snapshot screen. When accessing snapshots from Control-Screen context, bold-clicks must be used instead of short clicks and direct access to Save Snapshot menu is not available. These actions are better explained below.
 +
 
 +
=The Status Area=
 +
 
 +
<br clear=all>
 +
 
 +
[[File:zynthian_status_area.png|400px|right]]
 +
 
 +
On the top-right corner there is a small area where some useful information is displayed in real time:
 +
 
 +
* CPU-load => A small horizontal bar on the top right.
 +
* MIDI-IN => Green '''M''' flag
 +
* Xrun => Red '''X''' flag
 +
* Under-voltage => Red '''V''' flag
 +
* Over-temperature => Red '''T''' flag
 +
* Recording Audio => Red '''R''' flag
 +
* Playing Audio => Red '''>''' flag
 +
 
 +
The CPU-load bar shows the CPU usage as calculated by the Jack Audio Server:
 +
 
 +
This is a running average of the time it takes to execute a full process cycle for all clients as a percentage of the real time available per cycle determined by the buffer size and sample rate.
 +
 
 +
The green M flag is shown when MIDI messages pass thru the MIDI router. Not all messages are detected. Only CC, Program Change and Note On/Off.
 +
 
 +
The red X flag is shown when there are Xruns. You should hear clicks and pops too ;-)
 +
 
 +
When the red V or T flag is shown, your zynthian is working in a degraded state, with the CPU frequency capped to 600-800 MHz, trying to stabilize the system and avoid a system crash. You shouldn't see any of them and if you do so, you should consider looking for a better power source (under-voltage) or using a heat sink (over-temperature).
 +
 
 +
Finally, the red '''R''' and '''>''' flags show the status of audio capture: recording/playing
 +
 
 +
=Layers=
 +
 
 +
Layers are a key concept on Zynthian-UI: the first thing you do when you power-on your zynthian is create a layer ;-)
 +
 
 +
A layer is an '''Audio Processing Chain''', normally assigned to a MIDI channel, that can be composed of one or several Audio Processing Units. This units are chained by default, although you can customize the audio routing. The first unit in a layer is the '''root''' and determines the layer's type:
 +
 
 +
* '''Synth Layer''' => Receives MIDI note-events and generate audio output.
 +
* '''FX Layer''' => Receives audio-input and generates audio-output.
 +
* '''Generator Layer''' => Auto-generate audio output using some algorithm.
 +
* '''Special Layer''' => MOD-UI pedalboard, Pure Data patch, etc.
 +
 
 +
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.
    
=The Zynthian UI Workflow=
 
=The Zynthian UI Workflow=
   −
The next flowcharts show the different "screens" or "menus" and the way to reach each one using the 4 switches.
+
The following flowcharts show the different "screens" or "menus" and how to reach each one using the 4 switches.
It could be a good idea to print these 2 flowcharts and keep it near of your Zynthian Box until you memorize the workflow and the spirit of Zynthian UI got inside you ;-)
+
It would be a good idea to print these flowcharts and keep them near your Zynthian Box until you memorize the workflow and the spirit of the Zynthian UI gets inside you ;-)
   −
If you want to contribute improving these flowcharts, you can edit using the Google Documents Tools:
+
<gallery mode="slideshow" widths="240" heights="320">
 +
Image:zynthian_ui_workflow__main.svg|''[[commons:Main Sequence|Main Sequence]]''
 +
Image:zynthian_ui_workflow__layer_options.svg|''[[commons:Layer Options|Layer Options]]''
 +
Image:zynthian_ui_workflow__snapshots.svg|''[[commons:Snapshots|Snapshots]]''
 +
Image:zynthian_ui_workflow__midi_learning.svg|''[[commons:MIDI Learning|MIDI Learning]]''
 +
</gallery>
   −
  - [https://docs.google.com/drawings/d/1jmt3zrJjPkbqj3hpzCIwRgFIKxiX2UptebBA_GN8e5I/edit?usp=sharing Main sequence: zynthian_ui_workflow_1]
+
If you want to contribute to improving these flowcharts, you can edit them using the Google Documents Tools:
  - [https://docs.google.com/drawings/d/1Um1HVCvvb4gZF_X-vcIN9cTxYIBRCtZ5oxniUdSTB3c/edit?usp=sharing Aux. Sequences: zynthian_ui_workflow_2]
+
 
 +
  - [https://docs.google.com/drawings/d/1jmt3zrJjPkbqj3hpzCIwRgFIKxiX2UptebBA_GN8e5I Main sequence: zynthian_ui_workflow_main]
 +
- [https://docs.google.com/drawings/d/1C8kfovwXxuabl1u-UlrnHY8xzFFNiqiQWt1mmD5UXak Layer Options: zynthian_ui_workflow_layer_options]
 +
  - [https://docs.google.com/drawings/d/1Um1HVCvvb4gZF_X-vcIN9cTxYIBRCtZ5oxniUdSTB3c Snapshots: zynthian_ui_workflow_snapshots]
 +
- [https://docs.google.com/drawings/d/1I0ArYVr3zGtzcSgOy19fHlIh8VF15rmsll9wZi-aXaI MIDI Learning: zynthian_ui_workflow_midi_learning]
    
<br clear=all>
 
<br clear=all>
Line 49: Line 100:  
=The UI Screens=
 
=The UI Screens=
   −
==Layers==
+
==Layer List==
 
[[File:Zynthian_ui_new_layer.png|400px|right]]
 
[[File:Zynthian_ui_new_layer.png|400px|right]]
 
This is the first screen you should see when you power on your zynthian and no ''snapshots'' have been stored yet. Select '''New Synth Layer''' to get started.
 
This is the first screen you should see when you power on your zynthian and no ''snapshots'' have been stored yet. Select '''New Synth Layer''' to get started.
Line 62: Line 113:  
* '''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. You can [https://discourse.zynthian.org/t/extra-switches-sustain-pedal-panic-button-etc/1843 read more about this subject in the forum].
+
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]].
    
<br clear=all>
 
<br clear=all>
Line 95: Line 146:  
==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 which engine/plugin you want to use for the new layer. 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 clik 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 click on the list,  
the zynthian logo on the top-right will be animated while the engine is being loaded.  
+
the zynthian logo on the top-right will be animated while the engine is being started.  
    
Some engines have special behavior regarding layers and MIDI channels:
 
Some engines have special behavior regarding layers and MIDI channels:
Line 102: Line 153:  
* '''setBfree''': This engine can create 1, 2 or 3 layers assigned to the several MIDI channels starting at selected channel, each one corresponding to the upper, lower and pedals sections of the Hammond B3 emulation.
 
* '''setBfree''': This engine can create 1, 2 or 3 layers assigned to the several MIDI channels starting at selected channel, each one corresponding to the upper, lower and pedals sections of the Hammond B3 emulation.
 
* '''Pianoteq''': Only one layer is allowed to be created, assigned to the MIDI channel you choose.
 
* '''Pianoteq''': Only one layer is allowed to be created, assigned to the MIDI channel you choose.
* '''Aeolus''': NORMALLY 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. When using a different instrument definition, you have to tweak the engine's code a little bit.
+
* '''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 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.)
 
* '''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 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.)
 
   
 
   
Line 115: Line 166:     
* After you have selected the engine for a new layer. Only free channels are listed.
 
* After you have selected the engine for a new layer. Only free channels are listed.
* When you change the assigned MIDI channel from the Layer Options.
+
* When you change the assigned MIDI channel from the Layer Options. Only free channels are listed.
* When you clone a layer from the Layer Options
+
* When you clone a layer from the Layer Options.
    
<br clear=all>
 
<br clear=all>
Line 129: Line 180:  
Once you have chosen a bank, Preset Screen will be shown. Choose a preset to load the instrument/sound/patch you want and the Control Instrument screen will be shown.  
 
Once you have chosen a bank, Preset Screen will be shown. Choose a preset to load the instrument/sound/patch you want and the Control Instrument screen will be shown.  
   −
If the "pre-load on note-on" feature is enabled, you can pre-load 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 loaded again in case you pre-loaded some preset.
Line 150: Line 201:  
<br clear=all>
 
<br clear=all>
   −
[[File:Zynthian_ui_xy_select.png|400px|right]]
   
====XY-Controller====
 
====XY-Controller====
 
[[File:Zynthian_ui_xy_select.png|400px|right]]
 
[[File:Zynthian_ui_xy_select.png|400px|right]]
Line 162: Line 212:  
<br clear=all>
 
<br clear=all>
   −
==Tips==
+
====Tips====
 
You can press the Layer switch to step over the layer list. If you bold-press, the layer list screen will be shown.
 
You can press the Layer switch to step over the layer list. If you bold-press, the layer list screen will be shown.
   Line 168: Line 218:  
<br clear=all>
 
<br clear=all>
   −
==Load/Save Snapshot==
+
==Snapshots==
 
[[File:Zynthian_ui_snapshot_load.png|400px|right]]
 
[[File:Zynthian_ui_snapshot_load.png|400px|right]]
 
[[File:Zynthian_ui_snapshot_save.png|400px|right]]
 
[[File:Zynthian_ui_snapshot_save.png|400px|right]]
Click the Snapshot switch to enter the Load Snapshot screen. Another click and you will be in the Save Snapshot screen. You can also use bold-click to go directly to the Save Snapshot screen.
+
Snapshots are used for saving/restoring the status of Zynthian. A snapshot includes the full state, including layers, effects, parameter values, MIDI-learning, etc.
   −
Obviously, before loading any snapshot, you should save one. Snapshots are organized in banks, so if you don't have any banks, you should create one.
+
You can enter the ''Load Snapshot'' screen by clicking the snapshot switch. From control screen you have to use bold-click. A second click and you will be in the ''Save Snapshot'' screen. You can also use bold-click to go directly to the Save Snapshot screen (not from control screen!).
Zynthian UI will use numbers for naming the banks and snapshots. Later, using the webconf tool you can rename the banks and snapshots to something more explicit.
     −
If you want to go up one level, from snapshots to banks, you should use the ".." entry in the list. The Back button won't work here.
+
Obviously, before loading any snapshot, you should save one, and for saving a snapshot, you should create some layers, etc. Zynthian UI will use numbers for naming the banks and snapshots. Later, using the webconf tool you can rename the snapshots to something more explicit.
   −
===Default Snapshot===
+
====Snapshot Banks====
The current Status is saved as "Default Snapshot" when you poweroff or reboot the Zynthian. This "Default Snapshot" will be loaded automatically at startup. To delete it, you should use the webconf tool. You can explitly remove the snapshot or disable the "Restore Last Status" flag, in UI section,
+
By default, snapshots are stored as a single list and bank-related stuff is not shown by Zynthian-UI. If you want to use banks for organizing your snapshots, you simply create a second bank using the webconf tool and the hidden bank functionality will be enabled.
 +
 
 +
When using snapshot banks, if you want to go up one level (from snapshot list to bank list), you must use the ".." entry. The back button will close the snapshot screen.
 +
 
 +
====Default Snapshot====
 +
You can save the status as "Default Snapshot". This "Default Snapshot" will be loaded automatically at startup. To delete it, you can use the webconf tool or the command line.
 +
 
 +
====Restore Last State====
 +
If "Restore last state on startup" option is enabled on webconf (and it's enabled by default!), then state will be saved when poweroff (using long-click select or from Admin Menu) and restored on next boot. This option has priority over the "Default Snapshot".
    
<br clear=all>
 
<br clear=all>
Line 214: Line 271:  
<br clear=all>
 
<br clear=all>
   −
=Global MIDI-learning=
+
=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.
   −
This allows you to easily connect any parameter in the Zynthian UI to any CC knob/slider on an external MIDI controller. ''(I intend to extend this feature to other MIDI messages, but currently only CC messages are supported.)'' Anyway, MIDI filter rules can handle any special cases, so it’s not an urgent task.
+
Learning a MIDI-CC is quite easy:
   −
This works with ALL the engines, using the engine’s native MIDI-learning capability when available (and convenient) or the Zynthian’s MIDI-learning mechanism, within the MIDI filter. To be more explicit, native MIDI-learning is used for MOD-UI and  ZynAddSubFX OSC parameters. All the other MIDI-mapped parameters are managed by the Zynthian’s MIDI-learning mechanism.
+
'''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.
   −
You get on-screen feedback during the learning process. When you enable MIDI-learning for a parameter, a small green text displaying "??" appears at the bottom of the controller/parameter area in the Zynthian UI. When the parameter is connected to a CC, the number of the assigned CC is shown in the same place.
+
'''2.''' Move a zynthian controller. Its tiny “???” will change to green while the other 3 will go back to normal state.
   −
The MIDI-learning configuration is stored in the snapshot.
+
'''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>
   −
==How to use MIDI Learning==
+
====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 ...
 
First, you need a working touch interface in your display. If you don't have a touchscreen, you could use a mouse ...

Navigation menu