Tal y como haces ahí, si reproduces dos sonidos iguales, los vas a cargar dos veces, todo un desperdicio oiga :P
En mi wrapper de OpenAL tengo clases para los source objects y para los sonidos. Y para reproducir, por una parte tengo un vector de sources, creados al inicio del programa, y por otra parte una lista de sonidos. Cuando quiero reproducir un sonido, lo busco en la lista, y si no está, lo cargo y lo asocio al primer source libre o que tenga asociado uno de menor prioridad.
Por lo que dice Prompt, yo creo que tiene más sentido procesar los sonidos por prioridades en lugar de por bloques. Así, podrás tener activos los que haga falta, pero sonando sólo los que se puedan reproducir simultáneamente, que serán los que tengan mayor prioridad. Por ejemplo, la música, diálogos y sonidos de eventos especiales tendrían la máxima prioridad, y a los sonidos "normales" se les asignaría una prioridad descendente en función de la distancia al oyente (esto habría que refinarlo un poco, ya que un sonido de una explosión a 10 metros debería tener más prioridad que el sonido de una piedrecita al chocar con el suelo a 1 metro, pero como ejemplo sirve)
Esto que digo no es la verdad universal ni mucho menos, todo está abierto a debate, claro está :)
Por cierto Prompt, ¿seguro que en ALSA/OSS hay aceleración por hardware? Yo estaba convencido de que fuera de Windows+DS3D o XFi/Audigy todo iba por software. Y en el Generic software device se pueden crear hasta 256 sources, o al menos así era con la última versión que probé. De todas maneras, yo creo que tantos sonidos simultáneos son del todo innecesarios, con 16-32 a la vez ya tienes suficiente. Más es ansia.
Otra cosa, hay una implementación aparte de la de Creative que funciona por software en Windows, Mac y Linux, y tira bastante bien. Soporta más de dos canales en Windows, cosa que por ejemplo el software device de Creative no hace, y te olvidas de rollos raros con problemas que pueda dar el hardware device. Se llama OpenAL soft y la puedes coger de aquí: http://kcat.strangesoft.net/openal.html. Lo único "malo" que tiene es que te la tienes que compilar tú mismo.
En mi wrapper de OpenAL tengo clases para los source objects y para los sonidos. Y para reproducir, por una parte tengo un vector de sources, creados al inicio del programa, y por otra parte una lista de sonidos. Cuando quiero reproducir un sonido, lo busco en la lista, y si no está, lo cargo y lo asocio al primer source libre o que tenga asociado uno de menor prioridad.
Por lo que dice Prompt, yo creo que tiene más sentido procesar los sonidos por prioridades en lugar de por bloques. Así, podrás tener activos los que haga falta, pero sonando sólo los que se puedan reproducir simultáneamente, que serán los que tengan mayor prioridad. Por ejemplo, la música, diálogos y sonidos de eventos especiales tendrían la máxima prioridad, y a los sonidos "normales" se les asignaría una prioridad descendente en función de la distancia al oyente (esto habría que refinarlo un poco, ya que un sonido de una explosión a 10 metros debería tener más prioridad que el sonido de una piedrecita al chocar con el suelo a 1 metro, pero como ejemplo sirve)
Esto que digo no es la verdad universal ni mucho menos, todo está abierto a debate, claro está :)
Por cierto Prompt, ¿seguro que en ALSA/OSS hay aceleración por hardware? Yo estaba convencido de que fuera de Windows+DS3D o XFi/Audigy todo iba por software. Y en el Generic software device se pueden crear hasta 256 sources, o al menos así era con la última versión que probé. De todas maneras, yo creo que tantos sonidos simultáneos son del todo innecesarios, con 16-32 a la vez ya tienes suficiente. Más es ansia.
Otra cosa, hay una implementación aparte de la de Creative que funciona por software en Windows, Mac y Linux, y tira bastante bien. Soporta más de dos canales en Windows, cosa que por ejemplo el software device de Creative no hace, y te olvidas de rollos raros con problemas que pueda dar el hardware device. Se llama OpenAL soft y la puedes coger de aquí: http://kcat.strangesoft.net/openal.html. Lo único "malo" que tiene es que te la tienes que compilar tú mismo.