[linux-audio-user] FluidSynth problem WAS:Recommendatio wanted

Joerg Anders j.anders at informatik.tu-chemnitz.de
Wed Nov 26 06:33:03 EST 2003


On Wed, 26 Nov 2003, Robert Jonsson wrote:

> Unfortunately the mailinglist(and project) is pretty much in hybernation at 
> the moment so I understand perfectly that your propositions have not been 
> implemented.
> If you have a good idea of what the problem is, it would be great if you tried 
> and poked around in the Fluidsynth code yourself (probably not what you 
> wanted to hear ;)

I changed something in 

   fluidsynth-1.0.3/src/fluid_voice.c

   $ diff -au fluidsynth-1.0.3/src/fluid_voice.c fluidsynth-1.0.3/src/fluid_voice.c.new
   --- fluidsynth-1.0.3/src/fluid_voice.c  2003-08-19 21:45:45.000000000 +0200
   +++ fluidsynth-1.0.3/src/fluid_voice.c.new      2003-11-26 12:30:25.000000000 +0100
   @@ -1359,6 +1359,7 @@
      case GEN_VOLENVHOLD:                 /* SF2.01 section 8.1.3 # 35 */
      case GEN_KEYTOVOLENVHOLD:            /* SF2.01 section 8.1.3 # 39 */
        count = calculate_hold_decay_buffers(voice, GEN_VOLENVHOLD, GEN_KEYTOVOLENVHOLD, 0); /* 0 means: hold */
   +    if (count < 98) count = 19464;
        voice->volenv_data[FLUID_VOICE_ENVHOLD].count = count;
        voice->volenv_data[FLUID_VOICE_ENVHOLD].coeff = 1.0f;
        voice->volenv_data[FLUID_VOICE_ENVHOLD].incr = 0.0f;
   @@ -1370,6 +1371,7 @@
      case GEN_VOLENVSUSTAIN:             /* SF2.01 section 8.1.3 # 37 */
      case GEN_KEYTOVOLENVDECAY:          /* SF2.01 section 8.1.3 # 40 */
        count = calculate_hold_decay_buffers(voice, GEN_VOLENVDECAY, GEN_KEYTOVOLENVDECAY, 1); /* 1 for decay */
   +    if (count < 2000) count = 19464;
        voice->volenv_data[FLUID_VOICE_ENVDECAY].count = count;
        voice->volenv_data[FLUID_VOICE_ENVDECAY].coeff = 1.0f;
        voice->volenv_data[FLUID_VOICE_ENVDECAY].incr = count ? -1.0f / count : 0.0f;


This helped for string envelope. But this cannot be the
solution! This is barbarianism!

My opinion is: The fluidsynth misinterprets some very
rare statements in SF2 format. But I don't know anything
about SF2 :-((



-- 
J.Anders, Chemnitz, GERMANY (ja at informatik.tu-chemnitz.de)



More information about the Linux-audio-user mailing list