Livid Code v2 presets - loading from harddrive using MT

christian5

2017-03-07 16:13:57

hello,

first of all, i´d like to thank all the users that made the last forum the great knowledgebase it now is ! It really helped me to get some first understanding about miditranslator.....nevertheless, i´m complety stucked for days now and any hints are welcome...thx*

i´m using the livid instruments code v2 for controlling resolume. it comes with a pretty nice editor software to change the behavior of the encoders, led´s etc...as the controller can only store 4 banks to its internal flash memory, the editor allows to load presets *on the fly*, directly from the harddrive.

therefore the only way, besides using the mouse, is to map 2 buttons to cycle up/down the pesetlist....by now i´m using 9 presets and all oft them has once to be loaded to the controller when switching between the first and the last preset...

so i just want to set a single button for each preset, making it possible to switch directly...

but i have no clue what even happens when hitting the cycle up/down button...below, i attached a screenshot of mt´s logwindow when switching to preset 7...according to the livid-instruments-wiki, F0 00 01 61 04 7F F7 only means the previous message was handled correctly (ACK Positive Acknowledge)...this message is repeated several times whenever you cycle up/down the presetlist....nothing else..

on the left side i attached a max runtime window which can be displayed by the livid-editor..it again shows the example of switching to preset 7, but didn´t really helped me, to figure out how to set up those switch-buttons....

i hope someone of you is able to understand my school-english skills without suffering a multiple twisted brain:) ...and maybe got some ideas ...

 

--

best regards from northern germany


Attachments:

jpg.jpg

Steve

2017-03-07 17:53:58

comment

Hi, I will try to help but want to ensure I validate your needs correctly

You use Livid Instruments Code V2 to control Resolume
Controller has 4 banks but can load additional from supplied editor (from Livid) as needed
Existing controller buttons for loading additional banks/presets from editor sends sysex messages up and down only
Instead of up and down you want to select directly a given preset with a single button since you have 9 possible ones you don’t want to have to push up button
8 times for example.
The button you push currently is on the Code V2 controller and is sent to the Livid Editor which loads from a given file.
You want to figure out how to translate a button (midi message) coming from Code V2 controller to send appropriate message to Livid Editor software to load directly
the bank/preset you want.

DO I have your request correct?

christian

2017-03-07 19:30:50

Hello Steve,

yes, that is exactly what i meant !

Steve

2017-03-07 19:58:06

OK, Here is what I recommend.

First I think the best way to handle this is to capture the sysex output from livid software and then later use  a different sysex send tool to send the message later. I could be a bit tricky setting up but probably more reliable than trying to deal with the Livid SW interface.

  1. Set  up bome to monitor the output of your livid editor SW. Right now you have it only monitoring activity betweeen BMT and resolume.
  2. Change preset to the desired preset you want to capture in you Livid Editor Software. It should send a sysex message (or series of them from Livid Editor software to your controller. You will need to capture this data for future use.
  3. Save the captured data to a file. Here is the tricky part. You need to somehow convert from text to binary sysex file. The other option would be to take the .json file created by your editor to Sysex binary form
  4. Once you have save the Sysex file, you should then be able to use a tool such as sendmidi to send the message on demand. I think you can find on github and it is free. It is a command line tool that can send any midi message from a sysex file.
  5. Set up BMT to execute the command and send the file  based on the desired incoming midi message.

The trickiest part will be the capturing of desired message and converting to proper sysex format for transmission.

I don’t think Bome SendSX had a command line interface otherwise I probably would have recommended that instead of sendmidi

 

Steve

2017-03-07 21:05:02

comment

Here is the link to the sendmidi software
https://github.com/gbevin/SendMIDI

christian

2017-03-08 10:41:16

aloha,

everything is working !

it seems that the main problem was my setting of the virtualports…the editor-software has it´s own so called *midi-hub*, which uses virtualports too…this leads to a pretty twisted *chaining*  i guess…now the output of the editor is monitored correctly by bome…

i just set the sysex of each preset as the outgoing action for a translator and a the button-messages as the incoming…

it works, even without having the editor-software running…  how to keep the translators up to date when the preset-sysex changes comes next,,,,but for now – despite the fact i really have to leave the house know and go to work —  i´m very satisfied:) …thx a lot steve !

 

this is the sysex for preset 7 ..

