From 4485256b6aeecb91aebd3dcdfb0db48092fe1f14 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 28 Jun 2024 16:34:23 -0500 Subject: [PATCH] S3M import: implement OPL center note --- src/engine/fileOps/s3m.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/engine/fileOps/s3m.cpp b/src/engine/fileOps/s3m.cpp index c60434eea..0603169bf 100644 --- a/src/engine/fileOps/s3m.cpp +++ b/src/engine/fileOps/s3m.cpp @@ -574,9 +574,14 @@ bool DivEngine::loadS3M(unsigned char* file, size_t len) { // x reader.readS(); - // oh no, we've got a problem here... - // C-2 speed - reader.readI(); + // C-2 speed - convert to macro + int centerRate=reader.readI(); + double centerNote=12.0*log2((double)centerRate/8363.0); + if (round(centerNote)!=0) { + ins->std.arpMacro.len=1; + ins->std.arpMacro.val[0]=round(centerNote); + } + logV("centerRate: %d (%f)",centerRate,centerNote); // x reader.seek(12,SEEK_CUR);