// Fix up prefixing
window.AudioContext = window.AudioContext || window.webkitAudioContext;
var ctx = new AudioContext(), currentOsc, isMouseDown, lastY;
function playWave(e) {
var o = ctx.createOscillator();
lastY = e.pageY;
isMouseDown = true;
o.type = e.currentTarget.id;
o.frequency.value = 261.63;
o.start(0);
o.connect(ctx.destination);
currentOsc = o;
}
function stopWave(e) {
isMouseDown = false;
currentOsc.stop(0);
}
function changeFreq(e) {
if (isMouseDown) {
if (e.pageY > lastY) {
currentOsc.frequency.value -= 1;
lastY = e.pageY;
}
else if (e.pageY < lastY) {
currentOsc.frequency.value += 1;
lastY = e.pageY;
}
}
}
$("img").mousedown(playWave);
$("img").mouseup(stopWave);
$("img").mousemove(changeFreq);
<img id="sine" src="http://upload.wikimedia.org/wikipedia/commons/0/02/Simple_sine_wave.svg" draggable="false">
<img id="square" src="http://upload.wikimedia.org/wikipedia/commons/1/1c/Square_wave.svg" width="49%" draggable="false">
<img id="triangle" src="http://upload.wikimedia.org/wikipedia/commons/1/12/Triangle_wave.svg" draggable="false">
<img id="sawtooth" src="http://upload.wikimedia.org/wikipedia/commons/a/a6/Sawtooth_wave.svg" draggable="false">
img {
width: 49%;
float: left;
border:1px solid blue;
}