[sdiy] MIDI Clock sync advice

Mike Bryant mbryant at futurehorizons.com
Fri Mar 8 23:57:20 CET 2024


Don't have any resources, but the way I've done it is to have an adder feeding a register then back into the adder with an increment number also fed into the adder from another register.  Compare the carry bit from the adder with signal you're trying to lock to and adjust the increment up or down slightly until you get the nearest thing to a lock.

But unlike a hardware PLL it won't be an exact lock and you'll find the increment constantly wobbling up and down by 1 LSB, but that's usually liveable with.
________________________________
From: Synth-diy <synth-diy-bounces at synth-diy.org> on behalf of Tom Wiltshire <tom at electricdruid.net>
Sent: 08 March 2024 22:36
To: DIY DSP <diydsp at yahoo.com>
Cc: synth-diy at synth-diy.org <synth-diy at synth-diy.org>
Subject: Re: [sdiy] MIDI Clock sync advice

Thanks. Do you have any resources to point to that I could look up about software PLLs? All the stuff I've seen seems to assume it's a hardware solution. While some of that is clearly transferable, something that had software in mind would help a lot.

Tom

==================
       Electric Druid
Synth & Stompbox DIY
==================



On 8 Mar 2024, at 16:52, DIY DSP <diydsp at yahoo.com<mailto:diydsp at yahoo.com>> wrote:


I've done this the "easy" way with a software PLL, and the hard way with a Kalman filter.
Technically what you need depends on the noise/error profile of the source clock.
But start with the software PLL.. On every 4th input clock, use the error to update the phase and period of the output clock.
For this application, since the signals will converge very quickly relative to how often they chance, I recommend using only the P term from the PID to compute the error and reset the phase of the output clock on the spot to the input clock.



Noah Vawter's futuristic electronic music instrument lab: youtube.com/diydsp<https://youtube.com/diydsp>


On Friday, March 8, 2024 at 10:20:30 AM EST, Tom Wiltshire <tom at electricdruid.net<mailto:tom at electricdruid.net>> wrote:


Hi All,

Has anyone got any experience dealing with writing software to sync to MIDI clock that they can share?

I'm working on a drum sequencer which will run at 96PPQN, and it'd be nice if it could sync to incoming 24PPQN MIDI Clock messages.

I can see a couple of ways to do this:

1) Some sort of PID controller, where we compare the internal timing and the incoming clock timing and derive some error signals.
2) IIR filtering. We measure the time between incoming clocks and then use an IIR filter to provide some averaging and smoothing. We then set the internal clock based on the filter's output.

(2) seems like the simpler approach. Clearly it will introduce some lag when changing tempo, but I'm not sure I see this as a fault - smooth tempo changes could be a feature. And depending on how much filtering is required, that lag might actually be quite short. What's a reasonable time constant for such a thing?

How has this been approached in the past? I know that I'm not the first person to do this, so I'm just trying to avoid re-inventing the stone-age MIDI wheel!

Many thanks for any ideas/pointers offered,
Tom

==================
      Electric Druid
Synth & Stompbox DIY
==================




________________________________________________________
This is the Synth-diy mailing list
Submit email to: Synth-diy at synth-diy.org<mailto:Synth-diy at synth-diy.org>
View archive at: https://synth-diy.org/pipermail/synth-diy/
Check your settings at: https://synth-diy.org/mailman/listinfo/synth-diy
Selling or trading? Use marketplace at synth-diy.org<mailto:marketplace at synth-diy.org>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://synth-diy.org/pipermail/synth-diy/attachments/20240308/f2f330d1/attachment.htm>


More information about the Synth-diy mailing list