Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package ft2-clone for openSUSE:Factory 
checked in at 2026-10-17 21:25:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ft2-clone (Old)
 and      /work/SRC/openSUSE:Factory/.ft2-clone.new.3698736 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ft2-clone"

Sat Oct 17 21:25:48 2026 rev:49 rq:1385269 version:2.26.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/ft2-clone/ft2-clone.changes      2026-10-02 
23:09:48.459542313 +0200
+++ /work/SRC/openSUSE:Factory/.ft2-clone.new.3698736/ft2-clone.changes 
2026-10-17 21:25:49.594941974 +0200
@@ -1,0 +2,6 @@
+Fri Oct 16 18:01:01 UTC 2026 - Martin Hauke <[email protected]>
+
+- Update to version 2.26.1
+  * Fixed aliasing problem with sinc interpolation in v2.25.
+
+-------------------------------------------------------------------

Old:
----
  ft2-clone-2.25.tar.gz

New:
----
  ft2-clone-2.26.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ft2-clone.spec ++++++
--- /var/tmp/diff_new_pack.96XZxG/_old  2026-10-17 21:25:50.437977142 +0200
+++ /var/tmp/diff_new_pack.96XZxG/_new  2026-10-17 21:25:50.439977225 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           ft2-clone
-Version:        2.25
+Version:        2.26.1
 Release:        0
 Summary:        Fasttracker II clone
 License:        BSD-3-Clause AND CC-BY-NC-SA-4.0

++++++ ft2-clone-2.25.tar.gz -> ft2-clone-2.26.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ft2-clone-2.25/src/ft2_about.c 
new/ft2-clone-2.26.1/src/ft2_about.c
--- old/ft2-clone-2.25/src/ft2_about.c  2026-10-02 19:27:48.000000000 +0200
+++ new/ft2-clone-2.26.1/src/ft2_about.c        2026-10-15 18:20:11.000000000 
+0200
@@ -11,7 +11,7 @@
 #include "ft2_random.h"
 
 #define NUM_STARS 1500
-#define STARSHINE_ALPHA_PERCENTAGE 31
+#define STARSHINE_ALPHA_PERCENTAGE 33
 #define ABOUT_SCREEN_X 3
 #define ABOUT_SCREEN_Y 3
 #define ABOUT_SCREEN_W 626
@@ -20,6 +20,7 @@
 #define ABOUT_LOGO_H 78
 #define BG_COLORKEY 0xFF000000
 #define STAR_PIXEL_ID 0xFE000000
+#define STAR_Z_SPEED 3
 
 typedef struct
 {
@@ -103,7 +104,7 @@
                        clearPixel(x,   y+1);
                }
 
-               star->z += 3;
+               star->z += STAR_Z_SPEED;
                if (star->z > 16384)
                        star->z -= 32768;
 
@@ -208,8 +209,6 @@
        starRotation.y -= 0.0002f;
        starRotation.z += 0.0001f;
        rotateStarfieldMatrix();
-
-       showPushButton(PB_EXIT_ABOUT); // yes, we also have to redraw the exit 
button per frame :)
 }
 
 void showAboutScreen(void) // called once when about screen is opened
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ft2-clone-2.25/src/ft2_header.h 
new/ft2-clone-2.26.1/src/ft2_header.h
--- old/ft2-clone-2.25/src/ft2_header.h 2026-10-02 19:27:48.000000000 +0200
+++ new/ft2-clone-2.26.1/src/ft2_header.h       2026-10-15 18:20:11.000000000 
+0200
@@ -14,7 +14,7 @@
 #endif
 #include "ft2_replayer.h"
 
