Advertisement
Advertisement

More Related Content

Advertisement

realtime audio on ze web @ hhjs

  1. realtime audio on ze web APIs, Demos, Anwendungen Jan Krutisch <jan.krutisch@mindmatters.de> für #hhjs, 21.Februar 2011 Montag, 21. Februar 2011
  2. Moi. Montag, 21. Februar 2011
  3. Realtime audio? Montag, 21. Februar 2011
  4. In/Out Montag, 21. Februar 2011
  5. Status Quo. Montag, 21. Februar 2011
  6. nada. Montag, 21. Februar 2011
  7. flash. Montag, 21. Februar 2011
  8. horizont. Montag, 21. Februar 2011
  9. Montag, 21. Februar 2011
  10. Audio Data API Montag, 21. Februar 2011
  11. <audio/> Montag, 21. Februar 2011
  12. 10 beta Montag, 21. Februar 2011
  13. Montag, 21. Februar 2011
  14. Montag, 21. Februar 2011
  15. Montag, 21. Februar 2011
  16. Web Audio API Montag, 21. Februar 2011
  17. AudioContext Montag, 21. Februar 2011
  18. Das wars. Montag, 21. Februar 2011
  19. Ja, sorry, ey. Montag, 21. Februar 2011
  20. Code, or it didn‘t happen Montag, 21. Februar 2011
  21. <!DOCTYPE html> <html> <head> <title>JavaScript Audio Write Example</title> </head> <body> <input type="text" size="4" id="freq" value="440"><label for="hz">Hz</label> <button onclick="start()">play</button> <button onclick="stop()">stop</button> <script type="text/javascript"> function AudioDataDestination(sampleRate, readFn) { // Initialize the audio output. var audio = new Audio(); audio.mozSetup(1, sampleRate); var currentWritePosition = 0; var prebufferSize = sampleRate / 2; // buffer 500ms var tail = null; // The function called with regular interval to populate // the audio output buffer. setInterval(function() { var written; // Check if some data was not written in previous attempts. if(tail) { written = audio.mozWriteAudio(tail); currentWritePosition += written; if(written < tail.length) { // Not all the data was written, saving the tail... tail = tail.slice(written); return; // ... and exit the function. } tail = null; } // Check if we need add some data to the audio output. var currentPosition = audio.mozCurrentSampleOffset(); var available = currentPosition + prebufferSize - currentWritePosition; if(available > 0) { // Request some sound data from the callback function. var soundData = new Float32Array(available); readFn(soundData); // Writting the data. written = audio.mozWriteAudio(soundData); if(written < soundData.length) { // Not all the data was written, saving the tail. tail = soundData.slice(written); } currentWritePosition += written; } }, 100); } // Control and generate the sound. var frequency = 0, currentSoundSample; var sampleRate = 44100; function requestSoundData(soundData) { if (!frequency) { return; // no sound selected } var k = 2* Math.PI * frequency / sampleRate; for (var i=0, size=soundData.length; i<size; i++) { soundData[i] = Math.sin(k * currentSoundSample++); } } var audioDestination = new AudioDataDestination(sampleRate, requestSoundData); function start() { currentSoundSample = 0; frequency = parseFloat(document.getElementById("freq").value); } function stop() { frequency = 0; } </script> Montag, 21. Februar 2011
  22. [...] var audio = new Audio(); audio.mozSetup(1, sampleRate); [...] written = audio.mozWriteAudio(tail); [...] Montag, 21. Februar 2011
  23. https://wiki.mozilla.org/Audio_Data_API#Writing_Audio Montag, 21. Februar 2011
  24. context = new webkitAudioContext(); var jsNode = context.createJavaScriptNode(8192, 0, 2); jsNode.connect(context.destination); jsNode.onaudioprocess = requestSoundData; Montag, 21. Februar 2011
  25. Anwendungen Montag, 21. Februar 2011
  26. Musik Montag, 21. Februar 2011
  27. Spiele Montag, 21. Februar 2011
  28. ( Build and they will come ) Montag, 21. Februar 2011
  29. Meine kleine Ecke Montag, 21. Februar 2011
  30. http://webloop.pixelpoke.de Montag, 21. Februar 2011
  31. http://github.com/halfbyte/soundbridge.js Montag, 21. Februar 2011
  32. soundbridge = SoundBridge(2, 44100, '..'); [...] soundbridge.setCallback(calc); soundbridge.play(); }, 1000); Montag, 21. Februar 2011
Advertisement