Sync sequencer tick correctly

This commit is contained in:
zumorica
2020-05-21 17:39:48 +02:00
parent 78aa4fb872
commit 0235f6096e
2 changed files with 4 additions and 4 deletions

View File

@@ -37,6 +37,7 @@ namespace Content.Client.GameObjects.Components.Instruments
[CanBeNull]
private IMidiRenderer _renderer;
private byte _instrumentProgram = 1;
private uint _syncSequencerTick;
/// <summary>
/// A queue of MidiEvents to be sent to the server.
@@ -161,8 +162,7 @@ namespace Content.Client.GameObjects.Components.Instruments
for (var i = 0; i < midiEventMessage.MidiEvent.Length; i++)
{
var ev = midiEventMessage.MidiEvent[i];
var delta = ((uint)TimeBetweenNetMessages*1250) + ev.Timestamp;
var delta = ((uint)TimeBetweenNetMessages*1250) + ev.Timestamp - _syncSequencerTick;
_renderer?.ScheduleMidiEvent(ev, delta, true);
}
break;
@@ -178,7 +178,7 @@ namespace Content.Client.GameObjects.Components.Instruments
{
Logger.Info($"WE GOT STATE: {state.Playing} {state.SequencerTick}");
SetupRenderer();
if (_renderer != null) _renderer.SequencerTick = state.SequencerTick;
_syncSequencerTick = state.SequencerTick;
}
else
EndRenderer();