[Fpga-synth] RAM Technique and the phLUTe

Scott Gravenhorst music.maker at gte.net
Sun Apr 6 18:08:53 CEST 2008


In my endeavor to tame those transients, I have an idea that may (or may not) work.

The idea is to use two copies of the RAM structure used for the digital waveguides so that when a pitch change occurs, the system first makes a stretched or compressed copy (depending on pitch down or pitch up change respectively) in the "offline" RAM and then switches the system to "play" from the new RAM data.  I've devised an algorithm that should work, it needs an extension to the tuning tables to provide a reciprocal of the length value needed to compute the stretch or compress and to avoid division i
n the algorithm.  My rough calculations indicate that this copy process should take 2 sample times, or 20uS for 100KHz SR.

I believe that a 20uS delay in pitch change is below the threshhold of human perception - ??

My idea includes the use of dual port block RAM so that 2 computations can occur simultaneously on the same RAM.  

The Xilinx doc on using block RAM says that the dual port RAM is symmetrical with two identical and independant ports.  

I'm taking this to mean that I can write to both ports simultaneously at different addresses.  ??

----

My first attempt will do this only with the Bore because I don't want to eliminate the transient completely, only tame it.  I'm hoping that leaving the Jet do what it wants to do will perhaps accomplish this.  

Since there are currently 14 free multipliers available, I could actually use 8 additional dedicated multipliers to create 2 more 35 bit multipliers so I could do both the jet and the bore (the jet is 1/2 the length so it requires 1/2 the time or 1/2 the computational power).

Does anyone have any thoughts at all about this idea? - it seems like it will be some work to make it happen and I'd like to bounce this off you people before I take the plunge.

-- ScottG

-----------------------------------------------------------------

-- Scott Gravenhorst
-- GateMan-III - FPGA Based Monophonic MIDI Synthesizer with SVF
-- PolyDaWG/8 - FPGA Based 8 Voice Polyphonic MIDI Synthesizer
-- phLUTe - FPGA Based Monophonic Physical Model MIDI Synthesizer
-- 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