Native, Natural, Normalized... and hope if it could be Nice ;)
WANI is A Specification
propose to Web Audio Community that to make your code Reusable, Self-Descriptive, and Sharable. Basically, WANI is not an implementation, but interface specification. You can see very draft spec here
WANI is Simple and Flexible
To make your code into WANI module, just call a register function from module script, like this.
function ConstructorOfYourSynthesizer () { ... }
// then, just add this to the end of your *.js file (with some rules tho ;)
Wani.registerModule({
name: "MySynthesizer",
create: ConstructorOfYourSyntehsizer,
type: 'synth'
});
It has very small required rule set. Almost are optional and free to expand.
WANI is Headless
WANI and it's modules aren't includes any implementation about Graphical User Interface. But you can give a hint to UI builder via wani's registry. In other words, WANI could be an interface between GUI and DSP. For example, GUIs in this page are automatically generated, picks default values and ranges.
Behaves as same as native AudioNode
such like this.
var nativeOsc = ctx.createOsc();
var waniEffect = Wani.createModule('EFFECT_NAME');
nativeOsc.connect(waniEffect);
waniEffect.connect(ctx.destination);
This means, module user needn't think about like "which node is native and which is from library? they have diferrent methods..." things. And also, this could help to import or combine some existing audio library to others. In this page, open source effects library tuna is working with wani, via about 60 lines simple bridge script.
DEMOS
Instanciate module with auto generated GUI
You can easilly create module instance.
var moduleInstance = Wani.createModule('Foobar');
Here, add selected module to the end of DSP chain, and building GUIs from it's self-described informations.
Load Module from outer world on the fly
Also, you can load module from external javascript file on the fly. just push load button to load new module from outer world. ( or If you know any Wani-ized effector, put the URL to try it ;)
And then, you can see new module in the select menu above.