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-2010 by Christian Schoenebeck * |
* Copyright (C) 2003-2013 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 * |
270 |
Articulation* GetFirstArticulation(); |
Articulation* GetFirstArticulation(); |
271 |
Articulation* GetNextArticulation(); |
Articulation* GetNextArticulation(); |
272 |
virtual void UpdateChunks(); |
virtual void UpdateChunks(); |
273 |
|
virtual void CopyAssign(const Articulator* orig); |
274 |
protected: |
protected: |
275 |
typedef std::list<Articulation*> ArticulationList; |
typedef std::list<Articulation*> ArticulationList; |
276 |
RIFF::List* pParentList; |
RIFF::List* pParentList; |
312 |
void SetFixedStringLengths(const string_length_t* lengths); |
void SetFixedStringLengths(const string_length_t* lengths); |
313 |
virtual ~Info(); |
virtual ~Info(); |
314 |
virtual void UpdateChunks(); |
virtual void UpdateChunks(); |
315 |
|
virtual void CopyAssign(const Info* orig); |
316 |
private: |
private: |
317 |
RIFF::List* pResourceListChunk; |
RIFF::List* pResourceListChunk; |
318 |
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. |
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. |
328 |
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>. |
329 |
|
|
330 |
Resource* GetParent() { return pParent; } |
Resource* GetParent() { return pParent; } |
331 |
|
const Resource* GetParent() const { return pParent; } |
332 |
virtual void UpdateChunks(); |
virtual void UpdateChunks(); |
333 |
void GenerateDLSID(); |
void GenerateDLSID(); |
334 |
|
virtual void CopyAssign(const Resource* orig); |
335 |
protected: |
protected: |
336 |
Resource* pParent; |
Resource* pParent; |
337 |
RIFF::List* pResourceList; |
RIFF::List* pResourceList; |
355 |
void DeleteSampleLoop(sample_loop_t* pLoopDef); |
void DeleteSampleLoop(sample_loop_t* pLoopDef); |
356 |
virtual void SetGain(int32_t gain); |
virtual void SetGain(int32_t gain); |
357 |
virtual void UpdateChunks(); |
virtual void UpdateChunks(); |
358 |
|
virtual void CopyAssign(const Sampler* orig); |
359 |
protected: |
protected: |
360 |
RIFF::List* pParentList; |
RIFF::List* pParentList; |
361 |
uint32_t uiHeaderSize; |
uint32_t uiHeaderSize; |
385 |
|
|
386 |
void* LoadSampleData(); |
void* LoadSampleData(); |
387 |
void ReleaseSampleData(); |
void ReleaseSampleData(); |
388 |
unsigned long GetSize(); |
unsigned long GetSize() const; |
389 |
void Resize(int iNewSize); |
void Resize(int iNewSize); |
390 |
unsigned long SetPos(unsigned long SampleCount, RIFF::stream_whence_t Whence = RIFF::stream_start); |
unsigned long SetPos(unsigned long SampleCount, RIFF::stream_whence_t Whence = RIFF::stream_start); |
391 |
unsigned long Read(void* pBuffer, unsigned long SampleCount); |
unsigned long Read(void* pBuffer, unsigned long SampleCount); |
392 |
unsigned long Write(void* pBuffer, unsigned long SampleCount); |
unsigned long Write(void* pBuffer, unsigned long SampleCount); |
393 |
virtual void UpdateChunks(); |
virtual void UpdateChunks(); |
394 |
|
virtual void CopyAssign(const Sample* orig); |
395 |
protected: |
protected: |
396 |
RIFF::List* pWaveList; |
RIFF::List* pWaveList; |
397 |
RIFF::Chunk* pCkData; |
RIFF::Chunk* pCkData; |
400 |
|
|
401 |
Sample(File* pFile, RIFF::List* waveList, unsigned long WavePoolOffset); |
Sample(File* pFile, RIFF::List* waveList, unsigned long WavePoolOffset); |
402 |
virtual ~Sample(); |
virtual ~Sample(); |
403 |
|
void CopyAssignCore(const Sample* orig); |
404 |
friend class File; |
friend class File; |
405 |
friend class Region; // Region has to compare the wave pool offset to get its sample |
friend class Region; // Region has to compare the wave pool offset to get its sample |
406 |
}; |
}; |
422 |
void SetSample(Sample* pSample); |
void SetSample(Sample* pSample); |
423 |
virtual void SetKeyRange(uint16_t Low, uint16_t High); |
virtual void SetKeyRange(uint16_t Low, uint16_t High); |
424 |
virtual void UpdateChunks(); |
virtual void UpdateChunks(); |
425 |
|
virtual void CopyAssign(const Region* orig); |
426 |
protected: |
protected: |
427 |
RIFF::List* pCkRegion; |
RIFF::List* pCkRegion; |
428 |
uint32_t WavePoolTableIndex; // index in the wave pool table to the sample wave this region is linked to |
uint32_t WavePoolTableIndex; // index in the wave pool table to the sample wave this region is linked to |
450 |
Region* AddRegion(); |
Region* AddRegion(); |
451 |
void DeleteRegion(Region* pRegion); |
void DeleteRegion(Region* pRegion); |
452 |
virtual void UpdateChunks(); |
virtual void UpdateChunks(); |
453 |
|
virtual void CopyAssign(const Instrument* orig); |
454 |
protected: |
protected: |
455 |
typedef std::list<Region*> RegionList; |
typedef std::list<Region*> RegionList; |
456 |
struct midi_locale_t { |
struct midi_locale_t { |
463 |
RegionList::iterator RegionsIterator; |
RegionList::iterator RegionsIterator; |
464 |
|
|
465 |
Instrument(File* pFile, RIFF::List* insList); |
Instrument(File* pFile, RIFF::List* insList); |
466 |
|
void CopyAssignCore(const Instrument* orig); |
467 |
virtual void LoadRegions(); |
virtual void LoadRegions(); |
468 |
virtual ~Instrument(); |
virtual ~Instrument(); |
469 |
friend class File; |
friend class File; |
481 |
File(); |
File(); |
482 |
File(RIFF::File* pRIFF); |
File(RIFF::File* pRIFF); |
483 |
String GetFileName(); |
String GetFileName(); |
484 |
|
void SetFileName(const String& name); |
485 |
Sample* GetFirstSample(); ///< Returns a pointer to the first <i>Sample</i> object of the file, <i>NULL</i> otherwise. |
Sample* GetFirstSample(); ///< Returns a pointer to the first <i>Sample</i> object of the file, <i>NULL</i> otherwise. |
486 |
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. |
487 |
Sample* AddSample(); |
Sample* AddSample(); |