DLS::File Class Reference

Parses DLS Level 1 and 2 compliant files and provides abstract access to the data. More...

#include <DLS.h>

Inheritance diagram for DLS::File:

DLS::Resource gig::File List of all members.

Public Member Functions

 File ()
 Constructor.
 File (RIFF::File *pRIFF)
 Constructor.
SampleGetFirstSample ()
 Returns a pointer to the first Sample object of the file, NULL otherwise.
SampleGetNextSample ()
 Returns a pointer to the next Sample object of the file, NULL otherwise.
SampleAddSample ()
 Add a new sample.
void DeleteSample (Sample *pSample)
 Delete a sample.
InstrumentGetFirstInstrument ()
 Returns a pointer to the first Instrument object of the file, NULL otherwise.
InstrumentGetNextInstrument ()
 Returns a pointer to the next Instrument object of the file, NULL otherwise.
InstrumentAddInstrument ()
 Add a new instrument definition.
void DeleteInstrument (Instrument *pInstrument)
 Delete an instrument.
virtual void UpdateChunks ()
 Apply all the DLS file's current instruments, samples and settings to the respective RIFF chunks.
virtual void Save (const String &Path)
 Save changes to another file.
virtual void Save ()
 Save changes to same file.
virtual ~File ()
ResourceGetParent ()
void GenerateDLSID ()
 Generates a new DLSID for the resource.

Public Attributes

version_tpVersion
 Points to a version_t structure if the file provided a version number else is set to NULL.
uint32_t Instruments
 Reflects the number of available Instrument objects.
InfopInfo
 Points (in any case) to an Info object, providing additional, optional infos and comments.
dlsid_tpDLSID
 Points to a dlsid_t structure if the file provided a DLS ID else is NULL.

Protected Types

typedef std::list< Sample * > SampleList
typedef std::list< Instrument * > InstrumentList

Protected Member Functions

virtual void LoadSamples ()
virtual void LoadInstruments ()
void __ensureMandatoryChunksExist ()
 Checks if all (for DLS) mandatory chunks exist, if not they will be created.

Protected Attributes

RIFF::FilepRIFF
std::list< RIFF::File * > ExtensionFiles
SampleListpSamples
SampleList::iterator SamplesIterator
InstrumentListpInstruments
InstrumentList::iterator InstrumentsIterator
uint32_t WavePoolHeaderSize
uint32_t WavePoolCount
uint32_t * pWavePoolTable
uint32_t * pWavePoolTableHi
bool b64BitWavePoolOffsets
ResourcepParent
RIFF::ListpResourceList

Friends

class Region

Detailed Description

Parses DLS Level 1 and 2 compliant files and provides abstract access to the data.

Definition at line 466 of file DLS.h.


Member Typedef Documentation

typedef std::list<Sample*> DLS::File::SampleList [protected]

Definition at line 486 of file DLS.h.

typedef std::list<Instrument*> DLS::File::InstrumentList [protected]

Definition at line 487 of file DLS.h.


Constructor & Destructor Documentation

DLS::File::File (  ) 

Constructor.

Default constructor, use this to create an empty DLS file. You have to add samples, instruments and finally call Save() to actually write a DLS file.

Reimplemented in gig::File.

Definition at line 1193 of file DLS.cpp.

References b64BitWavePoolOffsets, DLS::version_t::build, RIFF::endian_little, Instruments, DLS::version_t::major, DLS::version_t::minor, pInstruments, pRIFF, pSamples, pVersion, pWavePoolTable, pWavePoolTableHi, DLS::version_t::release, RIFF::File::SetByteOrder(), WavePoolCount, and WavePoolHeaderSize.

DLS::File::File ( RIFF::File pRIFF  ) 

Constructor.

Load an existing DLS file.

Parameters:
pRIFF - pointer to a RIFF file which is actually the DLS file to load
Exceptions:
Exception if given file is not a DLS file, expected chunks are missing

Reimplemented in gig::File.

Definition at line 1222 of file DLS.cpp.

References b64BitWavePoolOffsets, CHUNK_ID_COLH, CHUNK_ID_PTBL, CHUNK_ID_VERS, RIFF::Chunk::GetSize(), RIFF::List::GetSubChunk(), Instruments, pInstruments, pRIFF, pSamples, pVersion, pWavePoolTable, pWavePoolTableHi, RIFF::Chunk::Read(), RIFF::Chunk::ReadUint32(), RIFF::Chunk::SetPos(), WavePoolCount, and WavePoolHeaderSize.

