JSFiddle - React, Tailwind, and code Playground

JavaScript

var context = new AudioContext()
  , phasorNode = context.createBufferSource()
  , frequencyNode = context.createBufferSource()
  , bufferFrequency = context.createBuffer(1, context.sampleRate, context.sampleRate)
  , arrayFrequency = bufferFrequency.getChannelData(0)
  , bufferRamp = context.createBuffer(1, context.sampleRate, context.sampleRate)
  , arrayRamp = bufferRamp.getChannelData(0)
  , acc = 0, step = 1 / context.sampleRate, i

for (i = 0; i < arrayRamp.length; i++) {
  arrayRamp[i] = (acc % 1)
  acc += step
}

for (i = 0; i < arrayFrequency.length; i++) {
  arrayFrequency[i] = 200
}

phasorNode.buffer = bufferRamp
phasorNode.connect(context.destination)
phasorNode.loop = true
phasorNode.start(0)

frequencyNode.buffer = bufferFrequency
frequencyNode.connect(phasorNode.playbackRate)
frequencyNode.loop = true
frequencyNode.start(0)