Skip to content

Instantly share code, notes, and snippets.

@kugaevsky
Last active December 24, 2015 15:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kugaevsky/6825178 to your computer and use it in GitHub Desktop.
Save kugaevsky/6825178 to your computer and use it in GitHub Desktop.
Play sound proof-of-concept
# --------------------
# Define Audio Context
# --------------------
window.AudioContext = window.AudioContext||window.webkitAudioContext
window.MyAudioContext = new AudioContext()
window.MyAudioDecodeAndPlay = (arrayBuffer) ->
MyAudioContext.decodeAudioData arrayBuffer, (buffer) ->
source = MyAudioContext.createBufferSource()
source.buffer = buffer
source.connect MyAudioContext.destination
source.start 0
, (e) -> console.log('Error decoding file', e)
# --------------
# Load from URL
# --------------
window.loadSampleSound = (url) ->
request = new XMLHttpRequest()
request.open('GET', url, true)
request.responseType = 'arraybuffer'
request.onload = () -> MyAudioDecodeAndPlay request.response
request.send()
urlChecker = document.getElementById('load-url')
urlChecker.addEventListener 'click', (e) ->
urlContainer = document.getElementById('audio-url')
loadSampleSound urlContainer.value
# --------------
# Load user file
# --------------
fileInput = document.querySelector('input[type="file"]')
fileInput.addEventListener 'change', (e) ->
reader = new FileReader()
reader.onload = (e) ->
MyAudioDecodeAndPlay(@result)
reader.readAsArrayBuffer @files[0]
, false
# --------------
# Get User Media
# --------------
hasGetUserMedia = () ->
!!(navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia)
if hasGetUserMedia()
console.log 'Yay! getUserMedia() supported'
else
console.log 'getUserMedia() is not supported in your browser';
onFailSoHard = (e) ->
console.log('Reeeejected!', e)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment