No description
Find a file
impbox 5b7bfe359c
Merge pull request #5 from gamecubate/master
FIX test.nim + AudioContext instance props  + AudioListener
2023-02-23 10:08:56 +11:00
tests Fix test 2023-02-21 22:56:58 -05:00
README.md Fix test 2023-02-21 22:56:58 -05:00
webaudio.nim AudioListener 2023-02-22 09:45:17 -05:00
webaudio.nimble Fix test 2023-02-21 22:56:58 -05:00

Nim Wrapper for the Web Audio API

Example code for creating an oscillator that responds to clicks on the screen and fades and changes pitch over time.

Try it!

import webaudio
import dom

var ctx = newAudioContext()

var gain = ctx.createGain()
gain.gain.value = 0.5
gain.connect(ctx.destination)

var osc = ctx.createOscillator()
osc.type = "square"
osc.frequency.value = 440.0
osc.connect(gain)
osc.start()

discard window.setInterval(
  proc() =
    if gain.gain.value > 0.0:
      gain.gain.value -= 0.01
      if gain.gain.value < 0.0:
        gain.gain.value = 0.0
  , 30)

discard window.setInterval(
  proc() =
    osc.frequency.value *= 0.5
    if osc.frequency.value < 20.0:
      gain.gain.value = 0.0
  , 60)

window.addEventListener("mousedown") do(e: Event):
  osc.stop()
  osc = ctx.createOscillator()
  osc.type = "square"
  osc.frequency.value = 880.0
  osc.connect(gain)
  gain.gain.value = 0.5
  osc.start()