public override int GetHashCode() { var hash = groove[0]; if (groove.Length > 1) { hash |= groove[1] << 8; } if (groove.Length > 2) { hash |= groove[2] << 16; } if (groove.Length > 3) { hash |= groove[3] << 24; } hash = Utils.HashCombine(hash, groovePadMode); return(hash); }