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