Pergunta

Eu deparei com um Nintendo emulador escrito inteiramente em JavaScript nas interwebs, mas ele doesn 't tem som. Isso me fez pensar: Existe alguma maneira de som sintetizar no navegador usando JavaScript e, em seguida, jogá-lo? Se não é possível em geral, então há alguma Safari / Opera / Firefox / IE / Etc. extensões que tornaria possível?

Eu não estou perguntando sobre técnicas para a síntese de som, técnicas apenas para reprodução de sons que foram sintetizados por código em execução no navegador.

Foi útil?

Solução

Eu imagino a sua melhor aposta é a de ter o Javascript talk to Flash usando ExternalInterface ( http://www.adobe.com/devnet/flash/articles/external_interface.html ). Flash agora tem uma maneira de transferir dados entre os buffers de som e um ByteArray classs propósito geral.

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

Você pode desenvolver Flash para livre usando o Flex SDK http://www.adobe.com/ produtos / flex / .

Outras dicas

A maioria dos desenvolvedores usar SoundManager 2 quando querem adicionar som a sua aplicação com JavaScript . Tem ganchos assim JavaScript pode interagir com Flash 8 e 9 características. Eu não tenho certeza se ele expôs a capacidade de trabalhar com Byte de dados que eu acho que você está depois, eu nunca tive que lidar com isso.

Acontece que o autor do emulador de NES encontrou uma biblioteca de áudio dinâmico:

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

Eu não tentei, mas os docs parecem promissores:

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

escrita (amostras); // Reproduz um conjunto de amostras de áudio de ponto flutuante no intervalo -1,0 a 1.0.

Em teoria, deveria ser possível sintetizar os sons e, em seguida, obter o navegador para reproduzi-los usando uma URL de dados.

Na prática, Steven Wittens tem realmente produziu um demonstração desta técnica. As funções encodeAudio8bit e encodeAudio16bit são onde a mágica acontece.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top