audio-lab
v1.3.0
Published
Audio lab
Downloads
37
Readme
Audio-lab is a sound design & music ideas sharing application.
Use cases
- Save a melodic motive, in abstract form (dependless of specific sound). To share it later or to use in a track.
- Export/import midi-files
- Save/load projects, ideally as a github repo. Because each project may consist of multiple lab files, like grooves, synth preset etc.
- Import/export web-audio code setup
- Share musical pieces easily
Principles
- Keep blocks atomic, in that separate midi/piano blocks are better than single compound one. Ideally, scheme of generated sound should be clear from the bird’s eye view.
- No modes of blocks (consequence of previous principle).
- No time concept. Everything sounds just as project loads. There is no trigger in reality.
- Any block can be based off a script processor block, putting calculations to any stream/async mode.
- Any block can be "rendered" to audio-buffer block to enhance performance.
- Fx-es, gain and stats should be available on blocks and on connections.
- Touch-oriented interface.
- Lab manages blocks, blocks manages connections. Though connections and blocks are self-sufficient units. Blocks and connections know nothing about lab (as people about god).
Docs
Init lab
var Lab = require('audio-lab');
var lab = new Lab({
element: document.querySelector('.lab-container'),
context: audioContext,
channels: 2,
autosave: false
});
Create block plugin
var Lab = require('audio-lab');
class Piano extends Lab.Block {
constructor (options) {
super(options);
//init here
this.state = 'ready';
}
}
//name to use as a node name
Piano.displayName = 'Piano';
Piano.prototype.numberOfInputs = 0;
Piano.prototype.numberOfOutputs = 1;
Use plugin
var Lab = require('audio-lab');
var Piano = require('audio-lab-piano');
var lab = new Lab();
lab.use(Piano);