-#define PROG_VER_STR "2.25"
+#define PROG_VER_STR "2.26"
 
 // do NOT change these! It will only mess things up...
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ft2-clone-2.25/src/mixer/ft2_mix_macros.h 
new/ft2-clone-2.26.1/src/mixer/ft2_mix_macros.h
--- old/ft2-clone-2.25/src/mixer/ft2_mix_macros.h       2026-10-02 
19:27:48.000000000 +0200
+++ new/ft2-clone-2.26.1/src/mixer/ft2_mix_macros.h     2026-10-15 
18:20:11.000000000 +0200
@@ -224,26 +224,26 @@
 /* Uses linear interpolation between the phases in the kernels to achieve
 ** very good precision at a low pre-computed phase count.
 **
-** It may look like we go out of bounds for fSinc_2[] and s[], but we have
+** It may look like we go out of bounds for fSinc[] and s[], but we have
 ** extra data at the correct places to account for this.
 */
 
 #define WINDOWED_SINC8_INTERPOLATION(s, f, scale) \
 { \
        const uint32_t frac32 = (uint32_t)f; \
-       const uint32_t lutPhase = frac32 >> INTRP_PHASE_SHIFT; \
-       const float fIntrpFrac = (int32_t)(frac32 & INTRP_PHASE_MASK) * (1.0f / 
INTRP_PHASE_SCALE); \
+       const uint32_t phaseInt = frac32 >> SINC_PHASE_SHIFT; \
+       const float fPhaseFrac = (int32_t)(frac32 & SINC_PHASE_MASK) * (1.0f / 
SINC_PHASE_SCALE); \
        \
-       const float *fSinc_1 = v->fSincLUT + ( lutPhase    << SINC8_TAPS_BITS); 
\
-       const float *fSinc_2 = v->fSincLUT + ((lutPhase+1) << SINC8_TAPS_BITS); 
\
+       const float *fSinc = v->fSincLUT + (phaseInt << SINC8_TAPS_BITS); \
        \
        float fSum = 0.0f; \
-       for (int32_t j = 0; j < SINC8_TAPS; j++) \
+       for (int32_t tap = 0; tap < SINC8_TAPS; tap++) \
        { \
-               const float y1 = fSinc_1[j]; \
-               const float y2 = fSinc_2[j]; \
+               const float fY1 = fSinc[tap]; \
+               const float fY2 = fSinc[SINC8_TAPS+tap]; /* next phase */ \
                \
-               fSum += s[j-((SINC8_TAPS/2)-1)] * (y1 + ((y2 - y1) * 
fIntrpFrac)); \
+               /* do linear interpolation between phases */ \
+               fSum += s[tap-SINC8_CENTER_TAP] * (fY1 + ((fY2 - fY1) * 
fPhaseFrac)); \
        } \
        \
        fSample = fSum * (1.0f / scale); \
@@ -279,19 +279,19 @@
 #define WINDOWED_SINC16_INTERPOLATION(s, f, scale) \
 { \
        const uint32_t frac32 = (uint32_t)f; \
-       const uint32_t lutPhase = frac32 >> INTRP_PHASE_SHIFT; \
-       const float fIntrpFrac = (int32_t)(frac32 & INTRP_PHASE_MASK) * (1.0f / 
INTRP_PHASE_SCALE); \
+       const uint32_t phaseInt = frac32 >> SINC_PHASE_SHIFT; \
+       const float fPhaseFrac = (int32_t)(frac32 & SINC_PHASE_MASK) * (1.0f / 
SINC_PHASE_SCALE); \
        \
-       const float *fSinc_1 = v->fSincLUT + ( lutPhase    << 
SINC16_TAPS_BITS); \
-       const float *fSinc_2 = v->fSincLUT + ((lutPhase+1) << 
SINC16_TAPS_BITS); \
+       const float *fSinc = v->fSincLUT + (phaseInt << SINC16_TAPS_BITS); \
        \
        float fSum = 0.0f; \
-       for (int32_t j = 0; j < SINC16_TAPS; j++) \
+       for (int32_t tap = 0; tap < SINC16_TAPS; tap++) \
        { \
-               const float y1 = fSinc_1[j]; \
-               const float y2 = fSinc_2[j]; \
+               const float fY1 = fSinc[tap]; \
+               const float fY2 = fSinc[SINC16_TAPS+tap]; /* next phase */ \
                \
-               fSum += s[j-((SINC16_TAPS/2)-1)] * (y1 + ((y2 - y1) * 
fIntrpFrac)); \
+               /* do linear interpolation between phases */ \
+               fSum += s[tap-SINC16_CENTER_TAP] * (fY1 + ((fY2 - fY1) * 
fPhaseFrac)); \
        } \
        \
        fSample = fSum * (1.0f / scale); \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ft2-clone-2.25/src/mixer/ft2_windowed_sinc.c 
new/ft2-clone-2.26.1/src/mixer/ft2_windowed_sinc.c
--- old/ft2-clone-2.25/src/mixer/ft2_windowed_sinc.c    2026-10-02 
19:27:48.000000000 +0200
+++ new/ft2-clone-2.26.1/src/mixer/ft2_windowed_sinc.c  2026-10-15 
18:20:11.000000000 +0200
@@ -16,17 +16,17 @@
 } sincKernel_t;
 
 // what sinc kernel to use based on resampling ratio
-#define KERNEL1_RATIO_LIMIT 1.1875 /*      if ratio < x, kernel[0] */
-#define KERNEL2_RATIO_LIMIT 1.5002 /* else if ratio < x, kernel[1] */
-#define KERNEL3_RATIO_LIMIT 2.1000 /* else if ratio < x, kernel[2], else 
kernel[3] */
+#define KERNEL1_RATIO_LIMIT 1.1875 /*      if ratio <= x, kernel[0] */
+#define KERNEL2_RATIO_LIMIT 1.5000 /* else if ratio <= x, kernel[1] */
+#define KERNEL3_RATIO_LIMIT 2.0000 /* else if ratio <= x, kernel[2], else 
kernel[3] */
 
 static sincKernel_t sincKernelConfig[SINC_KERNELS] =
 {
        // kaiser-beta   cutoff
-       {    9.6568,      1.00  }, // kernel #1
-       {    8.1933,      0.77  }, // kernel #2
-       {    7.1939,      0.52  }, // kernel #3
-       {    3.6517,      0.33  }  // kernel #4
+       {   10.1326,     1.0000  }, // kernel #1
+       {    8.3378,     0.7639  }, // kernel #2
+       {    7.1979,     0.5212  }, // kernel #3
+       {    7.0000,     0.3333  }  // kernel #4
 };
 
 static float *fSinc8[SINC_KERNELS], *fSinc16[SINC_KERNELS];
@@ -86,11 +86,11 @@
 {
        float **fSincLUT = (config.interpolation == INTERPOLATION_SINC16) ? 
fSinc16 : fSinc8;
 
-       if (v->delta < (uint64_t)(KERNEL1_RATIO_LIMIT * MIXER_FRAC_SCALE))
+       if (v->delta <= (uint64_t)(KERNEL1_RATIO_LIMIT * MIXER_FRAC_SCALE))
                v->fSincLUT = fSincLUT[0];
-       else if (v->delta < (uint64_t)(KERNEL2_RATIO_LIMIT * MIXER_FRAC_SCALE))
+       else if (v->delta <= (uint64_t)(KERNEL2_RATIO_LIMIT * MIXER_FRAC_SCALE))
                v->fSincLUT = fSincLUT[1];
-       else if (v->delta < (uint64_t)(KERNEL3_RATIO_LIMIT * MIXER_FRAC_SCALE))
+       else if (v->delta <= (uint64_t)(KERNEL3_RATIO_LIMIT * MIXER_FRAC_SCALE))
                v->fSincLUT = fSincLUT[2];
        else
                v->fSincLUT = fSincLUT[3];
@@ -108,7 +108,7 @@
                s += ds;
                d += 2.0;
        }
-       while (ds > s*(1E-10));
+       while (ds > s*(1E-11));
 
        return s;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ft2-clone-2.25/src/mixer/ft2_windowed_sinc.h 
new/ft2-clone-2.26.1/src/mixer/ft2_windowed_sinc.h
--- old/ft2-clone-2.25/src/mixer/ft2_windowed_sinc.h    2026-10-02 
19:27:48.000000000 +0200
+++ new/ft2-clone-2.26.1/src/mixer/ft2_windowed_sinc.h  2026-10-15 
18:20:11.000000000 +0200
@@ -5,25 +5,21 @@
 #include "../ft2_audio.h" // voice_t
 #include "ft2_mix.h" // MIXER_FRAC_BITS
 
-#define SINC_KERNELS 4
-#define SINC8_TAPS 8
-#define SINC16_TAPS 16
-
 // 256 phases + linear interpolation = near perfect (and low CPU cache usage)
 #define SINC_OVERSAMPLING 256
 
-// log2(SINC_OVERSAMPLING)
-#define SINC_OVERSAMPLING_BITS 8
-
-// log2(SINC8_TAPS)
-#define SINC8_TAPS_BITS 3
-
-// log2(SINC16_TAPS)
-#define SINC16_TAPS_BITS 4
+#define SINC_KERNELS 4
+#define SINC_OVERSAMPLING_BITS 8 /* log2(SINC_OVERSAMPLING) */
+#define SINC8_TAPS 8
+#define SINC8_TAPS_BITS 3 /* log2(SINC8_TAPS) */
+#define SINC8_CENTER_TAP ((SINC8_TAPS/2)-1)
+#define SINC16_TAPS 16
+#define SINC16_TAPS_BITS 4 /* log2(SINC16_TAPS) */
+#define SINC16_CENTER_TAP ((SINC16_TAPS/2)-1)
 
-#define INTRP_PHASE_SHIFT (MIXER_FRAC_BITS-SINC_OVERSAMPLING_BITS)
-#define INTRP_PHASE_SCALE (1L << INTRP_PHASE_SHIFT)
-#define INTRP_PHASE_MASK (INTRP_PHASE_SCALE-1)
+#define SINC_PHASE_SHIFT (MIXER_FRAC_BITS-SINC_OVERSAMPLING_BITS)
+#define SINC_PHASE_SCALE (1L << SINC_PHASE_SHIFT)
+#define SINC_PHASE_MASK (SINC_PHASE_SCALE-1)
 
 bool setupWindowedSincTables(void);
 void freeWindowedSincTables(void);

Reply via email to