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);
466 _lev_ctrl_none = 0x00,
467 _lev_ctrl_modwheel = 0x03,
468 _lev_ctrl_breath = 0x05,
469 _lev_ctrl_foot = 0x07,
470 _lev_ctrl_effect1 = 0x0d,
471 _lev_ctrl_effect2 = 0x0f,
472 _lev_ctrl_genpurpose1 = 0x11,
473 _lev_ctrl_genpurpose2 = 0x13,
474 _lev_ctrl_genpurpose3 = 0x15,
475 _lev_ctrl_genpurpose4 = 0x17,
476 _lev_ctrl_portamentotime = 0x0b,
477 _lev_ctrl_sustainpedal = 0x01,
478 _lev_ctrl_portamento = 0x19,
479 _lev_ctrl_sostenutopedal = 0x1b,
480 _lev_ctrl_softpedal = 0x09,
481 _lev_ctrl_genpurpose5 = 0x1d,
482 _lev_ctrl_genpurpose6 = 0x1f,
483 _lev_ctrl_genpurpose7 = 0x21,
484 _lev_ctrl_genpurpose8 = 0x23,
485 _lev_ctrl_effect1depth = 0x25,
486 _lev_ctrl_effect2depth = 0x27,
487 _lev_ctrl_effect3depth = 0x29,
488 _lev_ctrl_effect4depth = 0x2b,
489 _lev_ctrl_effect5depth = 0x2d,
490 _lev_ctrl_channelaftertouch = 0x2f,
491 _lev_ctrl_velocity = 0xff
493 typedef std::map<uint32_t, double*> VelocityTableMap;
495 static uint Instances;
496 static VelocityTableMap* pVelocityTables;
497 double* pVelocityAttenuationTable;
498 double* pVelocityReleaseTable;
499 double* pVelocityCutoffTable;
502 leverage_ctrl_t DecodeLeverageController(_lev_ctrl_t EncodedController);
503 _lev_ctrl_t EncodeLeverageController(
leverage_ctrl_t DecodedController);
504 double* GetReleaseVelocityTable(
curve_type_t releaseVelocityResponseCurve, uint8_t releaseVelocityResponseDepth);
505 double* GetCutoffVelocityTable(
curve_type_t vcfVelocityCurve, uint8_t vcfVelocityDynamicRange, uint8_t vcfVelocityScale,
vcf_cutoff_ctrl_t vcfCutoffController);
506 double* GetVelocityTable(
curve_type_t curveType, uint8_t depth, uint8_t scaling);
507 double* CreateVelocityTable(
curve_type_t curveType, uint8_t depth, uint8_t scaling);
557 void Resize(
int iNewSize);
560 unsigned long Read(
void* pBuffer,
unsigned long SampleCount,
buffer_t* pExternalDecompressionBuffer = NULL);
562 unsigned long Write(
void* pBuffer,
unsigned long SampleCount);
581 Sample(
File* pFile,
RIFF::List* waveList,
unsigned long WavePoolOffset,
unsigned long fileNo = 0);
592 const unsigned long size =
593 BitDepth == 24 ? samples + (samples >> 1) + (samples >> 8) * 13
594 : samples + (samples >> 10) * 5;
606 void ScanCompressedSample();
629 virtual void SetKeyRange(uint16_t Low, uint16_t High);
797 std::list<Group*>* pGroups;
798 std::list<Group*>::iterator GroupsIterator;