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 rotary-encoders with switches (push). |
Line 37: |
Line 36: |
| =The Zynthian UI Workflow= | | =The Zynthian UI Workflow= |
| | | |
− | The next flowcharts show the different "screens" or "functions" and the way to reach each one using the 4 switches. | + | The next flowcharts show the different "screens" or "menus" and the way 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 flow and the spirit of Zynthian UI got inside of you ;-) | + | It could be a good idea to print these flowcharts and keep it near of your Zynthian Box until you memorize the workflow and the spirit of Zynthian UI got inside you ;-) |
| + | |
| + | <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> |
| | | |
− | If you want to contribute improving these flowcharts, you can edit it using the Google Documents Tools: | + | If you want to contribute improving these flowcharts, you can edit using the Google Documents Tools: |
| | | |
− | - [https://docs.google.com/drawings/d/1jmt3zrJjPkbqj3hpzCIwRgFIKxiX2UptebBA_GN8e5I/edit?usp=sharing Main sequence: zynthian_ui_workflow_1] | + | - [https://docs.google.com/drawings/d/1jmt3zrJjPkbqj3hpzCIwRgFIKxiX2UptebBA_GN8e5I Main sequence: zynthian_ui_workflow_main] |
− | - [https://docs.google.com/drawings/d/1Um1HVCvvb4gZF_X-vcIN9cTxYIBRCtZ5oxniUdSTB3c/edit?usp=sharing Aux. Sequences: zynthian_ui_workflow_2] | + | - [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 57: |
| =The UI Screens= | | =The UI Screens= |
| | | |
− | ==Layer List== | + | ==Layers== |
| [[File:Zynthian_ui_new_layer.png|400px|right]] | | [[File:Zynthian_ui_new_layer.png|400px|right]] |
− | This is the first screen you see when you power on (when no screenshots have been stored yet.) A layer is a synth engine preset assigned to one (or all) MIDI Channel. Choose New 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. |
| | | |
− | There are several options in this screen: | + | There are several options on this screen: |
| | | |
− | * '''New Synth Layer''' => Create a new Synthesizer Layer (or layer set) | + | * '''NEW Synth Layer''' => Create a new Synthesizer Layer. |
− | * '''New Effect Layer''' => Create a new Effect Layer that will be connected to soundcard's Audio Input | + | * '''NEW Effect Layer''' => Create a new Effect Layer that will be connected to soundcard's Audio Input. |
− | * '''New Generator Layer''' => Create a new Generator Layer that self-generates audio or midi | + | * '''NEW Generator Layer''' => Create a new Generator Layer that self-generates audio or midi. |
− | * '''New Special Layer''' => Create a new Special Layer that will receive all MIDI channels | + | * '''NEW Special Layer''' => Create a new Special Layer that will receive all MIDI channels. |
− | * '''Remove All''' => Remove all layers, returning to the initial state. | + | * '''REMOVE ALL''' => Remove all Layers (Root layers and its associated Effect-Chains), returning to the initial state. |
− | * '''All Notes Off''' => All notes are released (note-off) by sending CC#123 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. |
− | * '''All Sounds Off''' => All sounds are stopped abruptly by sending CC#120 to all channels.
| |
| | | |
− | The 2 last options (All Notes Off / All Sounds Off) can be triggered by short/bold clicking CTRL-1 (layer) from the layer screen (contextual actions). You can trigger these actions from any point in the workflow by simply clicking twice CTRL-1. | + | 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]. |
| | | |
| <br clear=all> | | <br clear=all> |
| | | |
| [[File:Zynthian_ui_layer_list.png|400px|right]] | | [[File:Zynthian_ui_layer_list.png|400px|right]] |
− | You can create up to 16 layers. Several layers may be assigned to the same MIDI Channel, however these layers are MIDI-bond ''(what does this term mean)'' because they receive the same MIDI messages. This can be a problem when trying to adjust the volume (CC#7) or other parameters assigned to standard MIDI CCs. To solve this problem, you can use the "Clone" feature, that allows you to bind several layers while keeping MIDI CCs and other MIDI messages (Program Change, Channel Pressure, etc.) independent. | + | When you select '''NEW Synth/Effect/Generator Layer''', you create a new root-layer (first of a chain), choosing a free MIDI channel for it. You can create up to 16 layers (as many as MIDI channels), each one having an independent effect-chain. |
| + | |
| + | Having several layers in the same MIDI channel is not allowed. If you want two or more layers playing unison (like being in the same MIDI channel), you should use the "Clone" feature, that allows you to bind several layers while keeping MIDI CCs and other MIDI messages (Program Change, Channel Pressure, etc.) independent. |
| | | |
| <br clear=all> | | <br clear=all> |
| | | |
| [[File:Zynthian_ui_layer_options.png|400px|right]] | | [[File:Zynthian_ui_layer_options.png|400px|right]] |
− | If you bold-press the select switch, the "Layer Options" menu will be displayed for the selected layer. This menu allows you to: | + | If you bold-click the select switch over a layer from the list, the "Layer Options" menu will be displayed for the selected layer. This menu allows you to: |
| | | |
− | * '''Clone MIDI to...''' => clone the '''layer's MIDI channel''' messages (note on/off, pitch-bending, key-press) to other MIDI channels. Note that not all messages are cloned. Some are kept independent: CCs, 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 FX chains. | + | * '''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. |
− | * '''MIDI chan''' => change the assigned MIDI Channel. | + | * '''MIDI chan''' => change the MIDI Channel assigned. |
| * '''Remove Layer''' => Remove the layer. | | * '''Remove Layer''' => Remove the layer. |
| | | |
Line 94: |
Line 103: |
| ==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 synth engine you want to use for the new layer. A list of synth engines to choose from is displayed. The zynthian logo on the right is animated while the engine is being loaded. | + | 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 started. |
| | | |
| Some engines have special behavior regarding layers and MIDI channels: | | Some engines have special behavior regarding layers and MIDI channels: |
Line 100: |
Line 110: |
| * '''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 | + | * '''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. 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 ;-) |
− | 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. | |
| | | |
| * '''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.) |
Line 111: |
Line 120: |
| ==MIDI Channel selection== | | ==MIDI Channel selection== |
| [[File:Zynthian_ui_midi_channel.png|400px|right]] | | [[File:Zynthian_ui_midi_channel.png|400px|right]] |
− | This screen is shown after you have chosen the synth engine for a new layer. It is also displayed when you choose to assign the layer to a different MIDI Channel in the Layer Options screen. Choose the MIDI channel you want to assign to the layer. You can assign several layers to the same MIDI Channel. In this case, all the assigned layers will react to the same MIDI messages coming from the assigned MIDI Channel. | + | This screen is shown in various contexts: |
| + | |
| + | * 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 clone a layer from the Layer Options |
| + | |
| <br clear=all> | | <br clear=all> |
| | | |
Line 123: |
Line 137: |
| 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 142: |
Line 156: |
| [[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> |
| + | |
| + | ====XY-Controller==== |
| + | [[File:Zynthian_ui_xy_select.png|400px|right]] |
| + | If you click 2 switches at once, you enter XY-control mode. The 2 controllers you clicked are green and you can choose the desired parameters to control by rotating the controller. Of course, you can navigate the controller pages by clicking select, etc. so you can select parameters from different pages. |
| <br clear=all> | | <br clear=all> |
| | | |
| [[File:Zynthian_ui_xy_controller.png|400px|right]] | | [[File:Zynthian_ui_xy_controller.png|400px|right]] |
− | If you click 2 switches at once, then you will select these 2 parameters for XY-control using the touchscreen (ala Kaoss Pad).
| + | Once you have selected the right parameters, touch the screen for entering the XY-control-pad (using the touchscreen ala Kaoss Pad). |
| + | |
| + | Click ''back'' for returning to XY-select or bold-click ''back'' for returning to control screen. |
| <br clear=all> | | <br clear=all> |
| | | |
− | You can press the Layer switch to step over the layer list. If you bold-press, the layer list will be shown. | + | ====Tips==== |
| + | You can press the Layer switch to step over the layer list. If you bold-press, the layer list screen will be shown. |
| | | |
| Press the Back switch to return to previous screen. If you press bold-Back, then you will go 2 screens backwards. | | Press the Back switch to return to previous screen. If you press bold-Back, then you will go 2 screens backwards. |
| <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. |
| + | |
| + | 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!). |
| + | |
| + | 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. |
| + | |
| + | ====Snapshot Banks==== |
| + | 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. |
| | | |
− | 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.
| + | 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. |
− | 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.
| + | ====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. |
| | | |
− | ===Default Snapshot=== | + | ====Restore Last State==== |
− | You can save a "Default Snapshot". This snapshot will be loaded automatically at startup. To delete it, you should use the webconf tool.
| + | 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 193: |
Line 222: |
| You can navigate and control the Zynthian UI without knobs/encoders/switches at all, using only the touchscreen. | | You can navigate and control the Zynthian UI without knobs/encoders/switches at all, using only the touchscreen. |
| | | |
− | You can "emulate" the switches by tapping the controller widgets (squares in the 4 corners of the screen). There are short, bold and long actions, same behavior than rotary encoders workflow. Selector screens only have 1 controller widget, but you can also click the zynthian logo at top-right for emulating the "snapshot" switch. The only screen that shows the 4 controllers is the "Instrument Control" screen, so some features are only accessible from there. When the "back" widget is not available, you can go back by tapping the top bar. | + | You can "emulate" the switches by tapping the controller widgets (squares in the 4 corners of the screen). There are short, bold and long actions, same behaviour than rotary encoders work-flow. The only screen having the 4 controller widgets is the "Instrument Control" screen. Most of screens are selector ones, that only have 1 controller widget. On those screens you can click the '''zynthian logo''' (top-right) for emulating the "snapshot" switch, and you can go back by tapping the '''top-bar''' area. |
| + | |
| + | You can change the controller values by "sliding" up/down over the widgets. (see the green arrow in the figure here) This is the same as turning the knob. If you are using a mouse, the mouse wheel also can be used for changing the controller value. |
| + | |
| + | <br clear=all> |
| + | |
| + | =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: |
| | | |
− | You can change the values of the controllers by "sliding" over the widgets. (see the green arrow in the figure here) This is the same as turning the knob. If you are using a mouse, the mouse wheel will modify the parameter value. | + | ====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. |
| | | |
− | When clicking (tapping/touching) the topbar, a "back" event is triggered. It's a quick & dirty fix and probably it will change in the future, but meanwhile it will enable you to fully control Zynthian using the touchscreen if you don't have knob hardware.
| |
| <br clear=all> | | <br clear=all> |
| | | |
− | =Global MIDI-learning= | + | ====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…” |
| | | |
− | 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.
| + | '''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 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.
| + | 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. |
| | | |
− | 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.
| + | Every zs3 includes: |
| | | |
− | The MIDI-learning configuration is stored in the snapshot.
| + | - 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 ... |