DLS::File::~File (  )  [virtual]

Reimplemented in gig::File.

Definition at line 1270 of file DLS.cpp.

References ExtensionFiles, pInstruments, pSamples, pVersion, pWavePoolTable, and pWavePoolTableHi.


Member Function Documentation

Sample * DLS::File::GetFirstSample (  ) 

Returns a pointer to the first Sample object of the file, NULL otherwise.

Definition at line 1298 of file DLS.cpp.

References LoadSamples(), pSamples, and SamplesIterator.

Referenced by gig::File::GetInstrument(), DLS::Region::GetSample(), and gig::File::UpdateChunks().

Sample * DLS::File::GetNextSample (  ) 

Returns a pointer to the next Sample object of the file, NULL otherwise.

Reimplemented in gig::File.

Definition at line 1305 of file DLS.cpp.

References pSamples, and SamplesIterator.

Referenced by DLS::Region::GetSample().

Sample * DLS::File::AddSample (  ) 

Add a new sample.

This will create a new Sample object for the DLS file. You have to call Save() to make this persistent to the file.

Returns:
pointer to new Sample object

Reimplemented in gig::File.

Definition at line 1348 of file DLS.cpp.

References __ensureMandatoryChunksExist(), RIFF::List::AddSubList(), RIFF::List::GetSubList(), LIST_TYPE_WAVE, LIST_TYPE_WVPL, LoadSamples(), pRIFF, and pSamples.

void DLS::File::DeleteSample ( Sample pSample  ) 

Delete a sample.

This will delete the given Sample object from the DLS file. You have to call Save() to make this persistent to the file.

Parameters:
pSample - sample to delete

Definition at line 1366 of file DLS.cpp.

References pSamples.

Instrument * DLS::File::GetFirstInstrument (  ) 

Returns a pointer to the first Instrument object of the file, NULL otherwise.

Reimplemented in gig::File.

Definition at line 1374 of file DLS.cpp.

References InstrumentsIterator, LoadInstruments(), and pInstruments.

Instrument * DLS::File::GetNextInstrument (  ) 

Returns a pointer to the next Instrument object of the file, NULL otherwise.

Reimplemented in gig::File.

Definition at line 1381 of file DLS.cpp.

References InstrumentsIterator, and pInstruments.

Instrument * DLS::File::AddInstrument (  ) 

Add a new instrument definition.

This will create a new Instrument object for the DLS file. You have to call Save() to make this persistent to the file.

Returns:
pointer to new Instrument object

Reimplemented in gig::File.

Definition at line 1408 of file DLS.cpp.

References __ensureMandatoryChunksExist(), RIFF::List::AddSubList(), RIFF::List::GetSubList(), LIST_TYPE_INS, LIST_TYPE_LINS, LoadInstruments(), pInstruments, and pRIFF.

void DLS::File::DeleteInstrument ( Instrument pInstrument  ) 

Delete an instrument.

This will delete the given Instrument object from the DLS file. You have to call Save() to make this persistent to the file.

Parameters:
pInstrument - instrument to delete

Definition at line 1425 of file DLS.cpp.

References pInstruments.

void DLS::File::UpdateChunks (  )  [virtual]

Apply all the DLS file's current instruments, samples and settings to the respective RIFF chunks.

You have to call Save() to make changes persistent.

Exceptions:
Exception - on errors

Reimplemented from DLS::Resource.

Reimplemented in gig::File.

Definition at line 1440 of file DLS.cpp.

References RIFF::List::AddSubChunk(), b64BitWavePoolOffsets, DLS::version_t::build, CHUNK_ID_COLH, CHUNK_ID_PTBL, CHUNK_ID_VERS, RIFF::List::GetSubChunk(), Instruments, RIFF::Chunk::LoadChunkData(), DLS::version_t::major, DLS::version_t::minor, pInstruments, pRIFF, pSamples, pVersion, DLS::version_t::release, RIFF::Chunk::Resize(), DLS::Resource::UpdateChunks(), WavePoolCount, and WavePoolHeaderSize.

Referenced by Save(), and gig::File::UpdateChunks().

void DLS::File::Save ( const String Path  )  [virtual]

Save changes to another file.

Make all changes persistent by writing them to another file. Caution: this method is optimized for writing to another file, do not use it to save the changes to the same file! Use Save() (without path argument) in that case instead! Ignoring this might result in a corrupted file!

After calling this method, this File object will be associated with the new file (given by Path) afterwards.

Parameters:
Path - path and file name where everything should be written to

Definition at line 1507 of file DLS.cpp.

