[Fpga-synth] N-Operator FM

Scott Gravenhorst music.maker at gte.net
Mon May 4 21:41:32 CEST 2009


Thanks again to Veronica B. for her multi-operator FM machine suggestion.

I was thinking about this and came up with a rough possible implementation
idea.  

What I envision is a specialized programmable state machine.  

The operators would be RAM based and (in this simple example) would all
share the same computational hardware.

A patch would be stored as instructions in block RAM(s).

The programmable state machine would work with the data and instructions in
that RAM.

At least two instructions would be necessary (forgive me, this is new in my
brain) - a GET instruction and an EXEC instruction.  GET would cause the
state machine to access and cache a previously calculated output from
another (previously computed) operator structure.  An EXEC instruction
would cause the selected operator structure to compute and store in RAM
it's next output.  This way, pointers stored in the instruction stream RAM
would define the connections between operator structures.  If a GET
instruction retrieves an operator structure output value needed by more
than one downstream operator structure as input, there could be one GET for
that and then several EXEC instructions following it.

The programmable state machine could view the instruction RAM as a linear
script executed once per sample time (not sure if looping is required or
expedient).  Only the operator structures that are actually used in a given
patch are calculated.  

There would be a need for some kind of "assembler" to translate the patch
language into machine language instructions, but this doesn't seem horrible
to me, I've written a few assemblers before.

This is very preliminary newbie thinking so please be kind...  (c:


-- ScottG
________________________________________________________________________
-- Scott Gravenhorst
-- FPGA MIDI Synthesizer Information: home1.gte.net/res0658s/FPGA_synth/
-- FatMan: home1.gte.net/res0658s/fatman/
-- NonFatMan: home1.gte.net/res0658s/electronics/
-- When the going gets tough, the tough use the command line.



More information about the Fpga-synth mailing list