libsnd - Liquid War 6
Description: Liquid War 6

Next: mod-csound, Previous: libsim, Up: C API

### 5.40 libsnd

#### 5.40.1 Overview

View lcov test coverage results on http://www.ufoot.org/liquidwar/v6/doc/coverage/src/lib/snd/index.html.

#### 5.40.2 API

— Function: int lw6snd_play_fx (lw6snd_backend_t * backend, int fx_id)

> backend: sound backend to use

> fx_id: sound fx id

> Plays a sound fx.

> Return value: 1 on success, 0 on error

— Function: int lw6snd_is_music_file (lw6snd_backend_t * backend, char * map_dir, char * music_path, char * music_file)

> backend: sound backend to use

> map_dir: map directory, to search additionnal files

> music_path: config entry containing multiple paths

> music_file: relative/local name of a music file

> Tells wether a file is a valid music file, typicallly based on file existence and extension. Not bullet proof, file might actually not be loadable, but chances are 99%.

> Return value: 1 if music file, 0 if not

— Function: int lw6snd_play_music_file (lw6snd_backend_t * backend, char * map_dir, char * music_path, char * music_file)

> backend: sound backend to use

> map_dir: map directory, to search additionnal files

> music_path: config entry containing multiple paths

> music_file: relative/local name of a music file

> Plays a music file.

> Return value: 1 if OK, 0 if not.

— Function: int lw6snd_play_music_random (lw6snd_backend_t * backend, char * music_path, char * music_filter, char * music_exclude)

> backend: sound backend to use

> music_path: config entry containing multiple paths

> music_filter: string filter, must be present

> music_exclude: string filter, must not be present

> Plays a random music file. The filter and exclude mecanisms are not complete regex filters, only a quick and dirty feature which should still help in some cases, such as sorting musics for the menus and for the rest.

> Return value: 1 if OK, 0 if not.

— Function: void lw6snd_stop_music (lw6snd_backend_t * backend)

> backend: sound backend to use

> Stops the music.

> Return value: none.

— Function: int lw6snd_init (lw6snd_backend_t * backend, float fx_volume, float water_volume, float music_volume)

> backend: the graphical backend to use

> fx_volume: sound fx volume

> water_volume: water sounds volume

> music_volume: music volume

> Sets up the sound backend for good, initializing a playback engine ready to play sounds and set to defaults. This call can typically fail if there's no device available, if the user doesn't have enough rights to access the hardware, and so on.

> Return value: 1 on success, 0 if not

— Function: void lw6snd_set_fx_volume (lw6snd_backend_t * backend, float volume)

> backend: sound backend to use

> volume: sound fx volume

> Changes sound fx volume.

> Return value: none.

— Function: void lw6snd_set_water_volume (lw6snd_backend_t * backend, float volume)

> backend: sound backend to use

> volume: water sounds volume

> Changes water sounds volume.

> Return value: none.

— Function: void lw6snd_set_music_volume (lw6snd_backend_t * backend, float volume)

> backend: sound backend to use

> volume: music volume

> Changes music volume.

> Return value: none.

— Function: void lw6snd_poll (lw6snd_backend_t * backend)

> backend: sound backend to use

> Polling function, must be called on a regular basis.

> Return value: none.

— Function: void lw6snd_quit (lw6snd_backend_t * backend)

> backend: the backend to quit

> Uninitializes the backend, that is, releases resources, stops playback.

> Return value: none.

— Function: char * lw6snd_repr (const lw6snd_backend_t * backend)

> backend: the backend to represent

> Returns a readable version of the backend object.

> Return value: a newly allocated pointer.

— Function: lw6sys_assoc_t * lw6snd_get_backends (int argc, const char * [] argv)

> argc: argc, as passed to `main`

> argv: argv, as passed to `main`

> List available snd backends. The hash contains pairs with id and name for each backend. The id is the technical key you can use to load the backend, the name is something more readable you can display in an interface. The backend objects themselves are not instanciated by this (in fact, they are, but released on the fly) you need to load and initialize them afterwards.

> Return value: hash containing id/name pairs.

— Function: lw6snd_backend_t * lw6snd_create_backend (int argc, const char * [] argv, const char * name)

> argc: argc, as passed to `main`

> argv: argv, as passed to `main`

> name: string containing snd key, typically got from `lw6snd_get_backends`

> Creates a snd backend, this is just about loading the dynamic library if needed, and/or check snd engine is available, and connect to it. It does not perform initialization.

> Return value: snd backend.

— Function: void lw6snd_destroy_backend (lw6snd_backend_t * backend)

