Not sure if this will be useful to you, but I wrote a little utility that takes a midi file (exported from Logic for instance) and converts the midi messages into the timecode format that StageTraxx uses.
https://github.com/subdigital/midi2stagetraxx
Here's an example:
 cargo run -- -m "Enter Sandman - Metallica - lights.mid" \
-o 4
This is overriding the midi channel (the -o
flag) for all events.
(This currently requires a Rust development environment, but I can supply binaries if there's interest)
Output looks like this:
MIDI FILE: Enter Sandman - Metallica - lights.mid
Quarter Note Division: 480
-- EVENT: 0 Meta(MidiChannelPrefix(Channel(3)))
-- EVENT: 0 Meta(TrackName(Utf8("(Mapped Instr.)")))
-- EVENT: 0 Meta(InstrumentName(Utf8("PHOTON")))
-- TIME SIGNATURE: TimeSignatureValue { numerator: 4, denominator: Quarter, click: Quarter, tpq: 8 }
-- EVENT: 0 Meta(KeySignature(KeySignatureValue { accidentals: KeyAccidentals(0), mode: Major }))
-- SMPTE OFFSET: (SmpteOffsetValue { hr: 33, mn: 0, se: 8, fr: 4, ff: 11 }) frame: 24, hr: 1
-- Tempo change: 120.36229049438812
[midi@00:00.099: CC1.127@4]
[midi@00:02.990: N24.127@4]
-- EVENT: 960 Meta(Marker(Utf8("COUNT IN")))
[midi@00:04.237: N24.0@4]
[midi@00:07.726: N35.127@4]
-- EVENT: 240 Meta(Marker(Utf8("INTRO")))
-- Tempo change: 121.19938915507866
-- Tempo change: 118.15372981786604
[midi@00:15.717: N35.0@4]
[midi@00:15.721: N29.127@4]
-- Tempo change: 120.73697851686694
[midi@00:23.673: N29.0@4]
-- Tempo change: 122.80335498765825
[midi@00:23.926: N72.127@4]
-- Tempo change: 124.54721896438987
-- Tempo change: 121.65869464275939
[midi@00:31.488: N72.0@4]
[midi@00:31.488: N29.127@4]
-- Tempo change: 124.2583330744618
-- Tempo change: 122.64195295045879
[midi@00:39.313: N29.0@4]
[midi@00:39.313: N33.127@4]
...
I take this output and pipe to grep midi | pbcopy
to get just the midi messages on my clipboard and paste into statetraxx.