Alesis V-Series Editor

What other apps and distros do you use to round out your studio?

Moderators: MattKingUSA, khz

Baggypants
Established Member
Posts: 188
Joined: Fri Jul 31, 2015 11:28 pm
Has thanked: 14 times
Been thanked: 8 times

Alesis V-Series Editor

Post by Baggypants »

If you have an Alesis V-Series (I got a VMini at Christmas) you'll be aware that the editor app for changing the pads, knobs and buttons is Windows or Mac Only.

Some clever person reverse engineered the V-25 https://github.com/le1ca/alesisvsysex and I then fudged their code around to make it work with my VMini https://github.com/Baggypants/alesisvsysex

Hopefully the original dev will absorb it into their code. And some other people with different sized ones will chime in and together we can take over the world!
nyef
Established Member
Posts: 8
Joined: Sat Apr 14, 2018 3:32 am

Re: Alesis V-Series Editor

Post by nyef »

I recently picked up a VI49, and... because it has multiple "preset slots", it uses a different (but related) protocol. I'm still working (slowly) on reverse engineering the configuration encoding, but I do have the upload / download protocol bits worked out.

I also found that the VI49 configuration editor works fairly well under Wine (modulo the usual font-related issues for tightly-constrained label controls). Doesn't really help if you're on something fun like a PA-RISC, PowerPC, or ARM system, but should be good news for people with more-normal environments, and means that a full windows VM or dedicated machine isn't actually necessary to do the reverse engineering.

My current belief, having examined the two variants of the alesisvsysex program, and having experimented a bit with my VI49 and the supplied editor, is that a program could be written to support all of the V25, the V49, the V61, the VI25, the VI49, the VI61, the V Mini, and possibly the Vortex Wireless and Vortex Wireless 2, with save files compatible with the windows configuration editors.
Baggypants
Established Member
Posts: 188
Joined: Fri Jul 31, 2015 11:28 pm
Has thanked: 14 times
Been thanked: 8 times

Re: Alesis V-Series Editor

Post by Baggypants »

Glad you're finding it helpful. The original author states that it was designed to be extended to incorporate other models but it wasn't obvious to me how to do that so I just retrofitted the original for my mini. I was fortunate I had a windows vm I could snoop on the usb with. Unfortunately the original author isn't responding at the moment.

What needs to happen is the sysex codes needs to be split away from the functions into variables and then read in from a per-device configuration file.

I also thought that it should be possible to write a small discovery polling program that iterates through the header possibilities requesting a dump from an unknown device model.
nyef
Established Member
Posts: 8
Joined: Sat Apr 14, 2018 3:32 am

Re: Alesis V-Series Editor

Post by nyef »

I suspect that the "easy to incorporate other models" bit is the way that the UI basically data-binds itself to the model (see ui/components.py and ui/values.py). Everything else looks to be fragile relationships, tight coupling, and little-to-no parameterization. And even the data-binding is... not great. There's cleverness and some amount of magic in it, but overall it's prototype-quality code. I don't know if I want to improve this program, to write a new program, to merely document what I can about the VI61 in particular and the V series generally, or to give up and just use the given config editor in wine.

