summaryrefslogtreecommitdiff
path: root/client/lib/organ.js
blob: 0048abf5d18f0e41ed8e8f7747024bd8628413fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import Tone from 'tone'
import output from './output'

const oscillators = {}

let lastPlayed
function play (freq) {
  const osc = oscillators[freq] = oscillators[freq] || {}
  if (!osc.el) {
    osc.el = new Tone.Oscillator(freq, "sine")
    osc.el.connect(output)
  }
  osc.el.start()
  osc.playing = true
  lastPlayed = osc
  return osc
}
function pause (freq) {
  if (!oscillators[freq]) return
  const osc = oscillators[freq] = oscillators[freq] || {}
  if (osc.el) osc.el.stop()
  osc.playing = false
  return osc
}

export default { play, pause, oscillators }