DLS::Instrument Class Reference

Provides all neccessary information for the synthesis of a DLS Instrument. More...

`#include <DLS.h>`

Inheritance diagram for DLS::Instrument:

## Public Member Functions

size_t | CountRegions ()
| Returns the amount of regions of this instrument.
Region * | GetRegionAt (size_t pos)
| Returns Region at supplied pos position within the region list of this instrument.
Region * | GetFirstRegion ()
| Returns the first Region of the instrument.
Region * | GetNextRegion ()
| Returns the next Region of the instrument.
Region * | AddRegion ()
void | DeleteRegion (Region *pRegion)
virtual void | UpdateChunks (progress_t *pProgress)
| Apply Instrument with all its Regions to the respective RIFF chunks.
virtual void | DeleteChunks ()
| Remove all RIFF chunks associated with this Instrument object.
virtual void | CopyAssign (const Instrument *orig)
| Make a (semi) deep copy of the Instrument object given by orig and assign it to this object.
Resource * | GetParent ()
const Resource * | GetParent () const
void | GenerateDLSID ()
| Generates a new DLSID for the resource.
virtual void | CopyAssign (const Resource *orig)
| Make a deep copy of the Resource object given by orig and assign it to this object.
Articulation * | GetArticulation (size_t pos)
| Returns Articulation at supplied pos position within the articulation list.
Articulation * | GetFirstArticulation ()
| Returns the first Articulation in the list of articulations.
Articulation * | GetNextArticulation ()
| Returns the next Articulation from the list of articulations.
virtual void | CopyAssign (const Articulator *orig)
| Not yet implemented in this version, since the .gig format does not need to copy DLS articulators and so far nobody used pure DLS instrument AFAIK.

## Static Public Member Functions

static void | GenerateDLSID (dlsid_t *pDLSID)

## Public Attributes

bool | IsDrum
| Indicates if the Instrument is a drum type, as they differ in the synthesis model of DLS from melodic instruments.
uint16_t | MIDIBank
| Reflects combination of MIDIBankCoarse and MIDIBankFine (bank 1 - bank 16384). Do not change this value, it will not be saved! Change MIDIBankCoarse and MIDIBankFine instead (we might change that in future).
uint8_t | MIDIBankCoarse
| Reflects the MIDI Bank number for MIDI Control Change 0 (bank 1 - 128).
uint8_t | MIDIBankFine
| Reflects the MIDI Bank number for MIDI Control Change 32 (bank 1 - 128).
uint32_t | MIDIProgram
| Specifies the MIDI Program Change Number this Instrument should be assigned to.
uint32_t | Regions
| Reflects the number of Region defintions this Instrument has.
Info * | pInfo
| Points (in any case) to an Info object, providing additional, optional infos and comments.
dlsid_t * | pDLSID
| Points to a dlsid_t structure if the file provided a DLS ID else is NULL.

## Protected Types

typedef std::vector< Region * > | RegionList
typedef std::vector< Articulation * > | ArticulationList

## Protected Member Functions

| Instrument (File *pFile, RIFF::List *insList)
| Constructor.
void | CopyAssignCore (const Instrument *orig)
virtual void | LoadRegions ()
virtual | ~Instrument ()
| Destructor.
void | LoadArticulations ()

## Protected Attributes

RIFF::List * | pCkInstrument
RegionList * | pRegions
RegionList::iterator | RegionsIterator
Resource * | pParent
RIFF::List * | pResourceList
RIFF::List * | pParentList
ArticulationList * | pArticulations
ArticulationList::iterator | ArticulationsIterator

## Detailed Description

Provides all neccessary information for the synthesis of a DLS Instrument.

Definition at line 524 of file DLS.h.

## Member Typedef Documentation

## ArticulationList

typedef std::vector<Articulation*> DLS::Articulator::ArticulationList

protected inherited

Definition at line 353 of file DLS.h.

