Wednesday 13 April 2011

Me again... graphs this time...

Not the sort with an x and y axis that show you data but interconnected nodes.

These graphs are a collection of "nodes". Each node in my system represents a function, some work and has a number of inputs and outputs.

Inputs are connected to outputs of other nodes (or in fact the same node - they can represent feedback and this is both annoying from a functional perspective but also incredibly useful, nay essential, for programming - my view is that although it creates a slight problem in that is is impossible for a node to ever be coherent it creates an opportunity by allowing feedback to be used as memory).

An input can only be connected to a single output (the reasoning here is that all work must be done by a node - if we simply connect 2 inputs to 1 output what work would need to be done to merge those inputs... and, or, addition, multiplication??? It's ambiguous and thus avoided).

MACHINE

A collection of connected nodes is called a "machine".

Each node has a "type" (this saves us duplicating every single machine of every single type!)

Each node has a name - this must be unique to the environment that it is contained in (but does not preclude a machine within this one from having a machine with this name)

CYCLE

Once per output sample the entire machine (the outer one) is cycled. At least 1 of its inputs needs to be connected to something "outside" the machine - in this case the audio circuitry. Top level inputs could be connected to other devices but don't actually need to be (we can build a whole machine to represent a song).

THE SPECIALS A.K.A. The Coventry Automatics

"Special" machines are built in and deal with lovely stuff like loading and playing samples, simple oscillators, time conversion (time is a MASSIVE subject for discrete mode synthesis), basic math operations.

My original intention was to build the entire thing to run as 32 bit ints (which is possible for basic synthesis) but I think the standard atom/quanta of information will be the 64 bit int or double. Much more powerful even if much slower.

Lunch nearly over... more soon!

No comments: