-
Notifications
You must be signed in to change notification settings - Fork 1
Code structure
This is a page for planning how the code should be laid out...
The base object should be a Composition object that has all sorts of metadata (sps, bpm, etc.) and an associated Wave object for output. The Composition will also have list of Track objects with their own metadata + an Instrument and Controller object that will generate the sounds for that track. A Track could also have something like an effects loop but I'm not too sure about how that should be laid out.
All of these objects should have a .render() method that returns the computed samples.
The list of instruments should include the basic synths that we had before but I think it would be sweet to include something like a Sampler instrument that will just render to the input wave file (maybe passed through an optional Envelope). An Instrument could actually point to a Generator object and an Envelope in general.
This category will include things like Arpeggiator and a Sequencer. We could separate these into two categories: melodic and rhythmic.