From 9c74da1a951d04b9c3a297dfe75f117d33978311 Mon Sep 17 00:00:00 2001 From: Ben Clegg-Li Date: Fri, 19 Dec 2025 18:05:52 +0000 Subject: [PATCH 01/12] task: add ADDR type --- sources/Externals/Soundfont/DATATYPE.H | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/sources/Externals/Soundfont/DATATYPE.H b/sources/Externals/Soundfont/DATATYPE.H index ef5bcf23..69d7492c 100644 --- a/sources/Externals/Soundfont/DATATYPE.H +++ b/sources/Externals/Soundfont/DATATYPE.H @@ -35,6 +35,7 @@ ************/ #include +#include /************ @@ -99,18 +100,23 @@ typedef short SHORT; /* 16 bit signed value was: INT */ typedef WORD huge* UINTPTR; typedef DWORD huge* DWORDPTR; typedef void huge* VOIDPTR; + /* Pointer-sized type for runtime memory addresses (32 or 64-bit) */ + typedef uintptr_t ADDR; #else typedef unsigned char BYTE; /* 8 bit unsigned value */ #ifndef BOOL typedef int BOOL; /* 16 bit signed value */ #endif - typedef unsigned short WORD; /* 16 bit signed value */ - typedef signed long LONG; /* 32 bit signed value */ - typedef unsigned long DWORD; /* 32 bit unsigned value */ + typedef unsigned short WORD; /* 16 bit unsigned value */ + typedef int32_t LONG; /* 32 bit signed value (fixed-size) */ + typedef uint32_t DWORD; /* 32 bit unsigned value (fixed-size) */ typedef float FLOAT; /* 32 bit floating point value */ typedef double DOUBLE; /* 64 bit floating point value */ typedef long double LDOUBLE; /* 80 bit floating point value */ + /* Pointer-sized type for runtime memory addresses (32 or 64-bit) */ + typedef uintptr_t ADDR; + typedef BYTE* BYTEPTR; typedef WORD* UINTPTR; typedef DWORD* DWORDPTR; From bd5ae3a6666c9979f666edf6461f8c40090e56de Mon Sep 17 00:00:00 2001 From: Ben Clegg-Li Date: Fri, 19 Dec 2025 18:15:42 +0000 Subject: [PATCH 02/12] task: use ADDR for soundfont samples --- sources/Externals/Soundfont/HYDRA.H | 8 ++-- sources/Externals/Soundfont/SFDATA.H | 8 ++-- sources/Externals/Soundfont/SFNAV.CPP | 20 +++++++--- sources/Externals/Soundfont/SFREADER.CPP | 50 ++++++++++++++++-------- 4 files changed, 56 insertions(+), 30 deletions(-) diff --git a/sources/Externals/Soundfont/HYDRA.H b/sources/Externals/Soundfont/HYDRA.H index 23d4672a..f507f08a 100644 --- a/sources/Externals/Soundfont/HYDRA.H +++ b/sources/Externals/Soundfont/HYDRA.H @@ -206,10 +206,10 @@ typedef struct sfSampleHdrTag { CHAR achSampleName[SAMPLENAMESIZE]; - DWORD dwStart; // Sample addresses - DWORD dwEnd; - DWORD dwStartloop; - DWORD dwEndloop; + ADDR dwStart; // Sample addresses + ADDR dwEnd; + ADDR dwStartloop; + ADDR dwEndloop; DWORD dwSampleRate; // In Hz, IE 44100, 22050, etc BYTE byOriginalKey; // MIDI Key, 0 to 127 CHAR chFineCorrection; // Tuning correction in cents diff --git a/sources/Externals/Soundfont/SFDATA.H b/sources/Externals/Soundfont/SFDATA.H index 1c4ff1c8..14b26689 100644 --- a/sources/Externals/Soundfont/SFDATA.H +++ b/sources/Externals/Soundfont/SFDATA.H @@ -53,10 +53,10 @@ typedef enum sfSampleFlagsTag typedef struct sfDataTag { //// Oscillator //// - DWORD dwStart; //// sample start address - DWORD dwEnd; - DWORD dwStartloop; //// loop start address - DWORD dwEndloop; //// loop end address + ADDR dwStart; //// sample start address (pointer-sized for 64-bit) + ADDR dwEnd; + ADDR dwStartloop; //// loop start address (pointer-sized for 64-bit) + ADDR dwEndloop; //// loop end address (pointer-sized for 64-bit) DWORD dwSampleRate; SHORT shOrigKeyAndCorr; SHORT shSampleModes; diff --git a/sources/Externals/Soundfont/SFNAV.CPP b/sources/Externals/Soundfont/SFNAV.CPP index d16cc892..d1517486 100644 --- a/sources/Externals/Soundfont/SFNAV.CPP +++ b/sources/Externals/Soundfont/SFNAV.CPP @@ -468,8 +468,8 @@ void SoundFontNavigator::Navigate(WORD uiSFID, WORD uiKey, WORD uiVel) // This step necessary for Big Endian systems if (uiInstGenOper <= endloopAddrsOffset) - *(LONG*)((BYTE*)&(psfVectorCurrOsc->dwStart) + - soundFontLookup[uiInstGenOper]) = (LONG)iInstGenAmt; + *(ADDR*)((BYTE*)&(psfVectorCurrOsc->dwStart) + + soundFontLookup[uiInstGenOper]) = (ADDR)iInstGenAmt; else *(SHORT*)((BYTE*)&(psfVectorCurrOsc->dwStart) + soundFontLookup[uiInstGenOper]) = iInstGenAmt; @@ -520,8 +520,8 @@ void SoundFontNavigator::Navigate(WORD uiSFID, WORD uiKey, WORD uiVel) // Necessary for 'byte-incoherent' systems if (uiGenOper <= endloopAddrsOffset) - *(LONG*)((BYTE*)&sfCurrPreset.dwStart + - soundFontLookup[uiGenOper]) = (LONG)iGenAmt; + *(ADDR*)((BYTE*)&sfCurrPreset.dwStart + + soundFontLookup[uiGenOper]) = (ADDR)iGenAmt; else *(SHORT*)((BYTE*)&sfCurrPreset.dwStart + soundFontLookup[uiGenOper]) = iGenAmt; @@ -815,8 +815,16 @@ SoundFontNavigator::AddSoundFonts(sfData * sfSoundFontReturned, { uiOffset = (WORD) soundFontLookup[wCount]; - *(SHORT*)((BYTE*)&(sfSoundFontReturned->dwStart) + uiOffset) += - *(SHORT*)((BYTE*)&(sfSFPresetAdd->dwStart) + uiOffset); + if (wCount <= endloopAddrsOffset) + { + *(ADDR*)((BYTE*)&(sfSoundFontReturned->dwStart) + uiOffset) += + *(ADDR*)((BYTE*)&(sfSFPresetAdd->dwStart) + uiOffset); + } + else + { + *(SHORT*)((BYTE*)&(sfSoundFontReturned->dwStart) + uiOffset) += + *(SHORT*)((BYTE*)&(sfSFPresetAdd->dwStart) + uiOffset); + } } } diff --git a/sources/Externals/Soundfont/SFREADER.CPP b/sources/Externals/Soundfont/SFREADER.CPP index 5004ae16..027c9303 100644 --- a/sources/Externals/Soundfont/SFREADER.CPP +++ b/sources/Externals/Soundfont/SFREADER.CPP @@ -667,11 +667,26 @@ ReadSFBData (CHAR * pchReqdWaveTable) //// Sample Headers //// for (uiCount = 0; uiCount < hf->awStructSize[sampHdr]; uiCount++) { - - tRIFF.SwapDWORD(&hf->pSHdr[uiCount].dwStart); - tRIFF.SwapDWORD(&hf->pSHdr[uiCount].dwEnd); - tRIFF.SwapDWORD(&hf->pSHdr[uiCount].dwStartloop); - tRIFF.SwapDWORD(&hf->pSHdr[uiCount].dwEndloop); + // For ADDR fields, we need to swap using temporary 32-bit variables + // since the file format uses 32-bit values but we store in pointer-sized fields + { + DWORD tmp; + tmp = (DWORD)hf->pSHdr[uiCount].dwStart; + tRIFF.SwapDWORD(&tmp); + hf->pSHdr[uiCount].dwStart = tmp; + + tmp = (DWORD)hf->pSHdr[uiCount].dwEnd; + tRIFF.SwapDWORD(&tmp); + hf->pSHdr[uiCount].dwEnd = tmp; + + tmp = (DWORD)hf->pSHdr[uiCount].dwStartloop; + tRIFF.SwapDWORD(&tmp); + hf->pSHdr[uiCount].dwStartloop = tmp; + + tmp = (DWORD)hf->pSHdr[uiCount].dwEndloop; + tRIFF.SwapDWORD(&tmp); + hf->pSHdr[uiCount].dwEndloop = tmp; + } tRIFF.SwapDWORD(&hf->pSHdr[uiCount].dwSampleRate); @@ -794,25 +809,28 @@ WORD mono = monoSample; // Element for element read of data, to serve as an example of a possible // issue with cross platform code. See comments below. // - for(WORD curHdr=0; curHdr < hf->awStructSize[iHydraSymbol]; curHdr++) { + for(WORD curHdr=0; curHdr < hf->awStructSize[iHydraSymbol]; curHdr++) { - rcnt = 0; + rcnt = 0; rcnt += tRIFF.RIFFRead((VOIDPTR) - &((sfSampleHdr*)pData)[curHdr].achSampleName, + &((sfSampleHdr*)pData)[curHdr].achSampleName, 1, SAMPLENAMESIZE); - rcnt += tRIFF.RIFFRead( &((sfSampleHdr*)pData)[curHdr].dwStart, - 1, sizeof(DWORD)); + // Read 32-bit file values into temporaries, then assign to pointer-sized fields + uint32_t tmp_dwStart, tmp_dwEnd, tmp_dwStartloop, tmp_dwEndloop; + + rcnt += tRIFF.RIFFRead(&tmp_dwStart, 1, sizeof(uint32_t)); + ((sfSampleHdr*)pData)[curHdr].dwStart = tmp_dwStart; - rcnt += tRIFF.RIFFRead( &((sfSampleHdr*)pData)[curHdr].dwEnd, - 1, sizeof(DWORD)); + rcnt += tRIFF.RIFFRead(&tmp_dwEnd, 1, sizeof(uint32_t)); + ((sfSampleHdr*)pData)[curHdr].dwEnd = tmp_dwEnd; - rcnt += tRIFF.RIFFRead( &((sfSampleHdr*)pData)[curHdr].dwStartloop, - 1, sizeof(DWORD)); + rcnt += tRIFF.RIFFRead(&tmp_dwStartloop, 1, sizeof(uint32_t)); + ((sfSampleHdr*)pData)[curHdr].dwStartloop = tmp_dwStartloop; - rcnt += tRIFF.RIFFRead( &((sfSampleHdr*)pData)[curHdr].dwEndloop, - 1, sizeof(DWORD)); + rcnt += tRIFF.RIFFRead(&tmp_dwEndloop, 1, sizeof(uint32_t)); + ((sfSampleHdr*)pData)[curHdr].dwEndloop = tmp_dwEndloop; rcnt += tRIFF.RIFFRead( &((sfSampleHdr*)pData)[curHdr].dwSampleRate, 1, sizeof(DWORD)); From a5e0a4d7f8a9951d89eb86522f28f890364bea15 Mon Sep 17 00:00:00 2001 From: Ben Clegg-Li Date: Fri, 19 Dec 2025 18:16:03 +0000 Subject: [PATCH 03/12] fix: load bank using correct type --- sources/Application/Instruments/SoundFontManager.cpp | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/sources/Application/Instruments/SoundFontManager.cpp b/sources/Application/Instruments/SoundFontManager.cpp index 0acec549..03e4239f 100644 --- a/sources/Application/Instruments/SoundFontManager.cpp +++ b/sources/Application/Instruments/SoundFontManager.cpp @@ -2,10 +2,6 @@ #include "System/System/System.h" #include "System/FileSystem/FileSystem.h" -#ifdef _64BIT -#include -#endif - SoundFontManager::SoundFontManager() { } ; @@ -66,11 +62,8 @@ sfBankID SoundFontManager::LoadBank(const char *path) { current.dwEnd=(current.dwEnd-current.dwStart) ; current.dwStartloop=(current.dwStartloop-current.dwStart) ; current.dwEndloop=(current.dwEndloop-current.dwStart) ; -#ifdef _64BIT - current.dwStart=(intptr_t)buffer ; -#else - current.dwStart=(DWORD)buffer ; -#endif + // ADDR is pointer-sized, works on both 32-bit and 64-bit + current.dwStart=(ADDR)buffer ; sampleData_.push_back(buffer) ; } From 49f4dd11042306f79ebbdab2da4e7b17d608b6b5 Mon Sep 17 00:00:00 2001 From: Ben Clegg-Li Date: Sat, 20 Dec 2025 16:43:56 +0000 Subject: [PATCH 04/12] fix: use ADDR for loading riff --- sources/Externals/Soundfont/RIFF.CPP | 6 +++--- sources/Externals/Soundfont/RIFF.H | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sources/Externals/Soundfont/RIFF.CPP b/sources/Externals/Soundfont/RIFF.CPP index cc092bd5..f9b5b03e 100644 --- a/sources/Externals/Soundfont/RIFF.CPP +++ b/sources/Externals/Soundfont/RIFF.CPP @@ -235,7 +235,7 @@ WORD RIFFClass::OpenRIFF(CHAR* pName) { byWhereIsRIFFData = RIFF_ONDISK; - if ((RIFFOpen((LONG)pName) != SUCCESS ) || (pFile == NULL)) + if ((RIFFOpen((ADDR)pName) != SUCCESS ) || (pFile == NULL)) { SetError(errno); // Set inside RIFFOpen return (uiErrorNdx = RIFF_OPENFILEERROR); @@ -254,7 +254,7 @@ WORD RIFFClass::OpenRIFF(FSSpec* pSpecifier) { byWhereIsRIFFData = RIFF_ONMACDISK; - if (RIFFOpen((LONG)pSpecifier) != SUCCESS) + if (RIFFOpen((ADDR)pSpecifier) != SUCCESS) return (RIFF_OPENFILEERROR); return(InitRIFF()); @@ -443,7 +443,7 @@ DWORD RIFFClass::GetCkFormID(void) { return (dwLastFormID); } // is a pointer to the File System Specifier (FSSpec) // data structure. //*************************************************** -SHORT RIFFClass::RIFFOpen(LONG lPointer) +SHORT RIFFClass::RIFFOpen(ADDR lPointer) { //*************************************************** // Keep in mind that whenever a system call is made and diff --git a/sources/Externals/Soundfont/RIFF.H b/sources/Externals/Soundfont/RIFF.H index ff12655d..33edf149 100644 --- a/sources/Externals/Soundfont/RIFF.H +++ b/sources/Externals/Soundfont/RIFF.H @@ -191,7 +191,7 @@ class RIFFClass DWORD RIFFTell(void); DWORD RIFFTellAbs(void); - SHORT RIFFOpen(LONG); + SHORT RIFFOpen(ADDR); SHORT RIFFClose(void); From b7045918c8dfff55abb3848823060cc19a85fadc Mon Sep 17 00:00:00 2001 From: Ben Clegg-Li Date: Sat, 20 Dec 2025 17:25:13 +0000 Subject: [PATCH 05/12] task: run clang-format --- .../Instruments/SoundFontManager.cpp | 6 +- sources/Externals/Soundfont/DATATYPE.H | 148 +++++++++--------- sources/Externals/Soundfont/HYDRA.H | 8 +- sources/Externals/Soundfont/RIFF.CPP | 53 +++---- sources/Externals/Soundfont/RIFF.H | 2 +- sources/Externals/Soundfont/SFDATA.H | 6 +- sources/Externals/Soundfont/SFNAV.CPP | 23 ++- sources/Externals/Soundfont/SFREADER.CPP | 56 +++---- 8 files changed, 147 insertions(+), 155 deletions(-) diff --git a/sources/Application/Instruments/SoundFontManager.cpp b/sources/Application/Instruments/SoundFontManager.cpp index 03e4239f..c968ec9b 100644 --- a/sources/Application/Instruments/SoundFontManager.cpp +++ b/sources/Application/Instruments/SoundFontManager.cpp @@ -62,10 +62,10 @@ sfBankID SoundFontManager::LoadBank(const char *path) { current.dwEnd=(current.dwEnd-current.dwStart) ; current.dwStartloop=(current.dwStartloop-current.dwStart) ; current.dwEndloop=(current.dwEndloop-current.dwStart) ; - // ADDR is pointer-sized, works on both 32-bit and 64-bit - current.dwStart=(ADDR)buffer ; + // ADDR is pointer-sized, works on both 32-bit and 64-bit + current.dwStart = (ADDR)buffer; - sampleData_.push_back(buffer) ; + sampleData_.push_back(buffer) ; } fin->Close() ; SAFE_DELETE(fin) ; diff --git a/sources/Externals/Soundfont/DATATYPE.H b/sources/Externals/Soundfont/DATATYPE.H index 69d7492c..e228b54b 100644 --- a/sources/Externals/Soundfont/DATATYPE.H +++ b/sources/Externals/Soundfont/DATATYPE.H @@ -37,13 +37,12 @@ #include #include + /************ + * Defines + ************/ -/************ -* Defines -************/ - -#ifndef __BYTE_INCOHERENT /* Big Endian (IE 680x0) */ -#define __BYTE_COHERENT /* Little Endian (IE 80x86) */ +#ifndef __BYTE_INCOHERENT /* Big Endian (IE 680x0) */ +#define __BYTE_COHERENT /* Little Endian (IE 80x86) */ #endif #ifdef _UNIX_STUB_ @@ -52,94 +51,92 @@ #endif #ifdef EMU_WINDOWS - #include +#include #else - #define _export +#define _export #endif -/* Expected data values */ -#define CHAR_MINVAL -127 -#define CHAR_MAXVAL 127 -#define BYTE_MAXVAL 255 -#define SHRT_MINVAL -32767 -#define SHRT_MAXVAL 32767 -#define LONG_MINVAL -2147483647L -#define LONG_MAXVAL 2147483647L -#define DWORD_MAXVAL 4294967295L + /* Expected data values */ +#define CHAR_MINVAL -127 +#define CHAR_MAXVAL 127 +#define BYTE_MAXVAL 255 +#define SHRT_MINVAL -32767 +#define SHRT_MAXVAL 32767 +#define LONG_MINVAL -2147483647L +#define LONG_MAXVAL 2147483647L +#define DWORD_MAXVAL 4294967295L #ifndef FALSE - #define FALSE 0 +#define FALSE 0 #endif #ifndef TRUE - #define TRUE 1 +#define TRUE 1 #endif #ifndef EMU_WINDOWS // windows.h defines these already -// #define LOBYTE(x) ((x) & 0x00FF) -// #define HIBYTE(x) (((x) & 0xFF00) >> 8) + // #define LOBYTE(x) ((x) & 0x00FF) + // #define HIBYTE(x) (((x) & 0xFF00) >> 8) #endif + /************* + * Typedefs + *************/ -/************* -* Typedefs -*************/ - -typedef char CHAR; /* 8 bit signed value */ -typedef short SHORT; /* 16 bit signed value was: INT */ + typedef char CHAR; /* 8 bit signed value */ + typedef short SHORT; /* 16 bit signed value was: INT */ #ifdef EMU_WINDOWS - /***************************************************************** - * These idiosyncratic pointer definitions for memory allocations - * which are greater than 64K and are Intel-centric compiling - * environment necessities, at least for Windows environments. - * Perhaps, however, Windows NT will eliminate the 'huge' keyword - * requirement altogether. - *****************************************************************/ - typedef BYTE huge* BYTEPTR; - typedef WORD huge* UINTPTR; - typedef DWORD huge* DWORDPTR; - typedef void huge* VOIDPTR; - /* Pointer-sized type for runtime memory addresses (32 or 64-bit) */ - typedef uintptr_t ADDR; + /***************************************************************** + * These idiosyncratic pointer definitions for memory allocations + * which are greater than 64K and are Intel-centric compiling + * environment necessities, at least for Windows environments. + * Perhaps, however, Windows NT will eliminate the 'huge' keyword + * requirement altogether. + *****************************************************************/ + typedef BYTE huge *BYTEPTR; + typedef WORD huge *UINTPTR; + typedef DWORD huge *DWORDPTR; + typedef void huge *VOIDPTR; + /* Pointer-sized type for runtime memory addresses (32 or 64-bit) */ + typedef uintptr_t ADDR; #else - typedef unsigned char BYTE; /* 8 bit unsigned value */ + typedef unsigned char BYTE; /* 8 bit unsigned value */ #ifndef BOOL - typedef int BOOL; /* 16 bit signed value */ + typedef int BOOL; /* 16 bit signed value */ #endif - typedef unsigned short WORD; /* 16 bit unsigned value */ - typedef int32_t LONG; /* 32 bit signed value (fixed-size) */ - typedef uint32_t DWORD; /* 32 bit unsigned value (fixed-size) */ - typedef float FLOAT; /* 32 bit floating point value */ - typedef double DOUBLE; /* 64 bit floating point value */ - typedef long double LDOUBLE; /* 80 bit floating point value */ - - /* Pointer-sized type for runtime memory addresses (32 or 64-bit) */ - typedef uintptr_t ADDR; - - typedef BYTE* BYTEPTR; - typedef WORD* UINTPTR; - typedef DWORD* DWORDPTR; - typedef void* VOIDPTR; + typedef unsigned short WORD; /* 16 bit unsigned value */ + typedef int32_t LONG; /* 32 bit signed value (fixed-size) */ + typedef uint32_t DWORD; /* 32 bit unsigned value (fixed-size) */ + typedef float FLOAT; /* 32 bit floating point value */ + typedef double DOUBLE; /* 64 bit floating point value */ + typedef long double LDOUBLE; /* 80 bit floating point value */ + + /* Pointer-sized type for runtime memory addresses (32 or 64-bit) */ + typedef uintptr_t ADDR; + + typedef BYTE *BYTEPTR; + typedef WORD *UINTPTR; + typedef DWORD *DWORDPTR; + typedef void *VOIDPTR; #endif /* EMU_WINDOWS */ -/******************************************************************** -* This 16 bit unsigned value is used for routines which return -* standard E-mu error codes (see emuerrs.h) -********************************************************************/ -typedef unsigned short EMUSTAT; + /******************************************************************** + * This 16 bit unsigned value is used for routines which return + * standard E-mu error codes (see emuerrs.h) + ********************************************************************/ + typedef unsigned short EMUSTAT; #ifdef __BYTE_COHERENT -/******************************************************************** -* Convenient union datatypes to use for byte swapping or extracting -* bytes and/or shorts within a short or long value without using -* bit shifting. -********************************************************************/ -typedef struct twoBytesTag -{ - BYTE by0; - BYTE by1; -} twoBytes; + /******************************************************************** + * Convenient union datatypes to use for byte swapping or extracting + * bytes and/or shorts within a short or long value without using + * bit shifting. + ********************************************************************/ + typedef struct twoBytesTag { + BYTE by0; + BYTE by1; + } twoBytes; typedef struct fourBytesTag @@ -159,11 +156,10 @@ typedef struct twoWordsTag #elif defined(__BYTE_INCOHERENT) -typedef struct twoBytesTag -{ - BYTE by1; - BYTE by0; -} twoBytes; + typedef struct twoBytesTag { + BYTE by1; + BYTE by0; + } twoBytes; typedef struct fourBytesTag diff --git a/sources/Externals/Soundfont/HYDRA.H b/sources/Externals/Soundfont/HYDRA.H index f507f08a..3f686570 100644 --- a/sources/Externals/Soundfont/HYDRA.H +++ b/sources/Externals/Soundfont/HYDRA.H @@ -206,10 +206,10 @@ typedef struct sfSampleHdrTag { CHAR achSampleName[SAMPLENAMESIZE]; - ADDR dwStart; // Sample addresses - ADDR dwEnd; - ADDR dwStartloop; - ADDR dwEndloop; + ADDR dwStart; // Sample addresses + ADDR dwEnd; + ADDR dwStartloop; + ADDR dwEndloop; DWORD dwSampleRate; // In Hz, IE 44100, 22050, etc BYTE byOriginalKey; // MIDI Key, 0 to 127 CHAR chFineCorrection; // Tuning correction in cents diff --git a/sources/Externals/Soundfont/RIFF.CPP b/sources/Externals/Soundfont/RIFF.CPP index f9b5b03e..21df6bb0 100644 --- a/sources/Externals/Soundfont/RIFF.CPP +++ b/sources/Externals/Soundfont/RIFF.CPP @@ -235,10 +235,9 @@ WORD RIFFClass::OpenRIFF(CHAR* pName) { byWhereIsRIFFData = RIFF_ONDISK; - if ((RIFFOpen((ADDR)pName) != SUCCESS ) || (pFile == NULL)) - { - SetError(errno); // Set inside RIFFOpen - return (uiErrorNdx = RIFF_OPENFILEERROR); + if ((RIFFOpen((ADDR)pName) != SUCCESS) || (pFile == NULL)) { + SetError(errno); // Set inside RIFFOpen + return (uiErrorNdx = RIFF_OPENFILEERROR); } return (InitRIFF()); @@ -255,8 +254,8 @@ WORD RIFFClass::OpenRIFF(FSSpec* pSpecifier) byWhereIsRIFFData = RIFF_ONMACDISK; if (RIFFOpen((ADDR)pSpecifier) != SUCCESS) - return (RIFF_OPENFILEERROR); - + return (RIFF_OPENFILEERROR); + return(InitRIFF()); } #endif // USE_MACINTOSH @@ -443,28 +442,26 @@ DWORD RIFFClass::GetCkFormID(void) { return (dwLastFormID); } // is a pointer to the File System Specifier (FSSpec) // data structure. //*************************************************** -SHORT RIFFClass::RIFFOpen(ADDR lPointer) -{ - //*************************************************** - // Keep in mind that whenever a system call is made and - // _no_ error takes place, errno is _not_ set to 0. - // Obviously, this means that any previous system call - // will set errno upon an error, one which is innocuous, - // but will cause fopen to _appear_ as though it failed. - // For example, open a temporary file which might not - // exist: - // - // fopen("tempfile", "wb"); - // - // If it doesn't exist, errno become 2 (in DOS, at - // least). Now call the fopen below for a preexisting - // RIFF file. Guess what! If you didn't reset errno - // to 0, your return value will be 2, an apparent error. - //*************************************************** - errno = 0; - - switch (byWhereIsRIFFData) - { +SHORT RIFFClass::RIFFOpen(ADDR lPointer) { + //*************************************************** + // Keep in mind that whenever a system call is made and + // _no_ error takes place, errno is _not_ set to 0. + // Obviously, this means that any previous system call + // will set errno upon an error, one which is innocuous, + // but will cause fopen to _appear_ as though it failed. + // For example, open a temporary file which might not + // exist: + // + // fopen("tempfile", "wb"); + // + // If it doesn't exist, errno become 2 (in DOS, at + // least). Now call the fopen below for a preexisting + // RIFF file. Guess what! If you didn't reset errno + // to 0, your return value will be 2, an apparent error. + //*************************************************** + errno = 0; + + switch (byWhereIsRIFFData) { case RIFF_ONDISK: pFile = fopen((CHAR *)lPointer, "rb"); return (errno); diff --git a/sources/Externals/Soundfont/RIFF.H b/sources/Externals/Soundfont/RIFF.H index 33edf149..0763b5ec 100644 --- a/sources/Externals/Soundfont/RIFF.H +++ b/sources/Externals/Soundfont/RIFF.H @@ -191,7 +191,7 @@ class RIFFClass DWORD RIFFTell(void); DWORD RIFFTellAbs(void); - SHORT RIFFOpen(ADDR); + SHORT RIFFOpen(ADDR); SHORT RIFFClose(void); diff --git a/sources/Externals/Soundfont/SFDATA.H b/sources/Externals/Soundfont/SFDATA.H index 14b26689..9540f8e3 100644 --- a/sources/Externals/Soundfont/SFDATA.H +++ b/sources/Externals/Soundfont/SFDATA.H @@ -53,10 +53,10 @@ typedef enum sfSampleFlagsTag typedef struct sfDataTag { //// Oscillator //// - ADDR dwStart; //// sample start address (pointer-sized for 64-bit) + ADDR dwStart; //// sample start address (pointer-sized for 64-bit) ADDR dwEnd; - ADDR dwStartloop; //// loop start address (pointer-sized for 64-bit) - ADDR dwEndloop; //// loop end address (pointer-sized for 64-bit) + ADDR dwStartloop; //// loop start address (pointer-sized for 64-bit) + ADDR dwEndloop; //// loop end address (pointer-sized for 64-bit) DWORD dwSampleRate; SHORT shOrigKeyAndCorr; SHORT shSampleModes; diff --git a/sources/Externals/Soundfont/SFNAV.CPP b/sources/Externals/Soundfont/SFNAV.CPP index d1517486..af023797 100644 --- a/sources/Externals/Soundfont/SFNAV.CPP +++ b/sources/Externals/Soundfont/SFNAV.CPP @@ -468,8 +468,8 @@ void SoundFontNavigator::Navigate(WORD uiSFID, WORD uiKey, WORD uiVel) // This step necessary for Big Endian systems if (uiInstGenOper <= endloopAddrsOffset) - *(ADDR*)((BYTE*)&(psfVectorCurrOsc->dwStart) + - soundFontLookup[uiInstGenOper]) = (ADDR)iInstGenAmt; + *(ADDR *)((BYTE *)&(psfVectorCurrOsc->dwStart) + + soundFontLookup[uiInstGenOper]) = (ADDR)iInstGenAmt; else *(SHORT*)((BYTE*)&(psfVectorCurrOsc->dwStart) + soundFontLookup[uiInstGenOper]) = iInstGenAmt; @@ -520,8 +520,8 @@ void SoundFontNavigator::Navigate(WORD uiSFID, WORD uiKey, WORD uiVel) // Necessary for 'byte-incoherent' systems if (uiGenOper <= endloopAddrsOffset) - *(ADDR*)((BYTE*)&sfCurrPreset.dwStart + - soundFontLookup[uiGenOper]) = (ADDR)iGenAmt; + *(ADDR *)((BYTE *)&sfCurrPreset.dwStart + + soundFontLookup[uiGenOper]) = (ADDR)iGenAmt; else *(SHORT*)((BYTE*)&sfCurrPreset.dwStart + soundFontLookup[uiGenOper]) = iGenAmt; @@ -815,15 +815,12 @@ SoundFontNavigator::AddSoundFonts(sfData * sfSoundFontReturned, { uiOffset = (WORD) soundFontLookup[wCount]; - if (wCount <= endloopAddrsOffset) - { - *(ADDR*)((BYTE*)&(sfSoundFontReturned->dwStart) + uiOffset) += - *(ADDR*)((BYTE*)&(sfSFPresetAdd->dwStart) + uiOffset); - } - else - { - *(SHORT*)((BYTE*)&(sfSoundFontReturned->dwStart) + uiOffset) += - *(SHORT*)((BYTE*)&(sfSFPresetAdd->dwStart) + uiOffset); + if (wCount <= endloopAddrsOffset) { + *(ADDR *)((BYTE *)&(sfSoundFontReturned->dwStart) + uiOffset) += + *(ADDR *)((BYTE *)&(sfSFPresetAdd->dwStart) + uiOffset); + } else { + *(SHORT *)((BYTE *)&(sfSoundFontReturned->dwStart) + uiOffset) += + *(SHORT *)((BYTE *)&(sfSFPresetAdd->dwStart) + uiOffset); } } } diff --git a/sources/Externals/Soundfont/SFREADER.CPP b/sources/Externals/Soundfont/SFREADER.CPP index 027c9303..fdfbf740 100644 --- a/sources/Externals/Soundfont/SFREADER.CPP +++ b/sources/Externals/Soundfont/SFREADER.CPP @@ -667,26 +667,27 @@ ReadSFBData (CHAR * pchReqdWaveTable) //// Sample Headers //// for (uiCount = 0; uiCount < hf->awStructSize[sampHdr]; uiCount++) { - // For ADDR fields, we need to swap using temporary 32-bit variables - // since the file format uses 32-bit values but we store in pointer-sized fields - { - DWORD tmp; - tmp = (DWORD)hf->pSHdr[uiCount].dwStart; - tRIFF.SwapDWORD(&tmp); - hf->pSHdr[uiCount].dwStart = tmp; - - tmp = (DWORD)hf->pSHdr[uiCount].dwEnd; - tRIFF.SwapDWORD(&tmp); - hf->pSHdr[uiCount].dwEnd = tmp; - - tmp = (DWORD)hf->pSHdr[uiCount].dwStartloop; - tRIFF.SwapDWORD(&tmp); - hf->pSHdr[uiCount].dwStartloop = tmp; - - tmp = (DWORD)hf->pSHdr[uiCount].dwEndloop; - tRIFF.SwapDWORD(&tmp); - hf->pSHdr[uiCount].dwEndloop = tmp; - } + // For ADDR fields, we need to swap using temporary 32-bit variables + // since the file format uses 32-bit values but we store in pointer-sized + // fields + { + DWORD tmp; + tmp = (DWORD)hf->pSHdr[uiCount].dwStart; + tRIFF.SwapDWORD(&tmp); + hf->pSHdr[uiCount].dwStart = tmp; + + tmp = (DWORD)hf->pSHdr[uiCount].dwEnd; + tRIFF.SwapDWORD(&tmp); + hf->pSHdr[uiCount].dwEnd = tmp; + + tmp = (DWORD)hf->pSHdr[uiCount].dwStartloop; + tRIFF.SwapDWORD(&tmp); + hf->pSHdr[uiCount].dwStartloop = tmp; + + tmp = (DWORD)hf->pSHdr[uiCount].dwEndloop; + tRIFF.SwapDWORD(&tmp); + hf->pSHdr[uiCount].dwEndloop = tmp; + } tRIFF.SwapDWORD(&hf->pSHdr[uiCount].dwSampleRate); @@ -813,21 +814,22 @@ WORD mono = monoSample; rcnt = 0; - rcnt += tRIFF.RIFFRead((VOIDPTR) - &((sfSampleHdr*)pData)[curHdr].achSampleName, - 1, SAMPLENAMESIZE); + rcnt += tRIFF.RIFFRead((VOIDPTR) & + ((sfSampleHdr *)pData)[curHdr].achSampleName, + 1, SAMPLENAMESIZE); - // Read 32-bit file values into temporaries, then assign to pointer-sized fields + // Read 32-bit file values into temporaries, then assign to + // pointer-sized fields uint32_t tmp_dwStart, tmp_dwEnd, tmp_dwStartloop, tmp_dwEndloop; rcnt += tRIFF.RIFFRead(&tmp_dwStart, 1, sizeof(uint32_t)); - ((sfSampleHdr*)pData)[curHdr].dwStart = tmp_dwStart; + ((sfSampleHdr *)pData)[curHdr].dwStart = tmp_dwStart; rcnt += tRIFF.RIFFRead(&tmp_dwEnd, 1, sizeof(uint32_t)); - ((sfSampleHdr*)pData)[curHdr].dwEnd = tmp_dwEnd; + ((sfSampleHdr *)pData)[curHdr].dwEnd = tmp_dwEnd; rcnt += tRIFF.RIFFRead(&tmp_dwStartloop, 1, sizeof(uint32_t)); - ((sfSampleHdr*)pData)[curHdr].dwStartloop = tmp_dwStartloop; + ((sfSampleHdr *)pData)[curHdr].dwStartloop = tmp_dwStartloop; rcnt += tRIFF.RIFFRead(&tmp_dwEndloop, 1, sizeof(uint32_t)); ((sfSampleHdr*)pData)[curHdr].dwEndloop = tmp_dwEndloop; From 0470a15a99f77f70cb90b5532eeb9f25c9c74615 Mon Sep 17 00:00:00 2001 From: Ben Clegg-Li Date: Sat, 20 Dec 2025 17:29:53 +0000 Subject: [PATCH 06/12] fix: win32 build --- Dockerfile.rg35xxplus | 22 ++++++++++++++++++++++ GXSCC_gm_033.sf2 | Bin 0 -> 128788 bytes sources/Externals/Soundfont/DATATYPE.H | 14 +++++++++++++- 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 Dockerfile.rg35xxplus create mode 100644 GXSCC_gm_033.sf2 diff --git a/Dockerfile.rg35xxplus b/Dockerfile.rg35xxplus new file mode 100644 index 00000000..61b92891 --- /dev/null +++ b/Dockerfile.rg35xxplus @@ -0,0 +1,22 @@ +FROM --platform=linux/amd64 ubuntu:22.04 + +# Install build dependencies +RUN apt-get update && apt-get install -y \ + build-essential \ + make \ + wget \ + xz-utils \ + python3 \ + python3-pillow \ + && rm -rf /var/lib/apt/lists/* + +# Download and install RG35XX Plus toolchain +RUN wget -O /tmp/rg35xx-plus-aarch64-SDL2-SDK-0.1.0.tar.xz \ + https://github.com/simotek/rg35xx-plus-aarch64-SDL2-SDK/releases/download/0.1.0/rg35xx-plus-aarch64-SDL2-SDK-0.1.0.tar.xz && \ + mkdir -p /opt/rg35xx-plus-aarch64-SDL2-SDK-0.1.0 && \ + tar -xvf /tmp/rg35xx-plus-aarch64-SDL2-SDK-0.1.0.tar.xz -C /opt/rg35xx-plus-aarch64-SDL2-SDK-0.1.0 --strip-components=1 && \ + rm /tmp/rg35xx-plus-aarch64-SDL2-SDK-0.1.0.tar.xz + +WORKDIR /workspace/projects + +CMD ["make", "PLATFORM=RG35XXPLUS"] diff --git a/GXSCC_gm_033.sf2 b/GXSCC_gm_033.sf2 new file mode 100644 index 0000000000000000000000000000000000000000..b87ecda6b5a9d3652fa1b14344c736ee83e33a1a GIT binary patch literal 128788 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

