|  | 1 year ago | |
|---|---|---|
| .. | ||
| impulses | 1 year ago | |
| README.md | 1 year ago | |
| tuna.js | 1 year ago | |
New effects added: Chorus, Phaser, and Tremolo. 
 Be sure to follow us at @DinahmoeSTHLM for future updates. Feel free to create your own effects and give us a pull request!
An audio effects library for the Web Audio API. Created by DinahMoe

Start by creating a new Tuna object like so:
var context = new webkitAudioContext(); var tuna = new Tuna(context);
You need to pass the audio context you're using in your application. Tuna will be using it to create its effects.
You create a new tuna node as such:
var chorus = new tuna.Chorus({
                 rate: 1.5,
                 feedback: 0.2,
                 delay: 0.0045,
                 bypass: 0
             });
You can then connect the tuna node to native Web Audio nodes by doing:
nativeNode.connect(chorus.input); chorus.connect(anotherNativeNode);or to other tuna nodes by doing:
tunaNode.connect(chorus.input); chorus.connect(anotherTunaNode.input);All tuna nodes are connected TO by using the nodes input property, but connecting FROM the tuna node works as it does with ordinary native AudioNodes. The nodes ==== A basic chorus effect.
var chorus = new tuna.Chorus({
                 rate: 1.5,         //0.01 to 8+
                 feedback: 0.2,     //0 to 1+
                 delay: 0.0045,     //0 to 1
                 bypass: 0          //the value 1 starts the effect as bypassed, 0 or 1
             });
A delay effect with feedback and a highpass filter applied to the delayed signal.
var delay = new tuna.Delay({
            feedback: 0.45,    //0 to 1+
            delayTime: 150,    //how many milliseconds should the wet signal be delayed? 
            wetLevel: 0.25,    //0 to 1+
            dryLevel: 1,       //0 to 1+
            cutoff: 20,        //cutoff frequency of the built in highpass-filter. 20 to 22050
            bypass: 0
        });
A basic phaser effect.
var phaser = new tuna.Phaser({
             rate: 1.2,                     //0.01 to 8 is a decent range, but higher values are possible
             depth: 0.3,                    //0 to 1
             feedback: 0.2,                 //0 to 1+
             stereoPhase: 30,               //0 to 180
             baseModulationFrequency: 700,  //500 to 1500
             bypass: 0
         });
A basic overdrive effect.
var overdrive = new tuna.Overdrive({
                outputGain: 0.5,         //0 to 1+
                drive: 0.7,              //0 to 1
                curveAmount: 1,          //0 to 1
                algorithmIndex: 0,       //0 to 5, selects one of our drive algorithms
                bypass: 0
            });
A compressor with the option to use automatic makeup gain.
var compressor = new tuna.Compressor({
                 threshold: 0.5,    //-100 to 0
                 makeupGain: 1,     //0 and up
                 attack: 1,         //0 to 1000
                 release: 0,        //0 to 3000
                 ratio: 4,          //1 to 20
                 knee: 5,           //0 to 40
                 automakeup: true,  //true/false
                 bypass: 0
             });
A convolver with high- and lowcut. You can find a lot of impulse resonses here
var convolver = new tuna.Convolver({
                highCut: 22050,                         //20 to 22050
                lowCut: 20,                             //20 to 22050
                dryLevel: 1,                            //0 to 1+
                wetLevel: 1,                            //0 to 1+
                level: 1,                               //0 to 1+, adjusts total output of both wet and dry
                impulse: "impulses/impulse_rev.wav",    //the path to your impulse response
                bypass: 0
            });
A basic filter.
var filter = new tuna.Filter({
             frequency: 20,         //20 to 22050
             Q: 1,                  //0.001 to 100
             gain: 0,               //-40 to 40
             bypass: 1,             //0 to 1+
             filterType: 0,         //0 to 7, corresponds to the filter types in the native filter node: lowpass, highpass, bandpass, lowshelf, highshelf, peaking, notch, allpass in that order
             bypass: 0
         });
A cabinet/speaker emulator.
var cabinet = new tuna.Cabinet({
              makeupGain: 1,                                 //0 to 20
              impulsePath: "impulses/impulse_guitar.wav",    //path to your speaker impulse
              bypass: 0
          });
A basic tremolo.
var tremolo = new tuna.Tremolo({
              intensity: 0.3,    //0 to 1
              rate: 0.1,         //0.001 to 8
              stereoPhase: 0,    //0 to 180
              bypass: 0
          });
A wahwah with an auto wah option.
var wahwah = new tuna.WahWah({
             automode: true,                //true/false
             baseFrequency: 0.5,            //0 to 1
             excursionOctaves: 2,           //1 to 6
             sweep: 0.2,                    //0 to 1
             resonance: 10,                 //1 to 100
             sensitivity: 0.5,              //-1 to 1
             bypass: 0
         });