gig::Instrument Class Reference

Provides all neccessary information for the synthesis of an Instrument. More...

#include <gig.h>

Inheritance diagram for gig::Instrument:

DLS::Instrument DLS::Resource DLS::Articulator

List of all members.

Public Member Functions

RegionGetFirstRegion ()
 Returns the first Region of the instrument.
RegionGetNextRegion ()
 Returns the next Region of the instrument.
RegionAddRegion ()
void DeleteRegion (Region *pRegion)
virtual void UpdateChunks ()
 Apply Instrument with all its Regions to the respective RIFF chunks.
RegionGetRegion (unsigned int Key)
 Returns the appropriate Region for a triggered note.

Public Attributes

int32_t Attenuation
 in dB
uint16_t EffectSend
int16_t FineTune
 in cents
uint16_t PitchbendRange
 Number of semitones pitchbend controller can pitch (default is 2).
bool PianoReleaseMode
range_t DimensionKeyRange
 0-127 (where 0 means C1 and 127 means G9)

Protected Types

typedef std::list< Region * > RegionList
typedef std::list< Articulation * > ArticulationList

Protected Member Functions

 Instrument (File *pFile, RIFF::List *insList, progress_t *pProgress=NULL)
 ~Instrument ()
 Destructor.
void UpdateRegionKeyTable ()
void DeleteRegion (Region *pRegion)
virtual void LoadRegions ()
Resource * GetParent ()
void GenerateDLSID ()
 Generates a new DLSID for the resource.
Articulation * GetFirstArticulation ()
Articulation * GetNextArticulation ()
void LoadArticulations ()

Protected Attributes

RegionRegionKeyTable [128]
 fast lookup for the corresponding Region of a MIDI key
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.
RIFF::ListpCkInstrument
RegionListpRegions
RegionList::iterator RegionsIterator
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.
Resource * pParent
RIFF::ListpResourceList
RIFF::ListpParentList
ArticulationListpArticulations
ArticulationList::iterator ArticulationsIterator

Friends

class File
class Region


Detailed Description

Provides all neccessary information for the synthesis of an Instrument.

Definition at line 643 of file gig.h.


Member Typedef Documentation

typedef std::list<Region*> DLS::Instrument::RegionList [protected, inherited]

Definition at line 462 of file DLS.h.

typedef std::list<Articulation*> DLS::Articulator::ArticulationList [protected, inherited]

Definition at line 290 of file DLS.h.


Constructor & Destructor Documentation

gig::Instrument::Instrument ( File pFile,
RIFF::List insList,
progress_t pProgress = NULL 
) [protected]

Definition at line 2930 of file gig.cpp.

References Attenuation, CHUNK_ID_3EWG, CHUNK_ID_INAM, CHUNK_ID_ISFT, DimensionKeyRange, EffectSend, FineTune, gig::File::GetAutoLoad(), RIFF::List::GetFirstSubList(), RIFF::List::GetListType(), RIFF::List::GetNextSubList(), RIFF::List::GetSubChunk(), RIFF::List::GetSubList(), gig::range_t::high, LIST_TYPE_LART, LIST_TYPE_LRGN, LIST_TYPE_RGN, gig::range_t::low, PianoReleaseMode, DLS::Resource::pInfo, PitchbendRange, DLS::Instrument::pRegions, RIFF::Chunk::ReadInt16(), RIFF::Chunk::ReadInt32(), RIFF::Chunk::ReadUint16(), RIFF::Chunk::ReadUint8(), Region, RegionKeyTable, DLS::Instrument::Regions, and UpdateRegionKeyTable().

gig::Instrument::~Instrument (  )  [protected, virtual]

Destructor.

Removes RIFF chunks associated with this Instrument and frees all memory occupied by this instrument.

Reimplemented from DLS::Instrument.

Definition at line 2996 of file gig.cpp.


Member Function Documentation

Region * gig::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()

Reimplemented from DLS::Instrument.

Definition at line 3070 of file gig.cpp.

References DLS::Instrument::pRegions, and DLS::Instrument::RegionsIterator.

Region * gig::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()

Reimplemented from DLS::Instrument.

Definition at line 3084 of file gig.cpp.

References DLS::Instrument::pRegions, and DLS::Instrument::RegionsIterator.

Region * gig::Instrument::AddRegion (  ) 

Reimplemented from DLS::Instrument.

Definition at line 3090 of file gig.cpp.

References RIFF::List::AddSubList(), RIFF::List::GetSubList(), LIST_TYPE_LRGN, LIST_TYPE_RGN, DLS::Instrument::pCkInstrument, DLS::Instrument::pRegions, Region, DLS::Instrument::Regions, and UpdateRegionKeyTable().

