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).