Jump to content

A 4th BPM Clock Mode?


Duggle

Recommended Posts

I was wondering about the feasibility of a 4th clock mode.

Its like the BPM Slave mode except that the SEQ will ignore incoming Start/Stop/Continue

Its like being a system master except it syncs to external clock.

The change I'd also like to use with this (maybe part of the proposed 4th clock mode) is that when stop button is hit, a Stop is transmitted and the sequencer stops ( the same as it currently does when it receives a Stop externally) rather than the state where the play and stop LED flash alternately. 

Perhaps this mode would be called Master Clock Slave (or something)? 

 

If the proposed mode is not available through the menu but a line in the config then I'd be just as happy.

 

My usecase is where the SEQ is used in tandem with a Boss RC-50 Loop Station.

The RC-50 works best when it is clock master.

The SEQ is really in control though. I wish to change patch on the RC-50 (opens up hugely more arrangemental possibilities). To change patch on the fly, I'll need to stop (via external trigger) just before the end of a measure and restart the RC-50 (also via external trigger) at the beginning of the next measure. Where this comes unstuck is that the RC-50 outputs a Start/Stop/Continue merged with the clock that unfortunately the SEQ responds to

Link to comment
Share on other sites

Could you please try if such a mode would really help, or if it would lead to new issues, so that such a dedicated extension is not useful at all?

 

Please add following filter to the NOTIFY_MIDI_Rx function in app.c:

 

 

static s32 NOTIFY_MIDI_Rx(mios32_midi_port_t port, u8 midi_byte)
{
  // BEGIN experiment
  if( midi_byte == 0xfa || midi_byte == 0xfb || midi_byte == 0xfc )
    return 1; // filter start/continue/stop
  // END experiment
 
  // filter MIDI In port which controls the MIDI clock
  if( SEQ_MIDI_ROUTER_MIDIClockInGet(port) == 1 )
    SEQ_BPM_NotifyMIDIRx(midi_byte);
 
  return 0; // no error, no filtering
}
 

 

Best Regards, Thorsten.

Link to comment
Share on other sites

Thanks TK, so far so good!

I am now able to start and stop the RC-50 on the fly under SEQ control.

 

As I may have mentioned, the RC-50 midi implementation is extremely lame. I'm not being unkind, I think it is the case that it was deliberately engineered to avoid external automation (maybe to avoid the possible wearing out of flash memories that could stem from this, I dont know).

Anyhow I'm using the footswitch inputs to increase the amount of control. I have J5.A1 driving an optocoupler that is activating  a footswitch that is set to execute start/stop.

I'm executing a Program Change output with a mixermap encoder. Question:what is the best way to program a PrgChange message at a more or less precise (arbitrary) moment?

 

I'm hoping we can continue the experiment. I agree there is a bit more testing before we could say this is actually worthwhile.

Could we change it so that the transport controls more like the normal Master Mode. ATM it is not actually outputing start/stop.

I would prefer to turn off midi clock output back to the  RC-50 (but still have start/stop transmitted). If it's not possible to to have clock output turned off and still have  start/stop output, then thats o.k. I'll have clock output turned on to this port.

      

Link to comment
Share on other sites

I'm executing a Program Change output with a mixermap encoder. Question:what is the best way to program a PrgChange message at a more or less precise (arbitrary) moment?

 

Precise (MIDI clock based) control is usually done in the SEQ_CORE_Tick function based on bpm_tick (see seq_core.c)

 

E.g. if you would like to synchronize to the measure, see how the EXT_RESTART_REQ is handled.

 

Best Regards, Thorsten.

Link to comment
Share on other sites

Thanks TK.

SEQ_CORE_Tick is nearly 700 lines, I'll have a good look at it.

 

In the meantime, is there a small change possible to the Slave sync mode where the transport controls behave as if master? (i.e Start and Stop (buttons) do just that, and send out start and stop messages respectively.)   

Link to comment
Share on other sites

In the meantime, is there a small change possible to the Slave sync mode where the transport controls behave as if master? (i.e Start and Stop (buttons) do just that, and send out start and stop messages respectively.)   

 

open seq_ui.c, search for SEQ_UI_Button_Stop

change it, so that enable_slaveclk_mute is always 0

(currently it is "u8 enable_slaveclk_mute = !SEQ_BPM_IsMaster()")

 

Then search for SEQ_UI_Button_Play

disable the branch where it checks for !SEQ_BPM_IsMaster()

 

Best Regards, Thorsten.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...