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