From c3a84c9b5f3c3a9b95f95b1d6693ef186cf0fa7d Mon Sep 17 00:00:00 2001
From: Chris Xiong <chirs241097@gmail.com>
Date: Mon, 2 Aug 2021 19:32:00 +0800
Subject: Fix sample mapping.

---
 music/it2midi.cpp | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/music/it2midi.cpp b/music/it2midi.cpp
index ca00515..f31c8b2 100644
--- a/music/it2midi.cpp
+++ b/music/it2midi.cpp
@@ -651,6 +651,7 @@ class ITConverter
 				if(mask>>2&1)//vol
 				{
 					if(vol<=64)par->chvelm[ch]=(vol==64?127:2*vol);
+					if(par->chvelm[ch]==0)par->chvelm[ch]=1;
 					else if(vol>=128&&vol<=192)
 					{
 						par->chpanm[ch]=(vol==192?127:(vol-128)*2);
@@ -663,10 +664,15 @@ class ITConverter
 					//default volume
 					uint32_t curnote=par->chnote[ch];
 					if(mask>>0&1)curnote=note;
-					if(curnote<120)
-					par->chvelm[ch]=par->c.sample[par->c.instr[par->chinst[ch]].sampleref[curnote]-1].defvol*2;
+					if(curnote<120 && curnote>=12)
+					par->chvelm[ch]=par->c.sample[par->c.instr[par->chinst[ch]].sampleref[curnote-12]-1].defvol*2;
 					if(par->chvelm[ch]>127)
 					par->chvelm[ch]=127;
+					if(par->chvelm[ch]==0)
+					{
+						//printf("!!!!inst %d samp %d note %d def vol %d\n",par->chinst[ch],par->c.instr[par->chinst[ch]].sampleref[curnote]-1,curnote,par->c.sample[par->c.instr[par->chinst[ch]].sampleref[curnote]-1].defvol*2);
+						par->chvelm[ch]=1;
+					}
 				}
 				if((mask>>0&1)&&note<120&&!((mask>>3&1)&&efx==7))//reset for pitch slides (E/F, but not G)
 				{
-- 
cgit v1.2.3