2010-05-03 34 views
7

Me gustaría generar una secuencia de notas MIDI en javascript y luego reproducirlo. Muchos complementos son compatibles con MIDI, pero no conozco ninguna URL de "datos" de respaldo. Generar contenido MIDI no es gran cosa, pero alimentar este contenido con el reproductor sí lo es. Alguien sabe cómo se puede hacer esto, si no en general, al menos para un complemento específico como QuickTime.generar MIDI en javascript

Respuesta

1

Parece que la forma más fácil sería pasar los datos MIDI a, p. un script PHP que luego devuelve la entrada. Luego puede usar "yourscript.php? Your-midi-data" en lugar de "data: your-mini-data".

4

Muy buen problema. He estado trabajando mucho últimamente con imágenes codificadas en base64 y he usado regularmente http://www.greywyvern.com/code/php/binary2base64 para la codificación de imágenes. Solo traté de convertir un archivo MIDI y poner la secuencia de texto base64 en un HTML y jugó muy bien en Firefox (lo que me sorprendió). Aquí está el código (con la corriente de base 64 retirado por razones de brevedad):

<embed 
    autostart="true" 
    loop="false" 
    volume="100" 
    hidden="false" 
    src="data:audio/x-midi;base64,abc...." 
></embed> 

No estoy seguro de que es posible pasar de una imagen binaria de base 64 en JS, pero sospecho que va desde MIDI podría ser. Es un comienzo.

2

Es posible que desee echar un vistazo a la siguiente publicación de blog mía. Se trata de una biblioteca que hace exactamente lo que estás tratando de hacer, del lado del cliente. Sin embargo, tenga en cuenta que la reproducibilidad cruzada del navegador MIDI en los navegadores no es realmente uniforme.

http://sergimansilla.com/blog/dinamically-generating-midi-in-javascript/

+0

Sergi, su solución no parece abordar el problema principal . Si usa "incrustar" u "objeto", no tiene control sobre la reproducción. La interfaz de QuickTime resuelve el problema. Usted tiene control total sobre él desde javascript, incluso puede generar y agregar cosas dinámicamente. Y funciona con la URL de datos. Que fue un punto completo de la pregunta original. – shurik

1

QuickTime con los datos url funciona tanto con Firefox como con Chrome (versiones recientes, sin versiones beta). Tiene que seguir las instrucciones desde quicktime website: inicializar QuickTime llamando a la función QT_WriteOBJECT (tuve que proporcionar src inicial que apunta al archivo mp3 de Beethoven, solo para evitar quejarse, tal vez no es necesario), registre oyentes como se detalla en el dicho re ference, y después de obtener la devolución de llamada qt_load, llame al método document.movie1.SetURL(myDataURL). Utilicé la codificación base64 en la url de datos: "data:audio/midi;base64,...". (el contenido fue generado por javascript). Todo funcionó sensacionalmente bien: Play(), Stop(), etc. La parte más difícil es leer su doc ​​monumental (tenga en cuenta que también tiene la parte "HTML")

+0

enlace no es bueno ... – milesaron