> backend: snd backend to destroy

> Frees the ressources associated to a snd, which must have been properly uninitialized before.

> Return value: none.

— Function: int lw6snd_test_register (int mode)

> mode: test mode (bitmask)

> Registers all tests for the libsnd module.

> Return value: 1 if test is successfull, 0 on error.

— Function: int lw6snd_test_run (int mode)

> mode: test mode (bitmask)

> Runs the `snd` module test suite, testing most (if not all...) functions.

> Return value: 1 if test is successfull, 0 on error.

— Struct: lw6snd_backend_s

> The snd backend is the first argument passed to any snd function, it contains reference to all the functions which can be used as well as a pointer on associated data. In OO, this would just be an object, with members and methods, using polymorphism through opaque pointers.

— Member of lw6snd_backend_s: dl_handle

> Type: `lw6dyn_dl_handle_t *`

> Definition: `lw6dyn_dl_handle_t* lw6snd_backend_s::dl_handle`

> Handle on dynamic library (if it makes sense).

— Member of lw6snd_backend_s: snd_context

> Type: `void *`

> Definition: `void* lw6snd_backend_s::snd_context`

> Snd specific data, what is behind this pointer really depends on the snd engine.

— Member of lw6snd_backend_s: argc

> Type: `int`

> Definition: `int lw6snd_backend_s::argc`

> The argc value passed to main.

— Member of lw6snd_backend_s: argv

> Type: `const char **`

> Definition: `const char** lw6snd_backend_s::argv`

> The argv value passed to main.

— Member of lw6snd_backend_s: id

> Type: `u_int32_t`

> Definition: `u_int32_t lw6snd_backend_s::id`

> The id of the object, this is non-zero and unique within one run session, incremented at each object creation.

— Member of lw6snd_backend_s: play_fx

> Type: `int(*`

> Definition: `int(* lw6snd_backend_s::play_fx)(void *snd_context, int fx_id)`

> Pointer on lw6snd_play_fx callback code.

— Member of lw6snd_backend_s: is_music_file

> Type: `int(*`

> Definition: `int(* lw6snd_backend_s::is_music_file)(void *snd_context, char *music_file)`

> Pointer on lw6snd_is_music_file callback code.

— Member of lw6snd_backend_s: play_music_file

> Type: `int(*`

> Definition: `int(* lw6snd_backend_s::play_music_file)(void *snd_context, char *music_file)`

> Pointer on lw6snd_play_music_file callback code.

— Member of lw6snd_backend_s: play_music_random

> Type: `int(*`

> Definition: `int(* lw6snd_backend_s::play_music_random)(void *snd_context, char *music_path, char *music_filter, char *music_exclude)`

> Pointer on lw6snd_play_music_randomcallback code.

— Member of lw6snd_backend_s: stop_music

> Type: `void(*`

> Definition: `void(* lw6snd_backend_s::stop_music)(void *snd_context)`

> Pointer on lw6snd_stop_music callback code.

— Member of lw6snd_backend_s: init

> Type: `void *(*`

> Definition: `void*(* lw6snd_backend_s::init)(int argc, const char *argv[], float fx_volume, float water_volume, float music_volume)`

> Pointer on lw6snd_init callback code.

— Member of lw6snd_backend_s: set_fx_volume

> Type: `void(*`

> Definition: `void(* lw6snd_backend_s::set_fx_volume)(void *snd_context, float volume)`

> Pointer on lw6snd_set_fx_volume callback code.

— Member of lw6snd_backend_s: set_water_volume

> Type: `void(*`

> Definition: `void(* lw6snd_backend_s::set_water_volume)(void *snd_context, float volume)`

> Pointer on lw6snd_set_water_volume callback code.

— Member of lw6snd_backend_s: set_music_volume

> Type: `void(*`

> Definition: `void(* lw6snd_backend_s::set_music_volume)(void *snd_context, float volume)`

> Pointer on lw6snd_set_music_volume callback code.

— Member of lw6snd_backend_s: poll

> Type: `void(*`

> Definition: `void(* lw6snd_backend_s::poll)(void *snd_context)`

> Pointer on lw6snd_poll callback code.

— Member of lw6snd_backend_s: quit

> Type: `void(*`

> Definition: `void(* lw6snd_backend_s::quit)(void *snd_context)`

> Pointer on lw6snd_quit callback code.

— Member of lw6snd_backend_s: repr

> Type: `char *(*`

> Definition: `char*(* lw6snd_backend_s::repr)(void *snd_context, u_int32_t id)`

> Pointer on lw6snd_repr callback code.