Menu

#15 Changing Banks via MIDI signals causes to change banks on wrong channels

Unknown
closed
5
2017-09-14
2017-06-13
No

Sending multiple Bank change at once to different channels causes other channels to switch their banks.

I have mididings setup for few songs, and I found it's some strange behaviour of Yoshimi here.
mididings MIDI monitor shows following commands:

[ 1,  1] Ctrl:       0   0  (Bank select (MSB))
[ 1,  1] Ctrl:      32 115  (Bank select (LSB))
[ 1,  1] Program:       44
[ 1,  2] Ctrl:       0   0  (Bank select (MSB))
[ 1,  2] Ctrl:      32  85  (Bank select (LSB))
[ 1,  2] Program:        2
[ 1,  3] Ctrl:       0   0  (Bank select (MSB))
[ 1,  3] Ctrl:      32  85  (Bank select (LSB))
[ 1,  3] Program:        6
[ 1,  4] Ctrl:       0   0  (Bank select (MSB))
[ 1,  4] Ctrl:      32 115  (Bank select (LSB))
[ 1,  4] Program:        4

But Yoshimi switches channels 2, 3 and 4 between bank 85 and 115 back and forth for unknown reason instead of changing channel 2 and 3 to bank 85, and channel 4 to bank 115.

This problem is repeatable just by using 2 channels for test. And Channel 2 switches back and forth with what was set to Channel 1.

