22 Rutinas de inicializaión de sonido


int detect_digi_driver(int driver_id);
Detecta si el dispositivo especificado de sonido digital está disponible. Devuelve el máximo número de voces que el driver puede proporcionar, o cero si el hardware no está presente. Esta función debe llamarse _antes_ de install_sound().

Relacionado con: DIGI_*/DOS, DIGI_*/Windows, DIGI_*/Unix, DIGI_*/BeOS, DIGI_*/QNX, install_sound, reserve_voices.
int detect_midi_driver(int driver_id);
Detecta si el dispositivo especificado de sondo MIDI está disponible. Devuelve el número máximo de voces que el dirver puede proporcionar, o cero si el hardware no está presente. Hay dos valores especiales que pueden ser devueltos y que debería controlar: si la función devuelve -1 se trata de un controlador ladrón de notas (ej. DIGMID) que comparte las voces con el driver de sonido digital actual, y si devuelve 0xFFFF es un dispositivo externo como un MPU-401, en los cuales no hay manera de determinar cuantas voces hay disponibles. Esta función debe llamarse _antes_ de install_sound().
Relacionado con: install_sound, reserve_voices, MIDI_*/DOS, MIDI_*/Windows, MIDI_*/Unix, MIDI_*/BeOS, MIDI_*/QNX.
void reserve_voices(int digi_voices, int midi_voices);
Llame esta función para especificar el número de voces que van a ser usadas por los controladores de sonido digital y MIDI respectivamente. Esto debe ser llamado _antes_ de llamar install_sound(). Si reserva demasiadas voces, las llamadas siguientes a install_sound() fallarán. Cuántas voces haya disponibles, depende del controlador, y en algunos casos llegará a reservar más de las deseadas (ejemplo: los controladores de música sintética FM siempre dan 9 voces en una OPL2 y 18 en una OPL3, y el controlador de sonido digital de la SB redondeará el número de voces al siguiente valor potencia de dos). Pase un valor negativo para recuperar los valores por defecto. Debería tener en cuenta, que la calidad del sonido es inversamente proporcional al número de voces que reserve, por lo que no reserve más de las que necesite.
Relacionado con: set_volume_per_voice, install_sound, detect_digi_driver, detect_midi_driver.
void set_volume_per_voice(int scale);
Por defecto, cuando reserva más voces para su driver de sonido digital, Allegro intentará reducir el volúmen de cada una de ellas para compensarlo. Esto se hace para evitar la distorsión. Por defecto el volúmen por voz es tal, que si reserva n voces, puede reproducir hasta n/2 sonidos normalizados centrados sin riesgo de distorsión. La excepción es cuando tiene menos de 8 voces, ya que el volúmen queda igual que para 8 voces.

Si el sonido resultante es demasiado alto o demasiado bajo, esta función puede ser usada para ajustar el volúmen de cada voz. Primero debería verificar que sus altavoces están ajustados a un volúmen razonable, el volúmen global de Allegro ajustado al máximo (mire set_volume() más abajo), y cualquier otro tipo de mezcladores como el control de volúmen de Windows están ajustados razonablemente.

Una vez haya determinado que el volúmen de Allegro no es ideal para su aplicación, use esta función para ajustarlo. Esto debe ser realizado _antes_ de llamara install_sound(). Note que esta función por ahora sólo es relevante para los drivers que usan el mezclador de Allegro (la mayoría de ellos).

Si pasa un 0 a esta función, cada sonido centrado será reproducido al máximo volúmen posible sin distorsión, al igual que los sonidos reproducidos con un driver mono. Los sonidos en los extremos izquierdo y derecho serán distorsionados si se reproducen al máximo volúmen. Si quiere reproducir sonidos panoramizados sin distorsión al máximo volúmen, debe pasar 1 a esta función. Nota: esto es diferente del comportamiento que había en las WIPs 3.9.34, 3.9.35 y 3.9.36. Si usa esta función con cualquiera de esas versiones, deberá incrementar su parámetro en uno para obtener el mismo volúmen.

Cada vez que incremente el parámetro en uno, el volúmen de cada voz será reducido a la mitad. Por ejemplo, si pasa 4, podrá reproducir hasta 16 sonidos centrados con volúmen máximo sin ninguna distorsión.

Aquí están los valores por defecto, dependiendo del número de voces:

      1-8 voces - set_volume_per_voice(2);
       16 voces - set_volume_per_voice(3);
       32 voces - set_volume_per_voice(4);
       64 voces - set_volume_per_voice(5);
Por supuesto esta función no modificará el volúmen que usted especifique mediante play_sample() o voice_set_volume(). Simplemente alterará la salida global del programa. Si reproduce sonidos a un volúmen bajo, o si no están nromalizados, podrá reproducir más sonidos simultáneamente sin distorsión.

Aviso: Allegro usa una tabla de recorte para recortar la onda de sonido. Esta tabla es lo suficientemente grande para acomodar un sonido total de hasta 4 veces el máximo posible sin distorsión. Si su volúmen se sale de éste límite, la onda 'dará la vuelta' (los picos serán valles y viceversa), distorsionando aun más el sonido. Debe tener cuidado para que esto no ocurra.

Es recomendado que introduzca el valor de este parámetro de forma fija en su programa en vez de ofrecerlo al usuario. El usuario puede alterar el volúmen con el fichero de configuración, o puede modificarlo con set_volume().

Para restaurar el volúmen por voz a su comportamiento habitual, pase -1.

Relacionado con: reserve_voices, set_volume, install_sound, detect_digi_driver, detect_midi_driver.
int install_sound(int digi, int midi, const char *cfg_path);
Inicializa el módulo de sonido. Normalmente debería pasarle DIGI_AUTODETECT y MIDI_AUTODETECT como los parámetros de controlador, en cuyo caso Allegro leerá la configuración del hardware del fichero de configuración actual. Esto permite al usuario seleccionar diferentes valores mediante una utilidad de setup: vea la sección de configuración para ver los detalles. Alternativamente, veal la documentación específica de la plataforma para tener una lista de los drivers disponibles. El parámetro cfg_path está presente sólo por compatibilidad con las versiones anteriores de Allegro, y no tiene ningún efecto. Devuelve cero si el sonido se instaló correctamente, y -1 si falló. Si falla guardará una descripción del problema en allegro_error.
Relacionado con: DIGI_*/DOS, DIGI_*/Windows, DIGI_*/Unix, DIGI_*/BeOS, DIGI_*/QNX, install_sound_input, allegro_error, Variables de configuración estándar, MIDI_*/DOS, MIDI_*/Windows, MIDI_*/Unix, MIDI_*/BeOS, MIDI_*/QNX, remove_sound, reserve_voices, detect_digi_driver, detect_midi_driver, set_volume, play_sample, Control de voces, play_midi, play_audio_stream.
void remove_sound();
Limpia el entorno cuando haya acabado con las rutinas de sonido. Normalmente no hace falta que llame esto, ya que allegro_exit() lo hará por usted.
Relacionado con: install_sound, allegro_exit.
void set_volume(int digi_volume, int midi_volume);
Altera el volumen de salida del sonido. Especifique el volumen para la reproducción de MIDIs y samples digitales, con enteros de 0 a 255, o pase un valor negativo para no cambiar alguno de los ajustes. Es posible que esta rutina use el mezclador de hardware para controlar el volumen, de otro modo, le dirá a los reproductores de samples y MIDI que simulen el mezclador por software.
Relacionado con: install_sound.

Volver al Indice