xbjpEvx@UQYPR3 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 UYahovS<*7QTi@_ -#include + +#if defined(_MSC_VER) && _MSC_VER < 1600 + /* Workaround for MSVC 2008 and earlier */ + typedef signed __int32 int32_t; + typedef unsigned __int32 uint32_t; + #ifdef _WIN64 + typedef unsigned __int64 uintptr_t; + #else + typedef unsigned __int32 uintptr_t; + #endif +#else + #include +#endif /************ * Defines From db1631ac653453d01e77be2286d7141ffb8a65cd Mon Sep 17 00:00:00 2001 From: Ben Clegg-Li Date: Sat, 20 Dec 2025 17:37:30 +0000 Subject: [PATCH 07/12] task: update CHANGELOG --- CHANGELOG | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 2be5d1f0..86cf5f80 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,11 @@ +1.6.0 + Contributions: + drbscl + Add 64 bit soundfont support (#211) + + Fixes: + Add 64 bit soundfont support (#211) + 1.5.0-bacon3 Contributions: purelygrey @@ -15,9 +23,9 @@ * instrumentation by clsource simotek - Add color options for Border Play and Mute (#143) + Add color options for Border Play and Mute (#143) * Adds different color for the > play and _ mute indicators - Fix rg35xx mapping (#139) + Fix rg35xx mapping (#139) * rshoulder and lshoulder were the wrong way kompadre @@ -40,7 +48,7 @@ Nudge functionality (#130) * In Project view, select tempo and hold B+LEFT/RIGHT to nudge slower/faster * In Song view, pressing LT+LEFT/RIGHT will do the same - + Printable fx in InstrumentView (#155) * Uses ffmpeg to print reverb to currently selected sample * New sample with fx is created and assigned to the current instrument @@ -63,7 +71,7 @@ Set songview b jumping length to 16 rows in correspondence with LSDJ and M8 Scales no longer affect instrument numbers ([djdiskmachine/LittleGPTracker#172](https://github.com/djdiskmachine/LittleGPTracker/issues/172)) Bug in Variable:SetString [djdiskmachine/LittleGPTracker#169](https://github.com/djdiskmachine/LittleGPTracker/issues/169) - + Issue in deep clone (#135) Was possible to accidentally deep clone position into another position @@ -108,27 +116,27 @@ Fixes: RG35XX no longer segfaults on boot USB MIDI disabled due to missing OS dependencies - + 1.4.0 Adds: Automated build for bittboy, Win32, PSP, Miyoo, Deb32, RG35XX Shoutout to xquader for the initial RG35XX port (https://boosty.to/xquader) License changed from CC-BY-SA-NC to GPL-3 - * MVEL cmd + * MVEL cmd Set step velocity for MIDI instruments https://github.com/democloid/picoTracker/pull/163 - + Author: @maks@fluttercommunity.social Co-authored-by: djdiskmachine * Config option to set major beat color in phrase screen Author: koisignal - + * Deep clone Clones selected chain and the phrases within - + Author: koisignal Co-authored-by: djdiskmachine @@ -190,29 +198,29 @@ 1.3o-beta-1 Pingpong loop now stable - Courtesy of djdiskmachine + Courtesy of djdiskmachine Add ability to change font USAGE: ./mkfont.py FONT_BMP [OUTPUT_FILE] FONT_BMP must be a black/white (#000000, #FFFFFF) 128x64px bmp if OUTPUT_FILE is omitted, will print to stdout - Courtesy of subnixr + Courtesy of subnixr Adds Miyoo mini build Courtesy of Nine-H Changes filter attenuation to attenuation - Adjust volume post scream filter + Adjust volume post scream filter https://github.com/Mdashdotdashn/LittleGPTracker/issues/22 Missing wiki content dumped to repo - Courtesy of Peter Swimm + Courtesy of Peter Swimm 1.3o-alpha-5 Adds native SteamOS build Adds Bittboy/RS97/RG350 builds Merge of Gameblaba, CalebCDE and RafaVicos work - Shoutouts! + Shoutouts! 1.3o-alpha-4 Adds Save As menu item - save a copy of your project with a new name Courtesy of yoyz (https://github.com/yoyz), biggup! From 4684c29f5cdd8963e13dbc6910032b810afe3548 Mon Sep 17 00:00:00 2001 From: Ben Clegg-Li Date: Sat, 20 Dec 2025 17:40:28 +0000 Subject: [PATCH 08/12] task: bump version in project.h --- sources/Application/Model/Project.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/sources/Application/Model/Project.h b/sources/Application/Model/Project.h index f75454d6..29628a98 100644 --- a/sources/Application/Model/Project.h +++ b/sources/Application/Model/Project.h @@ -19,7 +19,7 @@ #define VAR_SCALE MAKE_FOURCC('S', 'C', 'A', 'L') #define PROJECT_NUMBER "1" -#define PROJECT_RELEASE "5" +#define PROJECT_RELEASE "6" #define BUILD_COUNT "0" #define MAX_TAP 3 @@ -63,8 +63,7 @@ class Project: public Persistent,public VariableContainer,I_Observer { int midiDeviceListSize_ ; int tempoNudge_ ; unsigned long lastTap_[MAX_TAP] ; - unsigned int tempoTapCount_ ; + unsigned int tempoTapCount_; } ; #endif - From cba40fa64f7e2f17f5b61c18b92976017f44d0a7 Mon Sep 17 00:00:00 2001 From: Ben Clegg-Li Date: Sat, 20 Dec 2025 17:41:42 +0000 Subject: [PATCH 09/12] task: update README --- README.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index ce6d7ee7..a53b7ca7 100644 --- a/README.md +++ b/README.md @@ -44,9 +44,9 @@ Recommended reading to get you started: |-------------|---------------|--------------|------------|--------------------------------------| | PSP | NO | NO | YES | [See notes](projects/resources/PSP/INSTALL_HOW_TO.txt) | | DEB | YES | YES | YES | | -| X64 | YES | YES | NO | | +| X64 | YES | YES | MAYBE | | | X86 | YES | YES | YES | | -| STEAM | YES | YES | NO | | +| STEAM | YES | YES | MAYBE | | | MIYOO | NO | NO | YES | Port by [Nine-H](https://ninethehacker.xyz) | | W32 | YES | YES | YES | Built in VS2008 with love | | RASPI | YES | YES | YES | Versatile platform | @@ -55,10 +55,8 @@ Recommended reading to get you started: | GARLIC | MAYBE | NO | YES | Port by [Simotek](http://simotek.net)| | GARLICPLUS | MAYBE | NO | YES | Port by [Simotek](http://simotek.net)| | RG35XXPLUS | MAYBE | NO | YES | Port by [Simotek](http://simotek.net)| -| MACOS | YES | YES | NO | Port by [clsource](https://genserver.social/clsource) | +| MACOS | YES | YES | MAYBE | Port by [clsource](https://genserver.social/clsource) | - -* **Soundfont library is currently not ported for 64bit OS** * **MIDI functionality __greatly__ depends on kernel support, please feature request your favourite OS maintainer =)** * **Install ffmpeg by following install instructions for your platform [here](https://www.ffmpeg.org/download.html)** * **PrintFX requires full ffmpeg. If marked as TBA, it requires a redesign using [libav](https://trac.ffmpeg.org/wiki/Using%20libav*)** From 68c8a66eefa58ddef806f758f5ca811114288ceb Mon Sep 17 00:00:00 2001 From: Ben Clegg-Li Date: Sat, 20 Dec 2025 17:50:36 +0000 Subject: [PATCH 10/12] task: change version to 1.6.0-bacon0 --- CHANGELOG | 2 +- sources/Application/Model/Project.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 86cf5f80..9f625a3b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,4 +1,4 @@ -1.6.0 +1.6.0-bacon0 Contributions: drbscl Add 64 bit soundfont support (#211) diff --git a/sources/Application/Model/Project.h b/sources/Application/Model/Project.h index 29628a98..4a5d813f 100644 --- a/sources/Application/Model/Project.h +++ b/sources/Application/Model/Project.h @@ -20,7 +20,7 @@ #define PROJECT_NUMBER "1" #define PROJECT_RELEASE "6" -#define BUILD_COUNT "0" +#define BUILD_COUNT "0-bacon0" #define MAX_TAP 3 From 96e748dd4614f0d9c81caf06e7f8131da9452c0d Mon Sep 17 00:00:00 2001 From: Ben Clegg-Li Date: Sat, 20 Dec 2025 17:54:10 +0000 Subject: [PATCH 11/12] fix: remove accidentally included files --- Dockerfile.rg35xxplus | 22 ---------------------- GXSCC_gm_033.sf2 | Bin 128788 -> 0 bytes 2 files changed, 22 deletions(-) delete mode 100644 Dockerfile.rg35xxplus delete mode 100644 GXSCC_gm_033.sf2 diff --git a/Dockerfile.rg35xxplus b/Dockerfile.rg35xxplus deleted file mode 100644 index 61b92891..00000000 --- a/Dockerfile.rg35xxplus +++ /dev/null @@ -1,22 +0,0 @@ -FROM --platform=linux/amd64 ubuntu:22.04 - -# Install build dependencies -RUN apt-get update && apt-get install -y \ - build-essential \ - make \ - wget \ - xz-utils \ - python3 \ - python3-pillow \ - && rm -rf /var/lib/apt/lists/* - -# Download and install RG35XX Plus toolchain -RUN wget -O /tmp/rg35xx-plus-aarch64-SDL2-SDK-0.1.0.tar.xz \ - https://github.com/simotek/rg35xx-plus-aarch64-SDL2-SDK/releases/download/0.1.0/rg35xx-plus-aarch64-SDL2-SDK-0.1.0.tar.xz && \ - mkdir -p /opt/rg35xx-plus-aarch64-SDL2-SDK-0.1.0 && \ - tar -xvf /tmp/rg35xx-plus-aarch64-SDL2-SDK-0.1.0.tar.xz -C /opt/rg35xx-plus-aarch64-SDL2-SDK-0.1.0 --strip-components=1 && \ - rm /tmp/rg35xx-plus-aarch64-SDL2-SDK-0.1.0.tar.xz - -WORKDIR /workspace/projects - -CMD ["make", "PLATFORM=RG35XXPLUS"] diff --git a/GXSCC_gm_033.sf2 b/GXSCC_gm_033.sf2 deleted file mode 100644 index b87ecda6b5a9d3652fa1b14344c736ee83e33a1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128788 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

