Sending messages via USB

Greetings, all!

I am considering investing in a light-up external keyboard for the Hapax. I currently use a Arturia KeyStep 37 for when I don’t want to be in the isomorphic keyboard style of the Hapax pads.

Inside the Hapax, you can set your scale to major, minor, augmented, etc. This setting “removes” the “incorrect” notes from the isomorphic note pads. The Roli Lumi Key works in a smiliar way, it is a 2-octave keyboard, but when you change the scale/key, the “correct” corresponding notes light up.

Is there a way to create a connection between these two devices, to where you can send the scale information to the Lumi Key via USB so the correct keys light up when any given scale is selected in the Hapax?

I would assume it would need to be through USB for it to work, given that I would need note information coming < out > of the Lumi Key, but scale/note/light information sent > in < to the Lumi Key.

I am sure this is clear as mud, but I hope it made sense!
Thanks in advance for reading.

Hi!

Is there a way to create a connection between these two devices, to where you can send the scale information to the Lumi Key via USB so the correct keys light up when any given scale is selected in the Hapax?

That’s not currently possible, and is unlikely to be supported in the future.
Such special communication would require both devices to agree on a way to do this.
The LUMI Keys seems to have been “reversed engineered” enough for people to have figured out some Sysex commands that can be sent to change some parameters.

So technically, Hapax could send these specific commands when necessary. But these would only be valid for the LUMI keys, so it’s very unlikely we’ll integrate these in the firmware.
On top of that, we don’t even currently allow Sysex through Hapax (this may change).

2 Likes

Squarp being so small I wouldn’t think of proprietary integration like this being worthwhile.

Isn’t this exactly the sorry of problem that midi 2.0 is supposed to solve, though?

With bi-directional communication and json as the format for encoding complex info like this it becomes much easier to solve this in a standardized way.

I know squarp, being such a small team, has been reticent to consider midi 2.0, but over the lifetime of the hapax it will become much more relevant, even just as a passive router between midi 2.0 gear if you want the hapax to be a hub. (Whew! That’s a run on sentence)

We’re not making it a priority, but hopefully someday :sweat_smile:

Granted I wouldn’t expect it to be integrated into firmware whatsoever given that it absolutey is a proprietary thing. That said, it is -technically- possible for Hapax to send the correct sysex info to the Lumi Key, how would one do that? I am sure it’s here on the forum and once I’m done typing this I will check, but would sysex info be sent via an instrument definition or some other means?

Long and short, all I’m hearing is that “it’s technically possible” translates to me as a challenge that I’m happy to undertake haha

1 Like

The hapax would not be able to send it, but an intermediate device could filter and map from a PC/CC/NPRN to specific sysex sequences.

This would either need to be sophisticated product like a bome box or something diy like this: GitHub - rppicomidi/pico-usb-midi-processor: Use a Raspberry Pi Pico board to process USB MIDI data between a USB MIDI Keyboard or other device and a PC or other USB MIDI Host

1 Like

Thank you!!! I knew there was a solution… I didn’t forsee something as in-depth as the pi, if my solder skills were further along I would go for that but I’m concerned about damaging the gear. The bomebox may be the answer!

Given that a pi pico is around $6, you could try prototyping with a breadboard to see if it works.

1 Like

good call!

Also, there’s this, ready to go! Overview | Adafruit Feather RP2040 with USB Type A Host | Adafruit Learning System

1 Like

I really appreciate all the help and response I got here, it definitely pointed me in several directions and gave options.

Given that I have not ventured myself into soldering my own components etc, nor do I have the gear to do so, I opted to go with a “in the box” prefab unit. The BomeBox is on it’s way and should be here in a few days, as well as two Roli Lumi Keys for a scalable setup of either 24 or 48 keys. I also purchased the Bome Midi Translator Pro program. I know there are several mirrors where I could have got a “demo” of the full version, but I opted to support the programmers given the power and usefulness of this tool.

I prompted ChatGPT on what the best course of action was, given that I don’t have the units in front of me to toy with yet. It seems that the Translator Pro will give me incredible access to see all commands MIDI in and out. I did find through a long chat process with GPT, that the program/control change for the scales are recognizable via midi via usb, so I will be able to set the individual conditions within the box to translate the scale information into key-light output.

