The CC7 part of my comment is bullshit. That depends on the midi channel and should work “out of the box”.
The MIDI IN messages should change the selection on the screen, so that I can use the rotary encoder of the Zynthian accordingly.
I’m not sure I like that automagic changing of behaviour. I would prefer to select the layer I want to adjust. I may have several MIDI controllers, sequencers, etc. which may cause selection to change just before I try to use it, e g. a MIDI guitar controller may suddenly decide to send a message because someone stamped next to the guitar. I guess a “follow” mode could be useful but I would prefer it is not the only option.
Sure, me neither…it should be possible to activate that feature on the mixer screen. Even on stage you want to adjust something in advance…“hm, the obxd was too loud” while playing strings with one hand you want to change the other layer in advance for the next appearance. But generally you want to be in follow mode in order to be able to react fast.
Seems to me the crux of the issue at the moment for me.
I’m very interested in the performance operation particularly with the pedal board. I’ve got guitar on one layer, pedal board ( helm at the moment) on another, possibly soon to be joined by piano on a third layer ( a different person…) .
For performance I need an overall level. This would seem to default to the top left encoder where it lives on a lot of parameters.
This leaves three encoders for level control of the individual layers.
To the disinterested but maybe frantic user who just wants to turn down the pedal volume ( the pedal board is not velocity sensitive ) or turn up the guitar or just drop the overall level.
That really is all you want and in fact you wouldn’t want anyone to move it out of that mode unless you were hanging free with parameters in which case you know what you are doing.
Not really concerned too much as to how it would be displayed, and what functionality you might get from clicking. (Normal bold and long presses would seem to be suitable) with back moving you back to the main screen and select not actually doing anything ( there’s a revolutionary concept in the zynth world ) unless you have more than 3 layers in which case it shifts onto the next page a’la parameters. ( no back available, just like parameters
) with overall still in the top left.
Certainly the NanoController is an excellent addition, but it needs to drive some layer output mixer component and without the functionality easily available you are dead in the water if you dont have the nanocontroller with you. You need a zynth based interface, and thou I can see the practicality of @jofemodo 's approach I wouldn’t like to use it to set the levels between two people playing different layers. I’d want them each on their own encoder. 3 layers probably covers 90% of such multiple users/layers cases.
You can’t rely on finding the output volume pot on every layer ( look at helm !!) so that is something that needs to be handled by the zynthian without the actual layer knowing anything about it.
Anything more than that is probably a distraction, mute in unprepared hands is just a facility to make you wonder why a channel isn’t there. I might accept pan but frankly how much stage performance is stereo, great if it’s seemless across all layers but confusing as soon as you put a mono source ( input ) into the mix (sic)
Sorry to throw a third option into the debate but as soon as we get into multi layer situations in live situations we need layer output mixer control & overall level and we need them fast and we need them there during pretty much all performance.
The follow mode could kick in after a certain idle time and be deactivated on any user action
@mheidt I would suggest follow mode be requested as a feature enhancement but see it as a low priority / nice to have.
@wyleu I would be concerned that we end up in a similar situation to we have now (although not as bad) that the level control for a synth may be on encoder 2 but only if you are on the right page of the mixer panel, i.e. you haven’t moved to the page with layers 4-6 whilst wanting to adjust layer 2. I think that direct control of all layers should be implemented in a consistent way for live users (disinterested or other) and that relying on the Zynthian encoders alone to give that direct access is suboptimal.
I think we should allow control of each and every channel using the encoders from a common screen via the encoders. (Both @jofemodo’s layout and my layout provide this.) For live mixing there should be a dedicated, direct / parallel access for all the parameters you need to adjust. This could be via an external hardware controller (including app on tablet) or an attached touchscreen. If you need this mode of operation you should use the appropriate control mechanism (not try to squeeze it into the 4 encoders). If you forget to take your controller to your gig (or it fails) you improvise - just like if you forget your guitar!!!
zynmixer effectively turns the Zynthian into a powerful mixer and all the other stuff it does. There are use cases where this is a boon and for these the user may need to purchase additional hardware.
I plan to (work with @jofemodo to):
- add zynmixer and associated routing as core functionality (does not need any GUI - things just get routed to the mixer and mixed at unity gain with mixer output feeding main output and meters)
- Add mixer control to the layer screen as described by @jofemodo
- Consider how to present the mixer layout I designed
- Add MIDI learning / mapping for the mixer controls
- Adapt an Android app (I have already partially written for Ardour) to provide UI to zynmixer
I think the first step is the most important, i.e. get zynmixer working within the core design as part of the audio path with automatic and manual routing working as expected. This can be done in an (almost) seamless way so that users don’t (barely) notice. (The may thing is to port snapshots which include audio routing.) How we control it and what screens look like is just eye candy .
I’m not sure that I’d want the kiss mixer to go beyond three inputs the shift with select was the inevitable result of having an unused encoder! Three would cover 90% of use cases
Yesssss. I think this is a good task for the incoming September …
Down an osc pipe from any GUI component
Apropos. if we had a screen that could define the four encoder interface as general midi cc sources could we make a simple encoder/overall controller on the GUI that could drive the headless mixer component @riban describes?
( Yes I now we could, but would it help live performance and would people find it useful…?
It might be a useful level of abstraction to drive all kinds of wierdness . . .
Hi @riban,
just pinging
What is the current state of the mixer? Is there a chance to get it into stable?
Regards, Holger
Hi Holger
This development has be on hold for a few months due to various commitments including development of the step sequencer.
The next step is to do more work on the development branch to reach a state that is acceptable for testing then to merge with testing. Only after a period of user testing can it progress to stable during a stable release.
There is a lot of support for this development but it is a substantial change with significant impact on underlying code and user workflows so needs careful consideration which we need to do with @jofemodo. I wouldn’t want to estimate how long this may take. There is much more to do.
I will take a look at this soon and see if we can progress it more. My particular use-case is being revisited so that might drive things along.
Hi Brian,
thanks for explanation! I also didn’t want to drag (well actually I did )… This feature is essential for me. I want to use a minimal setup: Zynthian and KeyStep-Pro. But I need to change volumes of the engines/parts. Currently I am using a MIDI volume control. It works, but it is an additional piece of hardware.
Regards, Holger
Whatever happened to the mixer idea?
Can one easily add and test the existing module so far?
It is a work in progress. It went quiet for a while whilst i concentrated on the step sequencer. I am now looking at the mixer again. I have merged testing branch into the mixer branch for all that new goodness and got it working - to a fashion. It has become evident that the underlying structure or architecture of Zynthian could be enhanced to allow the mixer (and lots of other elements) to work best so I am working on some proof-of-concept ideas for that.
In webconf, Software->Repositories you can select testing then enable Advanced View and select zynmixer branch in the zynthian-ui repository then update. This will provide you with the bleeding edge development version of the mixer but beware this is likely to be broken and any time without warning. (Called “bleeding edge” for a reason!)
I can’t estimate how quickly this will progress. It is a fairly popular development and certainly something that I would benefit from but the aforementioned architectural changes are pretty much required to progress further and are likely to be quite painful and take a while to nail down. I don’t only need to design, code and test it I also need to convince the upper echelons that it is a worthwhile endeavour!
TLDR; I am working on it… slowly!
Just be re-reading the thread !
Just 19 months later…
The Zynthian now has a mixer in the testing branch. Update and enjoy. MIDI learning is not yet implemented but I think the rest of @Nicolaz initial proposal is implemented plus full control and monitoring via OSC. @ronsum did some good work designing OSC control on an Android tablet.
The GUI may not be perfect but it is a good start. Here are the highlights:
- Up to 16 channel strips corresponding to the currently configured layers
- Each channel strip contains a fader, mute, solo, balance / pan and audio level meter (PPM)
- Solo is cumulative, i.e. you hear all channels that are soloed
- Quantity of strips displayed depends on resolution of screen, horizontal scrolling to reveal hidden strips as required
- A main mix bus strip is always displayed on the right hand side with similar features as the channel strip except solo button indicates any channel is soloed and acts to cancel all solos
- Layer index is displayed along bottom
- Layer type and preset name is shown on the fader, rotated through 90 degrees
- Balance / pan is shown by red (left) and green (right) horizontal bars
- Peak programme meter (PPM) shows stereo level as green or mono as white with high and over shown as yellow and red
- Channel strip selection may be navigated with BACK encoder or touch
- Fader level may be adjusted with SELECT encoder or touch (with relative control, i.e. where you touch the fader does not matter, it won’t jump but it will adjust relative to its previous value)
- Balance / Pan may be adjusted with the LEARN/SHOT encoder (note balance is the adjustment of stereo image whilst pan is the position of mono signal within the stereo image)
- Short LEARN/SHOT will toggle solo
- Short SELECT will toggle mute
- Bold SELECT shows extra control for the selected channel, displaying the channel strip on the right next to the main bus strip
- Extra control allows touch control of balance / pan (too small on main screen), touch reset of some parameters and direct access to layer’s control screen
Please try this out and let me know what you think. There are some enhancements I already have planned. We should add bugs and feature requests to the issue tracker as normal now that it is out there in the wild but you can also comment here.
Note: The audio routing differs from previously and hence existing snapshots will not be routed correctly. You may need to recreate your snapshots or reassert the outputs of each layer. You may also need to reboot the Zynthian.
[Edit] Actually I think you just need to reboot and it will sort itself out. Maybe I thought of that when I programmed it!!!
Testing branch is erroring with
AttributeError: ‘zynthian_gui_option’ object has no attribute ‘close_panel_manager’ on two different Pi4’s (HDMI & touchscreen 7" ), HifiBerry DAC + ADC & a Behringer 1820
Presumably an up stream flag?
same
Oct 26 17:56:41 zynthian startx[9079]: Traceback (most recent call last):
Oct 26 17:56:41 zynthian startx[9079]: File "./zynthian_gui.py", line 1866, in <module>
Oct 26 17:56:41 zynthian startx[9079]: zyngui.start()
Oct 26 17:56:41 zynthian startx[9079]: File "./zynthian_gui.py", line 350, in start
Oct 26 17:56:41 zynthian startx[9079]: self.screens['option'] = zynthian_gui_option()
Oct 26 17:56:41 zynthian startx[9079]: File "/home/pi/zynthian-ui/zyngui/zynthian_gui_option.py", line 43, in __init__
Oct 26 17:56:41 zynthian startx[9079]: super().__init__("Option", True)
Oct 26 17:56:41 zynthian startx[9079]: File "/home/pi/zynthian-ui/zyngui/zynthian_gui_selector.py", line 46, in __init__
Oct 26 17:56:41 zynthian startx[9079]: super().__init__()
Oct 26 17:56:41 zynthian startx[9079]: File "/home/pi/zynthian-ui/zyngui/zynthian_gui_base.py", line 172, in __init__
Oct 26 17:56:41 zynthian startx[9079]: self.btn_menu_back = tkinter.Button(self.menu_button_canvas, command=self.close_panel_manager,
Oct 26 17:56:41 zynthian startx[9079]: AttributeError: 'zynthian_gui_option' object has no attribute 'close_panel_manager'
Ah! Looks like I did some work to move the menu into the base class which I forgot about. That should be a separate work / PR. I suggest @jofemodo reverts the merge and I will take a look at it this week. Too much change! Sorry! Odd that it works here though!
Hey !! Hive Five Broccers. . . .