2009-09-20 45 views
8

Estoy buscando hacer una aplicación de laboratorio de teoría musical, donde se puede ver la relación gráfica entre los conceptos de teoría musical. Me gustaría que esté disponible en línea, así que me vienen a la mente Flash y Silverlight.Dynamic Audio Generation Actionscript 3

Pero me gustaría generar dinámicamente tonos y acordes, etc. desde la entrada del usuario. Esto es algo que sé que es un área muy poco desarrollada en Flash Player. Entonces mi pregunta es ¿cuál es el estado actual de las características para la generación de audio dinámico en los reproductores Flash y Silverlight?

Respuesta

0

Parece que de Silverlight y Flash, ese flash supera a Silverlight en las características de generación de audio dinámico (lo que me sorprendió considerando la compatibilidad básica de audio en Flash). Parece que Silverlight no puede generar audio dinámico en absoluto, y Flash solo puede hacerlo oficialmente desde la versión 10 del reproductor.

Puedo encontrar muy poca información sobre el futuro del audio dinámico en ambas plataformas, pero Flash tiene las discusiones más activas en este momento.

1

Hay formas de hacerlo que implican bastante pirateo. No recuerdo la mecánica exacta, pero se puede echar un vistazo a (o utilizar) las bibliotecas de transmisión existentes, como StandingWave: http://code.google.com/p/standingwave/ o la materia en Popforge: http://code.google.com/p/popforge/

Es de esperar que puede dar más información que pueda aquí. :)

+0

@Dentoid Gracias por los enlaces, les echaré un vistazo y veré lo que pueden hacer por mí –

3

A partir de Flash Player 10 y en adelante no es necesario que hagas cosas tipo hacky. Hay una API para generar sonido de forma dinámica.

Este blog post has a quick introduction. Su código lee muestras de un mp3 pero puede escribir muestras de la manera que desee.

Como siempre, the docs también tiene mucha información, junto con este ejemplo de código que debería hacerlo funcionar rápidamente.

var mySound:Sound = new Sound(); 
function sineWaveGenerator(event:SampleDataEvent):void { 
    for (var c:int=0; c<8192; c++) { 
     event.data.writeFloat(Math.sin((Number(c+event.position)/Math.PI/2))*0.25); 
     event.data.writeFloat(Math.sin((Number(c+event.position)/Math.PI/2))*0.25); 
    } 
} 

mySound.addEventListener(SampleDataEvent.SAMPLE_DATA,sineWaveGenerator); 
mySound.play(); 
+1

También puede encontrar una gran cantidad de códigos fuente interesantes y ejemplos en http://lab.andre-michelle.com/ – speps

2

Usted puede probar The Synthesis ToolKit in AS3 que está portado de C++ por mí :)

Es diferente de standingwave y popforge, STK en AS3 proporciona instrumentos de la vida real como la flauta y el clarinete para que pueda utilizar las que el los primeros dos no.

+0

biblioteca ordenada !!! – ina