From b66cc81fc6f73dd5ce803e6039a647257704f5a6 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 23 Jun 2022 22:33:25 -0500 Subject: [PATCH] fix loading 24-bit samples --- src/engine/engine.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 12ee7a06a..149a5b9ff 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -2221,8 +2221,14 @@ int DivEngine::addSampleFromFile(const char* path) { buf=new short[si.channels*si.frames]; sampleLen=sizeof(short); } - if (sf_read_raw(f,buf,si.frames*si.channels*sampleLen)!=(si.frames*si.channels*sampleLen)) { - logW("sample read size mismatch!"); + if ((si.format&SF_FORMAT_SUBMASK)==SF_FORMAT_PCM_U8 || (si.format&SF_FORMAT_SUBMASK)==SF_FORMAT_FLOAT) { + if (sf_read_raw(f,buf,si.frames*si.channels*sampleLen)!=(si.frames*si.channels*sampleLen)) { + logW("sample read size mismatch!"); + } + } else { + if (sf_read_short(f,(short*)buf,si.frames*si.channels)!=(si.frames*si.channels)) { + logW("sample read size mismatch!"); + } } DivSample* sample=new DivSample; int sampleCount=(int)song.sample.size();