Skip to content
This repository has been archived by the owner on Dec 16, 2022. It is now read-only.

Commit

Permalink
Modulator is now is multiplicator, replace lfo by reverb
Browse files Browse the repository at this point in the history
  • Loading branch information
Gaëtan Renaudeau committed Aug 30, 2013
1 parent 0932136 commit 0d2b3a6
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 33 deletions.
33 changes: 16 additions & 17 deletions app/assets/javascripts/common.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ beez.params = new beez.Parameters(_.map([
name: "bpm",
value: 80,
from: 20,
to: 450,
to: 200,
tab: "carrier",
axis: "x"
},
Expand All @@ -19,11 +19,11 @@ beez.params = new beez.Parameters(_.map([
axis: "y"
},
{
id: "modfreq",
name: "frequency",
value: 500,
from: 20,
to: 1000,
id: "modmult",
name: "multiplicator",
value: 1,
from: 0.25,
to: 3,
tab: "modulator",
axis: "x"
},
Expand All @@ -37,22 +37,21 @@ beez.params = new beez.Parameters(_.map([
axis: "y"
},
{
id: "lfofreq",
name: "frequency",
curve: "quad",
value: 4,
id: "reverbdry",
name: "dry",
value: 0.5,
from: 0,
to: 20,
tab: "filterlfo",
to: 1,
tab: "reverb",
axis: "x"
},
{
id: "lfogain",
name: "gain",
value: 400,
id: "reverbwet",
name: "wet",
value: 0.5,
from: 0,
to: 1000,
tab: "filterlfo",
to: 1,
tab: "reverb",
axis: "y"
},
{
Expand Down
64 changes: 52 additions & 12 deletions app/assets/javascripts/models/audio.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ beez.Audio = Backbone.Model.extend({
this.seq.set("bpm", beez.params.get("bpm").get("value"));

var carrier = ctx.createOscillator();
this.seq.audioParam = carrier.frequency;

carrier.type = "triangle";
//this.bindParam(beez.params.get("carrierfreq"), carrier.frequency);
Expand All @@ -53,7 +52,7 @@ beez.Audio = Backbone.Model.extend({

var mod = ctx.createOscillator();
mod.type = "sine";
this.bindParam(beez.params.get("modfreq"), mod.frequency);
mod.detune.value = 8;
var modGain = ctx.createGainNode();
this.bindParam(beez.params.get("modgain"), modGain.gain);
mod.start(0);
Expand All @@ -65,21 +64,62 @@ beez.Audio = Backbone.Model.extend({
this.bindParam(beez.params.get("filterQ"), filter.Q);
carrierGain.connect(filter);

var lfo = ctx.createOscillator();
lfo.type = "sine";
this.bindParam(beez.params.get("lfofreq"), lfo.frequency);
var lfoGain = ctx.createGainNode();
this.bindParam(beez.params.get("lfogain"), lfoGain.gain);
lfo.start(0);
lfo.connect(lfoGain);
lfoGain.connect(filter.frequency);

// Reverbation now!
var reverb = (function (nodeInput) {
var input = ctx.createGain();
nodeInput.connect(input);
var output = ctx.createGain();
var drygain = ctx.createGain();
var wetgain = ctx.createGain();

// Feedback delay into itself
var verb = ctx.createConvolver();

verb.connect(wetgain);

input.connect(verb);
input.connect(drygain);

drygain.connect(output);
wetgain.connect(output);

this.bindParam(beez.params.get("reverbwet"), wetgain.gain);
this.bindParam(beez.params.get("reverbdry"), drygain.gain);

buildImpulse(1);

function buildImpulse (time) {
// FIXME: need the audio context to rebuild the buffer.
var rate = ctx.sampleRate,
length = rate * time,
reverse = false,
decay = 2,
impulse = ctx.createBuffer(2, length, rate),
impulseL = impulse.getChannelData(0),
impulseR = impulse.getChannelData(1);
for (var i = 0; i < length; i++) {
var n = reverse ? length - i : i;
impulseL[i] = (Math.random() * 2 - 1) * Math.pow(1 - n / length, decay);
impulseR[i] = (Math.random() * 2 - 1) * Math.pow(1 - n / length, decay);
}
verb.buffer = impulse;
}

return output;
}).call(this, filter);

carrier.start(0);

var compressor = ctx.createDynamicsCompressor();
filter.connect(compressor);
reverb.connect(compressor);

this.output = compressor;

this.seq.on("schedule", function (noteFreq, time) {
var multiplicator = Math.round(4*beez.params.get("modmult").get("value"))/4;
carrier.frequency.setValueAtTime(noteFreq, time);
mod.frequency.setValueAtTime(noteFreq*multiplicator, time);
}, this);

}
});
5 changes: 1 addition & 4 deletions app/assets/javascripts/models/sequence.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,6 @@ beez.Sequence = Backbone.Model.extend({
},

scheduleNote: function (beatNumber, time) {

if (!this.audioParam) return;
this.audioParam.setValueAtTime(this.get("notes")[beatNumber], time)

this.trigger("schedule", this.get("notes")[beatNumber], time);
}
});

0 comments on commit 0d2b3a6

Please sign in to comment.