NReplayGain by David Robinson, Glen Sawyer, Frank Klemm, Marcel Müller, Ivailo Karamanolev, Kyle McClellan

<PackageReference Include="NReplayGain" Version="1.0.2" />

 CPtr<T>

struct CPtr<T>
using System; namespace NReplayGain { internal struct CPtr<T> { public T[] Array; public int Index; public T this[int index] { get { return Array[Index + index]; } set { Array[Index + index] = value; } } public int Length => Array.Length - Index; public CPtr(T[] array, int index = 0) { Array = array; Index = index; } public static CPtr<T>operator +(CPtr<T> pointer, long offset) { if (offset > 2147483647) throw new ArgumentException("Offset is too big!"); return new CPtr<T>(pointer.Array, pointer.Index + (int)offset); } public static CPtr<T>operator ++(CPtr<T> pointer) { return pointer + 1; } } }