Midi refresh Rate

Post your questions here and we'll all try to help.
User avatar
NxKmn
Is taking Resolume on a second date
Posts: 25
Joined: Mon Jan 16, 2017 23:03

Midi refresh Rate

Post by NxKmn »

Hello,

I use Bome Midi Translator to capture midi instructions sent by resolume and get feedback on my MIDI controllers.

I have a problem when a large number of instructions are sent in a short time.
Some values are ignored.

If I have a midi shortcut on the opacity of an effect that evolves over 1 beat, so that sends 128 variations of the same midi note for a single beat, I have this result in bome Midi translator :

Control Change on ch. 15 with CC#:3 (0x03) and value:4 (0x04)
Control Change on ch. 15 with CC#:3 (0x03) and value:13 (0x0D)
Control Change on ch. 15 with CC#:3 (0x03) and value:17 (0x11)
Control Change on ch. 15 with CC#:3 (0x03) and value:25 (0x19)
Control Change on ch. 15 with CC#:3 (0x03) and value:34 (0x22)
Control Change on ch. 15 with CC#:3 (0x03) and value:43 (0x2B)

So I have jumps that go up to 9 instructions that are ignored.

Who is involved?
Resolume, which does not send all instructions.
Or Bome, who doesn't catch them all?

Zoltán
Team Resolume
Posts: 7088
Joined: Thu Jan 09, 2014 13:08
Location: Székesfehérvár, Hungary

Re: Midi refresh Rate

Post by Zoltán »

Do you have timestamps for these, or what's the composition tempo set to?
Software developer, Sound Engineer,
Control Your show with ”Enter” - multiple Resolume servers at once - SMPTE/MTC column launch
try for free: http://programs.palffyzoltan.hu

User avatar
NxKmn
Is taking Resolume on a second date
Posts: 25
Joined: Mon Jan 16, 2017 23:03

Re: Midi refresh Rate

Post by NxKmn »

Let's say the composition is set to 120 bpm
And that the opacity of the effect is adjusted to evolve on a single beat.
With the midi shortcut Ch15 CC3

Resolume should send instructions 0 to 127 in 1/2 second.

What I admit is that it's a very short time. But I need to get those 127 instructions back.
Because bome will only react to certain instructions. And if he doesn't receive them, he won't give me feedback on my controllers.

Log window on Bome :

22319886 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 03
22319886 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=3
22319888 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 03
22319888 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=3
22319938 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 14
22319938 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=20
22319939 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 14
22319939 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=20
22319990 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 20
22319990 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=32
22319992 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 20
22319992 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=32
22320042 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 2D
22320042 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=45
22320043 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 2D
22320043 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=45
22320093 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 3A
22320093 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=58
22320094 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 3A
22320094 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=58
22320146 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 47
22320146 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=71
22320146 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 47
22320146 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=71
22320197 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 53
22320197 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=83
22320198 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 53
22320198 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=83
22320249 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 60
22320249 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=96
22320250 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 60
22320250 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=96
22320300 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 6D
22320300 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=109
22320302 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 6D
22320302 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=109
22320353 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 79
22320353 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=121
22320354 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 79
22320354 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=121

Netx Beat

22320404 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 0B
22320404 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=11
22320405 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 0B
22320405 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=11
22320456 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 18
22320456 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=24
22320457 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 18
22320457 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=24
22320506 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 25
22320506 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=37
22320507 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 25
22320507 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=37
22320558 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 31
22320558 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=49
22320559 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 31
22320559 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=49
22320609 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 3E
22320609 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=62
22320611 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 3E
22320611 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=62
22320661 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 4B
22320661 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=75
22320662 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 4B
22320663 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=75
22320712 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 57
22320712 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=87
22320713 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 57
22320713 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=87
22320763 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 64
22320763 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=100
22320764 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 64
22320764 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=100
22320815 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 71
22320815 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=113
22320816 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 71
22320816 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=113
22320866 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 7E
22320866 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=126
22320867 - MIDI IN [Bome MIDI Translator 2 Virtual In]: BE 03 7E
22320867 - IN 1.36 Control Change on ch. 15 with CC#:3 (0x03) and any value set 'pp' to value=126

etc

Zoltán
Team Resolume
Posts: 7088
Joined: Thu Jan 09, 2014 13:08
Location: Székesfehérvár, Hungary

Re: Midi refresh Rate

Post by Zoltán »

Thanks,

Looks like the midi output is only sent when the parameter values are updated.
This happens on a render pass.
That means, that when your composition runs at 25 FPS for example, you'll get 25 updates, and 25 midi messages per second.
With a composition running at 60 FPS you'd get 60.
Intermediate values are probably not even calculated, as that wouldn't make much sense for what Resolume needs to do.
Software developer, Sound Engineer,
Control Your show with ”Enter” - multiple Resolume servers at once - SMPTE/MTC column launch
try for free: http://programs.palffyzoltan.hu