Finding the headers required for a new device should be trivial: Get a save file from the configuration program. For the VI49, it was formatted as though it were a sysex message (but not one that I expect would work: it's for a non-slotted configuration, and the stored message length was for the VI61), and it has the device ID in the header, and the length information is likewise obvious.

I tried the "discovery program" thing. It took hours to run. And in the end it turned out that I was running it against the wrong MIDI interface, and my device uses a slotted configuration and a byte-by-byte protocol for accessing the configuration data so it probably wouldn't've found anything anyway.
boobz
Established Member
Posts: 5
Joined: Wed May 23, 2018 12:30 pm

Re: Alesis V-Series Editor

Post by boobz »

Hey,
I want to buy Alesis Q49, it should work similar to V-series, but there's no pads. I want to use it with Reason and some VST plugins on Ubuntu. Is it required to configure it via some Alesis software? Buttons and wheels will work by default, just as they are on my Korg nanoPAD2?
nyef
Established Member
Posts: 8
Joined: Sat Apr 14, 2018 3:32 am

Re: Alesis V-Series Editor

Post by nyef »

My impression of the Q series, including the Q49, is primarily from reading the Alesis website.
Note the lack of any configuration program in the "Download" section, and the hard-to-read-at-that-image-resolution notations above the keybed that appear to be various configuration options. A look at the quickstart guide (available in the "Download" section) confirms that configuration is done from the keyboard itself, rather than via an external program.
boobz
Established Member
Posts: 5
Joined: Wed May 23, 2018 12:30 pm

Re: Alesis V-Series Editor

Post by boobz »

Thx for your answer. Anyone tried to use Alesis keyboard with not-Alesis USB active hub? In 'quick guide' there is an information it can not work correctly with USB hub and it should be connected directly to the computer.
nyef
Established Member
Posts: 8
Joined: Sat Apr 14, 2018 3:32 am

Re: Alesis V-Series Editor

Post by nyef »

That bit about the USB hub appears to only be in the "Troubleshooting" part of the Q-series manuals, is that where you found it? I certainly didn't see it in the VI49, VMini, or V25 manuals. My interpretation of that is more "if the keyboard isn't working and you are using a USB hub, try not using the USB hub" and not so much "the keyboard will not work with USB hubs". I'll admit that the description in the manual is possibly poorly phrased, in any case.

I am having a failure of imagination when it comes to the concept of a USB device that cannot be used with hubs (how would that be implemented?), but I can easily imagine a hub that cannot be used with certain kinds of device (IIRC, USB 2.x added transfer types not available in USB 1.x, so a USB 2.x device connected through a USB 1.x hub might not provide full functionality, or maybe it was a high-speed vs. full-speed vs. low-speed thing, I'd have to look up the details). Or you could connect "too much" to a hub, which can try to draw too much power, which would cause things to not work in various ways (though the attempt isn't supposed to damage anything, FWIW).

Removing the hub is a fairly simple troubleshooting step: If you had an electric lamp plugged into an extension cable, and the lamp didn't work, would you not try either plugging the lamp directly into the wall or plugging something else into the extension cable to try and eliminate the extension cable as a cause of the problem? Similar logic applies, except that (as noted above) it may be that the metaphoric extension cable (the USB hub) works well enough with other things, just not the lamp.

At any rate, host USB ports are rated for 1A, and Alesis keyboards appear to draw half that at most (they seem to call for 500mA supplies, and such things are specified with at least some overhead), so you may be able to get away with a bus-powered hub, depending on what else you have connected... Presuming that using a hub works at all. Thus far I've only tried a direct connection, and only with a VI49 and VI61.
nyef
Established Member
Posts: 8
Joined: Sat Apr 14, 2018 3:32 am

Re: Alesis V-Series Editor

Post by nyef »

Baggypants wrote:Glad you're finding it helpful. The original author states that it was designed to be extended to incorporate other models but it wasn't obvious to me how to do that so I just retrofitted the original for my mini. I was fortunate I had a windows vm I could snoop on the usb with. Unfortunately the original author isn't responding at the moment.

What needs to happen is the sysex codes needs to be split away from the functions into variables and then read in from a per-device configuration file.

I also thought that it should be possible to write a small discovery polling program that iterates through the header possibilities requesting a dump from an unknown device model.
About a month of off-and-on hacking later, I present https://github.com/abridgewater/alesisvsysex, which should work for the VMini, the V25 and the VI49. The VI49 model is still a bit rough, and there are still quite a few loose ends left, but progress is progress. I haven't been able to test with a V25 or VMini, so I hope that I haven't broken those, or at least haven't broken them too badly. Would you mind doing at least a basic smoke test on the VMini for me?

I changed the save file format so that the V25 and VI49 save files are compatible with the windows editor, and the V25 and VMini save files are valid SysEx messages that can be sent to the keyboard by other tools to set the configuration. I also tightened up bounds checking on quite a few parameters, so generating bogus configurations should at least be harder. The MIDI channel should no longer be off-by-one, for example.

Incorporating additional devices should be fairly obvious now that there are three supported devices. I plan on adding the VI61 around mid-month (there's a small matter of having access to hardware).

Rough edges include but are not limited to:
  • Slotted-config devices (the VI-series, and possibly the Vortex series if we can support those) are hardwired to slot 1 at the UI level.
  • There's no way to select a desired model other than having it connected at startup or loading a save file.
  • MIDI-to-DIN toggles are not exposed at the UI level for devices with a DIN MIDI port.
  • Program Change messages are still not supported.
  • Error handling with MIDI communication is still a matter of ungraceful crashes.
  • Default save file extensions are still all ".syx", rather than matching the windows editors.
There are probably other rough edges as well. With a bit of work, we can do better than this. We can possibly also do better than the software that Alesis provides (as an example, for systems with a split keyboard option we can have a drag slider within a graphical representation of the keyboard for adjusting the split).
Baggypants
Established Member
Posts: 188
Joined: Fri Jul 31, 2015 11:28 pm
Has thanked: 14 times
Been thanked: 8 times

Re: Alesis V-Series Editor

Post by Baggypants »

Excellent piece of work! Thanks for continuing it.

Works fine on my VMini. "Load from device" opens a whole new window each time which is a little unexpected. I'm not sure if that was intentional.
nyef
Established Member
Posts: 8
Joined: Sat Apr 14, 2018 3:32 am

Re: Alesis V-Series Editor

Post by nyef »

Baggypants wrote:Excellent piece of work! Thanks for continuing it.

Works fine on my VMini. "Load from device" opens a whole new window each time which is a little unexpected. I'm not sure if that was intentional.
Wonderful! Thank you.

Yes, the open-in-new-window thing is intentional. It's a lot easier to spawn a new window than to replace the model of an existing window, especially if the model structure changes (such as for a different device).
Jojo_Action
Established Member
Posts: 3
Joined: Wed Dec 09, 2020 9:46 pm

Re: Alesis V-Series Editor

Post by Jojo_Action »

Hello,

In first place I want to say thank you for this piece of Software...don't know why but the original editor I don't like...I like the Idea to have an editor working on linux, without wine-ing about windows...

So I had/have the "Problem" of owning the Alesis V49 and I was trying to get the alesisvsysex working with it. Of course it just supports the few devices named in the description, but I was somehow interested in understanding how I can make it work for the V49, because it was said it should be relatively easy to make it work with the other Models of this Line...

So I don't have a lot of knowledge about programming and stuff but I always have been playing around with linux/ config-files and stuff over the years...and from a good friend of mine I heard checking out python-code is easy, so I was looking in the files and tried some things. I read about how Travis Mick was reverse engeneering the Editor: https://lo.calho.st/posts/reverse-engineering-sysex/ And it inspired me to do things like he did to find out more about the V49.

So to sum up the things I did a bit:
Together with the friend who helped me a bit we (1st) came to idea that the ./protocol/model.py is the file that makes the Software and the Hardware talk to each other or recognize themselves/ make the know about each one. (Is that right?)

Then we thought V25 and V49 look the same and should have the same Hardware inside except more Keys on the Keyboard, so we can copy the lines 434 to 458 to set up a new device class AlesisV49 and also put this in the beginning of the File where all the models are presented before...

But the problem is that there is this device-id which is the missing bit to make the program work and really know to which device it is comminicating...

I think I got the right two digits by comparing a Save-File from an AlesisV25 to the Save-File of the AlesisV49. Because first I had the smaller device, but I need more Keys so I switched it at the shop for the bigger brother...Anyway the comparison of those two files with hexdump showed that they were the same except the fact that V25 has the "41" in the first row but the V49 has "42" instead in the same place of the file.

Since I gave the new Device-class the Device-Id 0x42 the program started without any problems and was successful with downloading a configuration from device...

Can I be safe, when I try to upload adjusted configuration? I am not shure, because I havent read the whole code yet and I am not shure if I can understand how it really works alltogether...so if somebody could help me out that would be great...

Ah, and when I was trying to snoop on the USB-traffic i was getting this:

--------- Request # 27 ----[OUT]----

URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER

Length: 0x80
USBD Status: USBD_STATUS_SUCCESS (0x0)
EndpointAddress: 0x1
PipeHandle: 0xFFFFE0005D035530
TransferFlags: 0x2 ( USBD_TRANSFER_DIRECTION_OUT USBD_SHORT_TRANSFER_OK )
TransferBufferLength: 0x10
TransferBuffer: 0xFFFFE00057FEAFB8
TransferBufferMDL: 0x0
UrbLink: 0x0

** Data **
14 F0 00 00 14 0E 00 42 14 62 00 5D 15 F7 00 00


Maybe thats also a bit more Information which can help...


Kind Regards, Jojo
Last edited by Jojo_Action on Wed Dec 09, 2020 10:59 pm, edited 1 time in total.
christobal
Established Member
Posts: 108
Joined: Sun Sep 01, 2019 12:58 pm
Has thanked: 21 times
Been thanked: 11 times

Re: Alesis V-Series Editor

Post by christobal »

I just ran the windows version. Worked fine for my V49 through wine.
OS: Manjaro
Amp: Echolette M40 / NG51S Tape Echo
Strings: Martin D15M, Yamaha FG-180, Alhambra 5P, Yamaha Revstar
Jojo_Action
Established Member
Posts: 3
Joined: Wed Dec 09, 2020 9:46 pm

Re: Alesis V-Series Editor

Post by Jojo_Action »

I'm shure it works, but I don't like to install Wine for just this piece of Software...thats why I took the hassle to mess with the code of this Editor from Github.
Would be cool, if somebody who knows more about the code, e.g. the author would confirm what I did was right...
Jojo_Action
Established Member
Posts: 3
Joined: Wed Dec 09, 2020 9:46 pm

Re: Alesis V-Series Editor

Post by Jojo_Action »

Hi,

now I think I got it working for the V49. But I kept it simple, taking the first Version for the V25, comparing it to the Vmini and changing the code which differs in each version with the values that fit with the V49.

The V49 has another "some sort of header" as described in the article from Travis Mick on reverse engineering the SysEx of the Alesis V25.
By comparing the saved configurations of a V25 with a V49 and by capturing the USB-traffic it was passible to find the differences and matching bytes.
In conclusion I would say that this header important to make the hardware work with the software.

00 41 XX 00 5d (V25) XX=61/62/63
00 42 XX 00 5d (V49)
00 49 XX 00 38 (Vmini) [?=thats my conclusion from the code, is that right]

The version of the Editor that also has the other Keyboards supporting, was to much difference in the code. That was to difficult to check out and adjust.
So i put the adjusted Version in the Attechments...I don't guarantee for anything, and I hope that it is okay to share here...

Kind regards, Jojo
Attachments
alesisvsysex-masterV49.zip
Editor for V49
(49.86 KiB) Downloaded 164 times
Post Reply