## Frequently Asked Questions


### What does it play?


Currently, SoLoud includes support for various wav formats including
8, 16, 32 bit, float, double, pcmcia, etc., as well as Ogg Vorbis 
and MP3 files. Not all variants and features are supported, so you
may experience some issues with strange files. As time has progressed,
the libraries SoLoud uses to read these files have improved,
but they are still not the reference libraries, so some strange
variants may exist out there.

Additionally, SoLoud comes with a speech synthesizer based on rsynth, another
primitive speech synth, a retro sound effect synthesizer Sfxr, replayer for MONOTONE 
PC-speaker tracker music, a replayer for C64 SID and Commodore plus/4 TED music,
and a Commodore VIC emulator too.

Finally, SoLoud can use Openmpt through DLL interface, which can play 669, amf, 
ams, dbm, digi, dmf, dsm, far, gdm, ice, imf, it, itp, j2b, m15, mdl, med, mid, mo3, mod, 
mptm, mt2, mtm, okt, plm, psm, ptm, s3m, stm, ult, umx, wow and xm. (Note that
Openmpt has a more restrictive license than SoLoud).

The interface for audio sources is relatively simple, so new formats and
noise generators, as well as audio filters, can be made.

An example sin/saw/triangle/square generator is also available, as part
of the "piano" example.

All of the above can also be fed through series of filters for additional
fun.

### What dependencies does it have?


There's no external library dependencies (apart from stdlib). However,
to get audio out of your speakers, a back-end is needed. Back-ends that
currently exist (but are not limited to) include SDL, windows multimedia, oss, alsa and portaudio, 
and SoLoud has been designed so that making new back-ends would be as
painless as possible. 

### Is there a DLL / C-Interface?


Yes! This DLL can be used from non-c++ environments through the "C" interface. SoLoud comes with wrappers for Python, Ruby, c#, BlitzMax and others.

### How do I know if a sound has finished playing?


This is actually two separate questions.

First, you may be asking when is SoLoud done with a sound? The default behavior is to deallocate the instance after sound has stopped playing, and thus you can simply check if your audio handle is still valid. If it's not, the sound is done.

Second, you may be asking when the sound has come out of the speakers. This is trickier, because the backend may take a while for the sound to come out. The audio is generally sent to audio hardware in buffers, and those buffers may be relatively large. As a completely random example, let's say we're playing with 4096 sample buffers at 44.1kHz. We get unlucky and we need to wait for the whole buffer to play after SoLoud is done with it. With these assumptions, the audio is out of the system after approximately (4096/44100)*1000 = 93ms.

### What's the animal in the logo?


A fennec fox. Google it. They're cute!

### Is there a mailing list?


There's a google group, at <http://groups.google.com/d/forum/soloud>

Main development occurs on GitHub, at
<https://github.com/jarikomppa/soloud> and the issue tracker is in use.

Finally, there's #soloud on ircnet, if you want to pop by.

### No doxygen docs?


No, instead you get documentation written by an actual human being. Granted, 
some function descriptions may be a bit terse or repetitive, but that's what 
you would have gotten from doxygen too..

### Why not use this superior fork of libmodplug?


I'm aware there are other forks of libmodplug, which may be in better shape than the one
used by SoLoud by default. However, those forks use more restrictive licenses, which
(while still liberal) would require changes in SoLoud licensing. At the moment, you
don't need to mention the use of SoLoud anywhere if you don't want to.

That said, nothing's stopping you from compiling a version of SoLoud that uses another
fork of libmodplug.

### Why did SoLoud move to libmodplug?


Originally SoLoud used a public domain fork of modplug, but as time went on it became
increasingly clear that instead of supporting SoLoud the author would have had to support
modplug. At the same time better supported forks of modplug existed, so SoLoud was
divorced from the modplug code, while making it possible to use modplug if needed.

### Can SoLoud do HRTF?


Currently, no. Pull requests are welcome =)

All joking aside, there's no simple place to plug this in currently. It's a TODO item
for the future.

### What about surround speakers?


Yes. SoLoud supports 1, 2, 4, 5.1 and 7.1 configurations.

The way multi-speaker system is implemented in SoLoud, it would be relatively easy to add any number of speakers,
but having more output channels also adds overhead. Most people will only ever use stereo output.

### Are these real questions?


Surprisingly, yes.