## RegionList

typedef std::vector<Region*> DLS::Instrument::RegionList

protected

Definition at line 543 of file DLS.h.

## Constructor & Destructor Documentation

## Instrument()

DLS::Instrument::Instrument | ( | File * | pFile,
|  | RIFF::List * | insList )

protected

Constructor.

Load an existing instrument definition or create a new one. An 'ins' list chunk must be given to this constructor. In case this 'ins' list chunk contains a 'insh' chunk, the instrument data fields will be loaded from there, otherwise default values will be used and the 'insh' chunk will be created once File::Save() was called.

Parameters

  pFile | - pointer to DLS::File where this instrument is located (or will be located)
  insList | - pointer to 'ins' list chunk which is (or will be) associated with this instrument

Definition at line 1389 of file DLS.cpp.

References IsDrum, MIDIBank, MIDIBankCoarse, MIDIBankFine, MIDIProgram, RIFF::Chunk::Read(), RIFF::Chunk::ReadUint32(), Regions, DLS::Resource::Resource(), and RIFF::Chunk::SetPos().

Referenced by CopyAssign().

## ~Instrument()

DLS::Instrument::~Instrument | ( |  | ) |

protected virtual

Destructor.

Frees all memory occupied by this instrument.

Reimplemented in gig::Instrument.

Definition at line 1576 of file DLS.cpp.

## Member Function Documentation

## AddRegion()

Region * DLS::Instrument::AddRegion | ( |  | ) |

Definition at line 1490 of file DLS.cpp.

## CopyAssign() [1/3]

void DLS::Articulator::CopyAssign | ( | const Articulator * | orig | ) |

virtual inherited

Not yet implemented in this version, since the .gig format does not need to copy DLS articulators and so far nobody used pure DLS instrument AFAIK.

Definition at line 306 of file DLS.cpp.

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

## CopyAssign() [2/3]

void DLS::Instrument::CopyAssign | ( | const Instrument * | orig | ) |

virtual

Make a (semi) deep copy of the Instrument object given by orig and assign it to this object.

Note that all sample pointers referenced by orig are simply copied as memory address. Thus the respective samples are shared, not duplicated!

Parameters

  orig | - original Instrument object to be copied from

Definition at line 1635 of file DLS.cpp.

References DLS::Region::CopyAssign(), GetRegionAt(), Instrument(), and Regions.

## CopyAssign() [3/3]

void Resource::CopyAssign | ( | const Resource * | orig | ) |

virtual inherited

Make a deep copy of the Resource object given by orig and assign it to this object.

Parameters

  orig | - original Resource object to be copied from

Definition at line 654 of file DLS.cpp.

References pInfo, and Resource().

Referenced by DLS::Region::CopyAssign(), and DLS::Sample::CopyAssignCore().

## CopyAssignCore()

void DLS::Instrument::CopyAssignCore | ( | const Instrument * | orig | ) |

protected

Definition at line 1613 of file DLS.cpp.

## CountRegions()

size_t DLS::Instrument::CountRegions | ( |  | ) |

Returns the amount of regions of this instrument.

See also
  GetRegionAt()

Definition at line 1419 of file DLS.cpp.

## DeleteChunks()

void DLS::Instrument::DeleteChunks | ( |  | ) |

virtual

Remove all RIFF chunks associated with this Instrument object.

See Storage::DeleteChunks() for details.

Reimplemented from DLS::Resource.

Definition at line 1592 of file DLS.cpp.

References DLS::Articulator::DeleteChunks(), DLS::Resource::DeleteChunks(), RIFF::List::DeleteSubChunk(), and RIFF::Chunk::GetParent().

Referenced by DLS::File::DeleteInstrument(), and gig::File::DeleteInstrument().

## DeleteRegion()

void DLS::Instrument::DeleteRegion | ( | Region * | pRegion | ) |

Definition at line 1517 of file DLS.cpp.

