No es mala idea.
Pero tengo otra que es lo que use en mi emulador.
Tengo la info del sonido en un arreglo.
Y no uso las funciones de allegro directamente para reproducirle.
Allegro tiene los streams donde segun recuerdo tu le vas pasando informacion al stream para que la reproduzca, pero para esto debes llamar una funcion para saber si el stream esta listo para recibir informacion.
No es tan complicado cuando llegas a entender como funciona.
Bueno, el punto es que si tienes muchos sonidos( en un arreglo ) a veces basta con hacer una suma de ellos para asi mezclarlos( no es la mejor opcion)
Un algoritmo que alguien me paso alguna vez y que me funciono a la perfeccion para los 4 canales de audio de mi emualdor es el siguiente:
Código:
sample1-=128;
sample2-=128;
sample3-=128;
sample4-=128;
finalSample=(sample1+sample2+sample3+sample4)>>4;
buffer[i]=(finalSample+128)&0xFF;
Los 4 samples son variables que obtienen solo un byte de informacion para ir llenando el buffer.
Obviamente todo esto esta bajo un loop que es el que hace el llenado completo del buffer generando los muestreos en cada vuelta y leugo escribiendolos en el buffer que al final sera enviado al stream para su reproduccion.
Espero que te sirva de algo, si tienes mas dudas pregunta.
Saludos