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

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

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

revision 3326 by schoenebeck, Fri Jul 21 13:05:39 2017 UTC revision 3327 by schoenebeck, Sun Jul 23 18:18:30 2017 UTC
# Line 1736  namespace { Line 1736  namespace {
1736          // Gigasampler/GigaStudio !          // Gigasampler/GigaStudio !
1737          RIFF::Chunk* lsde = _3ewl->GetSubChunk(CHUNK_ID_LSDE);          RIFF::Chunk* lsde = _3ewl->GetSubChunk(CHUNK_ID_LSDE);
1738          if (lsde) {          if (lsde) {
1739              unsigned char byte = lsde->ReadUint8();              eg_opt_t* pEGOpts[2] = { &EG1Options, &EG2Options };
1740              EGOptions.AttackCancel     = byte & 1;              for (int i = 0; i < 2; ++i) {
1741              EGOptions.AttackHoldCancel = byte & (1 << 1);                  unsigned char byte = lsde->ReadUint8();
1742              EGOptions.Decay1Cancel     = byte & (1 << 2);                  pEGOpts[i]->AttackCancel     = byte & 1;
1743              EGOptions.Decay2Cancel     = byte & (1 << 3);                  pEGOpts[i]->AttackHoldCancel = byte & (1 << 1);
1744              EGOptions.ReleaseCancel    = byte & (1 << 4);                  pEGOpts[i]->Decay1Cancel     = byte & (1 << 2);
1745                    pEGOpts[i]->Decay2Cancel     = byte & (1 << 3);
1746                    pEGOpts[i]->ReleaseCancel    = byte & (1 << 4);
1747                }
1748          }          }
1749    
1750          pVelocityAttenuationTable = GetVelocityTable(VelocityResponseCurve,          pVelocityAttenuationTable = GetVelocityTable(VelocityResponseCurve,
# Line 1931  namespace { Line 1934  namespace {
1934          SRLZ(MSDecode);          SRLZ(MSDecode);
1935          //SRLZ(SampleStartOffset);          //SRLZ(SampleStartOffset);
1936          SRLZ(SampleAttenuation);          SRLZ(SampleAttenuation);
1937          SRLZ(EGOptions);          SRLZ(EG1Options);
1938            SRLZ(EG2Options);
1939    
1940          // derived attributes from DLS::Sampler          // derived attributes from DLS::Sampler
1941          SRLZ(FineTune);          SRLZ(FineTune);
# Line 2246  namespace { Line 2250  namespace {
2250              // only add this "LSDE" chunk if the EG options do not match the              // only add this "LSDE" chunk if the EG options do not match the
2251              // default EG behavior              // default EG behavior
2252              eg_opt_t defaultOpt;              eg_opt_t defaultOpt;
2253              if (memcmp(&EGOptions, &defaultOpt, sizeof(eg_opt_t))) {              if (memcmp(&EG1Options, &defaultOpt, sizeof(eg_opt_t)) ||
2254                  lsde = pParentList->AddSubChunk(CHUNK_ID_LSDE, 1);                  memcmp(&EG2Options, &defaultOpt, sizeof(eg_opt_t)))
2255                {
2256                    lsde = pParentList->AddSubChunk(CHUNK_ID_LSDE, 2);
2257                  // move LSDE chunk to the end of parent list                  // move LSDE chunk to the end of parent list
2258                  pParentList->MoveSubChunk(lsde, (RIFF::Chunk*)NULL);                  pParentList->MoveSubChunk(lsde, (RIFF::Chunk*)NULL);
2259              }              }
2260          }          }
2261          if (lsde) {          if (lsde) {
2262              unsigned char* pByte = (unsigned char*) lsde->LoadChunkData();              unsigned char* pData = (unsigned char*) lsde->LoadChunkData();
2263              *pByte =              eg_opt_t* pEGOpts[2] = { &EG1Options, &EG2Options };
2264                  (EGOptions.AttackCancel     ? 1 : 0) |              for (int i = 0; i < 2; ++i) {
2265                  (EGOptions.AttackHoldCancel ? (1<<1) : 0) |                  pData[i] =
2266                  (EGOptions.Decay1Cancel     ? (1<<2) : 0) |                      (pEGOpts[i]->AttackCancel     ? 1 : 0) |
2267                  (EGOptions.Decay2Cancel     ? (1<<3) : 0) |                      (pEGOpts[i]->AttackHoldCancel ? (1<<1) : 0) |
2268                  (EGOptions.ReleaseCancel    ? (1<<4) : 0);                      (pEGOpts[i]->Decay1Cancel     ? (1<<2) : 0) |
2269                        (pEGOpts[i]->Decay2Cancel     ? (1<<3) : 0) |
2270                        (pEGOpts[i]->ReleaseCancel    ? (1<<4) : 0);
2271                }
2272          }          }
2273      }      }
2274    

Legend:
Removed from v.3326  
changed lines
  Added in v.3327

  ViewVC Help
Powered by ViewVC