BF 7C 00
BF 7A 4C
F0 00 01 61 04 04 00 00 00 00 00 20 00 00 F7
F0 00 01 61 04 0B 01 00 05 00 02 00 06 00 03 00 07 00 04 00 08 00 09 00 0D 00 0A 00 0E 00 0B 00 0F 00 0C 00 10 00 11 00 15 00 12 00 16 00 13 00 17 00 14 00 18 00 19 00 1D 00 1A 00 1E 00 1B 00 1F 00 1C 00 20 00 21 00 22 00 23 00 24 00 25 00 26 00 27 00 28 00 29 00 2A 00 2B 00 2C 00 2D 00 F7
F0 00 01 61 04 0C 0F F7
F0 00 01 61 04 0D 01 F7
F0 00 01 61 04 11 70 01 7F 01 7F 01 7F 01 F7
F0 00 01 61 04 17 05 01 02 03 F7
F0 00 01 61 04 1E 42 01 F7
F0 00 01 61 04 23 7F 00 01 02 03 04 05 06 07 08 09 0B 0C 0D 10 11 12 13 14 15 16 17 18 19 1B 1C 1D 20 21 22 23 24 25 26 27 28 29 2B 2C 2D 30 31 32 33 34 35 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F F7

 

 

Steve

2017-03-08 14:18:29

comment

Looks good, so you are just using embedded sysex inside of bome instead of going out to hard disk. Note that it would be pretty easy to convert this to an acutal .syx binary file using bome SendSX and use the sendmidi tool to send it to your controller if you still wish to pull the file off of disk. You could use Bome MT to launch a file and use the command line parameters of sendmidi to use the appropriate file. With that said, keeping it all contained within BMT would not be a bad option. As you said, the hard part would be keeping this in sync with what you set in your editor.

christian

2017-03-10 10:06:39

comment

no, i just got it wrong…a little….once again….
because every preset was working exactly as if it where loaded by the editor, i somehow thought the data must be from hard disk too…..it took me a relaxing walk and a day at work, focused on complete different subjects to realize, that all information a preset contains, is represented by those few lines of sysex-code…….kind of funny i guess and it´s for sure, that if it weren´t for a good reason, nothing would make me terrorizing my brain with those nasty numbers and figures:) ….so, anyhow…the aim remains the same as we discussed……i have converted the monitored output for each preset to a .syx binary file …loading them to the controller via sendmidi works so far…..my questions are, how to trigger the conversion done by sendsx and use the command line parameters within bome mt?….
i tried to transmit a preset.syx via sendmidi by setting up a translator with the outgoing option *execute file* but i guess that´s not what you meant ?….
this is the sendmidi command line for preset 05 …. C:\Users\shoebee>sendmidi dev code syf C:\Users\shoebee\AppData\Roaming\Livid\Code2\ch05.syx

… thx for your input !

Steve

2017-03-10 15:02:30

comment

Go to the cmd prompt and type sendmidi with no arguments. You will get command line usage.

So you will need to add the necessary command line parameters to send the file.

Probably something like this:

sendmidi dev name syf \path\filename.syx

to get list of devices you will need to type

sendmidi list

You will not be able to have your controller device opened for input in BMT to send. So as I’m thinking through this if you do, there might be something needed to close the device in BMT prior to sending the midi file. Either that or have the midi file send to a virtual input port in BMT and then have BMT just forward it through to the actual device.

Usage: sendmidi [ commands ] [ programfile ] [ — ]

Commands:
dev name Set the name of the MIDI output port
virt (name) Use virtual MIDI port with optional name (Linux/macOS)
list Lists the MIDI output ports
panic Sends all possible Note Offs and relevant panic CCs
file path Loads commands from the specified program file
dec Interpret the next numbers as decimals by default
hex Interpret the next numbers as hexadecimals by default
ch number Set MIDI channel for the commands (1-16), defaults to 1
omc number Set octave for middle C, defaults to 3
on note velocity Send Note On with note (0-127) and velocity (0-127)
off note velocity Send Note Off with note (0-127) and velocity (0-127)
pp note value Send Poly Pressure with note (0-127) and value (0-127)
cc number value Send Control Change number (0-127) with value (0-127)
pc number Send Program Change number (0-127)
cp value Send Channel Pressure value (0-127)
pb value Send Pitch Bend value (0-16383 or value/range)
rpn number value Send RPN number (0-16383) with value (0-16383)
nrpn number value Send NRPN number (0-16383) with value (0-16383)
clock bpm Send 2 beats of MIDI Timing Clock for a BPM (1-999)
mc Send one MIDI Timing Clock
start Start the current sequence playing
stop Stop the current sequence
cont Continue the current sequence
as Send Active Sensing
rst Send Reset
syx bytes Send SysEx from a series of bytes (no F0/F7 delimiters)
syf path Send SysEx from a .syx file
tc type value Send MIDI Time Code with type (0-7) and value (0-15)
spp beats Send Song Position Pointer with beat (0-16383)
ss number Send Song Select with song number (0-127)
tun Send Tune Request
mpe zone range Send MPE Configuration for zone (1-2) with range (0-15)
raw bytes Send raw MIDI from a series of bytes
— Read commands from standard input until it’s closed

