playing with quantization

This commit is contained in:
Eric Rosenbaum 2016-08-16 16:32:35 -04:00
parent 27184762bd
commit d5e46535e8
4 changed files with 12 additions and 7 deletions

Binary file not shown.

Binary file not shown.

View file

@ -48,7 +48,7 @@ Scratch3SoundBlocks.prototype.playNoteForBeats = function (args, util) {
return new Promise(function(resolve) { return new Promise(function(resolve) {
setTimeout(function() { setTimeout(function() {
resolve(); resolve();
}, 1000 * args.BEATS); }, (1000 * args.BEATS) );
}); });
}; };
@ -61,7 +61,7 @@ Scratch3SoundBlocks.prototype.playDrumForBeats = function (args, util) {
return new Promise(function(resolve) { return new Promise(function(resolve) {
setTimeout(function() { setTimeout(function() {
resolve(); resolve();
}, 1000 * args.BEATS); }, (1000 * args.BEATS) );
}); });
}; };

View file

@ -18,6 +18,11 @@ function VirtualMachine () {
var tone = new Tone(); var tone = new Tone();
Tone.Transport.start();
var quantizeUnit = '@8n';
// var quantizeUnit = '';
// effects // effects
var delay = new Tone.FeedbackDelay(0.25, 0.5); var delay = new Tone.FeedbackDelay(0.25, 0.5);
@ -43,7 +48,7 @@ function VirtualMachine () {
// sounds // sounds
var soundFileNames = ['meow', 'boing', 'cave', 'drip_drop', 'drum_machine', 'eggs', 'zoop']; var soundFileNames = ['meow','boing','this_is_a_test','who_put_the_bomp','cave','drip_drop','drum_machine','eggs','zoop'];
var soundSamplers = loadSoundFiles(soundFileNames); var soundSamplers = loadSoundFiles(soundFileNames);
// polyphonic samplers // polyphonic samplers
@ -112,17 +117,17 @@ function VirtualMachine () {
function playNoteForBeats(note, beats) { function playNoteForBeats(note, beats) {
var midiNote = scaleNoteToMidiNote(note, currentScale, rootNote); var midiNote = scaleNoteToMidiNote(note, currentScale, rootNote);
var freq = midiToFreq(midiNote); var freq = midiToFreq(midiNote);
synth.triggerAttackRelease(freq, beats); synth.triggerAttackRelease(freq, beats, quantizeUnit);
} }
// onmessage calls are converted into emitted events. // onmessage calls are converted into emitted events.
instance.vmWorker.onmessage = function (e) { instance.vmWorker.onmessage = function (e) {
switch (e.data.method) { switch (e.data.method) {
case 'playsound': case 'playsound':
soundSamplers[e.data.soundnum].nextVoice().triggerAttack(); soundSamplers[e.data.soundnum].nextVoice().triggerAttack(0, quantizeUnit);
break; break;
case 'playsoundwithpitch': case 'playsoundwithpitch':
soundSamplers[e.data.soundnum].nextVoice().triggerAttack(e.data.pitch); soundSamplers[e.data.soundnum].nextVoice().triggerAttack(e.data.pitch, quantizeUnit);
break; break;
case 'playnoteforbeats': case 'playnoteforbeats':
playNoteForBeats(e.data.note, e.data.beats); playNoteForBeats(e.data.note, e.data.beats);
@ -137,7 +142,7 @@ function VirtualMachine () {
case 'playdrumforbeats': case 'playdrumforbeats':
case 'playdrum': case 'playdrum':
var drumNum = e.data.drum - 1; // one-indexing var drumNum = e.data.drum - 1; // one-indexing
drumSamplers[drumNum].nextVoice().triggerAttack(); drumSamplers[drumNum].nextVoice().triggerAttack(0, quantizeUnit);
break; break;
case 'seteffect' : case 'seteffect' :
switch (e.data.effect) { switch (e.data.effect) {