On Fri, 5 Sep 2003, Julien Claassen wrote: First of all: Thank you for giving me a pointer into the fluidsynth program. > I just looked it up again. You go into your directory src, then you edit the > file: fluid_voice.c. > There you go to line 1372 (for version 1.0.3) and there you'll find: > count = calculate_hold_decay_buffers(voice, GEN_VOLENVDECAY, > GEN_KEYTOVOLENVDECAY, 1); /* 1 for decay */ > After this line you can directly insert something like: > if (count <98) count = 98; This didn't help but I changend in line 1362 after: 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 = 1771; ^^^^^ Now the strings hold the tone but there is a small problem in release. I assume I could fix this similary. But more interesting is: I printed out the "count" values at GEN_VOLENVHOLD GEN_VOLENVDECAY (GEN_VOLENVSUSTAIN, GEN_KEYTOVOLENVDECAY) GEN_MODENVRELEASE If I play the strings (program number 48 in GM scale) the values are: GEN_MODENVRELEASE: 1191 GEN_VOLENVHOLD: 1771 GEN_VOLENVDECAY: 1771 If I do the same wit choir A (program number 52 in GM scale) the values are: GEN_MODENVRELEASE: 728 GEN_VOLENVHOLD: 792 GEN_VOLENVDECAY: 19464 The difference is surprising because the strings and the choirA have certainly a similar envelope. Therefore I changed again at: case GEN_VOLENVHOLD: /* SF2.01 section 8.1.3 # 35 */ case GEN_KEYTOVOLENVHOLD: count = calculate_hold_decay_buffers(voice, GEN_VOLENVHOLD, GEN_KEYTOVOLENVHOLD, 0); /* 0 means: hold */ if (count < 98) count = 19464; ^^^^^ and at: case GEN_VOLENVDECAY: /* SF2.01 section 8.1.3 # 36 */ 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; ^^^^ ^^^^^ ... and the strings are still too quietly but if I increase the volume of the single NOTE_ON commands the strings sound (almost) like on hardware wavetable synthesizer (with small distortions). Because of the great differences (1771 << 19464) I assume still a SF2 interpretation error. Feel free to give me instructions about what else shall I test. -- J.Anders, Chemnitz, GERMANY (ja@xxxxxxxxxxxxxxxxxxxxxxxxx)