Sign in to follow this  
Metty

[.net] Proper Audioformat for background music?

Recommended Posts

I need an audio format, which needs less space (like mp3, ..) and which is easily convertable to .wav in memory for use in c# (DirectSound, OpenAl, ..). .wav would take too much space .mp3 needs licenses .ogg is nice, but there is no really usable converter for itt Any ideas?

Share this post


Link to post
Share on other sites
.ogg

just get/write a converter. I had to do it for a project once, it wasnt that bad.

heres a place to start if you decide to write a converter:
http://en.wikipedia.org/wiki/Ogg

Share this post


Link to post
Share on other sites
I tried writing a OGG Stream Decoder now using the InterOp lib from http://www.codeplex.com/OggVorbisInterop

My decoder works fine for the first 115 kbytes, but then all following calls to Vorbis.Synthesis end in a AccessViolationException - Can't see what i'm doing wrong.

When reading 2x16 kbytes, the third call (to fill the buffers up again) causes the access violation
When reading 2x1024 kbytes, the first fill up call in the first buffer ends in a access violation after 115 kb

Code:
http://www.wilcob.com/Wilco/Pastecode/23898/showpaste.aspx

Output:

[Sound] Play() [IsStreamed=True]
[Decoder] Resetting...
[Decoder] Parsing header..
[Sound] FillInitial()
[Decoder] - Decoding (read=16384)
[Decoder] - Decoding (read=16384)
[Sound] UpdateStream() [processed=0]
[Sound] UpdateStream() [processed=0]
[Sound] UpdateStream() [processed=0]
[Sound] UpdateStream() [processed=1]
[Decoder] - Decoding (error, read=0)
[Decoder] System.AccessViolationException: Es wurde versucht, im geschützten Spe
icher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass ander
er Speicher beschädigt ist.
bei Xiph.Interop.Vorbis.Vorbis.vorbis_synthesis(vorbis_block& vb, ogg_packet&
op)
bei Xiph.Interop.Vorbis.Vorbis.Synthesis(VorbisBlock vb, OggPacket op)


When reading 2x 65kb, it works fine for the first buffer (65536), but crashes when filling the second one (@ 528000 bytes always) and any further call

Share this post


Link to post
Share on other sites
There's an Ogg converter available through the Mono project, called csvorbis, which is completely native C#. You'll need to check it out from their anonymous SVN though, I couldn't find a zip anywhere.

There's an included decoder sample but it was coded rather strangely. It wasn't too hard to convert it into a simple reader class though. I'm using it in my own game engine at the moment, but I haven't gotten around to setting it up for streaming so it takes a few seconds when loading a large file.

Email me and I'd be happy to send you the zipped files and my OpenAL converter class.

AlphaGremlin

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this