Discussion

  • Konrad Mosoń

    Konrad Mosoń - 2017-06-13

    PS I'm using yoshimi-1.5.1.1-1.fc25.x86_64 from Fedora repo.

     
  • Will Godfrey

    Will Godfrey - 2017-06-13

    Yoshimi banks and bank roots are for the whole synth not individual channels (unlike program changes). Bank changes are extremely fast (typically less than 10uS) so it shouldn't be a problem putting a bank change in front of a program change if there is any doubt.

    If this is a problem to you I suggest you create a new bank containing all your most wanted instruments.

     
  • Konrad Mosoń

    Konrad Mosoń - 2017-06-13

    Well, firstly I thought about using just built-in banks and sounds from Yoshimi without mangling with it. I found voices I wanted for songs, but unfortunaletly they are in different banks.

    I would argue (as a simple user) about non-individual channel banks, cause it's possible in GUI to choose different bank for different channel (or in Yoshimi naming: Part) and not only for whole setup, so I consider this should be possible to do.

    Well… it even (almost) works, so that's why I reported this as a bug ;)

    If you say my only option is to copy all sounds to 1 bank, and use it for all "Parts" in Yoshimi then I have no other choice. But GUI never told me nor never looked like it's for whole synth.

     
    • dbtx

      dbtx - 2017-06-18

      Just need to point something out-- Part isn't a name for channel ;)
      Any Part can listen to any channel and any number of Parts can listen to the same channel. So, channel is merely that-- while Part keeps all the local state which can change based on messages coming over whatever channel it's made to listen to.

      Copying isn't your only option-- bank select being spread over the whole synth instance is worked around as Will said, just by preceding every program change with the correct bank change. Again, that does nothing but set the source of instruments for future program changes -- which of course are still channel-specific and (indirectly) Part-specific.

      About that, I'm considering a minor issue in that currently, program changes are applied identically to all Parts which are listening to the same channel, which is rarely useful. It only means you wouldn't use program changes over MIDI to load instuments in that particular case, unless that's what you wanted, for more unison or whatever.

       
  • Will Godfrey

    Will Godfrey - 2017-06-13

    If you check again, you'll find that changing bank within a part, does in fact change it for the entire synth. The possible exception being when you are using yoshimi as an LV2 plugin and have seperate instances per channel rather than an overall one. I've never done that myself as it's very wasteful of resources, and LV2 wasn't available when the bank structure was set up.

    However, I've asked on the user group what others think. It would be possible to change it but would be quite a lot of effort, and would require a 'compatibity' switch so that exisiting files weren't messed up.

     
  • Will Godfrey

    Will Godfrey - 2017-06-13

    Ticket moved from /p/yoshimi/bugs/32/

     
  • Will Godfrey

    Will Godfrey - 2017-06-13

    I've moved this to feature requests, as it's not actually a bug.

     
  • Konrad Mosoń

    Konrad Mosoń - 2017-06-13

    If you check again, you'll find that changing bank within a part, does in fact change it for the entire synth.

    Well… to be honest, I'm checking that all the time, and I see no problems with having different banks on differents parts at all. Maybe we misunderstood each other (more possible, I don't understand you, or I explained problem wrongly :D), but that's how I change sounds:

    1. Click on sound name of Part 1 in mixer,
    2. Select Bank for Part 1. (for eg: 115)
    3. Select Program for Part 1. (for eg: 44)
    4. Click on sound name of Part 2 in mixer.
    5. Select Bank for Part 2 (for eg: 85).
    6. Select Program for Part 2 (for eg: 2).

    And I see no problems for hours with something like this… And sound it I wanted, so how it's possible you say that changing bank changes this for entire synth?

    If this really works different than I thought, then UI should be at least changed and it should be make impossible to do thing I did above ↑. What could mess up people's stuff anyway cause someone could found this behaviour interesting (like me).

     
  • Will Godfrey

    Will Godfrey - 2017-06-13

    {
    Click on sound name of Part 1 in mixer,
    Select Bank for Part 1. (for eg: 115)
    Select Program for Part 1. (for eg: 44)
    Click on sound name of Part 2 in mixer.
    Select Bank for Part 2 (for eg: 85).
    Select Program for Part 2 (for eg: 2).
    }
    Close the bank window, then click on part 1 again, and you will find this shows bank 85 :)

    I think you misunderstand how the structure works.

    When you load an instrument the entire definition is pulled into that part, and remains there until you explicitly change it, no matter what bank or root is subsequently set. Banks and roots load nothing at all. They simply point where the next instrument is expected to come from (that's why these changes are so fast).

    Are you aware that you can load in insturments to various parts, then save the lot as a patch set? This is a snapshot of the synth at that time (and includes things like volume panning and keymaps) Reloading this either by name, or by using the 'recent' list is a very fast way to restore everything and will do so regardless of what changes have later been made to any of these.

    As I said, I've made a note on the users list and will see if anyone comments, but so far nobody else has said anything since this was set up in 2014, and while I'm responsive to user requests, just one person over that time is not really enough.

    Finally, in /usr/share/doc/yoshimi there is 'The Short Yoshimi Guide.odt' along with a number of text files giving information on various features of Yoshimi

     
  • Konrad Mosoń

    Konrad Mosoń - 2017-06-13

    Are you aware that you can load in insturments to various parts, then save the lot as a patch set? This is a snapshot of the synth at that time (and includes things like volume panning and keymaps) Reloading this either by name, or by using the 'recent' list is a very fast way to restore everything and will do so regardless of what changes have later been made to any of these.

    Well… I didn't know that actually, but I need solution that can change voices during playing song, that's why I'm using Mididings which I program to setup voices I want and has capability of changing setup using MIDI commands (or Livedings window). So later I can switch voices using even Sustain Pedal from my Piano. What I think is impossible with Patch Sets ;)

    So it looks like for now the only solution is to move all Instruments I need to single bank then… but please consider this feature still.

     
    • dbtx

      dbtx - 2017-06-18

      You could also optionally make an empty directory in a root to represent a new bank, and make symbolic links to the instrument files in any other bank (or any root, or really anywhere)-- it would be more efficient than copying them, and it also allows you to tweak their placement (number) by how you name the symlink. One nice thing is that any saved changes go right into the original instrument, and there's no remembering to copy anything back to the original bank. Of course you can always choose to "fork" any one instrument, by making a regular copy.

       
  • Will Godfrey

    Will Godfrey - 2017-08-28

    Coming back to this (I've been busy with the code - we now have V 1.5.3)
    It rather sounds like you should be using 'Solo' in loop mode. With this you can set up the first 16 parts with completely different instruments (from any bank) then (by sending the CC you define as the control) step trhough these quite silently while playing - you even retain all note tails and effects. After 16 it loops back to 1 (hence the name.) There is a demo of this on youtube.
    https://www.youtube.com/watch?v=ziuPJuDhjGw
    There is more info about this in the Yoshimi 'doc' directory.

     

    Last edit: Will Godfrey 2017-08-28
  • Will Godfrey

    Will Godfrey - 2017-09-14
    • status: open --> closed
    • assigned_to: Will Godfrey
     

Log in to post a comment.

MongoDB Logo MongoDB