Skip to content

Instantly share code, notes, and snippets.

@ucnv
Created March 13, 2009 04:32
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 ucnv/78430 to your computer and use it in GitHub Desktop.
Save ucnv/78430 to your computer and use it in GitHub Desktop.
function makeSquareWaveSound(hz, sampleRate) {
var sampleRate = sampleRate || 44100;
var data = new Array(sampleRate);
var amplitude = sampleRate / hz / 2;
for(var i = 0; i < data.length; i++){
if(parseInt(i / amplitude % 2)) data[i] = '%00';
else data[i] = '%FF';
}
var writeSize = function(size) {
return [
size & 255,
(size >> 8) & 255,
(size >> 16) & 255,
(size >> 24) & 255
].map(function(e) {
return '%' + ((e < 16) ? '0' : '') + e.toString(16);
}).join('');
};
return [
'data:audio/wav,',
'RIFF',
writeSize(data.length + 32),
'WAVE',
'fmt%20',
'%10%00%00%00',
'%01%00%01%00',
writeSize(sampleRate),
writeSize(sampleRate),
'%01%00%08%00data',
writeSize(data.length)
].concat(data).join('');
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment