Hi @zynthianers!
I’ve been working on some nice new features and improvements. The changes are not merged in the master branch yet. I would prefer to do a good testing before …
For getting the changes into your zynthian, you have to use the development branch:
cd /zynthian/zynthian-ui
git fetch
git checkout setbfree-multiconf
cd /zynthian/zynthian-data
git fetch
git checkout setbfree-multiconf
/zynthian/zynthian-sys/scripts/update_zynthian.sh
reboot
And these are the main changes:
Sub-snapshots:
I use “zs3”, that means “Zynthian Sub SnapShot”. The idea behind this feature is to have a fast preset-change mechanism, easily mapable to MIDI Program Change events. For achiving this, i’ve modified the UI workflow:
From the Zynthian-UI control screen, you bold-click the snapshot button. You will see a green message: “Awaiting for a Program Change event…”. Simply push a “Program Change” button in your keyboard/controller and the zs3 will be stored in memory, associated with the Program Change number you send. After that, you can recall any stored zs3 by simply pushing the same PC button again. The memory-stored zs3s will be saved with your snapshot and restored when it’s 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.
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 inside the same song.
BTW, given that workflow had to be modified, i decided to add a “touch-less” mechanism for CC MIDI-learning:
- From the Zynthian-UI control screen, you bold-click the snapshot button. You will see the green message: “Awaiting for a Program Change event…”. Then you short-click again, and you will be in CC MIDI-learn screen. It’s indentical to the Control screen, but all the for controllers have a tiny green “???” in the bottom.
- Move a zynthian controller, it will remain with the tiny “???” while the other 3 will go back to normal state.
- 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.
setBfree improvements:
Most of keyboard players love to have a decent Hammond emulation. So i’ve been working on improving setBfree-zynthian integration, thinking in the stage-player needs:
-
Manual configuration and Keyboard splits: I’ve added a select screen like this:
- Upper => 1 layer
- Upper + Lower => 2 layers (and 2 MIDI channels)
- Upper + Pedals => 2 layers (and 2 MIDI channels)
- Upper + Lower + Pedals => 3 layers (and 3 MIDI channels)
- Split: Upper + Lower
- Split: Upper + Pedals
- Split: Upper + Lower + Pedals
-
Controllers feedback: in setBfree there are some controllers that are related to others. Changes in the value of one of this controllers will change the value of the others, etc. For dealing with this, setBfree have a MIDI output port, so cascade-modified controller values are sent as CC feedback events. This remained to be implemented in Zynthian … until now
-
Tonewheel generator model (waveform): Although most of people love the original Hammond sound, based in sinoidal waveforms generated by electro-mechanical tonewheels, some genres from 60s and 70s used “Combo-Organs” like the “Continental Vox” and the “Farfisa Compact” that used transistor circuits to emulate the Hammond sound. These combo organs also used square and triangle waveforms, what completely change the sound you get. It’s the “cheesy” sound, very used in some famous themes from psychodelia, etc.
I spent several days playing with “foo-yc20”, that it’s a free software combo-organ emulator. I’ve compiled the last version, and added some optimizations and CLI options needed for having a decent Zynthian integration. It’s almost done, but foo-yc20 faust self-generated DSP code is quite CPU intensive and our beloved RBPi is not enough for having a good playing experience. Ohhhh!! Perhaps RBPi4 will be enough.
But don’t worry… while tweaking the setBfree config i found a few lines in the configuration file that i’ve totally forgotten until now. Using these options it’s easy to modify the waveform used by the tonewheel generator. Adjusting the sub-harmonics in the right way you can get a decent triangle or square waveform … so … I added a second select screen like this:- Sine
- Square
- Triangle
The result is quite curious, and it really sounds “cheesy”, specially when you use the right drawbar combiantion with vibrato. Of course, it doesn’t fit the real sound of any vintage combo-organ, but i’m pretty sure that you will enjoy playing those psycodelic grooves you love
And that’s all … ups … or not!! Have i told that i refactorized all the engines for using “pexpect”?
I hope this change will increase the stability of zynthian UI, specially when loading snapshots, and also should simplify the creation of new engines.
Enjoy!