Jump to content

Sync offset between Seq3 and Logic


whomper
 Share

Recommended Posts

When Logic and Seq3 are playing together, say Seq3 is in slave mode, if Logic is played not from the song beginning, a 5 steps delay happens between the two.

Example: Logic is at location 10, then Seq is at location 5/15 and step A1.5 and not A1.1.

Only if a start from the actual beginning, both of them are in exact sync.

If I place Logic at any given location and hit play, Seq3 starts immediately, but starting from location **.5

Strangely enough, the 16 LED sequence are in sync with Logic, but the Song is not, meaning Seq3 is not in sync between the 16 LEDs and the Song position when Seq3 is in slave mode.

Any ideas?

Whomper

Link to comment
Share on other sites

Yes, I'm aware of this issue - the reason is, that for a proper synchronisation the internal song/step and clock divider counters have to be prepared for the next step, so that the correct step is played with the next incoming MIDI clock. Since Logic can send more song positions in addition (e.g. while scrubbing the song position pointer over the arranger window), I found it more useful to prepare, but not to execute the next step, just to save some CPU time and to prevent unnecessary delays (in worst case, a MIDI In buffer overflow could happen)

Therefore the LCD and LEDs will show the scenario before the actual selected song position - just waiting for the first clock so that the engine will properly update all variables.

Btw.: the receive handler for the song position pointer is not able to recalculate all parameters, especially the progression parameters and the clock dividers - this is too difficult, as there is no simple "formula" which allows to determine exactly such variables based on the song position. You will find a lot of inconsistencies here... :-/

Best Regards, Thorsten.

Link to comment
Share on other sites

After some more testing, the issue is even trickier; although the song plays in good sync, the fact that the LCD shows a permanent offset also influences when patterns play.

Imaging an offset of 5 steps, which is a constant one BTW and there is no catchup. As the LEDs play in sync with Logic, the LCD shows a positive delta of 5 steps and thus plays the last 5 steps of the patterns which should switch to before they actually start (5 steps before to be exact).

A1 - 1..15, A2 - 10-15, A2 1-15.

From usability standpoint, it would be great to scrub Logic's arrange and see how it translates to SEQ3 song structures.

Erez

Link to comment
Share on other sites

ok, got it! The whole synchronisation is not working properly anymore, seems that I messed up something during the "last quick changes" this week.

I will check this and propably release a testing build today

Best Regards, Thorsten.

Link to comment
Share on other sites

Ok, I think I found the location which needs to be improved.

Could you please try the following: open seq_core.inc, search for "SEQ_CORE_Reset", and replace all lines between SEQ_CORE_Reset and SEQ_CORE_Reset_NotMaster by:


SEQ_CORE_Reset
;; play off events of all tracks
call SEQ_CORE_Hlp_PlayAllOffEvnts

;; init the reference counters
SET_BSR SEQ_BASE
setf SEQ_CLK_TICK_CTR, BANKED
setf SEQ_CLK_STEP_CTR, BANKED

BIFSET SEQ_CFG0, SEQ_CFG0_BPM_CLK_SLAVE, BANKED, rgoto SEQ_CORE_Reset_NotMaster
SEQ_CORE_Reset_Master
;; clear all sequencer requests (i.E. a stop event!)
clrf SEQ_REQ, BANKED

;; cancel all requested clocks (only relevant for master mode)
clrf SEQ_CLK_REQ_CTR, BANKED
movlw 3
movwf SEQ_SENT_CLK_CTR, BANKED
SEQ_CORE_Reset_NotMaster
[/code]

For the slave the "clock counter reset" has to be done at a different place, so that it works in all cases. But for a first try this works ok

