Ejemplo n.º 1
0
 protected override void WritePcm8(aBinaryWriter writer)
 {
     for (var i = 0; i < mSampleCount; ++i)
     {
         GotoSample(i);
         writer.WriteS8(MixPcm8());
     }
 }
Ejemplo n.º 2
0
        protected override void WritePcm8(aBinaryWriter writer)
        {
            mReader.Goto(0);

            switch (mFormat)
            {
            case WaveFormat.Pcm8: {
                writer.WriteS8s(mReader.ReadS8s(mSampleCount));
                break;
            }

            case WaveFormat.Pcm16: {
                for (var i = 0; i < mSampleCount; ++i)
                {
                    sbyte pcm8;
                    Waveform.Pcm16toPcm8(mReader.ReadS16(), out pcm8);
                    writer.WriteS8(pcm8);
                }
                break;
            }

            case WaveFormat.Adpcm2: {
                var pcm8 = new sbyte[16];
                var pcm16 = new short[16];
                int last = 0, penult = 0;
                for (var i = 0; i < mSampleCount; i += 16)
                {
                    Waveform.Adpcm2toPcm16(mReader.Read8s(5), pcm16, ref last, ref penult);
                    for (var j = 0; j < 16; ++j)
                    {
                        Waveform.Pcm16toPcm8(pcm16[j], out pcm8[j]);
                    }
                    writer.WriteS8s(pcm8, System.Math.Min(16, (mSampleCount - i)));
                }
                break;
            }

            case WaveFormat.Adpcm4: {
                var pcm8 = new sbyte[16];
                var pcm16 = new short[16];
                int last = 0, penult = 0;
                for (var i = 0; i < mSampleCount; i += 16)
                {
                    Waveform.Adpcm4toPcm16(mReader.Read8s(9), pcm16, ref last, ref penult);
                    for (var j = 0; j < 16; ++j)
                    {
                        Waveform.Pcm16toPcm8(pcm16[j], out pcm8[j]);
                    }
                    writer.WriteS8s(pcm8, System.Math.Min(16, (mSampleCount - i)));
                }
                break;
            }
            }
        }
Ejemplo n.º 3
0
        void WriteInfo()
        {
            mWriter.WriteString("LIST");
            mWriter.WriteS32(CalculateInfoSize());

            mWriter.WriteString("INFO");

            mWriter.WriteString("ifil");
            mWriter.WriteS32(4);
            mWriter.WriteS16(2);
            mWriter.WriteS16(1);

            mWriter.WriteString("isng");
            mWriter.WriteS32(8);
            mWriter.WriteString("EMU8000");
            mWriter.WriteS8(0);

            mWriter.WriteString("INAM");
            mWriter.WriteS32(((mWaveBank.Name.Length + 2) / 2) * 2);
            mWriter.WriteString(mWaveBank.Name);
            mWriter.WriteS8(0);
            mWriter.WritePadding(2, 0);
        }