Alternatively, you can use the following long versions of the commands:
device virtual decimal hexadecimal channel octave-middle-c note-on note-off
poly-pressure control-change program-change channel-pressure pitch-bend
midi-clock continue active-sensing reset system-exclusive
system-exclusive-file time-code song-position song-select tune-request
raw-midi

By default, numbers are interpreted in the decimal system, this can be changed
to hexadecimal by sending the ”hex” command. Additionally, by suffixing a
number with ”M” or ”H”, it will be interpreted as a decimal or hexadecimal
respectively.

The MIDI device name doesn’t have to be an exact match.
If SendMIDI can’t find the exact name that was specified, it will pick the
first MIDI output port that contains the provided text, irrespective of case.

Where notes can be provided as arguments, they can also be written as note
names, by default from C-2 to G8 which corresponds to note numbers 0 to 127.
By setting the octave for middle C, the note name range can be changed.
Sharps can be added by using the ’#’ symbol after the note letter, and flats
by using the letter ’b’.

In between commands, timestamps can be added in the format: HH:MM:SS.MIL,
standing for hours, minutes, seconds and milliseconds
(for example: 08:10:17.056). All the digits need to be present, possibly
requiring leading zeros. When a timestamp is detected, SendMIDI ensures that
the time difference since the previous timestamp has elapsed.

When a timestamp is prefixed with a plus sign, it’s considered relative and
will be processed as a time offset instead of an absolute time. For example
+00:00:01.060 will execute the next command one second and 60 milliseconds
later. For convenience, a relative timestamp can also be shortened to +SS.MIL
(for example: +01.060).

Steve

2017-03-10 15:24:04

comment

To clarify the file name you want to execute is the sendmidi file and add the necessary parameters there in the command line. The BMT manual should show you how to add the parameters (look at page 9). Simply executing a syx file will not work.

Steve

2017-03-10 15:43:21

Here is how I set it up and it is working

 


Attachments:

Sendmidi-bome.PNG

Steve

2017-03-10 15:44:09

comment

Note that both the sendmidi.exe command and the t1.syx command are in the same folder structure of the project file.

christian

2017-03-14 21:00:15

nice, it works !

your last post really helped since i never used any kind of command line tools before…

each preset can now be loaded directly by a specific button…as you suggested i had to set up virtual midi port between bome and code controller in order to make it work…

maybe you got some helping advice for the last problem regarding my case….

by now i create a new .syx binary file in order to sync a preset to changes made with the editor…

is it possible to trigger this action with bmt ? or might be any other way to convert the stored .json file to a .syx file automaticly whenever changes are stored by the editor ..?

as soon as all presets are well configured, i wont need this option very often…nevertheless it would be great to have a solution…

 

anyhow, big *thx* again steve… controlling resolume is much more intuitive now, then it was before…..

 

Steve

2017-03-14 21:07:23

comment

Glad I could help! The only way I know to automatically generate a syx file from json file would be to have some background process on you PC test the timestamp for changes to the json file and then run a program to do the conversion. I doubt if anything exists out there for this special function so you would probably need to have someone build it for you. I think an experienced programmer could probably do it in a few hours. You would probably need to know where the application stores the json files and their naming conventions.

christian

2017-03-14 21:12:29

comment

okay, i will watch out for an experienced programmer…..never say never:)

Steve

2017-03-14 21:20:39

comment

Send me mail bome@sniz.biz and maybe we can work something out.

Steve-Bome Forum Moderator

2020-02-21 03:56:26

Hi, Christian,

 

I'm trying to help a user that has a Livid Code V2 and am struggling with getting his mapping set up correctly. Could you drop me an email? Perhaps you could help. I tried the Livid Forums but they do not allow new postings and their support request page no longer exists.

 

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz

christian

2020-02-23 14:02:04

comment

hi steve, i haven´t use the livid controller for a while now and therefore doubt i could be of much help....but of cause will try...so, whats up ?...best regards, christian

Steve-Bome Forum Moderator

2020-02-24 03:22:16

comment

Just struggling with mapping LED feedback and using the editor tools. I know how I want the encoders and LED feedback mapped but I don't have a controller and the guy I'm working with is struggling to get it working correctly. So it is kind of like a trial and error process. I give him something to try, he tries it, gives me feedback, and then we repeat. It is taking a long time this way.