Composer overview
04.02.17
It's exciting that Whole-Play is maturing, and I'm getting to a point where I can start working on complete Composers. Composers are the components where most of the AI is implemented. They decide what to do with the information they receive from other components of the system, and (hopefully!) do it in an interesting (from a human point of view) way. There are still limitations, of course, but I've implemented enough features to have an interesting base to work with.
My goal is to develop different composers, each one with its own set of instruments to use, as well as its own compositional style. But they all share the same general structure. Today I've been looking at the current state of this general structure, and have drawn a diagram to capture it, a kind of snapshot of how it looks today:
This might not be of general interest, but in case someone is curious, here's a little explanation of the above diagram.
- On the top left, inside the circle, there's a "Bootstrap diagram" (how to get Chuck to run the composer). Pretty much ignore that.
- Below, on the left part, there's the lifecycle of a composer. This will only make sense to programmers. It describes the initialization sequence for a composer: what needs to happen and in which order.
- The most interesting part is in the red square, labelled "The Composer". Here are all the components (think of it as mini-programs) inside a composer:
- The Improviser represents the human that's improvising. This in turns includes various components, like the two analysers (to detect notes, chords, etc) or the tracker (to detect what style of playing the improviser is using).
- The Mixer controls the mixer faders, like the main volume, or the effects volume (see Dynamic instruments).
- The BeatAnalyser and HarmonyAnalyser are used to run analysis on the data provided by the improviser, and can extract beat and harmony information.
- The HarmonyEvaluator is the component that decides if new detected harmonies are interesting or not. Similar thing with the IntensityEvaluator (I'll talk about intensity in a future post).
- The _mono and _poly bits on the right just describe that a Composer has a list of mono instruments and poliphonic instruments it can use.
I'm pretty sure this structure will continue to evolve as I see what works and what doesn't, and what else is needed. But it's a solid starting point, and I hope to be creating interesting composers in a very near future.
0 comments
Add a comment
PS: no links allowed in comment.