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