This may be a hardware solution for those needing midi start messages sent to start a device syncing. I have two devices that I want to sync with midi clock from MLR and they will not sync due to MLR not sending a start message 250. This device does it manually in sync with the clock it receives. It’s designed to resync sequencers that require that midi start message without stopping the performance. I’m going try it unless this is something that could easily be implemented in the code? Not well-versed in Lua yet.

Audiowerkstatt Midi Restarter v2

literally just add

midi_device:start()

and save yourself €169

4 Likes

to line 452 or by itself? I am a complete novice when it comes to editing scripts.

1 Like

i guess it depends what you want to accomplish exactly

if you just want to send a start message when the script is launched, add midi_device:start() to the end of the init function

Let’s say every time midi sync is turned on it fires a midi start as well? Would that be possible?

take this with a grain of salt because i have never actually needed midi sync and likely never will. so this suggestion is totally blind and untested.

but basically:

  1. in the script preamble (before init function, e.g. L355), make a new function to handle changes to the “midi_sync” parameter, and fire a “start” message if it is turned on:
function handle_midi_sync(selection)
   if selection == "on" then
      midi_device:start()
   end
end
  1. in the init function, after the “midi_sync” parameter is declared (e.g. L363), assign your handler function as its action:
params:set_action("midi_sync", handle_midi_sync)
4 Likes

Inserted these bits of code in the suggested sections, verified script saved. My device (that works with sequencers that send MIDI start messages when you hit play like Ableton and other hardware loopers, drum machines, etc.) still didn’t start responding to clock. I can see the clock tick data being sent on my Roland UM-ONE the moment I turn MIDI sync on, just not getting my device to respond to it. I have been down this road before and have isolated it to MIDI start not being generated by the midi sync master as the culprit. If anyone else that has similar needs would like to test and report back that would be great. Maybe I am doing something wrong?

edit: verified when monitoring the midi data out of mlr only clock is sent with code implemented

@zebra I appreciate your advice and assistance in the matter.

if i can dig up a device that understands midi start/clock, i can help to test this a bit more. (i’m pretty sure there’s some drummachine in the basement that will work.)

my approach would be to first make an extremely basic script that does nothing but send start/clock, to make sure those components work, before integrating with MLR. this should be very quick

i honestly don’t know much about what various devices might require in terms of, i dunno, relative arrival time of start message and first clock tick, or if just sending byte 250 is sufficient, or what.

as a first quick test you could add a print statement to the midi_sync handler function to make sure it is actually being called.

1 Like

I used to perform some songs this way a million years ago on a monome 256 and mlr version 2.x for Max/MSP. I had presents that pitched the rows at various intervals. It was pretty fun.

I have exactly that (and a few other things) right here:
https://github.com/okyeron/midi-demo/blob/master/midi-clock.lua

2 Likes

is it just me or reverse and speed values set on the grid are not saved into a preset? any plans to add this in a future update?

will check and add if it’s not there.

also good bump reminder to check the other outstanding issues.

edit: i don’t recall if the track speed settings are even in the param menu, so that’d be why… but that’s no problem to add.

1 Like

Two questions:

  • the bottom row of grid buttons doesn’t do anything. Is that reserved for some future features? (scans github … 7th track seems the plan, right?)

  • on page 3, I can strangely load 7 clips / samples. Why 7? (Same answer … for the planned 7th track???)

oh, ok :slight_smile: I thought that if it was set on the grid it would be automatically saved in the presets. thanks for the reply and for looking into this!

i think i know the issue. the presets on the grid only save the settings after you hit the buttons on the grid. so if you have it already set you need to hit the preset and then untenable revers and then re enable reverse. same things with speeds. it isn’t a snapshot of what is currently happening but of what you hit next. I have got burned by this a couple times. so hit preset then hit the stuff you want to recall then hit the preset to save.

@robotboot I’m not talking about the four macros/recalls on the grid, I know how those work. I’m talking about the presets in norns (mlr settings page + press k1)

opppps :slight_smile:

1 Like

I’m pretty sure that softcut only has 6 voices.

edit: just checked the docs and it’s 2 buffers with 6 read/write heads (voices)

Did a quick bit of hacking on your question today.

I think the thing to keep in mind is that midi clock just happens all the time (when it’s being sent). It’s a constant stream of messages. Start/Stop/Continue messages are separate and need to be sent independently of clock messages.

So I think what would really be needed is some key assigned to the midi start/stop messages.

As an example I tried this:

at line 56 add

local midi_start_state = false

then at line 666 add

      elseif x==16 and y==8 then
        if midi_start_state == false then
          midi_device:start()
          midi_start_state = true
        else
          midi_device:stop()
          midi_start_state = false
        end

This will define grid key 16/8 as midi start/stop.

This starts/stops my TR-9 drum machine as expected. If sync is turned on in params, then it also tracks tempo.

(next step would be to make that key light up, but I’ll leave that for another time)

3 Likes

Yes, I know, but page 3 lets you load 7 clips, which is slightly odd, given that there’s only 6 tracks, and there’s actually 16 buttons horizontally that would make sense (in terms of the UI) for clip loading slots.

Plus, on various pages, row 8 does nothing. That’s either because @tehn wants to expand to 7 tracks (as the github notes imply) or he has other ideas in mind.

I’m interested, and may hack the script myself to try, as I can see it being useful to load up, say, 16 clips, then chop and change between them.

I can also imagine row 8 having other global functions.