225 |
dimension_channelaftertouch = 0x83, ///< Channel Key Pressure |
dimension_channelaftertouch = 0x83, ///< Channel Key Pressure |
226 |
dimension_releasetrigger = 0x84, ///< Special dimension for triggering samples on releasing a key. |
dimension_releasetrigger = 0x84, ///< Special dimension for triggering samples on releasing a key. |
227 |
dimension_keyboard = 0x85, ///< Dimension for keyswitching |
dimension_keyboard = 0x85, ///< Dimension for keyswitching |
228 |
|
dimension_roundrobin = 0x86, ///< Different samples triggered each time a note is played, dimension regions selected in sequence |
229 |
|
dimension_random = 0x87, ///< Different samples triggered each time a note is played, random order |
230 |
dimension_modwheel = 0x01, ///< Modulation Wheel (MIDI Controller 1) |
dimension_modwheel = 0x01, ///< Modulation Wheel (MIDI Controller 1) |
231 |
dimension_breath = 0x02, ///< Breath Controller (Coarse, MIDI Controller 2) |
dimension_breath = 0x02, ///< Breath Controller (Coarse, MIDI Controller 2) |
232 |
dimension_foot = 0x04, ///< Foot Pedal (Coarse, MIDI Controller 4) |
dimension_foot = 0x04, ///< Foot Pedal (Coarse, MIDI Controller 4) |
309 |
unsigned long loop_cycles_left; ///< How many times the loop has still to be passed, this value will be decremented with each loop cycle. |
unsigned long loop_cycles_left; ///< How many times the loop has still to be passed, this value will be decremented with each loop cycle. |
310 |
}; |
}; |
311 |
|
|
312 |
|
/** |
313 |
|
* @brief Used for indicating the progress of a certain task. |
314 |
|
* |
315 |
|
* The function pointer argument has to be supplied with a valid |
316 |
|
* function of the given signature which will then be called on |
317 |
|
* progress changes. An equivalent progress_t structure will be passed |
318 |
|
* back as argument to the callback function on each progress change. |
319 |
|
* The factor field of the supplied progress_t structure will then |
320 |
|
* reflect the current progress as value between 0.0 and 1.0. You might |
321 |
|
* want to use the custom field for data needed in your callback |
322 |
|
* function. |
323 |
|
*/ |
324 |
|
struct progress_t { |
325 |
|
void (*callback)(progress_t*); ///< Callback function pointer which has to be assigned to a function for progress notification. |
326 |
|
float factor; ///< Reflects current progress as value between 0.0 and 1.0. |
327 |
|
void* custom; ///< This pointer can be used for arbitrary data. |
328 |
|
float __range_min; ///< Only for internal usage, do not modify! |
329 |
|
float __range_max; ///< Only for internal usage, do not modify! |
330 |
|
progress_t(); |
331 |
|
}; |
332 |
|
|
333 |
// just symbol prototyping |
// just symbol prototyping |
334 |
class File; |
class File; |
335 |
class Instrument; |
class Instrument; |
443 |
|
|
444 |
// Methods |
// Methods |
445 |
double GetVelocityAttenuation(uint8_t MIDIKeyVelocity); |
double GetVelocityAttenuation(uint8_t MIDIKeyVelocity); |
446 |
|
double GetVelocityRelease(uint8_t MIDIKeyVelocity); |
447 |
|
|
448 |
protected: |
protected: |
449 |
DimensionRegion(RIFF::List* _3ewl); |
DimensionRegion(RIFF::List* _3ewl); |
450 |
~DimensionRegion(); |
~DimensionRegion(); |
483 |
static uint Instances; ///< Number of DimensionRegion instances. |
static uint Instances; ///< Number of DimensionRegion instances. |
484 |
static VelocityTableMap* pVelocityTables; ///< Contains the tables corresponding to the various velocity parameters (VelocityResponseCurve and VelocityResponseDepth). |
static VelocityTableMap* pVelocityTables; ///< Contains the tables corresponding to the various velocity parameters (VelocityResponseCurve and VelocityResponseDepth). |
485 |
double* pVelocityAttenuationTable; ///< Points to the velocity table corresponding to the velocity parameters of this DimensionRegion. |
double* pVelocityAttenuationTable; ///< Points to the velocity table corresponding to the velocity parameters of this DimensionRegion. |
486 |
|
double* pVelocityReleaseTable; ///< Points to the velocity table corresponding to the release velocity parameters of this DimensionRegion |
487 |
|
|
488 |
leverage_ctrl_t DecodeLeverageController(_lev_ctrl_t EncodedController); |
leverage_ctrl_t DecodeLeverageController(_lev_ctrl_t EncodedController); |
489 |
|
double* GetVelocityTable(curve_type_t curveType, uint8_t depth, uint8_t scaling); |
490 |
double* CreateVelocityTable(curve_type_t curveType, uint8_t depth, uint8_t scaling); |
double* CreateVelocityTable(curve_type_t curveType, uint8_t depth, uint8_t scaling); |
491 |
}; |
}; |
492 |
|
|
510 |
uint32_t LoopFraction; ///< The fractional value specifies a fraction of a sample at which to loop (only if Loops > 0). This allows a loop to be fine tuned at a resolution greater than one sample. A value of 0 means no fraction, a value of 0x80000000 means 1/2 of a sample length. 0xFFFFFFFF is the smallest fraction of a sample that can be represented. |
uint32_t LoopFraction; ///< The fractional value specifies a fraction of a sample at which to loop (only if Loops > 0). This allows a loop to be fine tuned at a resolution greater than one sample. A value of 0 means no fraction, a value of 0x80000000 means 1/2 of a sample length. 0xFFFFFFFF is the smallest fraction of a sample that can be represented. |
511 |
uint32_t LoopPlayCount; ///< Number of times the loop should be played (only if Loops > 0, a value of 0 = infinite). |
uint32_t LoopPlayCount; ///< Number of times the loop should be played (only if Loops > 0, a value of 0 = infinite). |
512 |
bool Compressed; ///< If the sample wave is compressed (probably just interesting for instrument and sample editors, as this library already handles the decompression in it's sample access methods anyway). |
bool Compressed; ///< If the sample wave is compressed (probably just interesting for instrument and sample editors, as this library already handles the decompression in it's sample access methods anyway). |
513 |
|
uint32_t TruncatedBits; ///< For 24-bit compressed samples only: number of bits truncated during compression (0, 4 or 6) |
514 |
|
bool Dithered; ///< For 24-bit compressed samples only: if dithering was used during compression with bit reduction |
515 |
|
|
516 |
// own methods |
// own methods |
517 |
buffer_t LoadSampleData(); |
buffer_t LoadSampleData(); |
647 |
|
|
648 |
Region(Instrument* pInstrument, RIFF::List* rgnList); |
Region(Instrument* pInstrument, RIFF::List* rgnList); |
649 |
void LoadDimensionRegions(RIFF::List* rgn); |
void LoadDimensionRegions(RIFF::List* rgn); |
650 |
Sample* GetSampleFromWavePool(unsigned int WavePoolTableIndex); |
Sample* GetSampleFromWavePool(unsigned int WavePoolTableIndex, progress_t* pProgress = NULL); |
651 |
~Region(); |
~Region(); |
652 |
friend class Instrument; |
friend class Instrument; |
653 |
}; |
}; |
686 |
Region* RegionKeyTable[128]; ///< fast lookup for the corresponding Region of a MIDI key |
Region* RegionKeyTable[128]; ///< fast lookup for the corresponding Region of a MIDI key |
687 |
int RegionIndex; |
int RegionIndex; |
688 |
|
|
689 |
Instrument(File* pFile, RIFF::List* insList); |
Instrument(File* pFile, RIFF::List* insList, progress_t* pProgress = NULL); |
690 |
~Instrument(); |
~Instrument(); |
691 |
friend class File; |
friend class File; |
692 |
}; |
}; |
706 |
DLS::Resource::GetParent; |
DLS::Resource::GetParent; |
707 |
// overridden methods |
// overridden methods |
708 |
File(RIFF::File* pRIFF); |
File(RIFF::File* pRIFF); |
709 |
Sample* GetFirstSample(); ///< Returns a pointer to the first <i>Sample</i> object of the file, <i>NULL</i> otherwise. |
Sample* GetFirstSample(progress_t* pProgress = NULL); ///< Returns a pointer to the first <i>Sample</i> object of the file, <i>NULL</i> otherwise. |
710 |
Sample* GetNextSample(); ///< Returns a pointer to the next <i>Sample</i> object of the file, <i>NULL</i> otherwise. |
Sample* GetNextSample(); ///< Returns a pointer to the next <i>Sample</i> object of the file, <i>NULL</i> otherwise. |
711 |
Instrument* GetFirstInstrument(); ///< Returns a pointer to the first <i>Instrument</i> object of the file, <i>NULL</i> otherwise. |
Instrument* GetFirstInstrument(); ///< Returns a pointer to the first <i>Instrument</i> object of the file, <i>NULL</i> otherwise. |
712 |
Instrument* GetNextInstrument(); ///< Returns a pointer to the next <i>Instrument</i> object of the file, <i>NULL</i> otherwise. |
Instrument* GetNextInstrument(); ///< Returns a pointer to the next <i>Instrument</i> object of the file, <i>NULL</i> otherwise. |
713 |
Instrument* GetInstrument(uint index); |
Instrument* GetInstrument(uint index, progress_t* pProgress = NULL); |
714 |
~File(); |
~File(); |
715 |
protected: |
protected: |
716 |
typedef std::list<Sample*> SampleList; |
typedef std::list<Sample*> SampleList; |
721 |
InstrumentList* pInstruments; |
InstrumentList* pInstruments; |
722 |
InstrumentList::iterator InstrumentsIterator; |
InstrumentList::iterator InstrumentsIterator; |
723 |
|
|
724 |
void LoadSamples(); |
void LoadSamples(progress_t* pProgress = NULL); |
725 |
void LoadInstruments(); |
void LoadInstruments(progress_t* pProgress = NULL); |
726 |
friend class Region; |
friend class Region; |
727 |
}; |
}; |
728 |
|
|
733 |
void PrintMessage(); |
void PrintMessage(); |
734 |
}; |
}; |
735 |
|
|
736 |
|
String libraryName(); |
737 |
|
String libraryVersion(); |
738 |
|
|
739 |
} // namespace gig |
} // namespace gig |
740 |
|
|
741 |
#endif // __GIG_H__ |
#endif // __GIG_H__ |