User avatar
NxKmn
Is taking Resolume on a second date
Posts: 25
Joined: Mon Jan 16, 2017 23:03

Re: Midi refresh Rate

Post by NxKmn »

I ask, if it's possible.

But it would not be possible to add an option in resolume for the refreshing of the midi instructions to be done differently.
I need the refresh to be done 127 times per beat. To send me all the information back, in any case.

I agree that I am a special case.

Joris
Doesn't Know Jack about VJ'ing or Software Development and Mostly Just Gets Coffee for Everyone
Posts: 5185
Joined: Fri May 22, 2009 11:38

Re: Midi refresh Rate

Post by Joris »

MIDI output is not tied to the render thread, but it does happen with a fixed frequency and it will 'skip' values, sending only the current value on every update.

Skipping values like this is quite common practice to minimise MIDI traffic. The only controller I know of that sends every value is the Novation Launch Control XL (and so it's very easy to choke an application with it if you don't limit the update frequency).

Maybe if you explained what you want to do, there could be a different way of achieving what you want to do in Bomes?

User avatar
NxKmn
Is taking Resolume on a second date
Posts: 25
Joined: Mon Jan 16, 2017 23:03

Re: Midi refresh Rate

Post by NxKmn »

I will explain to you what I am doing and how.

I am in the process of making a Step-sequencer with 16 steps.
For each layer, a selection of effects that can be sequenced differently, with a different BPM.

Example of how it works in video:

[youtube]https://youtu.be/-AlqZVymF9c[/youtube]


Each line on the Launchpad = 16 identical effects
Each Pad on the Launchpad = One effect.
Each effect is configured like this:

( 4 effects )
exemple.jpg
The pads on the Launchpad mainly control bypassed [ B ]
But by pressing a function pad on the Launchpad, they can be used to manipulate other parameters, such as blending modes.
Theright most and leftmost pad controls the BPM at which the sequence will be played.
But with a function pad, they also allow you to load / unload all effects on the line
Or to send a precise patern.
Finally, it is planned to be able to switch to the video grid, to trigger the videos, individually or by column.
And of course the classic tap tempo, deck switching etc. etc..

I also have a Midi Fighter Twister with 16 infinite encoder and LED ring to control different parameters / effects.
And two Launch control XL to control the mixing parameters of each Layer and select the Layers on which the Launchpad and the Midi fighter twister will act.


A sequence is composed of 16 steps / 16 effects.
Each sequence is configured to be "played" on 1 / 2 / 4 / 8 / 16 / 32 / 32 / 64 / 128 BPM.

This means that the entire sequence is read in 1/2/4/8/16/16/32/64/128 bpm.
For some effects a short sequence of 1 2 or 4 bpm is the best choice.
For other effects, a longer sequence is preferable.

For example, with invert RGB effect :
Seq1.jpg
Read on 1 BPM : strobe effect at the beginning of BPM ( Up to 1/2 bpm)
Read on 2 BPM: Strobe effect on the first BPM and nothing on the second.
Read on 4 BPM: Strobe effect on the first two BPMs and nothing on the third and fourth.
From 4 BPM the "strobe" effect is no longer really visible. Each effect being visible on 1/4 bpm, it is no longer really "strobe".
seq2.jpg
This sequence is interesting on 4 BPM.
Inverrt RGB is Active on the first BPM and Inactive on the next 3 bpm
seq3.jpg
This sequence is only of interest on 2 BPM ( or 4 bpm maybe)
First inverted BPM RGB is active.
Second BPM inverted RGB is OFF
seq4.jpg
This sequence can be read on:
1 / 2 / 4 BPM: strobe effect all the time.
16 BPM : as in the previous example, invert RGB is active 1 out of every two BPMs

reading the invert RGB sequence over a longer time than 16 BPM is of little interest. It is effective on short sequences.
Unlike other effect sequences.

***********

To return to the original question of the thread.
I wanted to retrieve the value of the MIDI instruction assigned to the BPM Timeline, to display a Yellow cursor on the Launchpad. To tell me where the sequence is at.

But as it is not possible to retrieve all the values of a Midi instruction, read over a short time, I found another solution.
I first tried to use Waveclock, but it didn't work properly. My Yellow pad shifting little by little.
The only Software MIDI Clock I found is https://midiclock.com/
But the Tap tempo is really zero compared to the one of resolume. He only averages between two Tap

Finally, the most correct solution I found is to recover the BPM value given by the TAP tempo on resolume to generate a timer in BOME.
It's not perfect. But it works.

***********