My only concern at this point is if I have to input each line of code, which I already figured I would have to do to a point. But there is the potential of having to code each note from each scale into each light. Say C major scale I would have to set up an input condition of that program change to correspond to the output lights on the C, E, and G keys. If I had to do this for every scale, it would be a bit cumbersome, but at the end of it all, I could not only have access to the Hapax’s isomorphic keyboard, but also the 24/48 key configuration with the proper lights.

Every once in a great while I will get to diving deeper into music theory and I would love to know how to better play a standard keyboard based in specific scales, I think this will be not only a great tool for creating, but also learning while I go.

I will report back once everything is up and running!

You could also try the Retrokits RK-002 smart MIDI cable. Runs on Arduino and you can convert CC or note data into SysEx commands (I use mine to convert MIDI CCs into SysEx for some older synths I’ve got that don’t naturally accept CCs for things like filters, etc)

There are some example firmwares here, so you can get an idea of what you can do.

1 Like

So I believe I have everything set up correctly via the BomeBox, Lumi Key, and Hapax… MIDI OX is seeing the CC messages from both devices, both devices are plugged via usb to a hub to the bomebox.

What I’m having issues with now is figuring out how to see what state the hapax has to be in when switching between melodic scales. Once I learn that “language” i can teach the bomebox to read it, and in turn light the correct and corresponding keys on the Lumi Key.

I didn’t find anything in the limited MIDI implementation I could find on the Hapax, but I did find a MMA standard for real-time scale octave tunings both in 1 and 2 byte formats…

So far I have learned that according to the MMA, 7FH refers to real-time system changes, 08 nn is the MIDI tuning standard, and the codes 08 and 09 refer to the scale/octave tuning in 1 and 2 byte formats, respectively.

So, if the plan is to “read” sysex messages from Hapax, it would be something similar to
F0 7FH 08 NN 08 F7

Beyond new to this mode of thinking and programming, any further suggestions would be greatly appreciated.

Some moderate successes, but leading to more questions, as is tradition haha

The Lumi Key was essentially plug-and-play with the Hapax, giving immediate midi input TO the hapax with no problem. It seemed to be an issue of output routing to allow the Lumi to respond with light feedback by using the effects chain to re-route the output to also transmit to the attached device.

That being said, I still have not found the solution to being able to “see” the sysex (or other format) information that is signaling for melodic chord change. I thought I had found a solution from the MMA in their MIDI standards, but as with the above string, I am not learned enough yet to fully use these functions. I know now that in my attempt at a sysex string above that nn is referencing a variable and the three character byte is also not in proper format…

With more digging, I am finding that I will need sysex implementation information from the team directly to acheive what I am trying to accomplish.

I will reach out to support directly and report back my findings.

It might be a good idea to put in a support request to find out what is currently possible and what might require a firmware update.

1 Like

When I reached out, I believe they thought I was requesting an update instead of asking what was currently possible :confused:

It would be worth clarifying, but that may be because it isn’t implemented and what you’re looking for just isn’t possible right now. There’s a good chance project scale is just something internal without any interface through midi.

1 Like

Also, since you’ve done all this research and there is a standard that could be implemented, you could put that together on a feature request.

1 Like

Right fair enough. That said, in my digging I believe it would be more along the lines of sending sysex which is mentioned several times across the forum here that it isn’t high on the roadmap, if at all.

MIDI 2.0 could prove a possible bridge, but that’s mentioned several times in the forums and even in this thread that 2.0 isn’t anytime soon either.

I guess through all my efforts I was hoping to find a way to access the internal programming via software rather than rewiring or hijacking internal hardware components as that’s out of my scope, but it was a worthy try.

I have been on the Bome forums and a work-around would be using another midi knob, route it to the LEDs on the keys, and create a lighting pattern that corresponds to the correct mathmatical values of the melodic scales. Granted if im not careful I could have the hapax set to Minor Dorian and the lights set to Major etc, but I have a spare Rpi that isnt being used for much, so maybe using a secondary LCD to display what note pattern the lights are following.

I don’t know if that made sense, I’m back at the office after only being off for 7 hours. But with the forums here, on Bome, and utilizing ChatGPT I have been able to find some basic “if/then” value statements that should be easily read by the Lumi.

The saga continues ha

1 Like

Another couple of options:

Send a midi cc or NPRN from the hapax and use the bome to translate to a setting for the lumi.

The other option is to have an intermediate device able to detect scale from notes played and send the appropriate sysex along. (I.e. hold a button, okay scale in live mode and send sysex on button release).