Digitone Program Change Messages

Hi There

Just got my BomeBox and it is already doing wonders in my setup! :slight_smile:

I bought it to fix the following issue: I use mostly an Elektron Digitone to sequence a Moog Sirin & a Dominion Club. I also use PC messages to trigger presets in those devices. The Digitone sends the PC message just before the note from which on this PC should take effect. Now in every 10th instance either the Sirin or the Dom Club miss the PC message or even more weird - loads the preset not completely (in case of the Moog). The problem is, once the Digitone has sent this PC, there is no way to trigger a second time the same PC (as Digitone thinks “I am already on this preset duh”).
Not to the BomeBox/Translator: First I tried to just make an “echo” PC by not swallowing the PC message and resend the same message just 10 ms later. Did not really get me there. Funny enough what now seems to work perfectly is to swallow the PC and just send it 5ms later. Not one missed PC so far. But there is a sound artefact as it seemingly just switches preset in mid-note.

So I started thinking, if it might be possible to detect somehow PC messages and have the BomeBox just tweak the timing of the first following Note On Message, if this is within a certain range?
I Tried to get there by triggering with PC messages (without swallowing them) a timer which then sets a variable to 1 when it runs and to 0 when the timer is done. Then I wanted to use this for conditions to either delay a note on or not. I only got it to delay all note on’s unfortunately so far… Is this concept even possible?

Best regards,
Chris

OK, so what I’m hearing is that the receive PC is not being consistently recognized by either the Moog Sirin or Dominion Club. We can certainly set up a translator in MT Pro (running on your BomeBox) to remember and resend PC messages, however I think we need to understand better why the devices are missing them. Is there a way you can share your project file so I can take a look to see why this might be happening?

Using a timer busy indicator as you suggest should be possible. I assume you want to suppress incoming MIDI messages while the timer is busy.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Hi Steve

The Problem with the missing Program Changes was from before I had any Bome-components in between the Digitone and the Dominion Club / Sirin. I planned to use the Bome-Box to fix this with the following approach: I used one of your templates to set up global parameters (including a delay time) So when a Program Change is being passed through channel 8 (which is the Sirin), this should trigger a timer (in this case set to 100 ms length to hear if it works). As long as this timer is running, a variable is set to “1”. As long as this variable is “1”, NoteOn is delayed by 5 ms. As soon as this variable is “0”, the NoteOn should pass through without delay. I am quite new to this, maybe (hopefully) I made an obvious mistake. Right now this preset delays all NoteOn by 100 ms, even when no PC message is passed along. I tried some stuff but didn’t get there, might be there’s redundant stuff in there as well, sorry in advance.

Thanks for your support,
Chris

PC delays Note On 5ms.bmtp (2.5 KB)

Hi,

The key issue is you are using local variables instead of global variables.

Local variables are oo,pp,qq,rr,ss,tt,uu,vv, ww and xx

Local variables have and undefined value unless you set them (within the translator) and are unique to an incoming trigger. I n general, they cannot be shared between translators (unless the translators have the exact incoming trigger.

By contrast, global variables (everything else but the above) are default to 0 unless you set them and can be shared among translators.

In your project, you initialized some local variables in the “Set Global Variables” translator.

I changed them in your project as follows

rr → gb - Timer Active
pp → gc - Note on After PC
qq → gd - Velocity after PC
ss → ge - Note on regular
tt → gf - Velocity Regular

Also, there is no need to kill a one-shot timer as it only triggers once so I took the outgoing action of translator 1.1 to “None”

I’ve attached the modified project file but did not do extensive testing. It should get you closer to what you want. Keep in mind if you have multiple note messages come in during the 100ms interval, then only the last note will be captured and sent when the timer fires. Queuing up multiple notes while the timer is active is much more complex if you don’t want any missing notes.

PC delays Note On 5ms–sjc.bmtp (2.5 KB)

For more information on local and global variables, refer to the Bome User Manual by pressing F1 for help or going to the help menu which will open up the PDF Manual.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz
1 Like

Hi Steve

Ah OK, then I missed the fact that there are differnt classes of variables, thanks a lot for the clarification!

Now it seems to work stable with a delay of 5 ms of the NoteOn after a PC.

Best regards,
Chris

I’m glad to see it is working now!

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz