mirror of
https://github.com/ZDoom/fluidsynth.git
synced 2025-01-19 07:50:49 +00:00
Fix notes slightly off pitch (with floats and short loops)
This commit is contained in:
parent
aaa2b74573
commit
864bd7a7f0
1 changed files with 8 additions and 8 deletions
|
@ -887,38 +887,38 @@ fluid_voice_update_param(fluid_voice_t* voice, int gen)
|
||||||
case GEN_STARTADDROFS: /* SF2.01 section 8.1.3 # 0 */
|
case GEN_STARTADDROFS: /* SF2.01 section 8.1.3 # 0 */
|
||||||
case GEN_STARTADDRCOARSEOFS: /* SF2.01 section 8.1.3 # 4 */
|
case GEN_STARTADDRCOARSEOFS: /* SF2.01 section 8.1.3 # 4 */
|
||||||
if (voice->sample != NULL) {
|
if (voice->sample != NULL) {
|
||||||
x = (voice->sample->start
|
z = (voice->sample->start
|
||||||
+ (int) _GEN(voice, GEN_STARTADDROFS)
|
+ (int) _GEN(voice, GEN_STARTADDROFS)
|
||||||
+ 32768 * (int) _GEN(voice, GEN_STARTADDRCOARSEOFS));
|
+ 32768 * (int) _GEN(voice, GEN_STARTADDRCOARSEOFS));
|
||||||
UPDATE_RVOICE_I1(fluid_rvoice_set_start, x);
|
UPDATE_RVOICE_I1(fluid_rvoice_set_start, z);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GEN_ENDADDROFS: /* SF2.01 section 8.1.3 # 1 */
|
case GEN_ENDADDROFS: /* SF2.01 section 8.1.3 # 1 */
|
||||||
case GEN_ENDADDRCOARSEOFS: /* SF2.01 section 8.1.3 # 12 */
|
case GEN_ENDADDRCOARSEOFS: /* SF2.01 section 8.1.3 # 12 */
|
||||||
if (voice->sample != NULL) {
|
if (voice->sample != NULL) {
|
||||||
x = (voice->sample->end
|
z = (voice->sample->end
|
||||||
+ (int) _GEN(voice, GEN_ENDADDROFS)
|
+ (int) _GEN(voice, GEN_ENDADDROFS)
|
||||||
+ 32768 * (int) _GEN(voice, GEN_ENDADDRCOARSEOFS));
|
+ 32768 * (int) _GEN(voice, GEN_ENDADDRCOARSEOFS));
|
||||||
UPDATE_RVOICE_I1(fluid_rvoice_set_end, x);
|
UPDATE_RVOICE_I1(fluid_rvoice_set_end, z);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GEN_STARTLOOPADDROFS: /* SF2.01 section 8.1.3 # 2 */
|
case GEN_STARTLOOPADDROFS: /* SF2.01 section 8.1.3 # 2 */
|
||||||
case GEN_STARTLOOPADDRCOARSEOFS: /* SF2.01 section 8.1.3 # 45 */
|
case GEN_STARTLOOPADDRCOARSEOFS: /* SF2.01 section 8.1.3 # 45 */
|
||||||
if (voice->sample != NULL) {
|
if (voice->sample != NULL) {
|
||||||
x = (voice->sample->loopstart
|
z = (voice->sample->loopstart
|
||||||
+ (int) _GEN(voice, GEN_STARTLOOPADDROFS)
|
+ (int) _GEN(voice, GEN_STARTLOOPADDROFS)
|
||||||
+ 32768 * (int) _GEN(voice, GEN_STARTLOOPADDRCOARSEOFS));
|
+ 32768 * (int) _GEN(voice, GEN_STARTLOOPADDRCOARSEOFS));
|
||||||
UPDATE_RVOICE_I1(fluid_rvoice_set_loopstart, x);
|
UPDATE_RVOICE_I1(fluid_rvoice_set_loopstart, z);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GEN_ENDLOOPADDROFS: /* SF2.01 section 8.1.3 # 3 */
|
case GEN_ENDLOOPADDROFS: /* SF2.01 section 8.1.3 # 3 */
|
||||||
case GEN_ENDLOOPADDRCOARSEOFS: /* SF2.01 section 8.1.3 # 50 */
|
case GEN_ENDLOOPADDRCOARSEOFS: /* SF2.01 section 8.1.3 # 50 */
|
||||||
if (voice->sample != NULL) {
|
if (voice->sample != NULL) {
|
||||||
x = (voice->sample->loopend
|
z = (voice->sample->loopend
|
||||||
+ (int) _GEN(voice, GEN_ENDLOOPADDROFS)
|
+ (int) _GEN(voice, GEN_ENDLOOPADDROFS)
|
||||||
+ 32768 * (int) _GEN(voice, GEN_ENDLOOPADDRCOARSEOFS));
|
+ 32768 * (int) _GEN(voice, GEN_ENDLOOPADDRCOARSEOFS));
|
||||||
UPDATE_RVOICE_I1(fluid_rvoice_set_loopend, x);
|
UPDATE_RVOICE_I1(fluid_rvoice_set_loopend, z);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue