| ... | ... |
@@ -41,6 +41,7 @@ v1.7.1 - 2013-04-26 - Minor update to scale the phase offset, thanks to kode54. |
| 41 | 41 |
for the original implementation). |
| 42 | 42 |
- Corrected clamping issue which caused some clipping-like |
| 43 | 43 |
effects. |
| 44 |
+v1.8.1 - 2014-06-17 - Reverted Sinc interpolation back to the Lanczos window. |
|
| 44 | 45 |
|
| 45 | 46 |
This is a Winamp plugin to play NCSF files. NCSF is a PSF-style music format that |
| 46 | 47 |
uses SDAT files from Nintendo DS ROMs as it's "program". |
| ... | ... |
@@ -1,7 +1,7 @@ |
| 1 | 1 |
/* |
| 2 | 2 |
* SSEQ Player - Channel structures |
| 3 | 3 |
* By Naram Qashat (CyberBotX) [cyberbotx@cyberbotx.com] |
| 4 |
- * Last modification on 2013-05-07 |
|
| 4 |
+ * Last modification on 2014-06-17 |
|
| 5 | 5 |
* |
| 6 | 6 |
* Adapted from source code of FeOS Sound System |
| 7 | 7 |
* By fincs |
| ... | ... |
@@ -66,7 +66,7 @@ Channel::Channel() : chnId(-1), tempReg(), state(CS_NONE), trackId(-1), prio(0), |
| 66 | 66 |
this->cosine_lut[i] = (1.0 - std::cos((static_cast<double>(i) / COSINE_RESOLUTION) * M_PI)) * 0.5; |
| 67 | 67 |
double dx = static_cast<double>(SINC_WIDTH) / SINC_SAMPLES, x = 0.0; |
| 68 | 68 |
for (unsigned i = 0; i <= SINC_SAMPLES; ++i, x += dx) |
| 69 |
- this->sinc_lut[i] = std::abs(x) < SINC_WIDTH ? sinc(x) * (0.5 * (1.0 + std::cos((M_PI * x) / SINC_WIDTH))) : 0.0; |
|
| 69 |
+ this->sinc_lut[i] = std::abs(x) < SINC_WIDTH ? sinc(x) * sinc(x / SINC_WIDTH) : 0.0; |
|
| 70 | 70 |
this->initializedLUTs = true; |
| 71 | 71 |
} |
| 72 | 72 |
} |
| ... | ... |
@@ -1,7 +1,7 @@ |
| 1 | 1 |
/* |
| 2 | 2 |
* xSF - NCSF configuration |
| 3 | 3 |
* By Naram Qashat (CyberBotX) [cyberbotx@cyberbotx.com] |
| 4 |
- * Last modification on 2013-05-07 |
|
| 4 |
+ * Last modification on 2014-06-17 |
|
| 5 | 5 |
* |
| 6 | 6 |
* Partially based on the vio*sf framework |
| 7 | 7 |
*/ |
| ... | ... |
@@ -42,7 +42,7 @@ public: |
| 42 | 42 |
|
| 43 | 43 |
unsigned XSFConfig::initSampleRate = 44100; |
| 44 | 44 |
std::wstring XSFConfig::commonName = L"NCSF Decoder"; |
| 45 |
-std::wstring XSFConfig::versionNumber = L"1.8"; |
|
| 45 |
+std::wstring XSFConfig::versionNumber = L"1.8.1"; |
|
| 46 | 46 |
unsigned XSFConfig_NCSF::initInterpolation = 5; |
| 47 | 47 |
std::wstring XSFConfig_NCSF::initMutes = L"0000000000000000"; |
| 48 | 48 |
|
| ... | ... |
@@ -101,7 +101,7 @@ INT_PTR CALLBACK XSFConfig_NCSF::ConfigDialogProc(HWND hwndDlg, UINT uMsg, WPARA |
| 101 | 101 |
SendMessageW(GetDlgItem(hwndDlg, idInterpolation), CB_ADDSTRING, 0, reinterpret_cast<LPARAM>(L"4-point, 3rd-order B-spline")); |
| 102 | 102 |
SendMessageW(GetDlgItem(hwndDlg, idInterpolation), CB_ADDSTRING, 0, reinterpret_cast<LPARAM>(L"6-point, 5th-order Osculating")); |
| 103 | 103 |
SendMessageW(GetDlgItem(hwndDlg, idInterpolation), CB_ADDSTRING, 0, reinterpret_cast<LPARAM>(L"6-point, 5th-order B-spline")); |
| 104 |
- SendMessageW(GetDlgItem(hwndDlg, idInterpolation), CB_ADDSTRING, 0, reinterpret_cast<LPARAM>(L"Sinc (Hann Window)")); |
|
| 104 |
+ SendMessageW(GetDlgItem(hwndDlg, idInterpolation), CB_ADDSTRING, 0, reinterpret_cast<LPARAM>(L"Sinc (Lanczos Window)")); |
|
| 105 | 105 |
SendMessageW(GetDlgItem(hwndDlg, idInterpolation), CB_SETCURSEL, this->interpolation, 0); |
| 106 | 106 |
// Mutes |
| 107 | 107 |
for (int x = 0, numMutes = this->mutes.size(); x < numMutes; ++x) |