Jump to content

View more

Image of the Day

The night is still, but the invasion brings chaos. #screenshotsaturday #hanako #indiegame #gameart #ue4 #samurai https://t.co/cgILXuokoS
IOTD | Top Screenshots

The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.


Sign up now

Cant play correct a Wave File

4: Adsense

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.


  • You cannot reply to this topic
No replies to this topic

#1 SharinganShuriken   Members   

96
Like
0Likes
Like

Posted 04 November 2013 - 05:15 PM

Hello Guys,

 

i have the problem that when i try to read and load a Wave File that by the start of playing the File i get always a little crack, i used befor the WaveStream Class and there works everything perfect but i would to have my own Class, but the really strange thing is that the length of the Wave File is everytime different between the WaveStream Class and my own Class sad.png

 

WaveStream Class, everything works perfect:

[cs]

            using (WaveStream waveFile = new WaveStream(fileName))
            {
                this.description = new SoundBufferDescription();
                this.description.Format = waveFile.Format;
                this.description.SizeInBytes = (int)waveFile.Length;
                this.description.Flags = BufferFlags.ControlFrequency | BufferFlags.ControlPan | BufferFlags.ControlVolume;

                this.buffer = new SecondarySoundBuffer(device, this.description);

                this.data = new byte[this.description.SizeInBytes];
                waveFile.Read(this.data, 0, (int)waveFile.Length);
                this.buffer.Write(this.data, 0, LockFlags.None);
            }

[/cs]

 

My Class

[cs]

            byte[] waveBuffer = File.ReadAllBytes(fileName);
            int waveFileLength = waveBuffer.Length;

            uint chunkID = Mathhelper.GetInt(waveBuffer, 0);
            uint chunkSize = Mathhelper.GetInt(waveBuffer, 4);
            uint format = Mathhelper.GetInt(waveBuffer, 8);
            uint subchunk1ID = Mathhelper.GetInt(waveBuffer, 12);
            uint subchunk1Size = Mathhelper.GetInt(waveBuffer, 16);
            ushort audioFormat = Mathhelper.GetShort(waveBuffer, 20);
            ushort numChannels = Mathhelper.GetShort(waveBuffer, 22);
            uint sampleRate = Mathhelper.GetInt(waveBuffer, 24);
            uint byteRate = Mathhelper.GetInt(waveBuffer, 28);
            ushort blockAlign = Mathhelper.GetShort(waveBuffer, 32);
            ushort bitsPerSample = Mathhelper.GetShort(waveBuffer, 34);
            uint subchunk2ID = Mathhelper.GetInt(waveBuffer, 36);
            uint subchunk2Size = Mathhelper.GetInt(waveBuffer, 40);

            WaveFormat waveFormat = new WaveFormat();
            waveFormat.FormatTag = WaveFormatTag.Pcm;
            waveFormat.Channels = (short)numChannels;
            waveFormat.SamplesPerSecond = (int)sampleRate;
            waveFormat.BlockAlignment = (short)blockAlign;
            waveFormat.BitsPerSample = (short)bitsPerSample;
            waveFormat.AverageBytesPerSecond = waveFormat.SamplesPerSecond * waveFormat.BlockAlignment;

            this.description = new SoundBufferDescription();
            this.description.Format = waveFormat;
            this.description.SizeInBytes = waveFileLength;
            this.description.Flags = BufferFlags.ControlFrequency | BufferFlags.ControlPan | BufferFlags.ControlVolume;

            this.buffer = new SecondarySoundBuffer(device, this.description);
            this.data = waveBuffer;
            this.buffer.Write(this.data, 0, LockFlags.None);

[/cs]

 

What make i wrong ? sad.png

 

Greets

SharinganShuriken






Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.