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-04-18 21:34:53 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ft2-clone (Old) and /work/SRC/openSUSE:Factory/.ft2-clone.new.11940 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ft2-clone" Sat Apr 18 21:34:53 2026 rev:42 rq:1347798 version:2.17 Changes: -------- --- /work/SRC/openSUSE:Factory/ft2-clone/ft2-clone.changes 2026-04-14 17:51:19.170980048 +0200 +++ /work/SRC/openSUSE:Factory/.ft2-clone.new.11940/ft2-clone.changes 2026-04-18 21:35:01.858277051 +0200 @@ -1,0 +2,8 @@ +Fri Apr 17 05:59:21 UTC 2026 - Martin Hauke <[email protected]> + +- Update to version 2.17 + * Bug fix: The "Precise BPM" checkbox in Config->Audio was not + uninitialized properly and could accidentally be interacted + with in other screens. + +------------------------------------------------------------------- Old: ---- ft2-clone-2.16.tar.gz New: ---- ft2-clone-2.17.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ft2-clone.spec ++++++ --- /var/tmp/diff_new_pack.Gole17/_old 2026-04-18 21:35:02.366297756 +0200 +++ /var/tmp/diff_new_pack.Gole17/_new 2026-04-18 21:35:02.370297919 +0200 @@ -17,7 +17,7 @@ Name: ft2-clone -Version: 2.16 +Version: 2.17 Release: 0 Summary: Fasttracker II clone License: BSD-3-Clause AND CC-BY-NC-SA-4.0 ++++++ ft2-clone-2.16.tar.gz -> ft2-clone-2.17.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ft2-clone-2.16/src/ft2_config.c new/ft2-clone-2.17/src/ft2_config.c --- old/ft2-clone-2.16/src/ft2_config.c 2026-04-13 17:44:10.000000000 +0200 +++ new/ft2-clone-2.17/src/ft2_config.c 2026-04-16 23:05:48.000000000 +0200 @@ -1427,6 +1427,7 @@ hideRadioButtonGroup(RB_GROUP_CONFIG_AUDIO_FREQ); hideRadioButtonGroup(RB_GROUP_CONFIG_AUDIO_INPUT_FREQ); hideRadioButtonGroup(RB_GROUP_CONFIG_FREQ_SLIDES); + hideCheckBox(CB_CONF_PRECISE_BPM); hideCheckBox(CB_CONF_VOL_RAMP); hidePushButton(PB_CONFIG_AUDIO_RESCAN); hidePushButton(PB_CONFIG_AUDIO_OUTPUT_DOWN); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ft2-clone-2.16/src/ft2_header.h new/ft2-clone-2.17/src/ft2_header.h --- old/ft2-clone-2.16/src/ft2_header.h 2026-04-13 17:44:10.000000000 +0200 +++ new/ft2-clone-2.17/src/ft2_header.h 2026-04-16 23:05:48.000000000 +0200 @@ -14,7 +14,7 @@ #endif #include "ft2_replayer.h" -#define PROG_VER_STR "2.16" +#define PROG_VER_STR "2.17" // do NOT change these! It will only mess things up... diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ft2-clone-2.16/src/mixer/ft2_mix_interpolation.c new/ft2-clone-2.17/src/mixer/ft2_mix_interpolation.c --- old/ft2-clone-2.16/src/mixer/ft2_mix_interpolation.c 2026-04-13 17:44:10.000000000 +0200 +++ new/ft2-clone-2.17/src/mixer/ft2_mix_interpolation.c 2026-04-16 23:05:48.000000000 +0200 @@ -15,20 +15,20 @@ static sincKernel_t sincKernelConfig[SINC_KERNELS] = { - /* These parameters have been borrowed from OpenMPT. - ** Only modification done was to change the cutoff from - ** 0.97 to 1.0 for the first kernel, which after some - ** testing was determined to be a good change; more - ** sharpness, and no increase in audible aliasing - ** (to me, at least). + /* These parameters have been borrowed from the OpenMPT project + ** (with cutoff edit for kernel #1). ** - ** It's quite difficult to tweak these numbers without - ** causing either ringing or aliasing in some cases. - ** If someone has good experience on designing - ** windowed-sinc kernels for a use case like this, - ** and knows of a good way to figure out what numbers - ** to use here, PLEASE contact me (contact details can - ** be found on the bottom of 16-bits.org). + ** The beta for kernel #1 is based on a stopband attenuation close to + ** the 16-bit audio noise floor (~96.33dB). + ** + ** It's quite difficult to tweak these numbers without causing either + ** ringing or aliasing in some cases. If anyone has good experience on + ** designing low-tap windowed-sinc kernels for a use case like this, and + ** knows of a good way to figure out what numbers to use here, PLEASE + ** contact me (contact details can be found at the bottom of 16-bits.org). + ** + ** The beta for kernel #1 is based on a stopband attenuation close to + ** the 16-bit audio noise floor (~96.33dB). */ // beta, cutoff @@ -42,13 +42,13 @@ uint64_t sincRatio1, sincRatio2; // ---------- -static void makeSincKernel(float *fOut, int32_t numPoints, int32_t numPhases, double kaiserBeta, double cutoff); +static void calcPolyphaseSincLUT(float *fOut, int32_t numTaps, double kaiserBeta, double sincCutoff); bool setupMixerInterpolationTables(void) { // cubic spline (4-point) - fCubicSplineLUT = (float *)malloc(CUBIC_SPLINE_WIDTH * INTRP_PHASES * sizeof (float)); + fCubicSplineLUT = (float *)malloc(CUBIC_SPLINE_TAPS * INTRP_PHASES * sizeof (float)); if (fCubicSplineLUT == NULL) { showErrorMsgBox("Not enough memory!"); @@ -78,8 +78,8 @@ sincKernel_t *k = sincKernelConfig; for (int32_t i = 0; i < SINC_KERNELS; i++, k++) { - fSinc8[i] = (float *)malloc(SINC8_WIDTH * INTRP_PHASES * sizeof (float)); - fSinc16[i] = (float *)malloc(SINC16_WIDTH * INTRP_PHASES * sizeof (float)); + fSinc8[i] = (float *)malloc(INTRP_PHASES * SINC8_TAPS * sizeof (float)); + fSinc16[i] = (float *)malloc(INTRP_PHASES * SINC16_TAPS * sizeof (float)); if (fSinc8[i] == NULL || fSinc16[i] == NULL) { @@ -87,8 +87,8 @@ return false; } - makeSincKernel( fSinc8[i], SINC8_WIDTH, INTRP_PHASES, k->kaiserBeta, k->sincCutoff); - makeSincKernel(fSinc16[i], SINC16_WIDTH, INTRP_PHASES, k->kaiserBeta, k->sincCutoff); + calcPolyphaseSincLUT( fSinc8[i], SINC8_TAPS, k->kaiserBeta, k->sincCutoff); + calcPolyphaseSincLUT(fSinc16[i], SINC16_TAPS, k->kaiserBeta, k->sincCutoff); } // resampling ratios for sinc kernel selection @@ -152,25 +152,23 @@ } } -// note: numPoints/numPhases must be 2^n! -static void makeSincKernel(float *fOut, int32_t numPoints, int32_t numPhases, double kaiserBeta, double cutoff) +// note: numTaps must be 2^n! +static void calcPolyphaseSincLUT(float *fOut, int32_t numTaps, double kaiserBeta, double sincCutoff) { - const int32_t kernelLen = numPhases * numPoints; - const int32_t pointBits = (int32_t)log2(numPoints); - const int32_t pointMask = numPoints - 1; - const int32_t centerPoint = (numPoints / 2) - 1; - const double besselI0Beta = 1.0 / besselI0(kaiserBeta); - const double phaseMul = 1.0 / numPhases; - const double xMul = 1.0 / (numPoints / 2); + const double besselI0BetaMul = 1.0 / besselI0(kaiserBeta); + const int32_t pointBits = (int32_t)log2(numTaps); + const int32_t pointMask = numTaps - 1; + const int32_t centerPoint = (numTaps / 2) - 1; + const double xMul = 1.0 / (numTaps / 2); - for (int32_t i = 0; i < kernelLen; i++) + for (int32_t i = 0; i < numTaps * INTRP_PHASES; i++) { - const double x = ((i & pointMask) - centerPoint) - ((i >> pointBits) * phaseMul); + const double x = ((i & pointMask) - centerPoint) - ((i >> pointBits) * (1.0 / INTRP_PHASES)); // Kaiser-Bessel window const double n = x * xMul; - const double window = besselI0(kaiserBeta * sqrt(1.0 - n * n)) * besselI0Beta; + const double window = besselI0(kaiserBeta * sqrt(1.0 - n * n)) * besselI0BetaMul; - fOut[i] = (float)(sinc(x, cutoff) * window); + fOut[i] = (float)(sinc(x, sincCutoff) * window); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ft2-clone-2.16/src/mixer/ft2_mix_interpolation.h new/ft2-clone-2.17/src/mixer/ft2_mix_interpolation.h --- old/ft2-clone-2.16/src/mixer/ft2_mix_interpolation.h 2026-04-13 17:44:10.000000000 +0200 +++ new/ft2-clone-2.17/src/mixer/ft2_mix_interpolation.h 2026-04-16 23:05:48.000000000 +0200 @@ -5,9 +5,9 @@ #include "ft2_mix.h" // MIXER_FRAC_BITS #define SINC_KERNELS 3 -#define SINC8_WIDTH 8 -#define SINC16_WIDTH 16 -#define CUBIC_SPLINE_WIDTH 4 +#define SINC8_TAPS 8 +#define SINC16_TAPS 16 +#define CUBIC_SPLINE_TAPS 4 // 8192 phases is optimal, aliasing should be below (or close to) 16-bit noise floor #define INTRP_PHASES 8192 @@ -15,21 +15,21 @@ // log2(INTRP_PHASES) #define INTRP_PHASES_BITS 13 -// log2(CUBIC_SPLINE_WIDTH) -#define CUBIC_SPLINE_WIDTH_BITS 2 +// log2(CUBIC_SPLINE_TAPS) +#define CUBIC_SPLINE_TAPS_BITS 2 -// log2(SINC8_WIDTH) -#define SINC8_WIDTH_BITS 3 +// log2(SINC8_TAPS) +#define SINC8_TAPS_BITS 3 -// log2(SINC16_WIDTH) -#define SINC16_WIDTH_BITS 4 +// log2(SINC16_TAPS) +#define SINC16_TAPS_BITS 4 -#define CUBIC_SPLINE_FRACSHIFT (MIXER_FRAC_BITS-(INTRP_PHASES_BITS+CUBIC_SPLINE_WIDTH_BITS)) -#define CUBIC_SPLINE_FRACMASK ((CUBIC_SPLINE_WIDTH*INTRP_PHASES)-CUBIC_SPLINE_WIDTH) -#define SINC8_FRACSHIFT (MIXER_FRAC_BITS-(INTRP_PHASES_BITS+SINC8_WIDTH_BITS)) -#define SINC8_FRACMASK ((SINC8_WIDTH*INTRP_PHASES)-SINC8_WIDTH) -#define SINC16_FRACSHIFT (MIXER_FRAC_BITS-(INTRP_PHASES_BITS+SINC16_WIDTH_BITS)) -#define SINC16_FRACMASK ((SINC16_WIDTH*INTRP_PHASES)-SINC16_WIDTH) +#define CUBIC_SPLINE_FRACSHIFT (MIXER_FRAC_BITS-(INTRP_PHASES_BITS+CUBIC_SPLINE_TAPS_BITS)) +#define CUBIC_SPLINE_FRACMASK ((CUBIC_SPLINE_TAPS*INTRP_PHASES)-CUBIC_SPLINE_TAPS) +#define SINC8_FRACSHIFT (MIXER_FRAC_BITS-(INTRP_PHASES_BITS+SINC8_TAPS_BITS)) +#define SINC8_FRACMASK ((SINC8_TAPS*INTRP_PHASES)-SINC8_TAPS) +#define SINC16_FRACSHIFT (MIXER_FRAC_BITS-(INTRP_PHASES_BITS+SINC16_TAPS_BITS)) +#define SINC16_FRACMASK ((SINC16_TAPS*INTRP_PHASES)-SINC16_TAPS) extern float *fCubicSplineLUT, *fSinc[SINC_KERNELS], *fSinc8[SINC_KERNELS], *fSinc16[SINC_KERNELS]; extern uint64_t sincRatio1, sincRatio2; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ft2-clone-2.16/src/rtmidi/rtmidi_c.cpp new/ft2-clone-2.17/src/rtmidi/rtmidi_c.cpp --- old/ft2-clone-2.16/src/rtmidi/rtmidi_c.cpp 2026-04-13 17:44:10.000000000 +0200 +++ new/ft2-clone-2.17/src/rtmidi/rtmidi_c.cpp 2026-04-16 23:05:48.000000000 +0200 @@ -1,7 +1,5 @@ // 8bitbubsy: taken from Github at 13.04.2026, and edited with WinMM lock fix + compiler warning - - #include <string.h> #include <stdlib.h> #include "rtmidi_c.h" @@ -9,6 +7,7 @@ // Fixes build error C4996 on Windows 11 with VS2022 #ifdef _MSC_VER +#pragma warning(disable: 4005) // 8bitbubsy: added this #define strdup _strdup #endif