void gig::Instrument::DeleteRegion ( Region pRegion  ) 

Definition at line 3104 of file gig.cpp.

References DLS::Instrument::DeleteRegion(), DLS::Instrument::pRegions, and UpdateRegionKeyTable().

void gig::Instrument::UpdateChunks (  )  [virtual]

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

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

Usually there is absolutely no need to call this method explicitly. It will be called automatically when File::Save() was called.

Exceptions:
gig::Exception if samples cannot be dereferenced

Reimplemented from DLS::Instrument.

Definition at line 3008 of file gig.cpp.

References RIFF::List::AddSubChunk(), RIFF::List::AddSubList(), Attenuation, CHUNK_ID_3EWG, DimensionKeyRange, EffectSend, FineTune, DLS::Resource::GetParent(), RIFF::List::GetSubChunk(), RIFF::List::GetSubList(), gig::range_t::high, LIST_TYPE_LART, RIFF::Chunk::LoadChunkData(), gig::range_t::low, DLS::Instrument::pCkInstrument, PianoReleaseMode, PitchbendRange, DLS::Instrument::pRegions, DLS::File::pVersion, and DLS::Instrument::UpdateChunks().

Region * gig::Instrument::GetRegion ( unsigned int  Key  ) 

Returns the appropriate Region for a triggered note.

Parameters:
Key MIDI Key number of triggered note / key (0 - 127)
Returns:
pointer adress to the appropriate Region or NULL if there there is no Region defined for the given Key

Definition at line 3052 of file gig.cpp.

References DLS::Instrument::pRegions, and RegionKeyTable.

void gig::Instrument::UpdateRegionKeyTable (  )  [protected]

Definition at line 2984 of file gig.cpp.

References DLS::Region::KeyRange, gig::range_t::low, DLS::Instrument::pRegions, and RegionKeyTable.

Referenced by AddRegion(), DeleteRegion(), and Instrument().

void DLS::Instrument::DeleteRegion ( Region pRegion  )  [inherited]

Definition at line 1119 of file DLS.cpp.

References DLS::Instrument::pRegions, and DLS::Instrument::Regions.

Referenced by DeleteRegion().

void DLS::Instrument::LoadRegions (  )  [protected, virtual, inherited]

Definition at line 1084 of file DLS.cpp.

References RIFF::List::GetFirstSubList(), RIFF::List::GetListType(), RIFF::List::GetNextSubList(), RIFF::List::GetSubList(), LIST_TYPE_LRGN, LIST_TYPE_RGN, LIST_TYPE_RGN2, DLS::Instrument::pCkInstrument, DLS::Instrument::pRegions, and DLS::Instrument::Region.

Referenced by DLS::Instrument::AddRegion(), DLS::Instrument::GetFirstRegion(), and DLS::Region::SetKeyRange().

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

Definition at line 344 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(), 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 449 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().

Articulation * DLS::Articulator::GetFirstArticulation (  )  [inherited]

Definition at line 173 of file DLS.cpp.

References DLS::Articulator::ArticulationsIterator, DLS::Articulator::LoadArticulations(), and DLS::Articulator::pArticulations.

Articulation * DLS::Articulator::GetNextArticulation (  )  [inherited]

Definition at line 180 of file DLS.cpp.

References DLS::Articulator::ArticulationsIterator, and DLS::Articulator::pArticulations.

void DLS::Articulator::LoadArticulations (  )  [protected, inherited]

Definition at line 186 of file DLS.cpp.

References CHUNK_ID_ART2, CHUNK_ID_ARTL, RIFF::Chunk::GetChunkID(), RIFF::List::GetFirstSubChunk(), RIFF::List::GetListType(), RIFF::List::GetNextSubChunk(), RIFF::List::GetSubList(), LIST_TYPE_LAR2, LIST_TYPE_LART, DLS::Articulator::pArticulations, and DLS::Articulator::pParentList.

Referenced by DLS::Articulator::GetFirstArticulation().


Friends And Related Function Documentation

friend class File [friend]

Reimplemented from DLS::Instrument.

Definition at line 680 of file gig.h.

friend class Region [friend]

Reimplemented from DLS::Instrument.

Definition at line 681 of file gig.h.

Referenced by AddRegion(), and Instrument().


Member Data Documentation

int32_t gig::Instrument::Attenuation

in dB

Definition at line 656 of file gig.h.

Referenced by Instrument(), and UpdateChunks().