## GenerateDLSID() [1/2]

void Resource::GenerateDLSID | ( |  | ) |

inherited

Generates a new DLSID for the resource.

Definition at line 604 of file DLS.cpp.

References GenerateDLSID(), and pDLSID.

Referenced by gig::File::AddInstrument(), GenerateDLSID(), gig::Script::GenerateUuid(), and DLS::File::UpdateChunks().

## GenerateDLSID() [2/2]

void Resource::GenerateDLSID | ( | dlsid_t * | pDLSID | ) |

static inherited

Definition at line 611 of file DLS.cpp.

## GetArticulation()

Articulation * DLS::Articulator::GetArticulation | ( | size_t | pos | ) |

inherited

Returns Articulation at supplied pos position within the articulation list.

If supplied pos is out of bounds then `NULL` is returned.

Parameters

  pos | - position of sought Articulation in articulation list

Returns
  pointer address to requested articulation or `NULL` if pos is out of bounds

Definition at line 200 of file DLS.cpp.

## GetFirstArticulation()

Articulation * DLS::Articulator::GetFirstArticulation | ( |  | ) |

inherited

Returns the first Articulation in the list of articulations.

You have to call this method once before you can use GetNextArticulation().

Returns
  pointer address to first Articulation or NULL if there is none

See also
  GetNextArticulation()

Deprecated
  This method is not reentrant-safe, use GetArticulation() instead.

Definition at line 216 of file DLS.cpp.

## GetFirstRegion()

Region * DLS::Instrument::GetFirstRegion | ( |  | ) |

Returns the first Region of the instrument.

You have to call this method once before you use GetNextRegion().

Returns
  pointer address to first region or NULL if there is none

See also
  GetNextRegion()

Deprecated
  This method is not reentrant-safe, use GetRegionAt() instead.

Definition at line 1451 of file DLS.cpp.

## GetNextArticulation()

Articulation * DLS::Articulator::GetNextArticulation | ( |  | ) |

inherited

Returns the next Articulation from the list of articulations.

You have to call GetFirstArticulation() once before you can use this method. By calling this method multiple times it iterates through the available articulations.

Returns
  pointer address to the next Articulation or NULL if end reached

See also
  GetFirstArticulation()

Deprecated
  This method is not reentrant-safe, use GetArticulation() instead.

Definition at line 234 of file DLS.cpp.

## GetNextRegion()

Region * DLS::Instrument::GetNextRegion | ( |  | ) |

Returns the next Region of the instrument.

You have to call GetFirstRegion() once before you can use this method. By calling this method multiple times it iterates through the available Regions.

Returns
  pointer address to the next region or NULL if end reached

See also
  GetFirstRegion()

Deprecated
  This method is not reentrant-safe, use GetRegionAt() instead.

Definition at line 1468 of file DLS.cpp.

## GetParent() [1/2]

Resource * DLS::Resource::GetParent | ( |  | ) |

inline inherited

Definition at line 409 of file DLS.h.

## GetParent() [2/2]

const Resource * DLS::Resource::GetParent | ( |  | ) | const

inline inherited

Definition at line 410 of file DLS.h.

## GetRegionAt()

Region * DLS::Instrument::GetRegionAt | ( | size_t | pos | ) |

Returns Region at supplied pos position within the region list of this instrument.

If supplied pos is out of bounds then `NULL` is returned.

Parameters

  pos | - position of sought Region in region list

Returns
  pointer address to requested region or `NULL` if pos is out of bounds

See also
  CountRegions()

Definition at line 1435 of file DLS.cpp.

Referenced by CopyAssign().

## LoadArticulations()

void DLS::Articulator::LoadArticulations | ( |  | ) |

protected inherited

Definition at line 240 of file DLS.cpp.

## LoadRegions()

void DLS::Instrument::LoadRegions | ( |  | ) |

protected virtual