I monitored throughout the construction of the BOME project and the settings in Resolume, to see how it affected performance, and whether it was viable.
Because at the end, it's a little over 200 effects per Layer. And I was afraid Resolume wouldn't be able to handle it.
And I was quite surprised to see that it was working rather well.

Until recently :B

*************

According to your previous answer, it is the frames per second that determine when the midi instruction will be sent.

For more reactivity on my controllers, I was careful not to overload the Midi instruction channel. So much so that instructions are sent only when I perform an action.

But I realized that by adding more and more BPM SYNCH in the effects, the instructions sent by resolume are slower and slower.
Even though there are no midi shortcuts assigned to these parameters in BPM Synch mode

I tested by duplicating 16 times the layer I'm working on. All MIDI shortcuts are in "Target : Selected Layer" mode which is representative of the project once completed.

If I press one of my Pads, the action is performed immediately in Resolume.
But the return...... Easily about ten seconds of waiting time. If not more.
It is not Viable......

After more than a month of work, programming BOME, and setting Resolume, I am about to enter a deep depression.

**************************

I tested it in a new project, to reproduce the problem. With a new midi shortcut file. To start from scratch.
Just one parameter linked to a Midi shortcut. Nothing else.
Then load several dozen effects with all settings in BPM Synch mode.
==> No problem, the Midi returns are almost immediate.

Then I have in this same new project, reload the Midishortcut.xml with all my Midi settings.
==> Lag

This is also visible in the Windows Task Manager. It is enough to have about ten parameters in bpm Synch mode, so that one of the core (Ryzen7 1700 8 Core) is busy @100%.
With a new MidiShortcut.xml this does not happen.

I deduce that in any case, if a parameter is modified, resolume will read the entire midiShortcut.xml file to see if a midi shortcut is assigned to this parameter.
So, obviously, if there are several dozen parameters that are modified at the same time, and the MidiShortcut.xml file is huge, this can only cause problems...

Anyway, is there any way out of this? Is it a bug, or is it normal?

I use an online translator to write ( Deepl). I can read English, but I have a lot of trouble expressing myself.
So excuse me if I'm not always understandable.

User avatar
NxKmn
Is taking Resolume on a second date
Posts: 25
Joined: Mon Jan 16, 2017 23:03

Re: Midi refresh Rate

Post by NxKmn »

New problem.

I have completed the configuration of the sequencer.
There are only shortcuts in "Selected Layer" mode, to update the different values on my controllers according to the selected layer.
This gives about 700 midi shortcuts per Layer. Of these 700 shortcuts, about 150 are shortcuts that "visually" update the controllers.

I duplicated the Layer several times.

When I select a layer, I have many values that are not returned by Resolume. This does not update the controllers correctly.

Obviously, 700 midi shortcut per layer is a lot. That it takes time to send back, that's okay.
But if a large part of it doesn't reach me, it's much more annoying....

I join the project and the MidiShortcul.Xml if it helps.
Attachments
Midishortcut.zip
(29.22 KiB) Downloaded 593 times
Base Seq.avc
(2.39 MiB) Downloaded 624 times

Zoltán
Team Resolume
Posts: 7088
Joined: Thu Jan 09, 2014 13:08
Location: Székesfehérvár, Hungary

Re: Midi refresh Rate

Post by Zoltán »

Is there any specific feedback messages which are missing consistently or is the missing message a random one?
Software developer, Sound Engineer,
Control Your show with ”Enter” - multiple Resolume servers at once - SMPTE/MTC column launch
try for free: http://programs.palffyzoltan.hu

User avatar
NxKmn
Is taking Resolume on a second date
Posts: 25
Joined: Mon Jan 16, 2017 23:03

Re: Midi refresh Rate

Post by NxKmn »

They are specific to Layer.
But different depending on the selected Layer.
Sometimes by selecting the same Layer several times, I have one or two additional values that are returned to me.

In the end, I abandoned Resolume's midi instruction feedback to simulate all the answers via Bome. It works well.


But in the end, nothing works as I wanted it to.

I just realized that by Multiplying my working Layer 16 times, the FPS drops dramatically. Impossible to add videos in Playback, I fall below 30 FPS.

So I took some more tests.
New project, new Shortcutmidi.xml
As if I was starting Resolume for the first time.

I used an effect, with some parameters. Stripper.
I have it Bypassed. All effect parameters are at 0.
And I added it 150 times in a Layer.
Duplicated this layer 16 times.
No video in playback.

And I find the same drop in FPS again.

The CPU is cold, the graphics card does not work any more than when starting Resolume. The memory is empty.
In short, the PC is almost at rest.

So where is the bottleneck?

CPU = Ryzen 7 1700
Graphics Card = GTX 1080
09.JPG
10.JPG
11.JPG
Attachments
Test Many effect.avc
(2.75 MiB) Downloaded 644 times

Post Reply