SAMPLE *load_sample(char *filename);
Carga un sample de un fichero, devolviendo un puntero a �l, o NULL si hay
error. Actualmente, esta funci�n soporta ficheros WAV mono o est�reo y
ficheros VOC mono, tanto de 8 como 16 bits.
SAMPLE *load_wav(char *filename);
Carga un sample de un fichero RIFF WAV.
SAMPLE *load_voc(char *filename);
Carga un sample de un fichero VOC de Creative Labs.
SAMPLE *create_sample(int bits, int stereo, int freq, int len);
Construye una nueva estructura de samples del tipo especificado. El campo
data apunta a un bloque de datos de onda: lee la definici�n de la
estructura en allegro.h para m�s detalles.
void destroy_sample(SAMPLE *spl);
Destruye una estructura de sample cuando no la necesita. Es seguro
llamar esto incluso cuando el sample est� siendo reproducido, porque lo
comprueba y apaga si est� activo.
int play_sample(SAMPLE *spl, int vol, int pan, int freq, int loop);
Reproduce un sample con el volumen, panoramizaci�n y frecuencia
especificados. El volumen y panoramizaci�n van de 0 (min/izquierda) a 255
(m�x/derecha). La frecuencia no es absoluta, es relativa: 1000 representa
la frecuencia a la que el sample fue grabado, 2000 es el doble, etc. Si
el biestable de repetici�n est� activado, el sample ser� repetido hasta
que llame stop_sample(), y puede ser manipulado mientras es reproducido
llamando adjust_sample().
void adjust_sample(SAMPLE *spl, int vol, int pan, int freq, int loop);
Altera los par�metros de un sample mientras es reproducido (�til para
manipular sonidos con repetici�n). Puede alterar el volumen, la
panoramizaci�n y frecuencia, y tambi�n puede eliminar el biestable de
repetici�n, lo que parar� el sample cuando llegue al final del loop. Si
hay varias copias del mismo sample activas, esto ajustar� el primero que
vaya a ser reproducido. Si el sample no est� siendo reproducido, esto no
tiene efecto.
void stop_sample(SAMPLE *spl);
Mata un sample, algo necesario si tiene uno en modo repetici�n. Si hay
varias copias del sample, todas ser�n paradas.
Si necesita controlar los samples con m�s detalle, puede usar las funciones de voz de bajo nivel en vez de llamar play_sample(). Esto conlleva m�s trabajo, porque debe reservar y liberar las voces expl�citamente, ya que �stas no se liberan solas al acabar la reproducci�n, pero esto le permite especificar precisamente lo que quiere hacer con el sonido. Incluso puede modificar algunos campos de la estructura sample:
int priority; De 0 a 255 (por defecto 255), esto indica c�mo las voces se reservan si intenta reproducir m�s de las que controla el controlador. Esto puede ser usado para asegurarse de que los sonidos secundarios son recortados mientras que los importantes son reproducidos.int allocate_voice(SAMPLE *spl);unsigned long loop_start; unsigned long loop_end; Posiciones de repetici�n en unidades de sample, por defecto ajustadas al comienzo y final del sample.
void deallocate_voice(int voice);
Libera una voz de la tarjeta, parando su sonido y liberando los recursos
que estuviese utilizando.
void reallocate_voice(int voice, SAMPLE *spl);
Ajusta una voz previamente reservada para usar un sample diferente.
Llamar reallocate_voice(voice, sample) es equivalente a:
deallocate_voice(voice); voice = allocate_voice(sample);void release_voice(int voice);
void voice_start(int voice);
Activa una voz, usando los par�metros que le haya ajustado.
void voice_stop(int voice);
Para una voz, almacenando la posici�n actual y estado para que luego
pueda continuar la reproducci�n llamando voice_start().
void voice_set_priority(int voice, int priority);
Ajusta la prioridad de una voz (rango 0-255). Esto es usado para decidir
qu� voces ser�n recortadas si intenta usar m�s de las que puede soportar
el controlador de la tarjeta de sonido.
SAMPLE *voice_check(int voice);
Comprueba si una voz est� activa, devolviendo el sample que est� siendo
reproducido, o NULL si la voz est� inactiva.
int voice_get_position(int voice);
Devuelve la posici�n actual de la voz, en unidades de sample, o -1 si ha
finalizado la reproducci�n.
void voice_set_position(int voice, int position);
Ajusta la posici�n de una voz, en unidades de sample.
void voice_set_playmode(int voice, int playmode);
Ajusta el estado de repetici�n de una voz. Esto puede hacerse mientras se
reproduce la voz, por lo que puede reproducir un sample con repetici�n
(teniendo el comienzo y final del loop ajustados correctamente), y
entonces borre el biestable de repetici�n cuando quiera finalizar el
sonido, lo que har� que �ste llegue al final del loop, contin�e con la
siguiente parte del sample, y acabe de modo normal. El par�metro mode es
un campo de bits que contiene los siguientes valores.
void voice_set_volume(int voice, int volume);
Ajusta el volumen de la voz, en el rango 0-255.
void voice_ramp_volume(int voice, int time, int endvol);
Comienza un cambio de volumen (crescendo o diminuendo) desde el volumen
actual al volumen final, especificando time en milisegundos.
void voice_stop_volumeramp(int voice);
Interrumpe una operaci�n de cambio de volumen.
int voice_get_frequency(int voice);
Devuelve la frecuencia actual en Hz.
void voice_set_frequency(int voice, int frequency);
Ajusta la frecuencia de la voz en Hz.
void voice_sweep_frequency(int voice, int time, int endfreq);
Comienza un cambio de frecuencia (glissando) desde la frecuencia actual
hasta la frecuencia final, especificando time en milisegundos.
void voice_stop_frequency_sweep(int voice);
Interrumpe una operaci�n de cambio de frecuencia.
int voice_get_pan(int voice);
Devuelve la panoramizaci�n actual, desde 0 (izquierda) hasta 255
(derecha).
void voice_set_pan(int voice, int pan);
Ajusta la panoramizaci�n, desde 0 (izquierda) hasta 255 (derecho).
void voice_sweep_pan(int voice, int time, int endpan);
Comienza una panoramizaci�n (movimiento izquierda <-> derecha) desde la
posici�n actual hasta la posici�n endpan, especificando time en
milisegundos.
void voice_stop_pan_sweep(int voice);
Interrumpe una panoramizaci�n.
void voice_set_echo(int voice, int strength, int delay);
Ajusta el par�metro de eco para una voz (no implementado actualmente).
void voice_set_tremolo(int voice, int rate, int depth);
Ajusta el par�metro de tr�molo para una voz (no implementado
actualmente).
void voice_set_vibrato(int voice, int rate, int depth);
Ajusta el par�metro de vibrado para una voz (no implementado
actualmente).