Open Absov opened 5 months ago
I am not convinced that there is sufficient interest from a wide user group to fully implement such a feature. As described, it would require significant change to zynthian operation, especially if we allow a global capture of pedal which blocks it from its normal behaviour. Also, an arbitrary list of preset numbers would be an addition that needs some form of UI for manipulation and management and would need to be stored in the state model. These concerns make me less interested in implementing this.
What we could do is to add an action to increment/decrement program change from a trigger. This could enable the core requirement of being able to step through configurations. A program change can already be mapped to a snapshot or ZS3 so, if you already have a way to step through program changes you should be able to perform most of the requested action. If we added a variable that held the last program change value and some CUIA that incremented and decremented this value, sending the associated MIDI program change then it may be possible to implement most of the requested feature. The workflow would be:
I have never much liked inc/dec program change because you are often not sure where you are starting from, e.g. most keyboards with this option do not show the current PC and hence INC takes you to an unknown state. But I can see your usecase is a good use of inc/dec.
@Absov please consider whether this would be an acceptable solution. The implementation wouldn't be too difficult but I wouldn't want to start it if the result was not useful.
The Yamaha PSR S/SX synthesizer line includes functionality such as "registration sequence". This is a very convenient and useful feature that we often use with students (I am a keyboard synthesizer teacher). To save the scene settings (in the synthesizer, these are style settings, sequences, right-hand programs, left-hand programs, mixer, processing, etc.), registration memory is used. This is a function similar to ZS3 in Zynthian.
They can be saved and switched using dedicated buttons. A group of registration memory buttons can be saved as a registration bank. This feature is similar to Snapshots in Zynthian. If registration banks are used to change settings between performances on stage, then registration memory is used to change settings during a real-time performance.
In addition, Yamaha PSR synthesizers have a mechanism such as a "registration sequence". This is a fairly simple mechanism that allows you to use the sustain pedal to switch the sequence of the registration memory (SZ3). To implement this function, a sequence with the numbers of the registration memory buttons is stored together with the registration bank, for example
1, 2, 3, 4
, or1, 2, 3, 2, 3, 2, 1
, or any other. To switch the registration memory according to this sequence, either one Sustain pedal or two pedals can be used. In this case, the right pedal switches the sequence in ascending order, and the left pedal switches in descending order.This sequence allows the performer not to think about buttons numbers and switches during a concert performance, but simply press the pedal at the right point of the performance to switch to the next scene, which is pre-configured.
In particular, the numbers of the registration memory buttons that have already been used can be repeated in this sequence.
This is especially useful for children. It is often difficult for them to remember a complex combination of buttons or switch keys, and it is much more reliable to simply press the pedal in the right place.
How do I see the implementation of similar functionality in Zynthian. Functionality similar to registration memory and registration banks in Zynthian has already been implemented and works fine. These are Snapshots and SZ3. Accordingly, it seems to me advisable to implement the mechanism of "registration sequence" in Yamaha terminology. You can call it the "SZ3 Sequence".
The main point of this module is to generate a list of the SZ3 sequence, and the possibility of assigning any push-button or foot controller as a switch on any connected MIDI device. At the same time, controller events should be filtered and should not be sent further to the instruments.
At the same time, ideally, there should be a mechanism that allows you to turn off this function quickly enough in order to activate the pedal in normal Sustain mode (or another controller in its normal mode)
As practice shows, most often only one pedal is used, and only for switching the sequence in ascending order. But Yamaha has the ability to use two pedals, while each can be used both to switch the sequence in ascending and descending order.
The sequence can be looped or stopped at the end of the sequence. The functionality of switching to the next registration bank (Snapshot) at the end of the sequence is also implemented.
The minimum option for implementing such functionality would be the SZ3 switching mechanism using an arbitrary push-button controller (pedal) from any connected MIDI device in the sequence in which they are currently contained in the SZ3 list.
At the moment, I find it difficult to describe more specifically the possible implementation of such a mechanism in Zynthian, but this of course should correspond to the general style of work on the platform and other features and practices.
Of course, when Zynthian is used in conjunction with a Yamaha PSR S/SX synthesizer, there is no obstacle to using all the mechanisms of this synthesizer in combination with Zynthian. But I am considering situations where my students can use an arbitrary synthesizer or midi keyboard or other controller. In this case, the important task is to port the settings created in the classroom to the students' home conditions. Ideally, a Snapshot saved in the classroom should contain all the necessary settings so that any synthesizer or midi keyboard connected to the input behaves exactly the same.
This is what the registration sequence setup screen looks like in Yamaha PSR S/SX synthesizers.
When the registration sequence is turned off or the pedal is set to the OFF position, the pedals return to their normal functionality. When the sequence function is activated, the normal pedal function is blocked and the controller data is not transmitted further. If one pedal is engaged, then the second one will perform its usual function. Thus, with two pedals, one can be used for sequencing and the other for Sustain.
This is how the process of editing the registration sequence of the Yamaha PSR S/SX looks like.