Beat Clock Generator

Hi there,

Long time Bome user but this one has me stumped and I did some searching here.

I have a device that only takes beat clock for its BPM sync (Pioneer EFX 1000), my host software is only capable of sending out single instances of notes, CC's, and PC (Waves LV1 mixing console).

Is it possible to have Bome generate a predetermined beat clock when it receives a note?

Thanks,

Robbie.

Hi, you can have Bome generate MIDI beat (timing) clock signals with a timer, however the granularity of the clock may not be as precise as you would like it. Keep in mind that the clock is supposed to be 24 bits per quarter note so you may need to do a bit of math to figure out the number of milleseconds between each clock output.

Say you want 120 beats per minute which is 2 beats per second (120/60). Say you are in 4/4 timing so you will generate 4 quarter notes in 2 seconds. Each quarter note requires 24 clocks so you need 24 clock signals in 1/2 second or 48 clock signals per second. 1 divided by 48 = 20.833 milliseconds but the precision of MT pro is 1 millesecond so you would need to generate a clock signal roughly every 21 milleseconds and that would generate 120.96 bpm (if I did my math right. Doing this all in my head). You will not be able to achieve exactly 120 bpm so MT pro is not really an ideal clock generator. If you generate 1 clock per 20ms the bpm would be 115.2 bpm.

My math may be a bit off but hopefully you get the picture.

So if you have any MIDI signal trigger a repeating timer at 21ms intervals and the timer sends MIDI clock signals, you will get correct MIDI clock output for 120.96 bpm.

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz

 

 

Hi I’ve been working on a way to capture midi stop /start messages and clock tick messages as an always active counter. I’ve created a scratch version for use with Ableton.

I’m building up a project that takes inputs from a midi pedal controller, triggers events in Ableton to record and play slots, trigger effect unit patch changes, trigger a midi controlled switcher and also to do all the necessary track arming etc.

The curious thing is that Ableton happily quantises the start and end of loops so the input timing can be quite sloppy. I’ve never got on with loopers so this is a great cheat for me. Anyway although Ableton happily quantises loops, arming and switching is done immediately. The same is true of my effects unit and switcher. These need to time precisely with the end of a recorded loop in Ableton.

I’ve written a timer that capture the Song Position Pointer sent when starting or recommencing and then increments a counter base to the midi ticks. I’m going to use this to synchronise later events to bar and section ends.

Here’s a rough text dump:

Preset 0: Clock Counter

Translator 0.0: Song Position
Incoming: On stop/start capture Song position Pointer. Allow pass through, on ports Bome MIDI Translator 1 Virtual In, ABLETON
Rules: “Update pointer to SPP * 6 = 24 ticks Per QtrNote”
Log ‘%sp%’
pt=sp*6
Outgoing: (none)

Translator 0.1: Bar Clock
Incoming: Counter for timing, on port Bome MIDI Translator 1 Virtual In
// Capture the MidiMessage Timing Clock 24 Ticks per quarter note from Ableton
// Note other DAWs may use a different standard, not sure tick increment should go at beginning or end

Rules: “Position: Bar, Note, Ticks, Loop Quamtized”
// quarter notes since start
pn=pt/24
// quarter Notes in this bar, adjusted to start from 1 (4/4)
pn=pn%4
pn=pn+1
// Bars since start, adjusted to start from 1. (4/4)
pb=pt/96
pb=pb+1
// quantized periods since start (4 bars), adjusted to start from one
pq=pt/384
pq=pq+1
// trigger for start of beat
pl=pt%24
if pl==0 then Log ‘bar %pb% note %pn% %pt% %sp%’
pl=pt%384
if pl==383 then Log ‘4 bar section end %pt%’
// increment tick counter
pt=pt+1
Outgoing: (none)

Hi, so it looks like you need to compare your pedal input with the timing captured from Ableton Live before performing a given switch.

To do this, when you push the pedal, instead of making the switch, set another global variable and then in your timing logic, at the determined point, look at that variable to determine if a switch needs to be made. If you have version 1.9.0 or later, you can use ‘Perform’ within the rules to make the switch and reset the pedal monitoring variable.

This tutorial, shows how you can use perform within rules.

  1. Always running counter (as you have it. I assume youj have working logic and didn’t check)
  2. Press pedal, capture event in global variable (no switching yet)
  3. Timer logic- check for pedal event (global variable) and if pedal event occured, perform the switch and reset the variable.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz
1 Like