23 Rutinas de samples digitales


SAMPLE *load_sample(const 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.

Relacionado con: destroy_sample, load_voc, load_wav, play_sample, Control de voces.
SAMPLE *load_wav(const char *filename);
Carga un sample de un fichero RIFF WAV.
Relacionado con: load_sample.
SAMPLE *load_voc(const char *filename);
Carga un sample de un fichero VOC de Creative Labs.
Relacionado con: load_sample.
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/digi.h para m�s detalles.
Relacionado con: load_sample, destroy_sample.
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.
Relacionado con: load_sample.
void lock_sample(SAMPLE *spl);
Bajo DOS, bloquea toda la memoria usada por el sample. Normalmente no necesita llamar a esta funci�n porque load_sample() y create_sample() lo har�n por usted.
Relacionado con: load_sample, create_sample.
int play_sample(const 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 la variable de repetici�n est� activada, el sample ser� repetido hasta que llame stop_sample(), y puede ser manipulado mientras es reproducido llamando adjust_sample().
Relacionado con: install_sound, load_sample, adjust_sample, stop_sample, Control de voces.
void adjust_sample(const 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 anular la variable 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.
Relacionado con: play_sample.
void stop_sample(const SAMPLE *spl);
Mata un sample, algo necesario si tiene uno en modo repetici�n. Si hay varias copias del sample, todas ser�n paradas.
Relacionado con: play_sample.

Control de voces

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.

   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.
Relacionado con: install_sound, allocate_voice, deallocate_voice, reallocate_voice, release_voice, voice_start, voice_set_priority, voice_check, voice_set_frequency, voice_set_pan, voice_set_position, voice_set_playmode, voice_set_volume.
int allocate_voice(const SAMPLE *spl);
Reserva una voz de la tarjeta y la prepara para reproducir el sample especificado, ajustando par�metros por defecto (volumen m�ximo, panoramizaci�n central, sin cambio de frecuencia, sin loop). Cuando acabe de usar la voz, debe liberarla llamando deallocate_voice() o release_voice(). Devuelve el n�mero de voz, o -1 si no hay voces libres.
Relacionado con: Control de voces, deallocate_voice, reallocate_voice, release_voice, load_sample.
void deallocate_voice(int voice);
Libera una voz de la tarjeta, parando su sonido y liberando los recursos que estuviese utilizando.
Relacionado con: allocate_voice, voice_stop.
void reallocate_voice(int voice, const 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);
Relacionado con: allocate_voice, deallocate_voice, load_sample.
void release_voice(int voice);
Libera una voz, indicando que ya no est� interesado en su manipulaci�n. El sonido seguir� siendo reproducido, y los recursos que usa ser�n liberados autom�ticamente cuando acabe la reproducci�n. Esto es esencialmente lo mismo que deallocate_voice(), pero espera a que los sonidos acaben para hacer efecto.
Relacionado con: allocate_voice, deallocate_voice.
void voice_start(int voice);
Activa una voz, usando los par�metros que le haya ajustado.
Relacionado con: Control de voces, allocate_voice, voice_stop, release_voice.
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().
Relacionado con: voice_start, deallocate_voice, release_voice.
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.
Relacionado con: Control de voces.
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 (ej: la voz ha sido liberada, o ha llamado a release_voice() y el sample a terminado de ser reproducido).
Relacionado con: allocate_voice, voice_start, voice_get_position.
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.
Relacionado con: Control de voces, voice_set_position.
void voice_set_position(int voice, int position);
Ajusta la posici�n de una voz, en unidades de sample.
Relacionado con: Control de voces, voice_get_position, voice_set_playmode.
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 borrar la variable 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.
Relacionado con: Control de voces.
int voice_get_volume(int voice);
Devuelve el volumen de la voz, en el rango 0-255.
Relacionado con: Control de voces, voice_set_volume.
void voice_set_volume(int voice, int volume);
Ajusta el volumen de la voz, en el rango 0-255.
Relacionado con: Control de voces, voice_get_volume, voice_ramp_volume.
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.
Relacionado con: Control de voces, voice_set_volume.
void voice_stop_volumeramp(int voice);
Interrumpe una operaci�n de cambio de volumen.
Relacionado con: voice_ramp_volume.
int voice_get_frequency(int voice);
Devuelve la frecuencia actual en Hz.
Relacionado con: Control de voces, voice_set_frequency.
void voice_set_frequency(int voice, int frequency);
Ajusta la frecuencia de la voz en Hz.
Relacionado con: Control de voces, voice_get_frequency, voice_sweep_frequency.
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.
Relacionado con: Control de voces, voice_set_frequency.
void voice_stop_frequency_sweep(int voice);
Interrumpe una operaci�n de cambio de frecuencia.
Relacionado con: voice_sweep_frequency.
int voice_get_pan(int voice);
Devuelve la panoramizaci�n actual, desde 0 (izquierda) hasta 255 (derecha).
Relacionado con: Control de voces, voice_set_pan.
void voice_set_pan(int voice, int pan);
Ajusta la panoramizaci�n, desde 0 (izquierda) hasta 255 (derecho).
Relacionado con: Control de voces, voice_get_pan, voice_sweep_pan.
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.
Relacionado con: Control de voces, voice_set_pan.
void voice_stop_pan_sweep(int voice);
Interrumpe una panoramizaci�n.
Relacionado con: voice_sweep_pan.
void voice_set_echo(int voice, int strength, int delay);
Ajusta el par�metro de eco para una voz (no implementado actualmente).
Relacionado con: Control de voces.
void voice_set_tremolo(int voice, int rate, int depth);
Ajusta el par�metro de tr�molo para una voz (no implementado actualmente).
Relacionado con: Control de voces.
void voice_set_vibrato(int voice, int rate, int depth);
Ajusta el par�metro de vibrado para una voz (no implementado actualmente).
Relacionado con: Control de voces.

Volver al Indice