diff --git a/Content.Client/GameObjects/Components/Instruments/InstrumentComponent.cs b/Content.Client/GameObjects/Components/Instruments/InstrumentComponent.cs index 1f35d766bc..08974e3867 100644 --- a/Content.Client/GameObjects/Components/Instruments/InstrumentComponent.cs +++ b/Content.Client/GameObjects/Components/Instruments/InstrumentComponent.cs @@ -37,6 +37,7 @@ namespace Content.Client.GameObjects.Components.Instruments [CanBeNull] private IMidiRenderer _renderer; private byte _instrumentProgram = 1; + private uint _syncSequencerTick; /// /// 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(); diff --git a/Content.Server/GameObjects/Components/Instruments/InstrumentComponent.cs b/Content.Server/GameObjects/Components/Instruments/InstrumentComponent.cs index 81be788b5a..659f51c15b 100644 --- a/Content.Server/GameObjects/Components/Instruments/InstrumentComponent.cs +++ b/Content.Server/GameObjects/Components/Instruments/InstrumentComponent.cs @@ -95,7 +95,7 @@ namespace Content.Server.GameObjects.Components.Instruments if(++_midiEventCount <= MaxMidiEventsPerSecond) SendNetworkMessage(midiEventMsg); - _lastSequencerTick = midiEventMsg.MidiEvent[-1].Timestamp; + _lastSequencerTick = midiEventMsg.MidiEvent[^1].Timestamp; break; case InstrumentStartMidiMessage startMidi: Playing = true;