References pRIFF, RIFF::File::Save(), and UpdateChunks().

void DLS::File::Save (  )  [virtual]

Save changes to same file.

Make all changes persistent by writing them to the actual (same) file. The file might temporarily grow to a higher size than it will have at the end of the saving process.

Exceptions:
RIFF::Exception if any kind of IO error occured
DLS::Exception if any kind of DLS specific error occured

Definition at line 1522 of file DLS.cpp.

References pRIFF, RIFF::File::Save(), and UpdateChunks().

void DLS::File::LoadSamples (  )  [protected, virtual]

Reimplemented in gig::File.

Definition at line 1311 of file DLS.cpp.

References RIFF::Chunk::GetFilePos(), RIFF::List::GetFirstSubList(), RIFF::List::GetListType(), RIFF::List::GetNextSubList(), RIFF::List::GetSubList(), LIST_TYPE_DWPL, LIST_TYPE_WAVE, LIST_TYPE_WVPL, pRIFF, and pSamples.

Referenced by AddSample(), and GetFirstSample().

void DLS::File::LoadInstruments (  )  [protected, virtual]

Reimplemented in gig::File.

Definition at line 1387 of file DLS.cpp.

References RIFF::List::GetFirstSubList(), RIFF::List::GetListType(), RIFF::List::GetNextSubList(), RIFF::List::GetSubList(), LIST_TYPE_INS, LIST_TYPE_LINS, pInstruments, and pRIFF.

Referenced by AddInstrument(), and GetFirstInstrument().

void DLS::File::__ensureMandatoryChunksExist (  )  [protected]

Checks if all (for DLS) mandatory chunks exist, if not they will be created.

Note that those chunks will not be made persistent until Save() was called.

Definition at line 1533 of file DLS.cpp.

References RIFF::List::AddSubChunk(), RIFF::List::AddSubList(), b64BitWavePoolOffsets, CHUNK_ID_PTBL, RIFF::List::GetSubChunk(), RIFF::List::GetSubList(), LIST_TYPE_LINS, LIST_TYPE_WVPL, pRIFF, and WavePoolHeaderSize.

Referenced by gig::File::AddGroup(), gig::File::AddInstrument(), AddInstrument(), gig::File::AddSample(), and AddSample().

Resource* DLS::Resource::GetParent (  )  [inline, inherited]

Definition at line 328 of file DLS.h.

References DLS::Resource::pParent.

Referenced by gig::Region::AddDimension(), DLS::Region::GetSample(), gig::Region::GetSampleFromWavePool(), gig::Region::Region(), gig::Region::SetKeyRange(), DLS::Region::SetKeyRange(), gig::Instrument::UpdateChunks(), gig::Region::UpdateChunks(), gig::DimensionRegion::UpdateChunks(), DLS::Region::UpdateChunks(), and gig::Sample::Write().

void DLS::Resource::GenerateDLSID (  )  [inherited]

Generates a new DLSID for the resource.

Definition at line 450 of file DLS.cpp.

References DLS::dlsid_t::abData, DLS::Resource::pDLSID, DLS::dlsid_t::ulData1, DLS::dlsid_t::usData2, and DLS::dlsid_t::usData3.

Referenced by gig::File::AddInstrument(), and gig::File::File().


Friends And Related Function Documentation

friend class Region [friend]

Reimplemented in gig::File.

Definition at line 504 of file DLS.h.


Member Data Documentation

version_t* DLS::File::pVersion

Points to a version_t structure if the file provided a version number else is set to NULL.

Definition at line 468 of file DLS.h.

Referenced by gig::Region::AddDimension(), gig::File::File(), File(), gig::File::LoadGroups(), gig::Region::Region(), gig::File::UpdateChunks(), gig::Group::UpdateChunks(), gig::Instrument::UpdateChunks(), gig::Region::UpdateChunks(), gig::DimensionRegion::UpdateChunks(), UpdateChunks(), and ~File().

uint32_t DLS::File::Instruments

Reflects the number of available Instrument objects.

Definition at line 469 of file DLS.h.

Referenced by File(), gig::File::LoadInstruments(), gig::File::UpdateChunks(), and UpdateChunks().

RIFF::File* DLS::File::pRIFF [protected]

Definition at line 489 of file DLS.h.

Referenced by __ensureMandatoryChunksExist(), gig::File::AddInstrument(), AddInstrument(), gig::File::AddSample(), AddSample(), gig::File::File(), File(), gig::File::LoadGroups(), gig::File::LoadInstruments(), LoadInstruments(), gig::File::LoadSamples(), LoadSamples(), Save(), gig::File::SetSampleChecksum(), gig::File::UpdateChunks(), gig::Group::UpdateChunks(), and UpdateChunks().