uint16_t gig::Instrument::EffectSend

Definition at line 657 of file gig.h.

Referenced by Instrument(), and UpdateChunks().

int16_t gig::Instrument::FineTune

in cents

Definition at line 658 of file gig.h.

Referenced by Instrument(), and UpdateChunks().

uint16_t gig::Instrument::PitchbendRange

Number of semitones pitchbend controller can pitch (default is 2).

Definition at line 659 of file gig.h.

Referenced by Instrument(), and UpdateChunks().

bool gig::Instrument::PianoReleaseMode

Definition at line 660 of file gig.h.

Referenced by Instrument(), and UpdateChunks().

range_t gig::Instrument::DimensionKeyRange

0-127 (where 0 means C1 and 127 means G9)

Definition at line 661 of file gig.h.

Referenced by Instrument(), and UpdateChunks().

Region* gig::Instrument::RegionKeyTable[128] [protected]

fast lookup for the corresponding Region of a MIDI key

Definition at line 675 of file gig.h.

Referenced by GetRegion(), Instrument(), and UpdateRegionKeyTable().

bool DLS::Instrument::IsDrum [inherited]

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

Definition at line 449 of file DLS.h.

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

uint16_t DLS::Instrument::MIDIBank [inherited]

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

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

uint8_t DLS::Instrument::MIDIBankCoarse [inherited]

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

Definition at line 451 of file DLS.h.

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

uint8_t DLS::Instrument::MIDIBankFine [inherited]

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

Definition at line 452 of file DLS.h.

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

uint32_t DLS::Instrument::MIDIProgram [inherited]

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

Definition at line 453 of file DLS.h.

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

uint32_t DLS::Instrument::Regions [inherited]

Reflects the number of Region defintions this Instrument has.

Definition at line 454 of file DLS.h.

Referenced by AddRegion(), DLS::Instrument::AddRegion(), DLS::Instrument::DeleteRegion(), Instrument(), DLS::Instrument::Instrument(), and DLS::Instrument::UpdateChunks().

RIFF::List* DLS::Instrument::pCkInstrument [protected, inherited]

Definition at line 468 of file DLS.h.

Referenced by AddRegion(), DLS::Instrument::AddRegion(), DLS::Instrument::Instrument(), DLS::Instrument::LoadRegions(), UpdateChunks(), DLS::Instrument::UpdateChunks(), and DLS::Instrument::~Instrument().

RegionList* DLS::Instrument::pRegions [protected, inherited]

Definition at line 469 of file DLS.h.

Referenced by AddRegion(), DLS::Instrument::AddRegion(), DeleteRegion(), DLS::Instrument::DeleteRegion(), GetFirstRegion(), DLS::Instrument::GetFirstRegion(), GetNextRegion(), DLS::Instrument::GetNextRegion(), GetRegion(), Instrument(), DLS::Instrument::Instrument(), DLS::Instrument::LoadRegions(), DLS::Region::SetKeyRange(), UpdateChunks(), DLS::Instrument::UpdateChunks(), UpdateRegionKeyTable(), and DLS::Instrument::~Instrument().

RegionList::iterator DLS::Instrument::RegionsIterator [protected, inherited]

Definition at line 470 of file DLS.h.

Referenced by GetFirstRegion(), DLS::Instrument::GetFirstRegion(), GetNextRegion(), and DLS::Instrument::GetNextRegion().

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

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

Definition at line 341 of file DLS.h.

Referenced by gig::File::AddInstrument(), gig::File::File(), 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 342 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 348 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 349 of file DLS.h.

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

RIFF::List* DLS::Articulator::pParentList [protected, inherited]

Definition at line 291 of file DLS.h.

Referenced by DLS::Articulator::Articulator(), gig::Region::DeleteDimension(), and DLS::Articulator::LoadArticulations().

ArticulationList* DLS::Articulator::pArticulations [protected, inherited]

Definition at line 292 of file DLS.h.

Referenced by DLS::Articulator::Articulator(), DLS::Articulator::GetFirstArticulation(), DLS::Articulator::GetNextArticulation(), DLS::Articulator::LoadArticulations(), DLS::Articulator::UpdateChunks(), and DLS::Articulator::~Articulator().

ArticulationList::iterator DLS::Articulator::ArticulationsIterator [protected, inherited]

Definition at line 293 of file DLS.h.

Referenced by DLS::Articulator::GetFirstArticulation(), and DLS::Articulator::GetNextArticulation().


The documentation for this class was generated from the following files:
Generated on Sun Dec 9 00:12:45 2007 for libgig by  doxygen 1.5.4