/// <summary>
        /// Update the internal state of the instance.
        /// </summary>
        public void UpdateInternalState()
        {
            if (IsUsed && NeedToUpdateInternalState)
            {
                MixBufferVolume.CopyTo(PreviousMixBufferVolume);
            }

            NeedToUpdateInternalState = false;
        }
        /// <summary>
        /// Update the <see cref="SplitterDestination"/> from user parameter.
        /// </summary>
        /// <param name="parameter">The user parameter.</param>
        public void Update(SplitterDestinationInParameter parameter)
        {
            Debug.Assert(Id == parameter.Id);

            if (parameter.IsMagicValid() && Id == parameter.Id)
            {
                DestinationId = parameter.DestinationId;

                parameter.MixBufferVolume.CopyTo(MixBufferVolume);

                if (!IsUsed && parameter.IsUsed)
                {
                    MixBufferVolume.CopyTo(PreviousMixBufferVolume);

                    NeedToUpdateInternalState = false;
                }

                IsUsed = parameter.IsUsed;
            }
        }
 /// <summary>
 /// Clear the volumes.
 /// </summary>
 public void ClearVolumes()
 {
     MixBufferVolume.Fill(0);
     PreviousMixBufferVolume.Fill(0);
 }