std::list<RIFF::File*> DLS::File::ExtensionFiles [protected]

Definition at line 490 of file DLS.h.

Referenced by gig::File::LoadSamples(), and ~File().

SampleList* DLS::File::pSamples [protected]

Definition at line 491 of file DLS.h.

Referenced by gig::File::AddSample(), AddSample(), gig::File::DeleteSample(), DeleteSample(), File(), gig::File::GetFirstSample(), GetFirstSample(), gig::File::GetNextSample(), GetNextSample(), gig::File::LoadSamples(), LoadSamples(), gig::File::SetSampleChecksum(), gig::File::UpdateChunks(), gig::Region::UpdateChunks(), UpdateChunks(), DLS::Region::UpdateChunks(), and ~File().

SampleList::iterator DLS::File::SamplesIterator [protected]

Definition at line 492 of file DLS.h.

Referenced by gig::File::DeleteSample(), gig::File::GetFirstSample(), GetFirstSample(), gig::File::GetNextSample(), and GetNextSample().

InstrumentList* DLS::File::pInstruments [protected]

Definition at line 493 of file DLS.h.

Referenced by gig::File::AddInstrument(), AddInstrument(), gig::File::DeleteInstrument(), DeleteInstrument(), File(), gig::File::GetFirstInstrument(), GetFirstInstrument(), gig::File::GetInstrument(), gig::File::GetNextInstrument(), GetNextInstrument(), gig::File::LoadInstruments(), LoadInstruments(), UpdateChunks(), and ~File().

InstrumentList::iterator DLS::File::InstrumentsIterator [protected]

Definition at line 494 of file DLS.h.

Referenced by gig::File::GetFirstInstrument(), GetFirstInstrument(), gig::File::GetInstrument(), gig::File::GetNextInstrument(), and GetNextInstrument().

uint32_t DLS::File::WavePoolHeaderSize [protected]

Definition at line 495 of file DLS.h.

Referenced by __ensureMandatoryChunksExist(), File(), and UpdateChunks().

uint32_t DLS::File::WavePoolCount [protected]

Definition at line 496 of file DLS.h.

Referenced by File(), gig::File::LoadSamples(), and UpdateChunks().

uint32_t* DLS::File::pWavePoolTable [protected]

Definition at line 497 of file DLS.h.

Referenced by File(), DLS::Region::GetSample(), gig::Region::GetSampleFromWavePool(), gig::Region::Region(), and ~File().

uint32_t* DLS::File::pWavePoolTableHi [protected]

Definition at line 498 of file DLS.h.

Referenced by File(), gig::Region::GetSampleFromWavePool(), gig::File::LoadSamples(), and ~File().

bool DLS::File::b64BitWavePoolOffsets [protected]

Definition at line 499 of file DLS.h.

Referenced by __ensureMandatoryChunksExist(), File(), gig::File::UpdateChunks(), and UpdateChunks().

Info* DLS::Resource::pInfo [inherited]

Points (in any case) to an Info object, providing additional, optional infos and comments.

Definition at line 325 of file DLS.h.

Referenced by gig::File::AddInstrument(), gig::File::File(), gig::Instrument::Instrument(), DLS::Resource::Resource(), gig::Sample::Sample(), DLS::Resource::UpdateChunks(), and DLS::Resource::~Resource().

dlsid_t* DLS::Resource::pDLSID [inherited]

Points to a dlsid_t structure if the file provided a DLS ID else is NULL.

Definition at line 326 of file DLS.h.

Referenced by DLS::Resource::GenerateDLSID(), DLS::Resource::Resource(), DLS::Resource::UpdateChunks(), and DLS::Resource::~Resource().

Resource* DLS::Resource::pParent [protected, inherited]

Definition at line 332 of file DLS.h.

Referenced by DLS::Resource::GetParent(), DLS::Resource::Resource(), gig::Sample::UpdateChunks(), DLS::Instrument::~Instrument(), DLS::Region::~Region(), and DLS::Sample::~Sample().

RIFF::List* DLS::Resource::pResourceList [protected, inherited]

Definition at line 333 of file DLS.h.

Referenced by DLS::Resource::Resource(), and DLS::Resource::UpdateChunks().


The documentation for this class was generated from the following files:
Generated on Sun May 1 03:22:46 2011 for libgig by  doxygen 1.5.2