//This process is specific to decode STAR OCEAN samples.
        public static byte[] decodeSOStreamBRRToWav(ref byte[] brr, ref bool ptrLooped, bool addWavHeader = true, bool applyGaussFilter = true, Int16 bitwidth = 16, Int16 channels = 1, UInt32 samplerate = 32000)
        {
            List <Int16> rawSamples = new List <Int16>();

            int nOfBrrBytes = brr[7] + (brr[8] & 0x3F) * 0x0100;

            brr         = brr.Skip(9).ToArray();
            brr         = brr.Take(nOfBrrBytes).ToArray();
            nOfBrrBytes = (nOfBrrBytes / 9) * 16;

            while (rawSamples.Count < nOfBrrBytes)
            {
                int startIndex = (rawSamples.Count * 9) / 16;
                rawSamples.AddRange(decodeBRRToInt16(brr.Skip(startIndex).ToArray(), ref ptrLooped, false));
            }

            if (rawSamples.Count <= 0)
            {
                return new byte[] { }
            }
            ;

            if (applyGaussFilter)
            {
                gaussFilter(ref rawSamples);
            }

            if (!addWavHeader)
            {
                return(rawSamples.SelectMany(BitConverter.GetBytes).ToArray());
            }

            byte[] wavBytes = Brr.getWavHeader(rawSamples.Count, 16, 1, samplerate).ToArray();
            wavBytes = wavBytes.Concat(rawSamples.SelectMany(BitConverter.GetBytes).ToArray()).ToArray();
            return(wavBytes);
        }
        public static byte[] decodeBRRToWav(byte[] brr, ref bool ptrLooped, bool addWavHeader = true, bool applyGaussFilter = true, Int16 bitwidth = 16, Int16 channels = 1, UInt32 samplerate = 32000)
        {
            List <Int16> rawSamples = decodeBRRToInt16(brr, ref ptrLooped);

            if (rawSamples.Count <= 0)
            {
                return new byte[] { }
            }
            ;

            if (applyGaussFilter)
            {
                gaussFilter(ref rawSamples);
            }

            if (!addWavHeader)
            {
                return(rawSamples.SelectMany(BitConverter.GetBytes).ToArray());
            }

            byte[] wavBytes = Brr.getWavHeader(rawSamples.Count, 16, 1, samplerate).ToArray();
            wavBytes = wavBytes.Concat(rawSamples.SelectMany(BitConverter.GetBytes).ToArray()).ToArray();
            return(wavBytes);
        }