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-2013 by Christian Schoenebeck * |
* Copyright (C) 2003-2014 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 * |
204 |
struct range_t { |
struct range_t { |
205 |
uint16_t low; ///< Low value of range. |
uint16_t low; ///< Low value of range. |
206 |
uint16_t high; ///< High value of range. |
uint16_t high; ///< High value of range. |
207 |
|
|
208 |
|
inline bool operator< (const range_t& other) const { |
209 |
|
if (low < other.low) return true; |
210 |
|
if (low > other.low) return false; |
211 |
|
return high < other.high; |
212 |
|
} |
213 |
|
|
214 |
|
inline bool operator== (const range_t& other) const { |
215 |
|
return low == other.low && high == other.high; |
216 |
|
} |
217 |
}; |
}; |
218 |
|
|
219 |
/** Defines Sample Loop Points. */ |
/** Defines Sample Loop Points. */ |
338 |
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>. |
339 |
|
|
340 |
Resource* GetParent() { return pParent; } |
Resource* GetParent() { return pParent; } |
341 |
|
const Resource* GetParent() const { return pParent; } |
342 |
virtual void UpdateChunks(); |
virtual void UpdateChunks(); |
343 |
void GenerateDLSID(); |
void GenerateDLSID(); |
344 |
virtual void CopyAssign(const Resource* orig); |
virtual void CopyAssign(const Resource* orig); |
395 |
|
|
396 |
void* LoadSampleData(); |
void* LoadSampleData(); |
397 |
void ReleaseSampleData(); |
void ReleaseSampleData(); |
398 |
unsigned long GetSize(); |
unsigned long GetSize() const; |
399 |
void Resize(int iNewSize); |
void Resize(int iNewSize); |
400 |
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); |
401 |
unsigned long Read(void* pBuffer, unsigned long SampleCount); |
unsigned long Read(void* pBuffer, unsigned long SampleCount); |
402 |
unsigned long Write(void* pBuffer, unsigned long SampleCount); |
unsigned long Write(void* pBuffer, unsigned long SampleCount); |
403 |
virtual void UpdateChunks(); |
virtual void UpdateChunks(); |
404 |
|
virtual void CopyAssign(const Sample* orig); |
405 |
protected: |
protected: |
406 |
RIFF::List* pWaveList; |
RIFF::List* pWaveList; |
407 |
RIFF::Chunk* pCkData; |
RIFF::Chunk* pCkData; |
410 |
|
|
411 |
Sample(File* pFile, RIFF::List* waveList, unsigned long WavePoolOffset); |
Sample(File* pFile, RIFF::List* waveList, unsigned long WavePoolOffset); |
412 |
virtual ~Sample(); |
virtual ~Sample(); |
413 |
|
void CopyAssignCore(const Sample* orig); |
414 |
friend class File; |
friend class File; |
415 |
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 |
416 |
}; |
}; |
491 |
File(); |
File(); |
492 |
File(RIFF::File* pRIFF); |
File(RIFF::File* pRIFF); |
493 |
String GetFileName(); |
String GetFileName(); |
494 |
|
void SetFileName(const String& name); |
495 |
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. |
496 |
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. |
497 |
Sample* AddSample(); |
Sample* AddSample(); |