MiniDexed icon indicating copy to clipboard operation
MiniDexed copied to clipboard

Adding chorus FX

Open dcoredump opened this issue 3 years ago • 7 comments

Should I add a chorus instance for each TG?

dcoredump avatar Apr 08 '22 16:04 dcoredump

Having a chorus would be great.

I am not sure whether it should be per TG or "global" across everything (like the reverb currently is).

Right now we don't have a way to save settings regarding voices that are not part of the original syx format. We are saving effects settings in performance.ini.

  • What did one actually do in the 80s?
  • Would it be significantly more CPU load to do it per TG?

@rsta2 wdyt?

probonopd avatar Apr 08 '22 17:04 probonopd

Every additional stage in the audio signal chain adds some load. It can only be tested, when it is too much, especially on the RPi 2. We could decide to use fast=true, but this only works with a heat sink or fan on some RPi models.

rsta2 avatar Apr 08 '22 17:04 rsta2

So right now I am slightly leaning toward having effects global across all TGs (like reverb right now), unless someone thinks that is a really bad idea. After all, aren't effects mainly about simulating a room? All instruments are in the same room.

probonopd avatar Apr 08 '22 17:04 probonopd

I am a child of the 80s and I bought in 1987 a DX7II - and still have this nice synth. We used it for several years in our band, but the DX inside its flightcase is very heavy, so I decided to create a lighter version.

  • What did one actually do in the 80s?

I used a seperate FX (Alesis Quadraverb+) for my DX. But I think there is not much change for the FX chain:

Some FX are better used globally (like reverb, master limiter/compressor) and some are better located for each voice (like chorus, flanger, delay). This is not a law of nature but makes sense for most cases.

Would it be significantly more CPU load to do it per TG?

Yes, sure. But the most CPU intensive FX are currently the compressor and the reverb. A chorus or a delay are more memory consuming but don't eat as much CPU time.

I have started with Synth_Dexed on a Teensy-3.6, which is a 180 MHz ARM Cortex M4 with 256 KB RAM. There was really a problem with CPU cycles and memory. This was solved with the Teensy-4.1 (600 Mhz ARM Cortex M7, 2 * 512 KB RAM). On the T_4.1 I can use 2 * Dexed (16 voices, chorus, delay per instance), 1 * MDA-EPiano (ROMpler, chorus, distortion), 8 Rompler-Drumsounds at a time (from 70 ROM samples) and a global reverb.

So I think: RPi3/4 should manage a delay and chorus for each TG without problems. Perhaps also RPi2. Only a real world test will show if it would do. IF not, it is not very problematic to use the FX as master FX instead of instance FX.

dcoredump avatar Apr 09 '22 09:04 dcoredump

Forgot to say :)

I have added some more NEON optimizations for Synth_Dexed - hopefully this will give some more free CPU cycles.

dcoredump avatar Apr 09 '22 09:04 dcoredump

@dcoredump so you are obviously the expert here. I'll leave the per-voice vs. global effects decision to you.

probonopd avatar Apr 09 '22 09:04 probonopd

Hello @dcoredump for reverb we now have reverb-send, maybe the same could be done for chorus and/or delay? Do you already have a chorus and/or delay effect available that we could use for MiniDexed? I think we are not memory constrained on the Raspberry Pi ;-)

probonopd avatar Aug 06 '22 20:08 probonopd