Closed jeremybernstein closed 7 years ago
I reverted to 28daebd and reimplemented this. The internal clock is now serviced globally and is treated exactly like an external clock. The per-channel special casing is now removed, and the sync problems are eliminated.
I am having some trouble with LFSR mode -- it just repeats most of the time, even with p(x) set to +255. Something seems a bit off there, but I haven't had time to investigate.
It should be possible to improve the speed with which the channels respond to tempo changes -- the work I reverted was somewhat faster to resync to a new tempo. But it broke other stuff, so...
Ok, this should fix the problems with external clock source sync. Now we have to figure out a solution for clock jitter and behavior during a tempo change. The current solution is not working well, particularly when changing from a fast to a slow tempo.