Page 1 of 1

[Macro Buttons] System.execute over VBAN

Posted: Sun Feb 02, 2020 12:07 am
by py2raf
Hi there, Vince!

Let the following macro button, for execution in the remote computer.

1. Mute Strip 1
2. Mute Strip 2
3. Execute a command.

Code: Select all

BEGIN_SECTION("vban1")
Strip[1].Mute=1;
Strip[2].Mute=1;
System.Execute("c:\users\rodrigo\auto\ptt-off.cmd");
END_SECTION
By running this macro, it will successfully mute the strips 1 and 2 - but will not run the system.execute.

As a secondary interesting noteworthy finding; if I put the system.execute at the top of the script:

Code: Select all

BEGIN_SECTION("vban1")
System.Execute("c:\users\rodrigo\auto\ptt-off.cmd");
Strip[1].Mute=1;
Strip[2].Mute=1;
END_SECTION
Everything fails: the script stops running everything after the system.execute

Well, my root question is: How can I trigger a system.execute in a remote computer via VBAN?

Running VoiceMeeter Banana 2.0.5.0.

Thanks a LOT!

- Rodrigo.

Re: [Macro Buttons] System.execute over VBAN

Posted: Mon Feb 03, 2020 2:52 pm
by Vincent Burel
system functions are interpreted and executed by MacroButtons only. if you send a System.Execute function in a VBAN Text request, Voicemeeter will receive it but won't excute it, because it is executed by MacroButton app only. You may write your system function outside of the BEGIN_SECTION ou SendText('vban1", ...request...);

Code: Select all

BEGIN_SECTION("vban1")
Strip[1].Mute=1;
Strip[2].Mute=1;
END_SECTION
System.Execute("c:\users\rodrigo\auto\ptt-off.cmd");

Re: [Macro Buttons] System.execute over VBAN

Posted: Mon Feb 03, 2020 8:18 pm
by py2raf
Hello Vince!
Thank you very much for your reply.

I wanted to trigger a command in the remote computer using the Macro Button - Is there any provision or functionality for it?

Thanks again!!

Re: [Macro Buttons] System.execute over VBAN

Posted: Tue Feb 04, 2020 7:28 am
by Vincent Burel
you can send a VBAN-MIDI request then, it will come in Voicemeeter VBAN-MIDI stream and will be forwarded to the related MacroButtons.

Re: [Macro Buttons] System.execute over VBAN

Posted: Wed Feb 05, 2020 11:13 am
by py2raf
Hi again, Vince! Thank you very much for your post!

Well Vince, I'm afraid that I couldn't figure out how to do it - In either Midi Mapping or vban-2-midi apps I necessarily have to specify a Midi Input Device

Well, the truth is I'm sort of clueless - and I swear that I have read the documentation :D

Can you provide a bit more information on achieving it?

For what is worth: Me and my friend PY2UGO are crafting a entirely remote operation of a radio using VoiceMeeter! We need to execute the remote commands to send the CAT commands to Tune, PTT on/off, etc. our transceivers.

Thanks a LOT!!!

- Rodrigo, PY2RAF.

Re: [Macro Buttons] System.execute over VBAN

Posted: Thu Feb 06, 2020 5:47 pm
by Vincent Burel
Well, it's easier that you think.

in your distant MacroButton, you may generate a MIDI message with SendMidi command
example: SendMidi("vban1" , "note-on" , 1, 64, 64);

it will be received by Voicemeeter VBAN MIDI1 Input Stream for example. This MIDI stream is automatically forwarded to local MacroButton app, as it was coming from the MIDI mapping device.

Re: [Macro Buttons] System.execute over VBAN

Posted: Thu Feb 06, 2020 9:12 pm
by py2raf
Hey Vince! We're almost there!!!

So, for documentation sake:

REMOTE = Computer that you want to have some program to run
CONTROL = Computer where you will be using Macro Buttons to run stuff in REMOTE

1. Configure the Macro Button In the REMOTE computer that will be performing the tasks with the system.execute, other macros etc.
2. Configure and enable VBAN in your REMOTE computer. Ensure to enable the incoming MIDI1 stream. Fill the "IP Address From" field accordingly, containing the IP address of your PC that you will control via Macro Buttons. Leave both General VBAN, MIDI1 and Command1 as enabled.
--
3. In the CONTROL PC, Open Macro Buttons, click on the "Macro" icon at the top left of the Macro Buttons - select "VBAN Configuration"
4. In MIDI1, check the "on" box, and add the IP address of the REMOTE PC. Click OK.
5. Change "Button Type" from Push Button to "2 Positions"
6. Still in CONTROL PC, choose any button, and in "Request for Button ON/Trigger IN" define:

Code: Select all

System.SendMidi("vban1", "note-on", 1, 64, 64);
7. in "Request for Button OFF/Trigger OUT" define:

Code: Select all

System.SendMidi("vban1", "note-on", 1, 64, 64);
(yes, it's the same content)
--
8. Back to the REMOTE PC, right-click the key of interest that you want to tie together with the CONTROL button. Check the box "Learn (from MIDI mapping device)". DO NOT CLICK OK YET.
--
9. In CONTROL PC, hit the button that you want to control
--
10. Back to REMOTE - it should show "#1 Note On E3 (64)" in the textbox below "Learn". Click OK.
--
11. Click on your CONTROL PC at will! State changes immediately.

So Vince, this is what I came with. Is this correct/complete?

It works perfectly with 2-position buttons.

HOWEVER; I didn't manage to make it work finely with push-button commands: As soon I send the message, the button gets stuck as pressed at the Remote PC. I have to press again at the remote to the button leave the pressed state at the remote.

Any tricks to get around it?

Thanks again!!!

Re: [Macro Buttons] System.execute over VBAN

Posted: Thu Feb 06, 2020 9:33 pm
by py2raf
Okay - I figured out, it WORKS!!! \o/ :D :D :D :D

SO - for Push Buttons! The steps are:

5. Leave the button state as "Push Button"
6. In "Request for Button ON/ Trigger IN define:

Code: Select all

System.SendMidi("vban1", "note-on", 2, 64, 64);
7. in "Request for Button OFF/Trigger OUT" define:

Code: Select all

System.SendMidi("vban1", "note-off", 2, 64, 64);
(NOTICE that the first one is note-on and the second is note-off)

Proceed with the following steps.

[EDIT] - Ensure to use different numbers for each button (the first numbers after the "note-on" or "note-off")

Thanks, Vince!!!!

Re: [Macro Buttons] System.execute over VBAN

Posted: Fri Feb 07, 2020 4:27 pm
by Vincent Burel
the exact syntax is:
System.SendMidi("vban1", "note-on", channel, note, velocity);
Note there is only 16 channels but 128 notes (0 to 127).

To emulate a keyboard or MIDI controller button, you may use note-on/off like this

PUSH button:
System.SendMidi("vban1", "note-on", 1, 64, 64);

RELEASE button:
System.SendMidi("vban1", "note-on", 1, 64, 0);

if velocity is ZERO, then a note-on is interpreted as note-off (universal process).

but you can explicitely send a note-off like you did
System.SendMidi("vban1", "note-off", 1, 64, 64);