Example #1
0
        /// <summary>
        /// Create a wave from a stream.
        /// </summary>
        /// <param name="s">The stream.</param>
        /// <param name="version">Version of the file.</param>
        /// <returns></returns>
        public static b_wav CreateWave(b_stm s, byte vMajor, byte vMinor, byte vRevision)
        {
            b_wav b = new b_wav();

            b.fileHeader = new FileHeader("FWAV", ByteOrder.BigEndian, vMajor, vMinor, vRevision, 0, new List <SizedReference>());
            b.data       = s.data;

            b.info                   = new b_wav.InfoBlock();
            b.info.sampleRate        = s.info.streamSoundInfo.sampleRate;
            b.info.originalLoopStart = s.info.streamSoundInfo.originalLoopStart;
            b.info.loopStart         = s.info.streamSoundInfo.loopStart;
            b.info.loopEnd           = s.info.streamSoundInfo.sampleCount;
            b.info.isLoop            = s.info.streamSoundInfo.isLoop;
            b.info.encoding          = s.info.streamSoundInfo.encoding;

            b.info.channelInfo = new List <b_wav.InfoBlock.ChannelInfo>();
            foreach (b_stm.ChannelInfo c in s.info.channels)
            {
                b_wav.InfoBlock.ChannelInfo i = new b_wav.InfoBlock.ChannelInfo();
                i.dspAdpcmInfo = c.dspAdpcmInfo;
                b.info.channelInfo.Add(i);
            }

            b.Update(ByteOrder.BigEndian);

            return(b);
        }
Example #2
0
        /// <summary>
        /// Create a wave from a binary wave.
        /// </summary>
        /// <param name="w">The binary wave.</param>
        /// <param name="version">Version of the file.</param>
        /// <returns></returns>
        public static b_wav CreateWave(BinaryWave w, byte vMajor, byte vMinor, byte vRevision)
        {
            b_wav b = new b_wav();

            b.fileHeader = new FileHeader("FWAV", ByteOrder.BigEndian, vMajor, vMinor, vRevision, 0, new List <SizedReference>());
            b.data       = w.Data;

            b.info                   = new b_wav.InfoBlock();
            b.info.sampleRate        = w.SampleRate;
            b.info.originalLoopStart = w.LoopStartSample;
            b.info.loopStart         = w.LoopStartSample;
            b.info.loopEnd           = w.LoopEndSample == 0xFFFFFFFF ? w.NumSamples : w.LoopEndSample;
            b.info.isLoop            = w.Loops && w.LoopEndSample != 0xFFFFFFFF;
            b.info.encoding          = 2;

            b.info.channelInfo = new List <b_wav.InfoBlock.ChannelInfo>();
            foreach (DspAdpcmInfo d in w.DspAdpcmInfo)
            {
                b_wav.InfoBlock.ChannelInfo i = new b_wav.InfoBlock.ChannelInfo();
                i.dspAdpcmInfo = d;
                b.info.channelInfo.Add(i);
            }

            b.Update(ByteOrder.BigEndian);

            return(b);
        }