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).