I’m frequently running my Zynthian V5’s audio output into my Roland FP4F digital piano, which plays audio from its line input jacks at a fixed volume that can’t be changed.
This means I would like to use the Zynthian’s master-volume control (knob 3) to control the Zynthian’s output volume, which works, but whenever I switch ZS3s the master volume reverts to that in the ZS3, which is tedious. I have unchecked the “Audio Levels on Snapshots” box on the Admin screen but this does not appear to change anything. I’m on oram-2601.1.
Is there a way of exempting the master volume setting from being changed by ZS3s?
Sorry, no. The mixer controls are just like any other audio processor and their settings are saved to zs3. Some possible solutions may be:
Save the preferred main fader to the default ZS3 and avoid adjusting (much).
Use soundcard (ALSA) audio level control to adjust the main output. The ALSA settings can be exempt from snapshots (as you have seen) and are not saved to zs3. This may work if you can bind an external controller (e.g. MIDI CC) to the soundcard output level.
Consider the signal flow. The chain (including main chain) configurations are part of the zs3, just like a preset in a synth so their parameters are affected by recalling a ZS3. The soundcard settings are more like the hardware volume / level controls you may find on a synth.
Mixer view is tricky to reach the overall volume while playing, and I often end up changing the active chain…
Yesterday i used a cheap passive volume pedal to dynamically ajust my V5.1 Oram overall volume, which is a must to perform with a band without a personal mixer before the PA. But it proved to be suboptimal, there is not enough fine control, or maybe it’s because I was standing and struggling with the sustain as well…
I imagined i could map global output volume to one if those simple external USB controls, or even assign it to my M-Audio Keystation 49 mod wheel CC#01 which I don’t use at all…
I’m glad there’s a way to make this happen in Vangelis
Duh. I just managed to assign the (unused) Keystation Volume fader to mixer master volume. Assigning it to Modulation Wheel worked as well. All this running stable Oram 2601.1
(and yes, I realized I missed the “exempting/external” detail, but this is anyway another small big step for me )
Coincidentally, I finished a master volume solution this weekend.
I decided to follow @riban’s suggestion to use the ALSA audio level control as Master Volume.
The solution is completely separate from Zynthian (the application) so it also works if the Zynthian software hangs.
I installed a potmeter as master volume control.
This is read by an Arduino. I used a Pro Micro but a Nano should also work, you only need I2C and an analog GPIO.
(Unfortunately the RPi has no analog port or you could skip this step. Instead of the Arduino, you can also use an ADC (e.g. ADS1015).)
The value of the potmeter is sent via I2C to a python script that executes the ALSA setting.
I suppose this is not what you want (not everyone wants to drill a hole in the zynt for the potmeter ), but it’s a possible solution.
It would be nice to have a OSC command specifically set aside in API that handles this situation.
In my cajon, I have a linear pot control and on/off switch.
I’m keen to use this linear control as a control voltage that the zynthian can treat as the overall volume control outside of any zs3 set ups. It is the users responsibility to turn this up at the beginning of the session.
The expectation with a mic near a speaker is that you can get feedback howl, either by simple misfortune or misuse and this control offers the ability to turn the overall mix down via the control or if the GUI is un-responsive, turn the whole machine off without lifiting your hand from the control…
It’s a long winded way of saying I think there is a justifiable need for such a control, but it should be limited and not the start of a whole family of just in case controls. . . .
I’ve been messing around with OSC control and it offers a neat solution to this sort of situation by allowing a simple address that can, if approved by the central zynthian committee, be implemented as a specific action the machine performs and the use of OSC which appears pretty close to core functionality in the zynth would acknowledge the use-case.
It’s probably better to design from this level rather than start at MIDI or qwerty for the design but work out from the functionality at the core.
Apologies for the brevity of the post, I was near alpacas and the the consensus among the seven of us was the idea needed recording, with the fiddle player abstaining.
Thank you @HansR, it’s really a neat approach, although for now it’s completely ok for my use case to have the M-Audio fader setting attached to the relevant snapshots.
Nevertheless, I see potencial in your design, for more elaborated and clever endeavours, to control volume or even to bring in other external analog signals.
For completeness, and also to turn on a few more lights in my ignorance, please add some notes suggesting how to physical interface the Arduino (or the ADC, if we would go for that option) with the RPi and to insert the Python code in the Zynthian system.
Meawhile I’ll keep reading @wyleu explanation around his magic cajon.
In fact (and in theory) it is very simple. Connect the I2C lines SDA and SCL from the Arduino or the ADC module to the SDA and SCL pins of the RPi. Connect power (+3.3V) and ground (-) and you are done.
But in practice there are some things to watch out for.
I made this on my DIY V5 clone that I use for experiments. The GPIO bus is easily accessible so there was no problem in connecting extra wires. I did not try this on my V5.1 kit, accessing the GPIO bus on the kit is a real challenge.
If you use an Arduino Pro Micro that runs on 3.3V (the 8 MHz version) you don’t have to worry about level converters.
If you have a 5V (16 MHz) version or you use a 5V Nano you definitely have to worry about that. Most Arduinos run on 5 V and the GPIO pins (the I2C pins) on an RPi are not 5 V tolerant.
The ADS1x15 modules can be used on 3.3V so no level shifter is necessary.
If you use an Arduino, you can use the code in the post above. If you go for the ADC solution look on the internet for a Python library (Adafruit has one).
Pin numbers:
pro Micro Nano RPi 5 ADS1x15
SDA D2 D18 GPIO2 pin 3 see print on
SCL D3 D19 GPIO3 pin 5 module board
The Python code is not inserted in the Zynthian system, it is a standalone program.
l start a shell script from rc.local. The script sets the path to the Python packages and starts the python program.
A device like Zynthian should actually have an analog output control, like every keyboard or sound module I’ve ever owned except one (and I really disliked the lack on that otherwise stellar keyboard.)
It should also have a zero-latency aux audio input, with no control on that at all, just passed directly to output (like most keyboards I’ve owned, and it’s a feature I’ve always treasured.)
Here’s the use case: I have a set of keyboards on stage, and daisy chain them all using the aux inputs. So, I don’t need a mixer on stage. I get at most one keyboard or device (e.g., guitar amp sim) that doesn’t have the aux in, to be at the start of the chain. (Though, I really like them all having it, because sometimes it’s nice to plug a music player or something into it.)
The main complication is whether to use -10dBV or +4dBu. All my devices have -10dBV aux inputs, which might not be ideal, but it’s typical for good reasons and works just fine. With instruments that have +4dBu outputs, the analog volume works well to reduce it to the -10dBV range.
Of course, that’s a hardware change, and every additional bit of hardware is nontrivial to juggle. I understand that the hardware design involves a lot of compromises, and I’m not too surprised that it lacks this feature.
I use Zynthian no-hardware style, and I hope to someday build a HAT that has these two features. It should be simple, but I’m not an electronics tech.