Tagged: ui design
April 14, 2018 at 7:38 am #83498
having a little detour to sort out how to display
drum pad voice assignments on the midi keyboard.
not quite right yet…getting there, but some issues
(it is highlighting wrong key with single pad, but seems
ok with full ‘kits’)
i’m mixing up which list it should be calling from…
also some issues with how to display:
1/more keys in given space
2/more number characters for each key – can only do 2…
April 15, 2018 at 8:33 am #83505
- This reply was modified 9 months, 1 week ago by human fly.
>>>May 5, 2018 at 5:25 pm #83780
have a new version here.
pad select method just redone, unpacking subfunctions,
then condensing(could go further; it stops working if
i change too much in one go. just realised i now have
to do this with the other main methods too)
once again, the idea is to use a few modulators to
show data from many parameter groups, so it’s more
of an experiment than a panel project (if it ever gets
next hurdle is how to make the current voice the ‘multi’
voice: with the rx5 and 7, when editing, you’re offered
the choice to make that voice the multi voice, spread
across the top 12 pads. (not figured out yet…)
little check that system is working:
if you randomise the voice on any pad, and then go to another
pad, and call up the same voice there, the parameters will
jump to the same settings when you click on the new pad.
(have to make that automatic)
of course: it’s the same voice table it’s being updated with.May 8, 2018 at 8:07 am #83794
Checking the screenshots of the Soundquest editor may be interesting. The interface is as ugly as it gets but you can see the editable parameters.
You can see that there are two midi modes. One spreads all voices on the keyboard and You can edit for each of the 100 voices at which note it should play. This way you can trigger more than one voice per note. The other mode assigns a voice on each midi channel. It will then play one voice spread across the whole keyboard.
It’s probably possible to switch mode by sysex messages.
interesting interpretation. i admit i wasn’t seeing it quite like that.
but i have not at all used the Multi job, or had the RX7 connected to
a MIDI keyboard yet.
i just assume that ‘multi voice/yes’ assigns the current pad’s voice to
the top row of 12 pads. until now i have been focusing on regular drum
machine mode, where, as i see it, the 1OO Voices can be assigned to
any Pad/Key, as many times as you want, with the ‘Key Assign’ parameters
defining MIDI IN Note and Channel, and somehow, MIDI OUT Note and Channel.
the manual and service manual are not very clear about this.
i need to check it out with a midi keyboard plugged into it.May 9, 2018 at 8:40 am #83795
- Topics: 13
- Replies: 508
- Total: 521
I think connecting a keyboard and trying to send messages from the panel to the rx7 would be a good idea. I had a bit the impression that you are putting the cart before the horse when you were developing the panel without sending any sysex to the device. I see that it is hard to build messages for the rx7. Most sysex messages include a checksum. It would have been one of my first actions to make a routine who calulates the checksum. Then I would start with something relatively simple like editing the voice parameters.
But that’s just me, you can develop your panel as you like.May 9, 2018 at 9:21 am #83796
the cool thing about the RX7 is that it will send its
last-edited parameter when you press the ‘enter’ button,
so i figured i could reverse-engineer from that, and i
have done a list already of all the messages.
you are no doubt right about working out that routine,
and this is perhaps the point where i must look at that.
i wanted to figure out the overall structure of how the
panel would work first, thought that was an important
decision, ie: to have my tables system, or make individual
modulators for … (120 x (21+12))x2 parameters ! (which
i want to avoid)
figuring out the multi-voice is the last step i need to
get through before i attempt the sysex. but maybe i should
try to get a message to it first and see what happens, yes.
i tend to not sit with the device next to me, connected to
Ctrlr – mainly because i’ve been learning Lua primarily.
this tables build/retrieve system is quite adventurous for me.
time to pull out the RX7 🙂 and i would really appreciate
your input as i attempt to make a rock-solid sysex
send/receive system, as it could go horribly wrong crashing
an old slow box like this. (it’s easy to do a factory reset
though) – it will be a few day yet before i have something
to show there, and in the meantime, i have a couple of users
responding on yamahablackboxes group, to talk about this
multi-voice mode. most confusing system, i must say…May 10, 2018 at 11:23 am #83804
- Topics: 13
- Replies: 508
- Total: 521
I see, yes this could probably be a way to make a comprehensive panel. I usually start with the simplest possible task e.g. making a panel where you can select a voice and edit its parameters. I hadn’t the sysex implementation in mind when I mentioned the checksum. Fortunately it is not needed for editing voice parameters. But creating a voice editor is not as trivial as it may seem. For many paremeters you will have to split values into two MIDI-bytes. Yamahas sysex documentation is typically “japanese awkward style” but nevertheless it explains everyting you can do when controlling the device via MIDI/sysex. Studying the data sent by the device is no doubt very helpful but for understanding the whole MIDI/sysex implementation there will be no alternative to studying the documentation thoroughly.May 10, 2018 at 1:33 pm #83808
i have read this kind of sysex doc’ before, so
i’m fairly confident i can figure something out,
and ‘cheat’ with the Enter button for quick
visual confirmation in midiox.
haha we’ll see though 🙂
i did decide to set it to one side while i worked
out if i could do my tables thing: very valid for
things like drum machines where you get lots of
repetition. remains to be seen what will happen
when sysex-time comes. i’ll probably be calling out
for help then, to get some sort of timed-release
message thing set up.May 13, 2018 at 6:37 am #83848
here’s the sysex results i’ve got from it so far, to have
a look at the format:
(this is what i discovered reading off messages with my lazy
technique of hitting ‘enter’ and picking them up with midiox)
voice bulk dump (voice #00, BD1):
43 Bytes:(highlighted voice number with asterisks)
F0 43 00 0B 00 23 4C 4D 20 20 38 35 31 35 56*00*02 78
36 07 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 36 F7
single parameter message:
(‘??’ was where i found variations, i think; must be msb)
F0 43 10 03 51 V# pp ?? vv F7
eg:(value byte as per what i found with this voice)
voice edit/job 02-05
decay F0 43 10 03 51 41 01 19 F7
brate F0 43 10 03 51 41 02 00 F7
bRange F0 43 10 03 51 41 03 00 F7
level F0 43 10 03 51 41 04 36 F7
pan F0 43 10 03 51 41 05 08 F7
and here’s what happens with negative values,
repeat pan: -14<>+14
(4th repeat,pan = 14h (param byte)
F0 43 10 03 51 41 14 72 F7 > 72h-7Fh = < -14 - -01<0>
F0 43 10 03 51 41 14 0E F7 > 00h-0Eh = <0> – +14>
just to have a look. can’t remember off top of my head
what i concluded from the -/+ parameters, but it made
sense seen as a midiox list.
right, i’m off to make a little fader with a message
on it to see if i can get the RX7 to respond.May 13, 2018 at 6:54 am #83849
in fact, i’m still trying to refine behaviour of
the Pad select method – it works but can be condensed
it gets a bit complicated trying to introduce ‘multi’,
so that the last selected voice gets mapped to the top
12 pads, because those then get a different set of values
and voice assignments.
it means introducing an ‘if’ statement somewhere, dependent
on the state of the single/multi button. if i put it in the
wrong place, method gets broken.May 16, 2018 at 8:26 am #83963
yeah well, it’s getting horribly complicated with the
what happens on the drum machine itself is that you
get the top row all the same voice, with pitch offset,
and then the rest retain their normal function.
trying to represent this in Lua is total :p
nowhere near sending a sysex message yet !
i will have to do a simple panel with a few faders to
or maybe just skip Multi for the time being. made a start
on it anyway; found out how to have the same voice for all
12 pads, or revert back to normal selection if not the top row.
(actually almost about the sell the machine anyway)
May 19, 2018 at 11:59 am #84002
- This reply was modified 8 months ago by human fly.
little bit of progress.
see what you think of this version > panel below
(these panels have no external resources so they
should run straight off as intended)
it’s happening in ‘panelSelect’ method – very drawn out
in there at the moment, with parts repeated – why i wanted
to use subfunctions – but it’s beginning to behave like the
multi-voice mode. have not yet built the pitch etc. offsets
per ‘multi-key’ (toprow 1-12) – and: not confident yet how
many voices can be multikey: i assume one multikey per
‘keydata’ set? ie: 0-4
maybe that’s wrong: you were talking about being able to
have one multi on each midi channel. what happens on the
machine is you get to job# 03? and it says multi or voice?
and you go ‘yes’ to go multi with that Voice. eg: all the
top row ‘Keys’ of that RAM keydata group now adopt that
Voice, and the Multi pitch offset etc. parameters.
the remaining bottom row behave as before, with their
individual ‘Key Assign’ parameters dictating their pitch,
and other Key Assign parameters.
yup, so that answers it for me: 5 multi tables needed,
working in same way as tables for the Voice and Key Assign
tabs. (when Multi is selected, the uiTabs calls a 3rd page.
these parameters will use the same system for retrieving
and writing to individual tables, is the plan.)
feel free to point out if that’s wrong, it’s how i
interpret it atm.
also, one thing that is confusing in the sysex spec is
where the midi note and channel settings belong:
note and channel in, but also
note and channel out, which appear to be in separate
parameter categories. eg: per voice, or key, or system.May 19, 2018 at 12:03 pm #84004
note that it captures last selected Key as the source
of the Voice that will be place across the top row.
(all very rough-sketched, proof of concept etc.)
edit: there’s a bug if you click ‘Keyboard'(/’Pads’)
when ‘Multi’ is enabled: the pad uiTabs disappears.
have to select ‘Single’ and operate the Keyboard/Pads
button to restore view.May 19, 2018 at 1:18 pm #84006
slightly improved version. that’s it for today.May 20, 2018 at 9:27 am #84023
now memorising and recalling offset parameters for
12 multisteps x 5 user keydata.
ie: each ‘keydata’ memory can only have one multi,
the multi just replaces the regular ‘key assign’ status
of those pads. that would mean you can set up 5 multis
using all 5 user keydata.
using same sort of thing as with writing voices and
value change triggers buildMultistep method.
fetchMultistep is in LibraryA
added a couple of new tables for it.
(a bit of a mess in there still but it sort of hangs
together)May 20, 2018 at 9:32 am #84025
sorry, that one crashes a method, try this one,fixed.May 20, 2018 at 9:58 am #84027
last version for today. now only shows
the current kit button in multimode.
have to exit to change kits now.
>panelMay 21, 2018 at 9:14 am #84030
re-arranged, simplified the UI:
(ahem.. quite chuffed with this: memorizes and retrieves
tables for Voice, KeyAssign, and the Multi steps – check
by randomizing pad values, changing keydata, etc.)
‘dev reload’ resets everything. single/multi assigns
current selected pad to 12 top pads in that KeyData memory.
(none of the other left side buttons do anything yet, apart
from save which collects some info on keydata to console,
and keybd/pad which toggles the keyboard display view, in
so this is more or less the structure for the operation
of the panel. now needs work on LCD layout, more info in
the Multi display – and MIDI channel and note in/out.
May 24, 2018 at 4:27 pm #84097
- This reply was modified 7 months, 4 weeks ago by human fly.
would like to randomise and overwrite a key/index
in a table, for 12 consecutively numbered tables.
ie: get the first key, ‘pitch offset’, for each
of the 12 multi-step pads, and perform operations,
usch as randomise, reset, pitch ascending, descending,
wondering how i can do this if i only have one set of
modulators… each pad recalls a table of values to send
to the modulators. it has to rewrite the tables, randomising
the value of myTable..n[ 1 ], for 12 individual pad tables.
and then retrieve the appropriate table depending on which
pad is currently selected. (…)June 4, 2018 at 11:40 am #84190
getting more elegant with the layout, smaller/more compact.
still got loads to figure out. one or two little tricks in
Lua though – hey i eventually learnt to do a few things with
so it looks like the only way to amend table entries would
be to rewrite the table, maybe using a temporary local table?
i’ll check this out again later.
>>panel version below
- This reply was modified 7 months, 2 weeks ago by human fly.
You must be logged in to reply to this topic.