/[svn]/libgig/trunk/src/SF.cpp
ViewVC logotype

Diff of /libgig/trunk/src/SF.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3052 by schoenebeck, Thu Jul 2 20:04:16 2015 UTC revision 3053 by schoenebeck, Wed Dec 14 18:55:08 2016 UTC
# Line 728  namespace sf2 { Line 728  namespace sf2 {
728    
729      InstrumentBase::~InstrumentBase() {      InstrumentBase::~InstrumentBase() {
730          if (pGlobalRegion) delete pGlobalRegion;          if (pGlobalRegion) delete pGlobalRegion;
731          for (int i = regions.size() - 1; i >= 0; i--) {          for (ssize_t i = regions.size() - 1; i >= 0; i--) {
732              if (regions[i]) delete (regions[i]);              if (regions[i]) delete (regions[i]);
733          }          }
734      }      }
735    
736      int InstrumentBase::GetRegionCount() {      int InstrumentBase::GetRegionCount() {
737          return regions.size();          return (int) regions.size();
738      }      }
739    
740      Region* InstrumentBase::GetRegion(int idx) {      Region* InstrumentBase::GetRegion(int idx) {
# Line 1012  namespace sf2 { Line 1012  namespace sf2 {
1012              throw Exception("Broken SF2 file (broken phdr)");              throw Exception("Broken SF2 file (broken phdr)");
1013          }          }
1014    
1015          int count = ck->GetSize() / 38;          int count = (int) ck->GetSize() / 38;
1016          for (int i = 0; i < count; i++) {          for (int i = 0; i < count; i++) {
1017              Presets.push_back(new Preset(this, ck));              Presets.push_back(new Preset(this, ck));
1018          }          }
# Line 1022  namespace sf2 { Line 1022  namespace sf2 {
1022              throw Exception("Broken SF2 file (broken pbag)");              throw Exception("Broken SF2 file (broken pbag)");
1023          }          }
1024    
1025          count = ck->GetSize() / 4;          count = int(ck->GetSize() / 4);
1026          for (int i = 0; i < count; i++) {          for (int i = 0; i < count; i++) {
1027              PresetBag pb;              PresetBag pb;
1028              pb.GenNdx = ck->ReadInt16();              pb.GenNdx = ck->ReadInt16();
# Line 1036  namespace sf2 { Line 1036  namespace sf2 {
1036              throw Exception("Broken SF2 file (broken pmod)");              throw Exception("Broken SF2 file (broken pmod)");
1037          }          }
1038    
1039          count = ck->GetSize() / 10;          count = int(ck->GetSize() / 10);
1040          for (int i = 0; i < count; i++) {          for (int i = 0; i < count; i++) {
1041              ModList ml;              ModList ml;
1042              ml.ModSrcOper = ck->ReadInt16();              ml.ModSrcOper = ck->ReadInt16();
# Line 1053  namespace sf2 { Line 1053  namespace sf2 {
1053              throw Exception("Broken SF2 file (broken pgen)");              throw Exception("Broken SF2 file (broken pgen)");
1054          }          }
1055    
1056          count = ck->GetSize() / 4;          count = int(ck->GetSize() / 4);
1057          for (int i = 0; i < count; i++) {          for (int i = 0; i < count; i++) {
1058              GenList gl;              GenList gl;
1059              gl.GenOper = ck->ReadInt16();              gl.GenOper = ck->ReadInt16();
# Line 1066  namespace sf2 { Line 1066  namespace sf2 {
1066          if (ck->GetSize() < (22 * 2) || (ck->GetSize() % 22)) {          if (ck->GetSize() < (22 * 2) || (ck->GetSize() % 22)) {
1067              throw Exception("Broken SF2 file (broken inst)");              throw Exception("Broken SF2 file (broken inst)");
1068          }          }
1069          count = ck->GetSize() / 22;          count = int(ck->GetSize() / 22);
1070          for (int i = 0; i < count; i++) {          for (int i = 0; i < count; i++) {
1071              Instruments.push_back(new Instrument(this, ck));              Instruments.push_back(new Instrument(this, ck));
1072          }          }
# Line 1076  namespace sf2 { Line 1076  namespace sf2 {
1076              throw Exception("Broken SF2 file (broken ibag)");              throw Exception("Broken SF2 file (broken ibag)");
1077          }          }
1078    
1079          count = ck->GetSize() / 4;          count = int(ck->GetSize() / 4);
1080          for (int i = 0; i < count; i++) {          for (int i = 0; i < count; i++) {
1081              InstBag ib;              InstBag ib;
1082              ib.InstGenNdx = ck->ReadInt16();              ib.InstGenNdx = ck->ReadInt16();
# Line 1090  namespace sf2 { Line 1090  namespace sf2 {
1090              throw Exception("Broken SF2 file (broken imod)");              throw Exception("Broken SF2 file (broken imod)");
1091          }          }
1092    
1093          count = ck->GetSize() / 10;          count = int(ck->GetSize() / 10);
1094          for (int i = 0; i < count; i++) {          for (int i = 0; i < count; i++) {
1095              ModList ml;              ModList ml;
1096              ml.ModSrcOper = ck->ReadInt16();              ml.ModSrcOper = ck->ReadInt16();
# Line 1107  namespace sf2 { Line 1107  namespace sf2 {
1107              throw Exception("Broken SF2 file (broken igen)");              throw Exception("Broken SF2 file (broken igen)");
1108          }          }
1109    
1110          count = ck->GetSize() / 4;          count = int(ck->GetSize() / 4);
1111          for (int i = 0; i < count; i++) {          for (int i = 0; i < count; i++) {
1112              GenList gl;              GenList gl;
1113              gl.GenOper = ck->ReadInt16();              gl.GenOper = ck->ReadInt16();
# Line 1120  namespace sf2 { Line 1120  namespace sf2 {
1120          if ((ck->GetSize() % 46)) {          if ((ck->GetSize() % 46)) {
1121              throw Exception("Broken SF2 file (broken shdr)");              throw Exception("Broken SF2 file (broken shdr)");
1122          }          }
1123          count = ck->GetSize() / 46;          count = int(ck->GetSize() / 46);
1124          for (int i = 0; i < count; i++) {          for (int i = 0; i < count; i++) {
1125              Samples.push_back(new Sample(ck, pCkSmpl, pCkSm24));              Samples.push_back(new Sample(ck, pCkSmpl, pCkSm24));
1126          }          }
# Line 1152  namespace sf2 { Line 1152  namespace sf2 {
1152    
1153      File::~File() {      File::~File() {
1154          delete pInfo;          delete pInfo;
1155          for (int i = Presets.size() - 1; i >= 0; i--) {          for (ssize_t i = Presets.size() - 1; i >= 0; i--) {
1156              if (Presets[i]) delete (Presets[i]);              if (Presets[i]) delete (Presets[i]);
1157          }          }
1158          for (int i = Instruments.size() - 1; i >= 0; i--) {          for (ssize_t i = Instruments.size() - 1; i >= 0; i--) {
1159              if (Instruments[i]) delete (Instruments[i]);              if (Instruments[i]) delete (Instruments[i]);
1160          }          }
1161          for (int i = Samples.size() - 1; i >= 0; i--) {          for (ssize_t i = Samples.size() - 1; i >= 0; i--) {
1162              if (Samples[i]) delete (Samples[i]);              if (Samples[i]) delete (Samples[i]);
1163          }          }
1164      }      }
1165    
1166      int File::GetPresetCount() {      int File::GetPresetCount() {
1167          return Presets.size() - 1; // exclude terminal preset (EOP)          return (int) Presets.size() - 1; // exclude terminal preset (EOP)
1168      }      }
1169    
1170      Preset* File::GetPreset(int idx) {      Preset* File::GetPreset(int idx) {
# Line 1176  namespace sf2 { Line 1176  namespace sf2 {
1176      }      }
1177    
1178      int File::GetInstrumentCount() {      int File::GetInstrumentCount() {
1179          return Instruments.size() - 1; // exclude terminal instrument (EOI)          return (int) Instruments.size() - 1; // exclude terminal instrument (EOI)
1180      }      }
1181    
1182      Instrument* File::GetInstrument(int idx) {      Instrument* File::GetInstrument(int idx) {
# Line 1207  namespace sf2 { Line 1207  namespace sf2 {
1207      }      }
1208    
1209      int File::GetSampleCount() {      int File::GetSampleCount() {
1210          return Samples.size() - 1; // exclude terminal sample (EOS)          return (int) Samples.size() - 1; // exclude terminal sample (EOS)
1211      }      }
1212    
1213      Sample* File::GetSample(int idx) {      Sample* File::GetSample(int idx) {
# Line 1425  namespace sf2 { Line 1425  namespace sf2 {
1425              if (pSample->SampleType == Sample::MONO_SAMPLE || pSample->SampleType == Sample::ROM_MONO_SAMPLE) {              if (pSample->SampleType == Sample::MONO_SAMPLE || pSample->SampleType == Sample::ROM_MONO_SAMPLE) {
1426                  pSample->pCkSmpl->Read(pTmpBuf, SampleCount, 2);                  pSample->pCkSmpl->Read(pTmpBuf, SampleCount, 2);
1427                  pSample->pCkSm24->Read(pTmpBuf + SampleCount * 2, SampleCount, 1);                  pSample->pCkSm24->Read(pTmpBuf + SampleCount * 2, SampleCount, 1);
1428                  for (int i = SampleCount - 1; i >= 0; i--) {                  for (long i = SampleCount - 1; i >= 0; i--) {
1429                      pBuf[i*3]     = pTmpBuf[(SampleCount * 2) + i];                      pBuf[i*3]     = pTmpBuf[(SampleCount * 2) + i];
1430                      pBuf[i*3 + 2] = pTmpBuf[i*2 + 1];                      pBuf[i*3 + 2] = pTmpBuf[i*2 + 1];
1431                      pBuf[i*3 + 1] = pTmpBuf[i*2];                      pBuf[i*3 + 1] = pTmpBuf[i*2];
# Line 1433  namespace sf2 { Line 1433  namespace sf2 {
1433              } else if (pSample->SampleType == Sample::LEFT_SAMPLE || pSample->SampleType == Sample::ROM_LEFT_SAMPLE) {              } else if (pSample->SampleType == Sample::LEFT_SAMPLE || pSample->SampleType == Sample::ROM_LEFT_SAMPLE) {
1434                  pSample->pCkSmpl->Read(pTmpBuf, SampleCount, 2);                  pSample->pCkSmpl->Read(pTmpBuf, SampleCount, 2);
1435                  pSample->pCkSm24->Read(pTmpBuf + SampleCount * 2, SampleCount, 1);                  pSample->pCkSm24->Read(pTmpBuf + SampleCount * 2, SampleCount, 1);
1436                  for (int i = SampleCount - 1; i >= 0; i--) {                  for (long i = SampleCount - 1; i >= 0; i--) {
1437                      pBuf[i*6]     = pTmpBuf[(SampleCount * 2) + i];                      pBuf[i*6]     = pTmpBuf[(SampleCount * 2) + i];
1438                      pBuf[i*6 + 2] = pTmpBuf[i*2 + 1];                      pBuf[i*6 + 2] = pTmpBuf[i*2 + 1];
1439                      pBuf[i*6 + 1] = pTmpBuf[i*2];                      pBuf[i*6 + 1] = pTmpBuf[i*2];
# Line 1443  namespace sf2 { Line 1443  namespace sf2 {
1443              } else if (pSample->SampleType == Sample::RIGHT_SAMPLE || pSample->SampleType == Sample::ROM_RIGHT_SAMPLE) {              } else if (pSample->SampleType == Sample::RIGHT_SAMPLE || pSample->SampleType == Sample::ROM_RIGHT_SAMPLE) {
1444                  pSample->pCkSmpl->Read(pTmpBuf, SampleCount, 2);                  pSample->pCkSmpl->Read(pTmpBuf, SampleCount, 2);
1445                  pSample->pCkSm24->Read(pTmpBuf + SampleCount * 2, SampleCount, 1);                  pSample->pCkSm24->Read(pTmpBuf + SampleCount * 2, SampleCount, 1);
1446                  for (int i = SampleCount - 1; i >= 0; i--) {                  for (long i = SampleCount - 1; i >= 0; i--) {
1447                      pBuf[i*6 + 3] = pTmpBuf[(SampleCount * 2) + i];                      pBuf[i*6 + 3] = pTmpBuf[(SampleCount * 2) + i];
1448                      pBuf[i*6 + 5] = pTmpBuf[i*2 + 1];                      pBuf[i*6 + 5] = pTmpBuf[i*2 + 1];
1449                      pBuf[i*6 + 4] = pTmpBuf[i*2];                      pBuf[i*6 + 4] = pTmpBuf[i*2];
# Line 1460  namespace sf2 { Line 1460  namespace sf2 {
1460              int16_t* const pBuf    = (int16_t*) pBuffer;              int16_t* const pBuf    = (int16_t*) pBuffer;
1461              if (pSample->SampleType == Sample::LEFT_SAMPLE || pSample->SampleType == Sample::ROM_LEFT_SAMPLE) {              if (pSample->SampleType == Sample::LEFT_SAMPLE || pSample->SampleType == Sample::ROM_LEFT_SAMPLE) {
1462                  pSample->pCkSmpl->Read(pTmpBuf, SampleCount, 2);                  pSample->pCkSmpl->Read(pTmpBuf, SampleCount, 2);
1463                  for (int i = SampleCount - 1; i >= 0; i--) {                  for (long i = SampleCount - 1; i >= 0; i--) {
1464                      pBuf[i*2] = pTmpBuf[i];                      pBuf[i*2] = pTmpBuf[i];
1465                      if (CLEAR)                      if (CLEAR)
1466                          pBuf[i*2 + 1] = 0;                          pBuf[i*2 + 1] = 0;
1467                  }                  }
1468              } else if (pSample->SampleType == Sample::RIGHT_SAMPLE || pSample->SampleType == Sample::ROM_RIGHT_SAMPLE) {              } else if (pSample->SampleType == Sample::RIGHT_SAMPLE || pSample->SampleType == Sample::ROM_RIGHT_SAMPLE) {
1469                  pSample->pCkSmpl->Read(pTmpBuf, SampleCount, 2);                  pSample->pCkSmpl->Read(pTmpBuf, SampleCount, 2);
1470                  for (int i = SampleCount - 1; i >= 0; i--) {                  for (long i = SampleCount - 1; i >= 0; i--) {
1471                      if (CLEAR)                      if (CLEAR)
1472                          pBuf[i*2] = 0;                          pBuf[i*2] = 0;
1473                      pBuf[i*2 + 1] = pTmpBuf[i];                      pBuf[i*2 + 1] = pTmpBuf[i];

Legend:
Removed from v.3052  
changed lines
  Added in v.3053

  ViewVC Help
Powered by ViewVC