2 |
* * |
* * |
3 |
* libgig - C++ cross-platform Gigasampler format file access library * |
* libgig - C++ cross-platform Gigasampler format file access library * |
4 |
* * |
* * |
5 |
* Copyright (C) 2003-2007 by Christian Schoenebeck * |
* Copyright (C) 2003-2009 by Christian Schoenebeck * |
6 |
* <cuse@users.sourceforge.net> * |
* <cuse@users.sourceforge.net> * |
7 |
* * |
* * |
8 |
* This library is free software; you can redistribute it and/or modify * |
* This library is free software; you can redistribute it and/or modify * |
258 |
uint16_t transform; |
uint16_t transform; |
259 |
uint32_t scale; |
uint32_t scale; |
260 |
}; |
}; |
261 |
Connection() {}; |
Connection() {} |
262 |
void Init(conn_block_t* Header); |
void Init(conn_block_t* Header); |
263 |
conn_block_t ToConnBlock(); |
conn_block_t ToConnBlock(); |
264 |
virtual ~Connection() {}; |
virtual ~Connection() {} |
265 |
friend class Articulation; |
friend class Articulation; |
266 |
}; |
}; |
267 |
|
|
316 |
String SourceForm; ///< <ISRF-ck>. Identifies the original form of the material that was digitized, such as record, sampling CD, TV sound track. This is not neccessarily the same as <i>Medium</i>. |
String SourceForm; ///< <ISRF-ck>. Identifies the original form of the material that was digitized, such as record, sampling CD, TV sound track. This is not neccessarily the same as <i>Medium</i>. |
317 |
String Commissioned; ///< <ICMS-ck>. Lists the name of the person or organization that commissioned the subject of the file, e.g., Pope Julian II. |
String Commissioned; ///< <ICMS-ck>. Lists the name of the person or organization that commissioned the subject of the file, e.g., Pope Julian II. |
318 |
String Subject; ///< <ISBJ-ck>. Describes the contents of the file. |
String Subject; ///< <ISBJ-ck>. Describes the contents of the file. |
319 |
bool UseFixedLengthStrings; ///< Deprecated. Use #FixedStringLengths instead. |
bool UseFixedLengthStrings; ///< @deprecated Not used anymore, use SetFixedStringLengths() instead. |
320 |
|
|
321 |
struct FixedStringLength { |
struct string_length_t { |
322 |
uint32_t chunkId; |
uint32_t chunkId; |
323 |
int length; |
int length; |
324 |
}; |
}; |
325 |
const FixedStringLength* FixedStringLengths; ///< List of IDs and string lengths for strings that should be stored in a fixed length format. This is used for gig files, not for ordinary DLS files. |
|
326 |
Info(RIFF::List* list); |
Info(RIFF::List* list); |
327 |
|
void SetFixedStringLengths(const string_length_t* lengths); |
328 |
virtual ~Info(); |
virtual ~Info(); |
329 |
virtual void UpdateChunks(); |
virtual void UpdateChunks(); |
330 |
private: |
private: |
331 |
RIFF::List* pResourceListChunk; |
RIFF::List* pResourceListChunk; |
332 |
|
const string_length_t* pFixedStringLengths; ///< List of IDs and string lengths for strings that should be stored in a fixed length format. This is used for gig files, not for ordinary DLS files. |
333 |
|
|
334 |
static void LoadString(uint32_t ChunkID, RIFF::List* lstINFO, String& s); |
static void LoadString(uint32_t ChunkID, RIFF::List* lstINFO, String& s); |
335 |
void SaveString(uint32_t ChunkID, RIFF::List* lstINFO, const String& s, const String& sDefault); |
void SaveString(uint32_t ChunkID, RIFF::List* lstINFO, const String& s, const String& sDefault); |
341 |
Info* pInfo; ///< Points (in any case) to an <i>Info</i> object, providing additional, optional infos and comments. |
Info* pInfo; ///< Points (in any case) to an <i>Info</i> object, providing additional, optional infos and comments. |
342 |
dlsid_t* pDLSID; ///< Points to a <i>dlsid_t</i> structure if the file provided a DLS ID else is <i>NULL</i>. |
dlsid_t* pDLSID; ///< Points to a <i>dlsid_t</i> structure if the file provided a DLS ID else is <i>NULL</i>. |
343 |
|
|
344 |
Resource* GetParent() { return pParent; }; |
Resource* GetParent() { return pParent; } |
345 |
virtual void UpdateChunks(); |
virtual void UpdateChunks(); |
346 |
|
void GenerateDLSID(); |
347 |
protected: |
protected: |
348 |
Resource* pParent; |
Resource* pParent; |
349 |
RIFF::List* pResourceList; |
RIFF::List* pResourceList; |
357 |
public: |
public: |
358 |
uint8_t UnityNote; |
uint8_t UnityNote; |
359 |
int16_t FineTune; |
int16_t FineTune; |
360 |
int32_t Gain; |
int32_t Gain; ///< @deprecated Don't alter directly, use SetGain() instead! |
361 |
bool NoSampleDepthTruncation; |
bool NoSampleDepthTruncation; |
362 |
bool NoSampleCompression; |
bool NoSampleCompression; |
363 |
uint32_t SampleLoops; ///< Reflects the number of sample loops. |
uint32_t SampleLoops; ///< Reflects the number of sample loops. |
365 |
|
|
366 |
void AddSampleLoop(sample_loop_t* pLoopDef); |
void AddSampleLoop(sample_loop_t* pLoopDef); |
367 |
void DeleteSampleLoop(sample_loop_t* pLoopDef); |
void DeleteSampleLoop(sample_loop_t* pLoopDef); |
368 |
|
virtual void SetGain(int32_t gain); |
369 |
virtual void UpdateChunks(); |
virtual void UpdateChunks(); |
370 |
protected: |
protected: |
371 |
RIFF::List* pParentList; |
RIFF::List* pParentList; |
417 |
/** Defines <i>Region</i> information of an <i>Instrument</i>. */ |
/** Defines <i>Region</i> information of an <i>Instrument</i>. */ |
418 |
class Region : public Resource, public Articulator, public Sampler { |
class Region : public Resource, public Articulator, public Sampler { |
419 |
public: |
public: |
420 |
range_t KeyRange; |
range_t KeyRange; ///< @deprecated Only read, don't write! Use SetKeyRange() instead. |
421 |
range_t VelocityRange; |
range_t VelocityRange; |
422 |
uint16_t KeyGroup; |
uint16_t KeyGroup; |
423 |
uint16_t Layer; |
uint16_t Layer; |
429 |
|
|
430 |
Sample* GetSample(); |
Sample* GetSample(); |
431 |
void SetSample(Sample* pSample); |
void SetSample(Sample* pSample); |
432 |
|
virtual void SetKeyRange(uint16_t Low, uint16_t High); |
433 |
virtual void UpdateChunks(); |
virtual void UpdateChunks(); |
434 |
protected: |
protected: |
435 |
RIFF::List* pCkRegion; |
RIFF::List* pCkRegion; |
456 |
Region* GetFirstRegion(); |
Region* GetFirstRegion(); |
457 |
Region* GetNextRegion(); |
Region* GetNextRegion(); |
458 |
Region* AddRegion(); |
Region* AddRegion(); |
|
void MoveRegion(Region* pSrc, Region* pDst); |
|
459 |
void DeleteRegion(Region* pRegion); |
void DeleteRegion(Region* pRegion); |
460 |
virtual void UpdateChunks(); |
virtual void UpdateChunks(); |
461 |
protected: |
protected: |
473 |
virtual void LoadRegions(); |
virtual void LoadRegions(); |
474 |
virtual ~Instrument(); |
virtual ~Instrument(); |
475 |
friend class File; |
friend class File; |
476 |
|
friend class Region; |
477 |
|
private: |
478 |
|
void MoveRegion(Region* pSrc, Region* pDst); |
479 |
}; |
}; |
480 |
|
|
481 |
/** Parses DLS Level 1 and 2 compliant files and provides abstract access to the data. */ |
/** Parses DLS Level 1 and 2 compliant files and provides abstract access to the data. */ |