misc/winutils/include/SDL_mixer.h
author nemo
Sat, 23 Feb 2013 23:01:50 -0500
changeset 8566 d9627d65edf7
parent 7809 7d4fb2f35f4f
child 10017 de822cd3df3a
permissions -rw-r--r--
This and the "retain freezing" stuff could probably use a flag.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6560
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
     1
/*
7809
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
     2
  SDL_mixer:  An audio mixer library based on the SDL library
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
     3
  Copyright (C) 1997-2012 Sam Lantinga <slouken@libsdl.org>
6560
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
     4
7809
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
     5
  This software is provided 'as-is', without any express or implied
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
     6
  warranty.  In no event will the authors be held liable for any damages
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
     7
  arising from the use of this software.
6560
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
     8
7809
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
     9
  Permission is granted to anyone to use this software for any purpose,
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    10
  including commercial applications, and to alter it and redistribute it
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    11
  freely, subject to the following restrictions:
6560
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    12
7809
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    13
  1. The origin of this software must not be misrepresented; you must not
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    14
     claim that you wrote the original software. If you use this software
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    15
     in a product, an acknowledgment in the product documentation would be
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    16
     appreciated but is not required.
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    17
  2. Altered source versions must be plainly marked as such, and must not be
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    18
     misrepresented as being the original software.
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    19
  3. This notice may not be removed or altered from any source distribution.
6560
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    20
*/
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    21
7809
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    22
/* $Id$ */
6560
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    23
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    24
#ifndef _SDL_MIXER_H
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    25
#define _SDL_MIXER_H
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    26
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    27
#include "SDL_types.h"
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    28
#include "SDL_rwops.h"
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    29
#include "SDL_audio.h"
7809
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    30
#include "SDL_endian.h"
6560
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    31
#include "SDL_version.h"
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    32
#include "begin_code.h"
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    33
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    34
/* Set up for C function definitions, even when using C++ */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    35
#ifdef __cplusplus
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    36
extern "C" {
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    37
#endif
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    38
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    39
/* Printable format: "%d.%d.%d", MAJOR, MINOR, PATCHLEVEL
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    40
*/
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    41
#define SDL_MIXER_MAJOR_VERSION	1
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    42
#define SDL_MIXER_MINOR_VERSION	2
7809
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    43
#define SDL_MIXER_PATCHLEVEL    12
6560
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    44
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    45
/* This macro can be used to fill a version structure with the compile-time
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    46
 * version of the SDL_mixer library.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    47
 */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    48
#define SDL_MIXER_VERSION(X)						\
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    49
{									\
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    50
	(X)->major = SDL_MIXER_MAJOR_VERSION;				\
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    51
	(X)->minor = SDL_MIXER_MINOR_VERSION;				\
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    52
	(X)->patch = SDL_MIXER_PATCHLEVEL;				\
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    53
}
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    54
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    55
/* Backwards compatibility */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    56
#define MIX_MAJOR_VERSION	SDL_MIXER_MAJOR_VERSION
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    57
#define MIX_MINOR_VERSION	SDL_MIXER_MINOR_VERSION
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    58
#define MIX_PATCHLEVEL		SDL_MIXER_PATCHLEVEL
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    59
#define MIX_VERSION(X)		SDL_MIXER_VERSION(X)
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    60
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    61
/* This function gets the version of the dynamically linked SDL_mixer library.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    62
   it should NOT be used to fill a version structure, instead you should
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    63
   use the SDL_MIXER_VERSION() macro.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    64
 */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    65
extern DECLSPEC const SDL_version * SDLCALL Mix_Linked_Version(void);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    66
7809
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    67
typedef enum
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    68
{
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    69
    MIX_INIT_FLAC        = 0x00000001,
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    70
    MIX_INIT_MOD         = 0x00000002,
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    71
    MIX_INIT_MP3         = 0x00000004,
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    72
    MIX_INIT_OGG         = 0x00000008,
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    73
    MIX_INIT_FLUIDSYNTH  = 0x00000010
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    74
} MIX_InitFlags;
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    75
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    76
/* Loads dynamic libraries and prepares them for use.  Flags should be
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    77
   one or more flags from MIX_InitFlags OR'd together.
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    78
   It returns the flags successfully initialized, or 0 on failure.
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    79
 */
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    80
extern DECLSPEC int SDLCALL Mix_Init(int flags);
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    81
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    82
/* Unloads libraries loaded with Mix_Init */
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    83
extern DECLSPEC void SDLCALL Mix_Quit(void);
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
    84
6560
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    85
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    86
/* The default mixer has 8 simultaneous mixing channels */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    87
#ifndef MIX_CHANNELS
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    88
#define MIX_CHANNELS	8
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    89
#endif
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    90
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    91
/* Good default values for a PC soundcard */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    92
#define MIX_DEFAULT_FREQUENCY	22050
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    93
#if SDL_BYTEORDER == SDL_LIL_ENDIAN
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    94
#define MIX_DEFAULT_FORMAT	AUDIO_S16LSB
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    95
#else
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    96
#define MIX_DEFAULT_FORMAT	AUDIO_S16MSB
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    97
#endif
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    98
#define MIX_DEFAULT_CHANNELS	2
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
    99
#define MIX_MAX_VOLUME		128	/* Volume of a chunk */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   100
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   101
/* The internal format for an audio chunk */
7809
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   102
typedef struct Mix_Chunk {
6560
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   103
	int allocated;
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   104
	Uint8 *abuf;
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   105
	Uint32 alen;
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   106
	Uint8 volume;		/* Per-sample volume, 0-128 */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   107
} Mix_Chunk;
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   108
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   109
/* The different fading types supported */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   110
typedef enum {
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   111
	MIX_NO_FADING,
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   112
	MIX_FADING_OUT,
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   113
	MIX_FADING_IN
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   114
} Mix_Fading;
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   115
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   116
typedef enum {
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   117
	MUS_NONE,
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   118
	MUS_CMD,
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   119
	MUS_WAV,
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   120
	MUS_MOD,
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   121
	MUS_MID,
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   122
	MUS_OGG,
7809
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   123
	MUS_MP3,
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   124
	MUS_MP3_MAD,
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   125
	MUS_FLAC,
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   126
	MUS_MODPLUG
6560
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   127
} Mix_MusicType;
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   128
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   129
/* The internal format for a music chunk interpreted via mikmod */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   130
typedef struct _Mix_Music Mix_Music;
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   131
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   132
/* Open the mixer with a certain audio format */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   133
extern DECLSPEC int SDLCALL Mix_OpenAudio(int frequency, Uint16 format, int channels,
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   134
							int chunksize);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   135
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   136
/* Dynamically change the number of channels managed by the mixer.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   137
   If decreasing the number of channels, the upper channels are
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   138
   stopped.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   139
   This function returns the new number of allocated channels.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   140
 */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   141
extern DECLSPEC int SDLCALL Mix_AllocateChannels(int numchans);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   142
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   143
/* Find out what the actual audio device parameters are.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   144
   This function returns 1 if the audio has been opened, 0 otherwise.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   145
 */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   146
extern DECLSPEC int SDLCALL Mix_QuerySpec(int *frequency,Uint16 *format,int *channels);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   147
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   148
/* Load a wave file or a music (.mod .s3m .it .xm) file */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   149
extern DECLSPEC Mix_Chunk * SDLCALL Mix_LoadWAV_RW(SDL_RWops *src, int freesrc);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   150
#define Mix_LoadWAV(file)	Mix_LoadWAV_RW(SDL_RWFromFile(file, "rb"), 1)
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   151
extern DECLSPEC Mix_Music * SDLCALL Mix_LoadMUS(const char *file);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   152
7809
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   153
/* Load a music file from an SDL_RWop object (Ogg and MikMod specific currently)
6560
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   154
   Matt Campbell (matt@campbellhome.dhs.org) April 2000 */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   155
extern DECLSPEC Mix_Music * SDLCALL Mix_LoadMUS_RW(SDL_RWops *rw);
7809
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   156
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   157
/* Load a music file from an SDL_RWop object assuming a specific format */
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   158
extern DECLSPEC Mix_Music * SDLCALL Mix_LoadMUSType_RW(SDL_RWops *rw, Mix_MusicType type, int freesrc);
6560
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   159
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   160
/* Load a wave file of the mixer format from a memory buffer */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   161
extern DECLSPEC Mix_Chunk * SDLCALL Mix_QuickLoad_WAV(Uint8 *mem);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   162
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   163
/* Load raw audio data of the mixer format from a memory buffer */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   164
extern DECLSPEC Mix_Chunk * SDLCALL Mix_QuickLoad_RAW(Uint8 *mem, Uint32 len);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   165
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   166
/* Free an audio chunk previously loaded */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   167
extern DECLSPEC void SDLCALL Mix_FreeChunk(Mix_Chunk *chunk);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   168
extern DECLSPEC void SDLCALL Mix_FreeMusic(Mix_Music *music);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   169
7809
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   170
/* Get a list of chunk/music decoders that this build of SDL_mixer provides.
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   171
   This list can change between builds AND runs of the program, if external
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   172
   libraries that add functionality become available.
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   173
   You must successfully call Mix_OpenAudio() before calling these functions.
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   174
   This API is only available in SDL_mixer 1.2.9 and later.
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   175
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   176
   // usage...
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   177
   int i;
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   178
   const int total = Mix_GetNumChunkDecoders();
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   179
   for (i = 0; i < total; i++)
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   180
       printf("Supported chunk decoder: [%s]\n", Mix_GetChunkDecoder(i));
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   181
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   182
   Appearing in this list doesn't promise your specific audio file will
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   183
   decode...but it's handy to know if you have, say, a functioning Timidity
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   184
   install.
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   185
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   186
   These return values are static, read-only data; do not modify or free it.
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   187
   The pointers remain valid until you call Mix_CloseAudio().
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   188
*/
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   189
extern DECLSPEC int SDLCALL Mix_GetNumChunkDecoders(void);
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   190
extern DECLSPEC const char * SDLCALL Mix_GetChunkDecoder(int index);
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   191
extern DECLSPEC int SDLCALL Mix_GetNumMusicDecoders(void);
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   192
extern DECLSPEC const char * SDLCALL Mix_GetMusicDecoder(int index);
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   193
6560
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   194
/* Find out the music format of a mixer music, or the currently playing
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   195
   music, if 'music' is NULL.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   196
*/
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   197
extern DECLSPEC Mix_MusicType SDLCALL Mix_GetMusicType(const Mix_Music *music);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   198
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   199
/* Set a function that is called after all mixing is performed.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   200
   This can be used to provide real-time visual display of the audio stream
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   201
   or add a custom mixer filter for the stream data.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   202
*/
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   203
extern DECLSPEC void SDLCALL Mix_SetPostMix(void (*mix_func)
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   204
                             (void *udata, Uint8 *stream, int len), void *arg);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   205
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   206
/* Add your own music player or additional mixer function.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   207
   If 'mix_func' is NULL, the default music player is re-enabled.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   208
 */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   209
extern DECLSPEC void SDLCALL Mix_HookMusic(void (*mix_func)
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   210
                          (void *udata, Uint8 *stream, int len), void *arg);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   211
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   212
/* Add your own callback when the music has finished playing.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   213
   This callback is only called if the music finishes naturally.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   214
 */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   215
extern DECLSPEC void SDLCALL Mix_HookMusicFinished(void (*music_finished)(void));
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   216
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   217
/* Get a pointer to the user data for the current music hook */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   218
extern DECLSPEC void * SDLCALL Mix_GetMusicHookData(void);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   219
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   220
/*
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   221
 * Add your own callback when a channel has finished playing. NULL
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   222
 *  to disable callback. The callback may be called from the mixer's audio 
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   223
 *  callback or it could be called as a result of Mix_HaltChannel(), etc.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   224
 *  do not call SDL_LockAudio() from this callback; you will either be 
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   225
 *  inside the audio callback, or SDL_mixer will explicitly lock the audio
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   226
 *  before calling your callback.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   227
 */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   228
extern DECLSPEC void SDLCALL Mix_ChannelFinished(void (*channel_finished)(int channel));
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   229
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   230
7809
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   231
/* Special Effects API by ryan c. gordon. (icculus@icculus.org) */
6560
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   232
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   233
#define MIX_CHANNEL_POST  -2
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   234
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   235
/* This is the format of a special effect callback:
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   236
 *
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   237
 *   myeffect(int chan, void *stream, int len, void *udata);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   238
 *
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   239
 * (chan) is the channel number that your effect is affecting. (stream) is
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   240
 *  the buffer of data to work upon. (len) is the size of (stream), and
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   241
 *  (udata) is a user-defined bit of data, which you pass as the last arg of
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   242
 *  Mix_RegisterEffect(), and is passed back unmolested to your callback.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   243
 *  Your effect changes the contents of (stream) based on whatever parameters
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   244
 *  are significant, or just leaves it be, if you prefer. You can do whatever
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   245
 *  you like to the buffer, though, and it will continue in its changed state
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   246
 *  down the mixing pipeline, through any other effect functions, then finally
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   247
 *  to be mixed with the rest of the channels and music for the final output
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   248
 *  stream.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   249
 *
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   250
 * DO NOT EVER call SDL_LockAudio() from your callback function!
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   251
 */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   252
typedef void (*Mix_EffectFunc_t)(int chan, void *stream, int len, void *udata);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   253
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   254
/*
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   255
 * This is a callback that signifies that a channel has finished all its
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   256
 *  loops and has completed playback. This gets called if the buffer
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   257
 *  plays out normally, or if you call Mix_HaltChannel(), implicitly stop
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   258
 *  a channel via Mix_AllocateChannels(), or unregister a callback while
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   259
 *  it's still playing.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   260
 *
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   261
 * DO NOT EVER call SDL_LockAudio() from your callback function!
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   262
 */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   263
typedef void (*Mix_EffectDone_t)(int chan, void *udata);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   264
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   265
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   266
/* Register a special effect function. At mixing time, the channel data is
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   267
 *  copied into a buffer and passed through each registered effect function.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   268
 *  After it passes through all the functions, it is mixed into the final
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   269
 *  output stream. The copy to buffer is performed once, then each effect
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   270
 *  function performs on the output of the previous effect. Understand that
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   271
 *  this extra copy to a buffer is not performed if there are no effects
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   272
 *  registered for a given chunk, which saves CPU cycles, and any given
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   273
 *  effect will be extra cycles, too, so it is crucial that your code run
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   274
 *  fast. Also note that the data that your function is given is in the
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   275
 *  format of the sound device, and not the format you gave to Mix_OpenAudio(),
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   276
 *  although they may in reality be the same. This is an unfortunate but
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   277
 *  necessary speed concern. Use Mix_QuerySpec() to determine if you can
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   278
 *  handle the data before you register your effect, and take appropriate
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   279
 *  actions.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   280
 * You may also specify a callback (Mix_EffectDone_t) that is called when
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   281
 *  the channel finishes playing. This gives you a more fine-grained control
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   282
 *  than Mix_ChannelFinished(), in case you need to free effect-specific
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   283
 *  resources, etc. If you don't need this, you can specify NULL.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   284
 * You may set the callbacks before or after calling Mix_PlayChannel().
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   285
 * Things like Mix_SetPanning() are just internal special effect functions,
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   286
 *  so if you are using that, you've already incurred the overhead of a copy
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   287
 *  to a separate buffer, and that these effects will be in the queue with
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   288
 *  any functions you've registered. The list of registered effects for a
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   289
 *  channel is reset when a chunk finishes playing, so you need to explicitly
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   290
 *  set them with each call to Mix_PlayChannel*().
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   291
 * You may also register a special effect function that is to be run after
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   292
 *  final mixing occurs. The rules for these callbacks are identical to those
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   293
 *  in Mix_RegisterEffect, but they are run after all the channels and the
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   294
 *  music have been mixed into a single stream, whereas channel-specific
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   295
 *  effects run on a given channel before any other mixing occurs. These
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   296
 *  global effect callbacks are call "posteffects". Posteffects only have
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   297
 *  their Mix_EffectDone_t function called when they are unregistered (since
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   298
 *  the main output stream is never "done" in the same sense as a channel).
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   299
 *  You must unregister them manually when you've had enough. Your callback
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   300
 *  will be told that the channel being mixed is (MIX_CHANNEL_POST) if the
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   301
 *  processing is considered a posteffect.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   302
 *
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   303
 * After all these effects have finished processing, the callback registered
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   304
 *  through Mix_SetPostMix() runs, and then the stream goes to the audio
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   305
 *  device. 
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   306
 *
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   307
 * DO NOT EVER call SDL_LockAudio() from your callback function!
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   308
 *
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   309
 * returns zero if error (no such channel), nonzero if added.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   310
 *  Error messages can be retrieved from Mix_GetError().
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   311
 */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   312
extern DECLSPEC int SDLCALL Mix_RegisterEffect(int chan, Mix_EffectFunc_t f,
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   313
					Mix_EffectDone_t d, void *arg);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   314
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   315
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   316
/* You may not need to call this explicitly, unless you need to stop an
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   317
 *  effect from processing in the middle of a chunk's playback.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   318
 * Posteffects are never implicitly unregistered as they are for channels,
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   319
 *  but they may be explicitly unregistered through this function by
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   320
 *  specifying MIX_CHANNEL_POST for a channel.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   321
 * returns zero if error (no such channel or effect), nonzero if removed.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   322
 *  Error messages can be retrieved from Mix_GetError().
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   323
 */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   324
extern DECLSPEC int SDLCALL Mix_UnregisterEffect(int channel, Mix_EffectFunc_t f);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   325
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   326
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   327
/* You may not need to call this explicitly, unless you need to stop all
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   328
 *  effects from processing in the middle of a chunk's playback. Note that
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   329
 *  this will also shut off some internal effect processing, since
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   330
 *  Mix_SetPanning() and others may use this API under the hood. This is
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   331
 *  called internally when a channel completes playback.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   332
 * Posteffects are never implicitly unregistered as they are for channels,
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   333
 *  but they may be explicitly unregistered through this function by
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   334
 *  specifying MIX_CHANNEL_POST for a channel.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   335
 * returns zero if error (no such channel), nonzero if all effects removed.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   336
 *  Error messages can be retrieved from Mix_GetError().
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   337
 */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   338
extern DECLSPEC int SDLCALL Mix_UnregisterAllEffects(int channel);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   339
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   340
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   341
#define MIX_EFFECTSMAXSPEED  "MIX_EFFECTSMAXSPEED"
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   342
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   343
/*
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   344
 * These are the internally-defined mixing effects. They use the same API that
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   345
 *  effects defined in the application use, but are provided here as a
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   346
 *  convenience. Some effects can reduce their quality or use more memory in
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   347
 *  the name of speed; to enable this, make sure the environment variable
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   348
 *  MIX_EFFECTSMAXSPEED (see above) is defined before you call
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   349
 *  Mix_OpenAudio().
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   350
 */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   351
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   352
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   353
/* Set the panning of a channel. The left and right channels are specified
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   354
 *  as integers between 0 and 255, quietest to loudest, respectively.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   355
 *
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   356
 * Technically, this is just individual volume control for a sample with
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   357
 *  two (stereo) channels, so it can be used for more than just panning.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   358
 *  If you want real panning, call it like this:
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   359
 *
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   360
 *   Mix_SetPanning(channel, left, 255 - left);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   361
 *
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   362
 * ...which isn't so hard.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   363
 *
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   364
 * Setting (channel) to MIX_CHANNEL_POST registers this as a posteffect, and
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   365
 *  the panning will be done to the final mixed stream before passing it on
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   366
 *  to the audio device.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   367
 *
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   368
 * This uses the Mix_RegisterEffect() API internally, and returns without
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   369
 *  registering the effect function if the audio device is not configured
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   370
 *  for stereo output. Setting both (left) and (right) to 255 causes this
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   371
 *  effect to be unregistered, since that is the data's normal state.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   372
 *
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   373
 * returns zero if error (no such channel or Mix_RegisterEffect() fails),
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   374
 *  nonzero if panning effect enabled. Note that an audio device in mono
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   375
 *  mode is a no-op, but this call will return successful in that case.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   376
 *  Error messages can be retrieved from Mix_GetError().
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   377
 */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   378
extern DECLSPEC int SDLCALL Mix_SetPanning(int channel, Uint8 left, Uint8 right);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   379
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   380
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   381
/* Set the position of a channel. (angle) is an integer from 0 to 360, that
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   382
 *  specifies the location of the sound in relation to the listener. (angle)
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   383
 *  will be reduced as neccesary (540 becomes 180 degrees, -100 becomes 260).
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   384
 *  Angle 0 is due north, and rotates clockwise as the value increases.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   385
 *  For efficiency, the precision of this effect may be limited (angles 1
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   386
 *  through 7 might all produce the same effect, 8 through 15 are equal, etc).
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   387
 *  (distance) is an integer between 0 and 255 that specifies the space
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   388
 *  between the sound and the listener. The larger the number, the further
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   389
 *  away the sound is. Using 255 does not guarantee that the channel will be
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   390
 *  culled from the mixing process or be completely silent. For efficiency,
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   391
 *  the precision of this effect may be limited (distance 0 through 5 might
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   392
 *  all produce the same effect, 6 through 10 are equal, etc). Setting (angle)
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   393
 *  and (distance) to 0 unregisters this effect, since the data would be
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   394
 *  unchanged.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   395
 *
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   396
 * If you need more precise positional audio, consider using OpenAL for
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   397
 *  spatialized effects instead of SDL_mixer. This is only meant to be a
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   398
 *  basic effect for simple "3D" games.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   399
 *
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   400
 * If the audio device is configured for mono output, then you won't get
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   401
 *  any effectiveness from the angle; however, distance attenuation on the
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   402
 *  channel will still occur. While this effect will function with stereo
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   403
 *  voices, it makes more sense to use voices with only one channel of sound,
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   404
 *  so when they are mixed through this effect, the positioning will sound
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   405
 *  correct. You can convert them to mono through SDL before giving them to
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   406
 *  the mixer in the first place if you like.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   407
 *
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   408
 * Setting (channel) to MIX_CHANNEL_POST registers this as a posteffect, and
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   409
 *  the positioning will be done to the final mixed stream before passing it
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   410
 *  on to the audio device.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   411
 *
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   412
 * This is a convenience wrapper over Mix_SetDistance() and Mix_SetPanning().
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   413
 *
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   414
 * returns zero if error (no such channel or Mix_RegisterEffect() fails),
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   415
 *  nonzero if position effect is enabled.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   416
 *  Error messages can be retrieved from Mix_GetError().
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   417
 */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   418
extern DECLSPEC int SDLCALL Mix_SetPosition(int channel, Sint16 angle, Uint8 distance);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   419
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   420
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   421
/* Set the "distance" of a channel. (distance) is an integer from 0 to 255
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   422
 *  that specifies the location of the sound in relation to the listener.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   423
 *  Distance 0 is overlapping the listener, and 255 is as far away as possible
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   424
 *  A distance of 255 does not guarantee silence; in such a case, you might
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   425
 *  want to try changing the chunk's volume, or just cull the sample from the
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   426
 *  mixing process with Mix_HaltChannel().
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   427
 * For efficiency, the precision of this effect may be limited (distances 1
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   428
 *  through 7 might all produce the same effect, 8 through 15 are equal, etc).
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   429
 *  (distance) is an integer between 0 and 255 that specifies the space
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   430
 *  between the sound and the listener. The larger the number, the further
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   431
 *  away the sound is.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   432
 * Setting (distance) to 0 unregisters this effect, since the data would be
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   433
 *  unchanged.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   434
 * If you need more precise positional audio, consider using OpenAL for
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   435
 *  spatialized effects instead of SDL_mixer. This is only meant to be a
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   436
 *  basic effect for simple "3D" games.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   437
 *
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   438
 * Setting (channel) to MIX_CHANNEL_POST registers this as a posteffect, and
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   439
 *  the distance attenuation will be done to the final mixed stream before
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   440
 *  passing it on to the audio device.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   441
 *
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   442
 * This uses the Mix_RegisterEffect() API internally.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   443
 *
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   444
 * returns zero if error (no such channel or Mix_RegisterEffect() fails),
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   445
 *  nonzero if position effect is enabled.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   446
 *  Error messages can be retrieved from Mix_GetError().
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   447
 */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   448
extern DECLSPEC int SDLCALL Mix_SetDistance(int channel, Uint8 distance);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   449
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   450
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   451
/*
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   452
 * !!! FIXME : Haven't implemented, since the effect goes past the
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   453
 *              end of the sound buffer. Will have to think about this.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   454
 *               --ryan.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   455
 */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   456
#if 0
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   457
/* Causes an echo effect to be mixed into a sound. (echo) is the amount
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   458
 *  of echo to mix. 0 is no echo, 255 is infinite (and probably not
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   459
 *  what you want).
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   460
 *
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   461
 * Setting (channel) to MIX_CHANNEL_POST registers this as a posteffect, and
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   462
 *  the reverbing will be done to the final mixed stream before passing it on
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   463
 *  to the audio device.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   464
 *
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   465
 * This uses the Mix_RegisterEffect() API internally. If you specify an echo
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   466
 *  of zero, the effect is unregistered, as the data is already in that state.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   467
 *
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   468
 * returns zero if error (no such channel or Mix_RegisterEffect() fails),
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   469
 *  nonzero if reversing effect is enabled.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   470
 *  Error messages can be retrieved from Mix_GetError().
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   471
 */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   472
extern no_parse_DECLSPEC int SDLCALL Mix_SetReverb(int channel, Uint8 echo);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   473
#endif
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   474
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   475
/* Causes a channel to reverse its stereo. This is handy if the user has his
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   476
 *  speakers hooked up backwards, or you would like to have a minor bit of
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   477
 *  psychedelia in your sound code.  :)  Calling this function with (flip)
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   478
 *  set to non-zero reverses the chunks's usual channels. If (flip) is zero,
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   479
 *  the effect is unregistered.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   480
 *
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   481
 * This uses the Mix_RegisterEffect() API internally, and thus is probably
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   482
 *  more CPU intensive than having the user just plug in his speakers
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   483
 *  correctly. Mix_SetReverseStereo() returns without registering the effect
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   484
 *  function if the audio device is not configured for stereo output.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   485
 *
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   486
 * If you specify MIX_CHANNEL_POST for (channel), then this the effect is used
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   487
 *  on the final mixed stream before sending it on to the audio device (a
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   488
 *  posteffect).
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   489
 *
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   490
 * returns zero if error (no such channel or Mix_RegisterEffect() fails),
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   491
 *  nonzero if reversing effect is enabled. Note that an audio device in mono
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   492
 *  mode is a no-op, but this call will return successful in that case.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   493
 *  Error messages can be retrieved from Mix_GetError().
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   494
 */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   495
extern DECLSPEC int SDLCALL Mix_SetReverseStereo(int channel, int flip);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   496
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   497
/* end of effects API. --ryan. */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   498
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   499
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   500
/* Reserve the first channels (0 -> n-1) for the application, i.e. don't allocate
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   501
   them dynamically to the next sample if requested with a -1 value below.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   502
   Returns the number of reserved channels.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   503
 */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   504
extern DECLSPEC int SDLCALL Mix_ReserveChannels(int num);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   505
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   506
/* Channel grouping functions */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   507
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   508
/* Attach a tag to a channel. A tag can be assigned to several mixer
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   509
   channels, to form groups of channels.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   510
   If 'tag' is -1, the tag is removed (actually -1 is the tag used to
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   511
   represent the group of all the channels).
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   512
   Returns true if everything was OK.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   513
 */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   514
extern DECLSPEC int SDLCALL Mix_GroupChannel(int which, int tag);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   515
/* Assign several consecutive channels to a group */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   516
extern DECLSPEC int SDLCALL Mix_GroupChannels(int from, int to, int tag);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   517
/* Finds the first available channel in a group of channels,
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   518
   returning -1 if none are available.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   519
 */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   520
extern DECLSPEC int SDLCALL Mix_GroupAvailable(int tag);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   521
/* Returns the number of channels in a group. This is also a subtle
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   522
   way to get the total number of channels when 'tag' is -1
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   523
 */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   524
extern DECLSPEC int SDLCALL Mix_GroupCount(int tag);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   525
/* Finds the "oldest" sample playing in a group of channels */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   526
extern DECLSPEC int SDLCALL Mix_GroupOldest(int tag);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   527
/* Finds the "most recent" (i.e. last) sample playing in a group of channels */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   528
extern DECLSPEC int SDLCALL Mix_GroupNewer(int tag);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   529
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   530
/* Play an audio chunk on a specific channel.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   531
   If the specified channel is -1, play on the first free channel.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   532
   If 'loops' is greater than zero, loop the sound that many times.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   533
   If 'loops' is -1, loop inifinitely (~65000 times).
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   534
   Returns which channel was used to play the sound.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   535
*/
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   536
#define Mix_PlayChannel(channel,chunk,loops) Mix_PlayChannelTimed(channel,chunk,loops,-1)
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   537
/* The same as above, but the sound is played at most 'ticks' milliseconds */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   538
extern DECLSPEC int SDLCALL Mix_PlayChannelTimed(int channel, Mix_Chunk *chunk, int loops, int ticks);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   539
extern DECLSPEC int SDLCALL Mix_PlayMusic(Mix_Music *music, int loops);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   540
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   541
/* Fade in music or a channel over "ms" milliseconds, same semantics as the "Play" functions */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   542
extern DECLSPEC int SDLCALL Mix_FadeInMusic(Mix_Music *music, int loops, int ms);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   543
extern DECLSPEC int SDLCALL Mix_FadeInMusicPos(Mix_Music *music, int loops, int ms, double position);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   544
#define Mix_FadeInChannel(channel,chunk,loops,ms) Mix_FadeInChannelTimed(channel,chunk,loops,ms,-1)
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   545
extern DECLSPEC int SDLCALL Mix_FadeInChannelTimed(int channel, Mix_Chunk *chunk, int loops, int ms, int ticks);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   546
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   547
/* Set the volume in the range of 0-128 of a specific channel or chunk.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   548
   If the specified channel is -1, set volume for all channels.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   549
   Returns the original volume.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   550
   If the specified volume is -1, just return the current volume.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   551
*/
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   552
extern DECLSPEC int SDLCALL Mix_Volume(int channel, int volume);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   553
extern DECLSPEC int SDLCALL Mix_VolumeChunk(Mix_Chunk *chunk, int volume);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   554
extern DECLSPEC int SDLCALL Mix_VolumeMusic(int volume);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   555
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   556
/* Halt playing of a particular channel */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   557
extern DECLSPEC int SDLCALL Mix_HaltChannel(int channel);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   558
extern DECLSPEC int SDLCALL Mix_HaltGroup(int tag);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   559
extern DECLSPEC int SDLCALL Mix_HaltMusic(void);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   560
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   561
/* Change the expiration delay for a particular channel.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   562
   The sample will stop playing after the 'ticks' milliseconds have elapsed,
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   563
   or remove the expiration if 'ticks' is -1
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   564
*/
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   565
extern DECLSPEC int SDLCALL Mix_ExpireChannel(int channel, int ticks);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   566
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   567
/* Halt a channel, fading it out progressively till it's silent
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   568
   The ms parameter indicates the number of milliseconds the fading
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   569
   will take.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   570
 */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   571
extern DECLSPEC int SDLCALL Mix_FadeOutChannel(int which, int ms);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   572
extern DECLSPEC int SDLCALL Mix_FadeOutGroup(int tag, int ms);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   573
extern DECLSPEC int SDLCALL Mix_FadeOutMusic(int ms);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   574
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   575
/* Query the fading status of a channel */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   576
extern DECLSPEC Mix_Fading SDLCALL Mix_FadingMusic(void);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   577
extern DECLSPEC Mix_Fading SDLCALL Mix_FadingChannel(int which);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   578
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   579
/* Pause/Resume a particular channel */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   580
extern DECLSPEC void SDLCALL Mix_Pause(int channel);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   581
extern DECLSPEC void SDLCALL Mix_Resume(int channel);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   582
extern DECLSPEC int SDLCALL Mix_Paused(int channel);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   583
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   584
/* Pause/Resume the music stream */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   585
extern DECLSPEC void SDLCALL Mix_PauseMusic(void);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   586
extern DECLSPEC void SDLCALL Mix_ResumeMusic(void);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   587
extern DECLSPEC void SDLCALL Mix_RewindMusic(void);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   588
extern DECLSPEC int SDLCALL Mix_PausedMusic(void);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   589
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   590
/* Set the current position in the music stream.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   591
   This returns 0 if successful, or -1 if it failed or isn't implemented.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   592
   This function is only implemented for MOD music formats (set pattern
7809
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   593
   order number) and for OGG, FLAC, MP3_MAD, and MODPLUG music (set 
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   594
   position in seconds), at the moment.
6560
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   595
*/
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   596
extern DECLSPEC int SDLCALL Mix_SetMusicPosition(double position);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   597
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   598
/* Check the status of a specific channel.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   599
   If the specified channel is -1, check all channels.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   600
*/
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   601
extern DECLSPEC int SDLCALL Mix_Playing(int channel);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   602
extern DECLSPEC int SDLCALL Mix_PlayingMusic(void);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   603
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   604
/* Stop music and set external music playback command */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   605
extern DECLSPEC int SDLCALL Mix_SetMusicCMD(const char *command);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   606
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   607
/* Synchro value is set by MikMod from modules while playing */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   608
extern DECLSPEC int SDLCALL Mix_SetSynchroValue(int value);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   609
extern DECLSPEC int SDLCALL Mix_GetSynchroValue(void);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   610
7809
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   611
/* Set/Get/Iterate SoundFonts paths to use by supported MIDI backends */
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   612
extern DECLSPEC int SDLCALL Mix_SetSoundFonts(const char *paths);
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   613
extern DECLSPEC const char* SDLCALL Mix_GetSoundFonts(void);
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   614
extern DECLSPEC int SDLCALL Mix_EachSoundFont(int (*function)(const char*, void*), void *data);
7d4fb2f35f4f update SDL headers for winutils
koda
parents: 6560
diff changeset
   615
6560
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   616
/* Get the Mix_Chunk currently associated with a mixer channel
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   617
    Returns NULL if it's an invalid channel, or there's no chunk associated.
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   618
*/
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   619
extern DECLSPEC Mix_Chunk * SDLCALL Mix_GetChunk(int channel);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   620
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   621
/* Close the mixer, halting all playing audio */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   622
extern DECLSPEC void SDLCALL Mix_CloseAudio(void);
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   623
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   624
/* We'll use SDL for reporting errors */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   625
#define Mix_SetError	SDL_SetError
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   626
#define Mix_GetError	SDL_GetError
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   627
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   628
/* Ends C function definitions when using C++ */
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   629
#ifdef __cplusplus
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   630
}
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   631
#endif
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   632
#include "close_code.h"
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   633
ca07e6be08d0 GCI task: cmd.exe
bovi
parents:
diff changeset
   634
#endif /* _SDL_MIXER_H */