Skip to content
Snippets Groups Projects
Commit e82f42d8 authored by kimon-satan's avatar kimon-satan
Browse files

added skeleton documentation

parent 54d968c1
Branches
No related merge requests found
### maxiAudio ###
This the audio context. You must always have one to produce sound with maxiLib
#### methods ####
##### .init() #####
initialise the audio engine
##### .loadSample(sampleUrl, maxiSample) #####
load a sample into a maxiSample object
#### properties ####
##### .play #####
the function which is the play loop
##### .output #####
the current value of the audio output
<br><br>
### maxiSample ###
Stores and plays an audio sample
#### methods ####
##### .play() #####
plays the sample at normal speed
##### .play(playRate) #####
plays the sample at the specified play rate
##### .playOnce() #####
plays the sample once at normal speed
##### .playOnce(playRate) #####
plays the sample once at specified play rate
##### .trigger() #####
set the playhead to zero (use in conjunction with playOnce)
##### .isReady() #####
returns true if sample is loaded
<br><br>
### maxiTimestretch ###
plays a sample at different rates leaving pitch unchanged
#### methods ####
##### .setSample(maxiSample) #####
sets the sample play for timestretch to use
##### .play(rate, grainLength, overlaps, startPos) #####
- rate (eg. 0.5 = half speed)
- grainLength (a time in seconds)
- overlaps (normally 2 is good)
- startPos (where to start playing in the sample - in seconds)
##### .setPosition(startPos) #####
useful for resetting a sound
##### .getPosition() #####
returns position in ???
##### .getNormalisedPosition() #####
Useful for ending sample play back
<br><br>
### maxiPitchShift ###
plays a sample at different pitches leaving the speed unchanged
#### methods ####
##### .setSample(maxiSample) #####
sets the sample play for pitchShift to use
##### .play(pitch, grainLength, overlaps, startPos) #####
- pitch (eg. 0.5 = half pitch)
- grainLength (a time in seconds)
- overlaps (normally 2 is good)
- startPos (where to start playing in the sample - in seconds)
##### .setPosition(startPos) #####
useful for resetting a sound
##### .getPosition() #####
returns position in ???
##### .getNormalisedPosition() #####
Useful for ending sample play back
<br><br>
### maxiPitchStretch ###
plays a sample with independent control of pitch and speed
#### methods ####
##### .setSample(maxiSample) #####
sets the sample play for timestretch to use
##### .play(pitch, rate, grainLength, overlaps, startPos) #####
- pitch (eg. 0.5 = half pitch)
- rate (eg. 0.5 = half speed)
- grainLength (a time in seconds)
- overlaps (normally 2 is good)
- startPos (where to start playing in the sample - in seconds)
##### .getPosition() #####
returns position in ???
##### .getNormalisedPosition() #####
Useful for ending sample play back
##### .setPosition(startPos) #####
useful for resetting a sound
<br><br>
### maxiDelay ###
A simple delay line
#### methods ####
##### .dl(inputSignal, delayTime, foldback) #####
process a signal with delay
- inputSignal (any signal eg. output from an oscillator
- delayTime (a value in milliseconds)
- foldback (how much of the signal to feedback into the delay buffer - determines how long echos last)
<br><br>
### maxiOsc ###
An oscillator with methods for a number of waveforms
#### methods ####
##### .sinewave(frequency) #####
outputs a sine wave at the given frequency between -1.0 & 1.0
##### .triangle(frequency) #####
outputs a triangle wave at the given frequency between -1.0 & 1.0
##### .saw(frequency) #####
outputs a sawtooth wave at the given frequency between -1.0 & 1.0
##### .square(frequency) #####
outputs a square wave at the given frequency between 0.0 & 1.0
##### .phasor(frequency) #####
outputs a linear ramp at the given frequency between 0.0 & 1.0
##### .phaseReset(phase) #####
reset the phase to a specific value
- phase (a value between 0 & 1)
<br><br>
### maxiEnv ###
An adsr envelope.
#### methods ####
##### .setAttack(time) #####
- time = milliseconds
##### .setDecay(time) #####
- time = milliseconds
##### .setSustain(level) #####
- level = a value between 0.0 and 1.0
##### .setRelease(time) #####
- time = milliseconds
##### .adsr(level, trigger) #####
- level (the overall level of the envelope; everything will be scaled by this value)
- trigger (envelope will begin attack when set to 1.0 and release when set to 0.0)
### convert ###
A collection of conversion functions. Currently numbering one !
#### methods ####
##### .mtof(midi) #####
pass a midi value and its frequency is returned
### Undocumented classes ###
- maxiArray
- maxiChorus
- maxiClock
- maxiDCBlocker
- maxiDistortion
- maxiDyn
- maxiEnvelope
- maxiEnvelopeFollower
- maxiFFT
- maxiFFTOctaveAnalyzer
- maxiFilter
- maxiFlanger
- maxiHats
- maxiIFFT
- maxiKick
- maxiLagExp
- maxiMFCC
- maxiMap
- maxiMix
- maxiSVF
- maxiSettings
- maxiSnare
- maxiTools
......@@ -49,15 +49,14 @@ audio.init();
var a = new maximJs.maxiOsc();
var xs = [0,0,0], ys = [0,0,0];
var a0, a1, a2, b0, b1, b2;
var f0 = 400; //THE FREQUENCY
var Q = 1.0;
var mySwitchableOsc = new maximJs.maxiOsc();
var cos = Math.cos;
var w0 = 2*Math.PI*f0/44100;
var alpha = Math.sin(w0)/(2*Q);
// Band-pass reson:
// b0 = alpha;
// b1 = 0;
......@@ -67,32 +66,41 @@ var alpha = Math.sin(w0)/(2*Q);
// a2 = 1 - alpha;
//Notch:
b0 = 1;
b1 = -2*cos(w0);
b2 = 1;
a0 = 1 + alpha;
a1 = -2*cos(w0);
a2 = 1 - alpha;
//LPF:
// b0 = (1 - cos(w0))/2;
// b1 = 1 - cos(w0);
// b2 = (1 - cos(w0))/2;
// b0 = 1;
// b1 = -2*cos(w0);
// b2 = 1;
// a0 = 1 + alpha;
// a1 = -2*cos(w0);
// a2 = 1 - alpha;
//LPF:
var f0 = 20;
audio.play = function() {//this is where the magic happens. Very slow magic.
xs[0] = mySwitchableOsc.sawn(400);
f0 = (f0 + 0.001)%8000; //THE FREQUENCY
var w0 = 2*Math.PI*f0/44100;
var alpha = Math.sin(w0)/(2*Q);
b0 = (1 - cos(w0))/2;
b1 = 1 - cos(w0);
b2 = (1 - cos(w0))/2;
a0 = 1 + alpha;
a1 = -2*cos(w0);
a2 = 1 - alpha;
xs[0] = Math.random();
ys[0] = (b0/a0)*xs[0] + (b1/a0)*xs[1] + (b2/a0)*xs[2]
- (a1/a0)*ys[1] - (a2/a0)*ys[2];
this.output = ys[0];
var out = ys[0];
ys[2] = ys[1]; ys[1] = ys[0];
xs[2] = xs[1]; xs[1] = xs[0];
this.output = out;
}
......@@ -105,7 +113,7 @@ audio.play = function() {//this is where the magic happens. Very slow magic.
<h1> Advanced Filters </h1>
<p>
</p>
<pre class="prettyprint lang-js linenums:true" id="quine" style="border:4px solid #88c" >
......@@ -154,9 +162,9 @@ audio.play = function() {//this is where the magic happens. Very slow magic.
xs[0] = mySwitchableOsc.sawn(400);
ys[0] = (b0/a0)*xs[0] + (b1/a0)*xs[1] + (b2/a0)*xs[2]
- (a1/a0)*ys[1] - (a2/a0)*ys[2];
this.output = ys[0];
ys[2] = ys[1]; ys[1] = ys[0];
xs[2] = xs[1]; xs[1] = xs[0];
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment