30 # define LIST_TYPE_3PRG 0x33707267
31 # define LIST_TYPE_3EWL 0x3365776C
32 # define LIST_TYPE_3GRI 0x33677269
33 # define LIST_TYPE_3GNL 0x33676E6C
34 # define CHUNK_ID_SMPL 0x736D706C
35 # define CHUNK_ID_3GIX 0x33676978
36 # define CHUNK_ID_3EWA 0x33657761
37 # define CHUNK_ID_3LNK 0x336C6E6B
38 # define CHUNK_ID_3EWG 0x33657767
39 # define CHUNK_ID_EWAV 0x65776176
40 # define CHUNK_ID_3GNM 0x33676E6D
41 # define CHUNK_ID_EINF 0x65696E66
42 # define CHUNK_ID_3CRC 0x33637263
43 #else // little endian
44 # define LIST_TYPE_3PRG 0x67727033
45 # define LIST_TYPE_3EWL 0x6C776533
46 # define LIST_TYPE_3GRI 0x69726733
47 # define LIST_TYPE_3GNL 0x6C6E6733
48 # define CHUNK_ID_SMPL 0x6C706D73
49 # define CHUNK_ID_3GIX 0x78696733
50 # define CHUNK_ID_3EWA 0x61776533
51 # define CHUNK_ID_3LNK 0x6B6E6C33
52 # define CHUNK_ID_3EWG 0x67776533
53 # define CHUNK_ID_EWAV 0x76617765
54 # define CHUNK_ID_3GNM 0x6D6E6733
55 # define CHUNK_ID_EINF 0x666E6965
56 # define CHUNK_ID_3CRC 0x63726333
57 #endif // WORDS_BIGENDIAN
290 #else // little endian
295 #endif // WORDS_BIGENDIAN
458 virtual void SetGain(int32_t gain);
468 _lev_ctrl_none = 0x00,
469 _lev_ctrl_modwheel = 0x03,
470 _lev_ctrl_breath = 0x05,
471 _lev_ctrl_foot = 0x07,
472 _lev_ctrl_effect1 = 0x0d,
473 _lev_ctrl_effect2 = 0x0f,
474 _lev_ctrl_genpurpose1 = 0x11,
475 _lev_ctrl_genpurpose2 = 0x13,
476 _lev_ctrl_genpurpose3 = 0x15,
477 _lev_ctrl_genpurpose4 = 0x17,
478 _lev_ctrl_portamentotime = 0x0b,
479 _lev_ctrl_sustainpedal = 0x01,
480 _lev_ctrl_portamento = 0x19,
481 _lev_ctrl_sostenutopedal = 0x1b,
482 _lev_ctrl_softpedal = 0x09,
483 _lev_ctrl_genpurpose5 = 0x1d,
484 _lev_ctrl_genpurpose6 = 0x1f,
485 _lev_ctrl_genpurpose7 = 0x21,
486 _lev_ctrl_genpurpose8 = 0x23,
487 _lev_ctrl_effect1depth = 0x25,
488 _lev_ctrl_effect2depth = 0x27,
489 _lev_ctrl_effect3depth = 0x29,
490 _lev_ctrl_effect4depth = 0x2b,
491 _lev_ctrl_effect5depth = 0x2d,
492 _lev_ctrl_channelaftertouch = 0x2f,
493 _lev_ctrl_velocity = 0xff
495 typedef std::map<uint32_t, double*> VelocityTableMap;
497 static uint Instances;
498 static VelocityTableMap* pVelocityTables;
499 double* pVelocityAttenuationTable;
500 double* pVelocityReleaseTable;
501 double* pVelocityCutoffTable;
504 leverage_ctrl_t DecodeLeverageController(_lev_ctrl_t EncodedController);
505 _lev_ctrl_t EncodeLeverageController(
leverage_ctrl_t DecodedController);
506 double* GetReleaseVelocityTable(
curve_type_t releaseVelocityResponseCurve, uint8_t releaseVelocityResponseDepth);
507 double* GetCutoffVelocityTable(
curve_type_t vcfVelocityCurve, uint8_t vcfVelocityDynamicRange, uint8_t vcfVelocityScale,
vcf_cutoff_ctrl_t vcfCutoffController);
508 double* GetVelocityTable(
curve_type_t curveType, uint8_t depth, uint8_t scaling);
509 double* CreateVelocityTable(
curve_type_t curveType, uint8_t depth, uint8_t scaling);
559 void Resize(
int iNewSize);
562 unsigned long Read(
void* pBuffer,
unsigned long SampleCount,
buffer_t* pExternalDecompressionBuffer = NULL);
564 unsigned long Write(
void* pBuffer,
unsigned long SampleCount);
583 Sample(
File* pFile,
RIFF::List* waveList,
unsigned long WavePoolOffset,
unsigned long fileNo = 0);
594 const unsigned long size =
595 BitDepth == 24 ? samples + (samples >> 1) + (samples >> 8) * 13
596 : samples + (samples >> 10) * 5;
608 void ScanCompressedSample();
631 virtual void SetKeyRange(uint16_t Low, uint16_t High);
798 std::list<Group*>* pGroups;
799 std::list<Group*>::iterator GroupsIterator;