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. The float argument of the callback function will |
318 |
|
* then reflect the current progress as a value between 0.0 and 1.0. |
319 |
|
*/ |
320 |
|
struct progress_t { |
321 |
|
void (*callback)(float); ///< Callback function pointer which has to be assigned to a function for progress notification. |
322 |
|
float __range_min; |
323 |
|
float __range_max; |
324 |
|
progress_t(); |
325 |
|
}; |
326 |
|
|
327 |
// just symbol prototyping |
// just symbol prototyping |
328 |
class File; |
class File; |
329 |
class Instrument; |
class Instrument; |
426 |
bool SustainDefeat; ///< If <i>true</i>: Sustain pedal will not hold a note. |
bool SustainDefeat; ///< If <i>true</i>: Sustain pedal will not hold a note. |
427 |
bool MSDecode; ///< Gigastudio flag: defines if Mid Side Recordings should be decoded. |
bool MSDecode; ///< Gigastudio flag: defines if Mid Side Recordings should be decoded. |
428 |
uint16_t SampleStartOffset; ///< Number of samples the sample start should be moved (0 - 2000). |
uint16_t SampleStartOffset; ///< Number of samples the sample start should be moved (0 - 2000). |
429 |
|
double SampleAttenuation; ///< Sample volume (calculated from DLS::Sampler::Gain) |
430 |
|
|
431 |
// derived attributes from DLS::Sampler |
// derived attributes from DLS::Sampler |
432 |
DLS::Sampler::UnityNote; |
DLS::Sampler::UnityNote; |
433 |
DLS::Sampler::FineTune; |
DLS::Sampler::FineTune; |
500 |
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. |
501 |
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). |
502 |
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). |
503 |
|
uint32_t TruncatedBits; ///< For 24-bit compressed samples only: number of bits truncated during compression (0, 4 or 6) |
504 |
|
bool Dithered; ///< For 24-bit compressed samples only: if dithering was used during compression with bit reduction |
505 |
|
|
506 |
// own methods |
// own methods |
507 |
buffer_t LoadSampleData(); |
buffer_t LoadSampleData(); |
637 |
|
|
638 |
Region(Instrument* pInstrument, RIFF::List* rgnList); |
Region(Instrument* pInstrument, RIFF::List* rgnList); |
639 |
void LoadDimensionRegions(RIFF::List* rgn); |
void LoadDimensionRegions(RIFF::List* rgn); |
640 |
Sample* GetSampleFromWavePool(unsigned int WavePoolTableIndex); |
Sample* GetSampleFromWavePool(unsigned int WavePoolTableIndex, progress_t* pProgress = NULL); |
641 |
~Region(); |
~Region(); |
642 |
friend class Instrument; |
friend class Instrument; |
643 |
}; |
}; |
676 |
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 |
677 |
int RegionIndex; |
int RegionIndex; |
678 |
|
|
679 |
Instrument(File* pFile, RIFF::List* insList); |
Instrument(File* pFile, RIFF::List* insList, progress_t* pProgress = NULL); |
680 |
~Instrument(); |
~Instrument(); |
681 |
friend class File; |
friend class File; |
682 |
}; |
}; |
696 |
DLS::Resource::GetParent; |
DLS::Resource::GetParent; |
697 |
// overridden methods |
// overridden methods |
698 |
File(RIFF::File* pRIFF); |
File(RIFF::File* pRIFF); |
699 |
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. |
700 |
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. |
701 |
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. |
702 |
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. |
703 |
Instrument* GetInstrument(uint index); |
Instrument* GetInstrument(uint index, progress_t* pProgress = NULL); |
704 |
~File(); |
~File(); |
705 |
protected: |
protected: |
706 |
typedef std::list<Sample*> SampleList; |
typedef std::list<Sample*> SampleList; |
711 |
InstrumentList* pInstruments; |
InstrumentList* pInstruments; |
712 |
InstrumentList::iterator InstrumentsIterator; |
InstrumentList::iterator InstrumentsIterator; |
713 |
|
|
714 |
void LoadSamples(); |
void LoadSamples(progress_t* pProgress = NULL); |
715 |
void LoadInstruments(); |
void LoadInstruments(progress_t* pProgress = NULL); |
716 |
friend class Region; |
friend class Region; |
717 |
}; |
}; |
718 |
|
|