xbjpEvx@UQYPR3 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 UYahovS<*7QTi@_ Date: Sun, 21 Dec 2025 20:15:43 +0000 Subject: [PATCH 12/12] task: re-run formatter --- .../Instruments/SoundFontManager.cpp | 4 ++-- sources/Externals/Soundfont/DATATYPE.H | 24 +++++++++---------- sources/Externals/Soundfont/RIFF.CPP | 4 ++-- sources/Externals/Soundfont/SFREADER.CPP | 6 ++--- 4 files changed, 18 insertions(+), 20 deletions(-) diff --git a/sources/Application/Instruments/SoundFontManager.cpp b/sources/Application/Instruments/SoundFontManager.cpp index c968ec9b..d56a4efc 100644 --- a/sources/Application/Instruments/SoundFontManager.cpp +++ b/sources/Application/Instruments/SoundFontManager.cpp @@ -65,8 +65,8 @@ sfBankID SoundFontManager::LoadBank(const char *path) { // ADDR is pointer-sized, works on both 32-bit and 64-bit current.dwStart = (ADDR)buffer; - sampleData_.push_back(buffer) ; - } + sampleData_.push_back(buffer); + } fin->Close() ; SAFE_DELETE(fin) ; diff --git a/sources/Externals/Soundfont/DATATYPE.H b/sources/Externals/Soundfont/DATATYPE.H index b457355d..06d6d6e8 100644 --- a/sources/Externals/Soundfont/DATATYPE.H +++ b/sources/Externals/Soundfont/DATATYPE.H @@ -37,16 +37,16 @@ #include #if defined(_MSC_VER) && _MSC_VER < 1600 - /* Workaround for MSVC 2008 and earlier */ - typedef signed __int32 int32_t; - typedef unsigned __int32 uint32_t; - #ifdef _WIN64 - typedef unsigned __int64 uintptr_t; - #else - typedef unsigned __int32 uintptr_t; - #endif + /* Workaround for MSVC 2008 and earlier */ + typedef signed __int32 int32_t; + typedef unsigned __int32 uint32_t; +#ifdef _WIN64 + typedef unsigned __int64 uintptr_t; #else - #include + typedef unsigned __int32 uintptr_t; +#endif +#else +#include #endif /************ @@ -87,8 +87,8 @@ #endif #ifndef EMU_WINDOWS // windows.h defines these already - // #define LOBYTE(x) ((x) & 0x00FF) - // #define HIBYTE(x) (((x) & 0xFF00) >> 8) + // #define LOBYTE(x) ((x) & 0x00FF) + // #define HIBYTE(x) (((x) & 0xFF00) >> 8) #endif /************* @@ -150,7 +150,6 @@ BYTE by1; } twoBytes; - typedef struct fourBytesTag { BYTE by0; @@ -173,7 +172,6 @@ typedef struct twoWordsTag BYTE by0; } twoBytes; - typedef struct fourBytesTag { BYTE by3; diff --git a/sources/Externals/Soundfont/RIFF.CPP b/sources/Externals/Soundfont/RIFF.CPP index 21df6bb0..494c087e 100644 --- a/sources/Externals/Soundfont/RIFF.CPP +++ b/sources/Externals/Soundfont/RIFF.CPP @@ -252,7 +252,7 @@ WORD RIFFClass::OpenRIFF(CHAR* pName) WORD RIFFClass::OpenRIFF(FSSpec* pSpecifier) { byWhereIsRIFFData = RIFF_ONMACDISK; - + if (RIFFOpen((ADDR)pSpecifier) != SUCCESS) return (RIFF_OPENFILEERROR); @@ -473,7 +473,7 @@ SHORT RIFFClass::RIFFOpen(ADDR lPointer) { default: return (1); - } + } } SHORT RIFFClass::RIFFClose() diff --git a/sources/Externals/Soundfont/SFREADER.CPP b/sources/Externals/Soundfont/SFREADER.CPP index fdfbf740..94e4d368 100644 --- a/sources/Externals/Soundfont/SFREADER.CPP +++ b/sources/Externals/Soundfont/SFREADER.CPP @@ -810,7 +810,7 @@ WORD mono = monoSample; // Element for element read of data, to serve as an example of a possible // issue with cross platform code. See comments below. // - for(WORD curHdr=0; curHdr < hf->awStructSize[iHydraSymbol]; curHdr++) { + for (WORD curHdr = 0; curHdr < hf->awStructSize[iHydraSymbol]; curHdr++) { rcnt = 0; @@ -832,7 +832,7 @@ WORD mono = monoSample; ((sfSampleHdr *)pData)[curHdr].dwStartloop = tmp_dwStartloop; rcnt += tRIFF.RIFFRead(&tmp_dwEndloop, 1, sizeof(uint32_t)); - ((sfSampleHdr*)pData)[curHdr].dwEndloop = tmp_dwEndloop; + ((sfSampleHdr *)pData)[curHdr].dwEndloop = tmp_dwEndloop; rcnt += tRIFF.RIFFRead( &((sfSampleHdr*)pData)[curHdr].dwSampleRate, 1, sizeof(DWORD)); @@ -857,7 +857,7 @@ WORD mono = monoSample; SetError(SF_INVALIDBANK); return (NULL); } - }// end for all elements + } // end for all elements } // do sampleHdr reading, else {