gligli / p600fw

Teensy++ based Sequential Circuits Prophet 600 firmware remake
http://gligli.github.io/p600fw/
41 stars 23 forks source link

Arp and sequencer clocks not synchronized #62

Closed polluxsynth closed 9 years ago

polluxsynth commented 9 years ago

If the sequencer and arpeggiator are started at not the same instant, they will run at the same speed, but will not trigger at the same point, i.e. there will be a perceived delay between them.

polluxsynth commented 9 years ago

I've made an attempt to fix this on the following branch: https://github.com/polluxsynth/p600fw/tree/arpseqsync Note however that it is built on top of the polyseq branch, and again, I've only done a cursory test in my simulator environment, so we need to get the bugs in the sequencer ironed out first.

polluxsynth commented 9 years ago

I've updated the branch: https://github.com/polluxsynth/p600fw/tree/arpseqsync with the latest developments on the polyseq branch plus a few fixes after having had access to a real P600 for a couple of evenings. There's still a bit of work on it needed, as the arp and/or seq get out of sync with the beat if the respective button is pressed, which I believe should not happen in MIDI sync mode - to me it seems more meaningful to, for instance, if the divisor is set to run the sequencer/arpeggiator at 16 notes, always synchronize the sequencer and arpeggiator to the nearest 16th note.

polluxsynth commented 9 years ago

I took the courage and adjusted the behavior of how the seq and arp resets. Now, when on external sync (MIDI or Tape), it keeps track of the 'beat', e.g. 16th notes if it's set to that, so that when pressing SEQ1, SEQ2 or triggering an ARP, the notes are in sync with the 16th notes, and not just running at the same tempo put potentially offset a number of clock pulses (depending on exactly when the SEQ or arp was started in relation to the incoming MIDI clock).

Again, updated https://github.com/polluxsynth/p600fw/tree/arpseqsync

Due for a bit more testing before I put in a merge request.