Definition at line 1474 of file DLS.cpp.

## UpdateChunks()

void DLS::Instrument::UpdateChunks | ( | progress_t * | pProgress | ) |

virtual

Apply Instrument with all its Regions to the respective RIFF chunks.

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

Parameters

  pProgress | - callback function for progress notification

Exceptions

  Exception | - on errors

Reimplemented from DLS::Resource.

Reimplemented in gig::Instrument.

Definition at line 1536 of file DLS.cpp.

References IsDrum, RIFF::Chunk::LoadChunkData(), MIDIBank, MIDIBankCoarse, MIDIBankFine, MIDIProgram, Regions, DLS::Articulator::UpdateChunks(), and DLS::Resource::UpdateChunks().

Referenced by gig::Instrument::UpdateChunks().

## Member Data Documentation

## ArticulationsIterator

ArticulationList::iterator DLS::Articulator::ArticulationsIterator

protected inherited

Definition at line 356 of file DLS.h.

## IsDrum

bool DLS::Instrument::IsDrum

Indicates if the Instrument is a drum type, as they differ in the synthesis model of DLS from melodic instruments.

Definition at line 526 of file DLS.h.

Referenced by Instrument(), and UpdateChunks().

## MIDIBank

uint16_t DLS::Instrument::MIDIBank

Reflects combination of MIDIBankCoarse and MIDIBankFine (bank 1 - bank 16384). Do not change this value, it will not be saved! Change MIDIBankCoarse and MIDIBankFine instead (we might change that in future).

Definition at line 527 of file DLS.h.

Referenced by Instrument(), and UpdateChunks().

## MIDIBankCoarse

uint8_t DLS::Instrument::MIDIBankCoarse

Reflects the MIDI Bank number for MIDI Control Change 0 (bank 1 - 128).

Definition at line 528 of file DLS.h.

Referenced by Instrument(), and UpdateChunks().

## MIDIBankFine

uint8_t DLS::Instrument::MIDIBankFine

Reflects the MIDI Bank number for MIDI Control Change 32 (bank 1 - 128).

Definition at line 529 of file DLS.h.

Referenced by Instrument(), and UpdateChunks().

## MIDIProgram

uint32_t DLS::Instrument::MIDIProgram

Specifies the MIDI Program Change Number this Instrument should be assigned to.

Definition at line 530 of file DLS.h.

Referenced by Instrument(), and UpdateChunks().

## pArticulations

ArticulationList* DLS::Articulator::pArticulations

protected inherited

Definition at line 355 of file DLS.h.

## pCkInstrument

RIFF::List* DLS::Instrument::pCkInstrument

protected

Definition at line 549 of file DLS.h.

## pDLSID

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 407 of file DLS.h.

Referenced by GenerateDLSID(), and Resource().

## pInfo

Info* DLS::Resource::pInfo

inherited

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

Definition at line 406 of file DLS.h.

Referenced by CopyAssign(), Resource(), gig::Sample::Sample(), and UpdateChunks().

## pParent

Resource* DLS::Resource::pParent

protected inherited

Definition at line 417 of file DLS.h.

## pParentList

RIFF::List* DLS::Articulator::pParentList

protected inherited

Definition at line 354 of file DLS.h.

## pRegions

RegionList* DLS::Instrument::pRegions

protected

Definition at line 550 of file DLS.h.

## pResourceList

RIFF::List* DLS::Resource::pResourceList

protected inherited

Definition at line 418 of file DLS.h.

## Regions

uint32_t DLS::Instrument::Regions

Reflects the number of Region defintions this Instrument has.

Definition at line 531 of file DLS.h.

Referenced by CopyAssign(), Instrument(), and UpdateChunks().

## RegionsIterator

RegionList::iterator DLS::Instrument::RegionsIterator

protected

Definition at line 551 of file DLS.h.

The documentation for this class was generated from the following files:

- DLS.h
- DLS.cpp