Reference Manual - 1.6.3
FusionSound Types

FSSoundDriverInfo
  int major; Major version.
  int minor; Minor version.
  char name[FS_SOUND_DRIVER_INFO_NAME_LENGTH]; Driver name.
  char vendor[FS_SOUND_DRIVER_INFO_VENDOR_LENGTH]; Driver vendor.
  char url[FS_SOUND_DRIVER_INFO_URL_LENGTH]; Driver URL.
  char license[FS_SOUND_DRIVER_INFO_LICENSE_LENGTH]; Driver license.
Description of the sound driver.

FSDeviceDescription
  char name[FS_SOUND_DEVICE_INFO_NAME_LENGTH]; Device name.
  FSSoundDriverInfo driver;
Description of the sound device.

FSSampleFormat
  FSSF_UNKNOWN Unknown or invalid format.
  FSSF_U8 Unsigned 8 bit.
  FSSF_S16 Signed 16 bit (native endian).
  FSSF_S24 Signed 24 bit (native endian).
  FSSF_S32 Signed 32 bit (native endian).
  FSSF_FLOAT Floating-point 32 bit (native endian).
The sample format is the way of storing audible information.

16, 24 and 32 bit samples are always stored in native endian. This keeps the library and applications simple and clean. Always access sample buffers like arrays of 8, 16 or 32 bit integers depending on the sample format, unless data is written with endianness being taken care of. This does not excuse from endian conversion that might be necessary when reading data from files.

FSChannelMode
  FSCM_UNKNOWN Unknown or invalid mode.
  FSCM_MONO 1 Channel (Mono).
  FSCM_STEREO 2 Channels (Left Right).
  FSCM_STEREO21 3 Channels (Left Right Subwoofer).
  FSCM_STEREO30 3 Channels (Left Center Right).
  FSCM_STEREO31 4 Channels (Left Center Right Subwoofer).
  FSCM_SURROUND30 3 Channels (Left Right Rear).
  FSCM_SURROUND31 4 Channels (Left Right Rear Subwoofer).
  FSCM_SURROUND40_2F2R 4 Channels (Left Right RearLeft RearRight).
  FSCM_SURROUND41_2F2R 5 Channels (Left Right RearLeft RearRight Subwoofer).
  FSCM_SURROUND40_3F1R 4 Channels (Left Center Right Rear).
  FSCM_SURROUND41_3F1R 5 Channels (Left Center Right Rear Subwoofer).
  FSCM_SURROUND50 5 Channels (Left Center Right RearLeft RearRight).
  FSCM_SURROUND51 6 Channels (Left Center Right RearLeft RearRight Subwoofer).
The channel mode provides information about the channels configuration.

The channel mode instructs FusionSound about the channels configuration. Particulary usefull when you have a stream with 3, 4 or 5 channels; in these cases, if unspecified, FusionSound assumes STEREO30 for 3 channels, SURROUND40_2F2R for 4 and SURROUND50 for 5.

FSBufferDescriptionFlags
  FSBDF_NONE None of these.
  FSBDF_LENGTH Buffer length is set.
  FSBDF_CHANNELS Number of channels is set.
  FSBDF_SAMPLEFORMAT Sample format is set.
  FSBDF_SAMPLERATE Sample rate is set.
  FSBDF_CHANNELMODE Channel mode is set.
  FSBDF_ALL All of these.
Each buffer description flag validates one field of the buffer description.

FSBufferDescription
  FSBufferDescriptionFlags flags; Defines which fields are set.
  int length; Buffer length specified as number of samples per channel.
  int channels; Number of channels.
  FSSampleFormat sampleformat; Format of each sample.
  int samplerate; Number of samples per second.
  FSChannelMode channelmode; Channel mode (overrides channels).
The buffer description is used to create static sound buffers.

FSStreamDescriptionFlags
  FSSDF_NONE None of these.
  FSSDF_BUFFERSIZE Ring buffer size is set.
  FSSDF_CHANNELS Number of channels is set.
  FSSDF_SAMPLEFORMAT Sample format is set.
  FSSDF_SAMPLERATE Sample rate is set.
  FSSDF_PREBUFFER Prebuffer amount is set.
  FSSDF_CHANNELMODE Channel mode is set.
  FSSDF_ALL All of these.
Each stream description flag validates one field of the stream description.

FSStreamDescription
  FSStreamDescriptionFlags flags; Defines which fields are set.
  int buffersize; Ring buffer size specified as a number of samples (per channel).
  int channels; Number of channels.
  FSSampleFormat sampleformat; Format of each sample.
  int samplerate; Number of samples per second (per channel).
  int prebuffer; Samples to buffer before starting the playback. A negative value disables auto start of playback.
  FSChannelMode channelmode; Channel mode (overrides channels).
The stream description is used to create streaming sound buffers.

FSMusicProviderCapabilities
  FMCAPS_BASIC Basic ops (PlayTo, Stop).
  FMCAPS_SEEK Supports SeekTo.
  FMCAPS_RESAMPLE Supports audio resampling.
  FMCAPS_HALFRATE Supports decoding at half original rate.
Information about an IFusionSoundMusicProvider.

FSMusicProviderStatus
  FMSTATE_UNKNOWN Unknown status.
  FMSTATE_PLAY Provider is playing.
  FMSTATE_STOP Playback was stopped.
  FMSTATE_FINISHED Playback is finished.
  FMSTATE_ALL
Information about the status of a music provider.

FSMusicProviderPlaybackFlags
  FMPLAY_NOFX Normal playback.
  FMPLAY_LOOPING Automatically restart playback as soon as the end of the current track is reached.
Flags controlling playback of a music provider.

FSTrackDescription
  char artist[FS_TRACK_DESC_ARTIST_LENGTH]; Artist.
  char title[FS_TRACK_DESC_TITLE_LENGTH]; Title.
  char album[FS_TRACK_DESC_ALBUM_LENGTH]; Album.
  short year; Year.
  char genre[FS_TRACK_DESC_GENRE_LENGTH]; Genre.
  char encoding[FS_TRACK_DESC_ENCODING_LENGTH]; Encoding (for example: MPEG Layer-1).
  int bitrate; Bitrate in bits/s.
  float replaygain; ReplayGain level (1.0 by default).
  float replaygain_album; Album ReplayGain level.
Description of a track provided by a music provider.

FSTrackCallback
DirectEnumerationResult (*FSTrackCallback) (
  FSTrackID track_id,
  FSTrackDescription desc,
  void *callbackdata
);
Called for each track provided by a music provider.

FSBufferPlayFlags
  FSPLAY_NOFX No effects are applied.
  FSPLAY_LOOPING Playback will continue at the beginning of the buffer as soon as the end is reached. There's no gap produced by concatenation. Only one looping playback at a time is supported by the simple playback. See also CreatePlayback().
  FSPLAY_CYCLE Play the whole buffer for one cycle, wrapping at the end.
  FSPLAY_REWIND Play reversing sample order.
  FSPLAY_ALL All of these.
Flags for simple playback using
IFusionSoundBuffer::Play().

FMBufferCallbackResult
  FMBCR_OK Continue.
  FMBCR_BREAK Stop loading.
Result of a FMBufferCallback.