Question

Je viens de tomber sur un émulateur Nintendo entièrement écrit en JavaScript sur les interwebs, mais il ne pas de son. Cela m'a fait réfléchir: y a-t-il un moyen de synthétiser le son dans le navigateur en utilisant JavaScript puis de le jouer? Si ce n'est pas possible en général, existe-t-il des Safari / Opera / FireFox / IE / Etc. des extensions qui le rendraient possible?

Je ne pose pas de question sur les techniques de synthèse du son, mais simplement sur les techniques de reproduction des sons synthétisés par du code exécuté dans le navigateur.

Était-ce utile?

La solution

J'imagine que votre meilleur choix est de faire en sorte que Javascript parle à Flash avec Flash via ExternalInterface ( http://www.adobe.com/devnet/flash/articles/external_interface.html ). Flash dispose désormais d'un moyen de transférer des données entre les tampons sonores et d'une classe ByteArray à usage général.

http://www.adobe.com/devnet/flash/articles/ dynamic_sound_generation /

Vous pouvez développer gratuitement Flash à l'aide du kit de développement logiciel (SDK) Flex http://www.adobe.com/ produits / flex / .

Autres conseils

La plupart des développeurs utilisent SoundManager 2 pour ajouter du son à leur application avec JavaScript . Il possède des crochets pour que JavaScript puisse interagir avec les fonctionnalités de Flash 8 et 9. Je ne suis pas sûr que cela ait exposé la possibilité de travailler avec Byte Data, ce que je suppose que vous recherchez, je n'ai jamais eu à gérer cela.

Il s'avère que l'auteur de l'émulateur NES a trouvé une bibliothèque audio dynamique:

https://github.com/bfirsh/dynamicaudio.js

Je ne l'ai pas essayé, mais la documentation semble prometteuse:

  

var dynamicaudio = new DynamicAudio ({'swf':   '/static/dynamicaudio.swf'})

     

write (samples); // Lit un tableau d'échantillons audio en virgule flottante compris entre -1.0 et   1.0.

En théorie, il devrait être possible de synthétiser les sons, puis de les faire jouer par le navigateur en utilisant une URL de données.

En pratique, Steven Wittens a créé une démo de cette technique. Les fonctions encodeAudio8bit et encodeAudio16bit sont l’endroit où la magie opère.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top