Open jofemodo opened 5 years ago
This was never a configuration option so far. IIRC Split was en/disabled via MIDI program change at runtime. see pgm/default.pgm
I am not sure if this is the best place to suggest this but the transpose/split options are not so ideal if one for example would like to use an 88 key board to map the two manuals all on channel 1. The current behavior is rather random.
One can transpose the upper manual to reach the upper octave of your 88 keys (excellent!)
One can map the lower keyboard to a section of the 88 note keyboard. (great!)
But the split point moves with the upper region and not the lower, so that there is a gap of dead keys between them.
Also there is no way to shift the lower manual to use the keys below the normal range even with transpose. So the bottom octave is unreachable (the pedals can be put there though).
So in the end the 88 keys can have the two manuals mapped over them but you never can use more than 61 keys. There must be dead regions.
Seems dumb (sorry)
One would have like the split point to not move when I transpose the upper region to use the top octave of keys, so I essentially gain an octave if I do that. Also would like transposing the lower manual to use the bottom octave of keys to be possible (also without changing the physical split point on the keyboard). Now it will not go down there, it only transposes without adding any physical keys to the input even if they now would map to the valid range.
I know that most keyboards will let you setup zones transposes and channels to achieve this but sadly not mine. I just have channel 1 across all keys that is it. It seems you almost gave me what I need but somehow dropped the ball on the goal line.
I took a look at the source code being a computer scientist, but I had trouble finding what to change.
Sorry for all the text. One more point. Even if I had a keyboard that could set this up it would not help me as I use many keyboards, whatever is available, so I count on the setup being on my laptop not on the keyboard.
It's been nearly a decade since I've looked into key-split,
I took a look at the source code being a computer scientist, but I had trouble finding what to change.
The relevant part here are the loadKeyTableA
, loadKeyTableB
and loadKeyTableC
functions in src/midi.c
Jesus that was quick, I will have a look.
Hi again,
Yes it was simple enough. I believe I found the problem and fixed it in the attached code. It should now work to use any keyboard zone from 0 to 127 at the same time for any regions of the B3 manuals.. Rather than forcing there to be gaps in coverage.
I did not change the loadKeyTableB or loadKeyTableC. They could be made to work differently but that was not my issue. They assume one is playing from a 61 note keyboard but maybe that makes some sense for those, but not for loadKeyTableA.
I put some long comment explaining the short code in the file. Hope this can be propagated to the repo.
cheers,
/john
That looks reasonable. Would you mind posting the output of git diff
- or file a pull-request?
I was rudely trying to not learn how to use git (again). Normally I mess that up and call one of my grad students to fix it. (Yes I am old, stopped serious programming when git came along. Learned and then forgot it a few times now... )
My downloaded version (not branch) complies fine but I have not tried it with the keyboard yet.
Here is normal diff:
The background of my mucking with this is that I really like your B3 sound but the GUI gave me hung notes too often. So I ran with scripts and no UI. Now I have built a physical control panel with sliders and have that sending all the stuff the GUI did but setting up splits was not working and now might still be awkward. I may make some more mods to the code now that I see how it works. Perhaps add using control messages to set these split points for example so that I do not have to use up all the program presets for that .
Really great program though thanks a lot for it. My band mates have praised the sound.
/john
Ok tested with my keyboard and the bottom got fixed byt the gap remained. I fixed that now too.
New diff; diff.txt
new function;
I'd love to be able to call a grad-student to clean up after me :) clang-format
to the rescue.
Applied as c7445edc152. Thank you!
In "default.cfg", i've only found config parameters for setting the "transposition" of split-regions, but no way of configuring the split regions itself.