I plan to immigrate FluidSynth to CORTEX-M4. Could anyone please give me some 
hints?
 
The Cortex-M4 system I am going to use: 1MByte flash code memory. 192KByte 
internal SRAM, with FPU, 168MHz, 32MByte external parallel NOR flash (for 
soundfont). Is it possible to immigrate Fluidsynth to cortex-M4 with these 
limits (64 polyphony)?
 
I've tried to use optimized cortex-m4 ASM to replace FluidSYnth's lowpass 
filter, linear interpolation, reverb, chorus. And I also tried to reduced the 
memory needed down to 240KBytes. At this moment, without concerning the low 
speed of reading external flash (soundfont), it looks that 192KByte, 168MHz 
limit would be OK.
 
However, the low speed of reading external flash seems to be a big problem:
 
the flash IC is 90ns, which means you can read 16bits (1 sample point) every 
90ns. To make a 64 polyphone rendering, and output at 44.1kHz, for each output 
sample, you need to read at least 64*2 samples (if linear interpolation is 
used), this is 128*90ns=11.52us, which is already 50% time of the sample period 
of 44.1KHz. So, I am afraid I will have to use DMA to do the readings to the 
audio samples, so that rendering and transfering audio sample data at the same 
time. This will need some more (maybe 10KBytes) memory buffering space, and 
increase the complicacy. I wonder if it is really the only choice here to do 
DMA for transferring audio sample data?
 
Does anybody here have similar question/experience? And what's your solution?
_______________________________________________
fluid-dev mailing list
fluid-dev@nongnu.org
https://lists.nongnu.org/mailman/listinfo/fluid-dev

Reply via email to