38 |
# define CHUNK_ID_3EWG 0x33657767 |
# define CHUNK_ID_3EWG 0x33657767 |
39 |
# define CHUNK_ID_EWAV 0x65776176 |
# define CHUNK_ID_EWAV 0x65776176 |
40 |
# define CHUNK_ID_3GNM 0x33676E6D |
# define CHUNK_ID_3GNM 0x33676E6D |
41 |
|
# define CHUNK_ID_EINF 0x65696E66 |
42 |
|
# define CHUNK_ID_3CRC 0x33637263 |
43 |
#else // little endian |
#else // little endian |
44 |
# define LIST_TYPE_3PRG 0x67727033 |
# define LIST_TYPE_3PRG 0x67727033 |
45 |
# define LIST_TYPE_3EWL 0x6C776533 |
# define LIST_TYPE_3EWL 0x6C776533 |
52 |
# define CHUNK_ID_3EWG 0x67776533 |
# define CHUNK_ID_3EWG 0x67776533 |
53 |
# define CHUNK_ID_EWAV 0x76617765 |
# define CHUNK_ID_EWAV 0x76617765 |
54 |
# define CHUNK_ID_3GNM 0x6D6E6733 |
# define CHUNK_ID_3GNM 0x6D6E6733 |
55 |
|
# define CHUNK_ID_EINF 0x666E6965 |
56 |
|
# define CHUNK_ID_3CRC 0x63726333 |
57 |
#endif // WORDS_BIGENDIAN |
#endif // WORDS_BIGENDIAN |
58 |
|
|
59 |
/** Gigasampler specific classes and definitions */ |
/** Gigasampler specific classes and definitions */ |
323 |
progress_t(); |
progress_t(); |
324 |
}; |
}; |
325 |
|
|
326 |
|
class CRC { |
327 |
|
private: |
328 |
|
uint32_t value; |
329 |
|
static const uint32_t* table; |
330 |
|
static uint32_t* initTable(); |
331 |
|
public: |
332 |
|
CRC() { |
333 |
|
reset(); |
334 |
|
} |
335 |
|
void reset() { |
336 |
|
value = 0xffffffff; |
337 |
|
} |
338 |
|
void update(unsigned char* buf, int len) { |
339 |
|
for (int i = 0 ; i < len ; i++) { |
340 |
|
value = table[(value ^ buf[i]) & 0xff] ^ (value >> 8); |
341 |
|
} |
342 |
|
} |
343 |
|
uint32_t getValue() { |
344 |
|
return value ^ 0xffffffff; |
345 |
|
} |
346 |
|
}; |
347 |
|
|
348 |
// just symbol prototyping |
// just symbol prototyping |
349 |
class File; |
class File; |
350 |
class Instrument; |
class Instrument; |
585 |
unsigned long FileNo; ///< File number (> 0 when sample is stored in an extension file, 0 when it's in the gig) |
unsigned long FileNo; ///< File number (> 0 when sample is stored in an extension file, 0 when it's in the gig) |
586 |
RIFF::Chunk* pCk3gix; |
RIFF::Chunk* pCk3gix; |
587 |
RIFF::Chunk* pCkSmpl; |
RIFF::Chunk* pCkSmpl; |
588 |
|
CRC crc; |
589 |
|
|
590 |
Sample(File* pFile, RIFF::List* waveList, unsigned long WavePoolOffset, unsigned long fileNo = 0); |
Sample(File* pFile, RIFF::List* waveList, unsigned long WavePoolOffset, unsigned long fileNo = 0); |
591 |
~Sample(); |
~Sample(); |
722 |
/** Parses Gigasampler files and provides abstract access to the data. */ |
/** Parses Gigasampler files and provides abstract access to the data. */ |
723 |
class File : protected DLS::File { |
class File : protected DLS::File { |
724 |
public: |
public: |
725 |
|
static const DLS::version_t VERSION_2; |
726 |
|
static const DLS::version_t VERSION_3; |
727 |
|
|
728 |
// derived attributes from DLS::Resource |
// derived attributes from DLS::Resource |
729 |
DLS::Resource::pInfo; |
DLS::Resource::pInfo; |
730 |
DLS::Resource::pDLSID; |
DLS::Resource::pDLSID; |
764 |
// own protected methods |
// own protected methods |
765 |
virtual void LoadSamples(progress_t* pProgress); |
virtual void LoadSamples(progress_t* pProgress); |
766 |
virtual void LoadInstruments(progress_t* pProgress); |
virtual void LoadInstruments(progress_t* pProgress); |
767 |
|
void SetSampleChecksum(Sample* pSample, uint32_t crc); |
768 |
friend class Region; |
friend class Region; |
769 |
friend class Sample; |
friend class Sample; |
770 |
friend class Group; // so Group can access protected member pRIFF |
friend class Group; // so Group can access protected member pRIFF |