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 = ; var lab = element: document context: audioContext channels: 2 autosave: false;
Create block plugin
var Lab = ; Block { superoptions; //init here thisstate = 'ready'; } //name to use as a node namePianodisplayName = 'Piano'; PianoprototypenumberOfInputs = 0;PianoprototypenumberOfOutputs = 1;
Use plugin
var Lab = ;var Piano = ; var lab = ;lab;