Skip to content

Let GTL send some Sysex (or MIDI) commands on various "transporter events"

Hey

I'm still working on my sooperdooper Mozaic script which is basically a sequencer for GTL:

https://forum.audiob.us/discussion/40389/my-group-the-loop-wizard-mozaic-script-a-new-way-of-performing-live

After the code got too messy, I re-wrote everything from the ground up while applying some separation of concerns using multiple Mozaic instances that handle different things. They are talking to each other using Sysex MIDI messages, which works pretty well when using specific headers. I'm kind of creating an environment which sends different events, and all Mozaic instances can react to them (if they like).

For example, to let my Feedbacker Mozaic instance say "Add configs", I use the following code in any other Mozaic instance:

// Other Mozaic instance
@SayAddConfigs
  // The CAPITAL words are globals which are set to the same values in each Mozaic instance
  data = [MOZ_INST_FEEDBACKER, SYSEX_ANNOUNCE_FEEDBACK, FEEDBACK_ADD, FEEDBACK_CONFIGS]
  SendSysex data, 4
@End

// Feedbacker instance
@OnSysex
  ReceiveSysex data
  sysexLength = SysexSize
  sysexTarget = data[0]
  sysexAction = data[1]

  if sysexTarget = MOZ_INST_FEEDBACKER
    if sysexAction = SYSEX_ANNOUNCE_FEEDBACK
      Call @IterateOverFeedbacks
    else
      Log {ERROR: Unknown sysexAction=}, sysexAction
    endif
  endif
@End

At the moment, I'm once again struck with the requirement that I need to change the guitar FX exactly between the end of the currently recorded loop and the next loop. This is an information that is nowhere available except within GTL: even using Ableton Link, it's not possible to somehow calculate this manually within Mozaic.

Knowing that communication using Sysex is pretty easy now, I wonder whether it would be feasible to let GTL send some of those messages, too? Using an appropriate header, receivers can check whether it's the correct message, and then react upon them.

For example, for the specific event talked about above, GTL could do something like this:

// Within GTL
@OnNewRecord
  data = [SOME_VERY_SPECIFIC_GTL_HEADER_ID, ON_NEW_RECORD]
  SendSysex data, 4
@End

I could imagine a lot of useful such events, e.g. a similar which is fired 1 bar before (so any reacting script has some time for preparation arming its settings, and then it can either listen to Ableton Link's OnNewBar or the bespoken GTL's OnNewRecord to finally apply those settings).

The more specific such messages would be, the more I would know about the internals of GTL and can simply react upon it.

Any chance of implementing something like this soon? The alternative is to keep all of this a manual task, or to manage (estimate) GTL's state somehow using an internal time-tracking-system, which could probably be achieved, but is quite a complex overkill, as it just tries to emulate something that is already done somewhere else.

Anyway, I'm very much in love with GTL and hope to release the first version of my Wizard script soon. :smiley:

Comments

  • Any opinion on this? @Jack?

  • Hey @josh, sorry for the delay and thanks for helping out on the other thread!

    I admire how much you've done with Mozaic and GTL, it looks very cool. Your suggestion above is clever although I can't help feeling your trying to work around a limitation of GTL. So rather than writing a new MIDI sysex engine, which could take ages, maybe I should be looking at a solution to remove the delay between effects switching.

    I've been meaning to add an input mixer to GTL for a long time, it will hopefully be the next big feature although I'm fairly tied up with other stuff at the moment. An input mixer would solve any delay during switching as you could assign any input channel to any loop. You could set up, say 4 different effect patches, then route them to the appropriate loops.

  • Why not audiobus multiple output support ala Loopyhd? Maybe it will help and be less hard to code?

    I love this app. :)

  • @Jack said:
    Hey @josh, sorry for the delay and thanks for helping out on the other thread!

    I admire how much you've done with Mozaic and GTL, it looks very cool. Your suggestion above is clever although I can't help feeling your trying to work around a limitation of GTL. So rather than writing a new MIDI sysex engine, which could take ages, maybe I should be looking at a solution to remove the delay between effects switching.

    I've been meaning to add an input mixer to GTL for a long time, it will hopefully be the next big feature although I'm fairly tied up with other stuff at the moment. An input mixer would solve any delay during switching as you could assign any input channel to any loop. You could set up, say 4 different effect patches, then route them to the appropriate loops.

    That input mixer sounds great. The improvements you’ve made since initially releasing have made GTL better and better.
    Look forward to the update.

  • edited October 2020

    @Jack said:
    Hey @josh, sorry for the delay and thanks for helping out on the other thread!

    I admire how much you've done with Mozaic and GTL, it looks very cool. Your suggestion above is clever although I can't help feeling your trying to work around a limitation of GTL. So rather than writing a new MIDI sysex engine, which could take ages, maybe I should be looking at a solution to remove the delay between effects switching.

    I've been meaning to add an input mixer to GTL for a long time, it will hopefully be the next big feature although I'm fairly tied up with other stuff at the moment. An input mixer would solve any delay during switching as you could assign any input channel to any loop. You could set up, say 4 different effect patches, then route them to the appropriate loops.

    It's great to hear that you're thinking about adding an input mixer. It would certainly address some long requested features.

    Still, I think it would open a whole world of new possibilities if apps "outside" GTL could know about its state(s). Instead of sysex, it could also be plain midi signals for each event:

    • 0 for OnNewBar
    • 1 for OnNewRecord
    • 2 for ...

    Inside of other apps one could listen to such signals, and react upon them. One could include all the features of any MIDI receivable app then into one's workflow (while adding an input mixer inside GTL would only just address a few specific feature requests).

    By the way, although my GTL Wizard Mozaic script is very promising, it just doesn't really work well as long as there's no way of detecting this very specific point in time when recording of one loop ends and recording of the next loop starts. So for the time being, I stopped development of the script.

Sign In or Register to comment.