It would be interesting if this works with your Logic version? (I'm using PC v5.5)

Best Regards, Thorsten.

Link to comment
Share on other sites

While reviewing the code, I noticed that the song position parser can be realized on a much more robust way by moving it into the NotifyRx handler of MIOS (which will be triggered immediately on received events)

For a quick test, I scrubbed over the arrange window of Logic at various BPM rates, and the sequencer always got in sync with Logic again - so I think that it's working stable now :)

The release candidate can be downloaded from this location:

http://www.ucapps.de/tmp/midibox_seq_v3_0a_rc1.zip

Please note: I also added the "x16 loop action", which means, that songs have to be overworked.

"jump pos" is shifted to x16

"jump song" is shifted to "jump pos"

"mixer map" is shifted to "jump song"

So - songs have to be adapted if they are using these actions! Just increment the action by one

Best Regards, Thorsten.

Link to comment
Share on other sites

As the ratio of patterns vs. songs is in favor of patterns (i.e. you get tons of patterns, but only 16 songs, or 32 in a future revision with 512 backstick) It would be great if there will be an option to assign other banksticks in the format section to Song as well. That way, the user will have the choice for more songs in favor of patterns.

Whomper

Link to comment
Share on other sites

Copy:

When using copy with pattern that has more than 16 steps, there is no way to set the right boundary as the rightmost rotary is #16.

Paste:

I have copied an 8 step sequence from a track that is 16 steps long, extended the length to 32 and hit paste, the track length reverts to 16 steps although I have copied only part of it. There should be a difference between copying a part of a pattern, by which only the relevant steps with their associated info like volume should be copied to the scenario where I had requested to copy an entire track.

Whomper

Link to comment
Share on other sites

When changing a pattern in one of the groups per any given Pos, if the cursor is left on the pattern change (i.e. it blinks) and the Seq starts playing (Start button or slave seq), then the entire group is empties from start position till song end.

Whomper

Link to comment
Share on other sites

Hi Whomper,

I combined all your postings, because this simplifies the answering.

Now I only need to write a single posting, in which I can refer to a new release candidate!

I found a way to reproduce the pattern switching issue in song mode - I just used the record function of Logic, which sends a new song position, and then starts to record all incoming MIDI events. The root cause was found out very quickly, and it should work now (please try it out)

Multiple Song BankSticks: I checked this, but there is too much code which would have to be changed.

Wouldn't it be better for your workflow, if you would be able to switch patterns directly from Logic? For example via CC?

This would allow you to embedd the chains of patterns directly into a Logic Song.

Copy issue: fixed

Paste issue: the current behaviour was a special request by dcer10 (see MBSEQ V3 talk thread, where errors where reported and commented in the past). I prefer the current implementation, and a variation which would allow to switch back to the old behaviour would be too complicated, therefore I would say: so long everybody knows that all track parameters are copied, it should be manageable, and it is only a documentation issue.

I wasn't able to reproduce the "pattern delete" issue. There is no function available which is able to clear any song position, there is especially no function which would clear multiple positions (from start position till song end)

Could it be that you switched to an empty song by accident?

If not: could you please give me some step-by-step instructions how to reproduce this?

Here the new release candidate:

http://www.ucapps.de/tmp/midibox_seq_v3_1_rc1.zip

I changed the version number from 3.0 to 3.1, since a 64k Song BankStick is supported now.

The random generator has been enhanced as well, it now allows to specifiy individual "intensities" for all parameter and trigger layers

Please note: the CHANGELOG.txt describes a way, how to initialize the upper half of the 64k bankstick without loosing the previous content of the lower 32k half.

Best Regards, Thorsten.

Link to comment
Share on other sites

Hi TK,

I have uploaded the new ROM and played a bit with it. Here's what I found:

Pattern switching:

Now a 32 step pattern when switched always starts at step 17. If I play Logic at least a measure before, when the times come and the pattern switches (from B2 to B4 which is the 32 steps pattern) it plays from step 17. When playing at the position of the switch, there is no issue and B4 plays from step 1. it does not matter if I had played the seq 1 or 2 measures before the swtich, or even 4.

A new issue had now creeped, which is the switched pattern does not play in sync. it is delayed by a step or so, so perhaps it plays from step 16 and not 17.

Copy:

Seems to be ok.

Multi bank sticks:

As I am fond of Seq song logic, I will probably opt for 64K bankstick just for the Songs.

As for pattern delete:

Could not reproduce with a new song. Will try some more with my main one after I log my patterns to paper :-)

Can you also have a look at the memory load/save issue I am having, logged in the troubleshooting section?

Thanks,

Whomper

Link to comment
Share on other sites

The remaining "step offset" issue is related to the way, how MBSEQ calculates the step positions based on the incoming song pointer, which is sent by Logic. It cannot be 100% accurate, since the song mode of MBSEQ works with 1 measure (16 step) resolution, and the track lengths can vary from 1..32 steps.

This means for example: if your song consists of

1: 1 x A1

2: 2 x A2

where A1 and A2 is a 32 step pattern, the song position will be calculated correctly for the first measure, for the second measure the sequencer will start at A2, step 17, and for the third measure the sequencer will start at A2, step 1

This might be an unexpected behaviour, but there is no proper solution for this

Only workaround is to ensure, that a song always uses "even loops" (2x, 4x, 6x, ...) when it plays 32 step tracks.

The initial position of tracks with != 16 steps where not calculated correctly in v3_1rc1, but I improved this in v3_1rc2

But I fear that this is all what I can do

http://www.ucapps.de/tmp/midibox_seq_v3_1_rc2.zip

SysEx dump (load/save) issue: the format has been changed, the bankstick is now selected with the 7th byte of the SysEx request. This is documented in the updated http://www.ucapps.de/mios/mios_backup.txt

The example in CHANGELOG.txt is working, this is what I tried out yesterday

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...
 Share

×
×
  • Create New...