/[svn]/libgig/trunk/src/gig.h
ViewVC logotype

Diff of /libgig/trunk/src/gig.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1199 by persson, Sun May 20 10:11:39 2007 UTC revision 1335 by schoenebeck, Sun Sep 9 21:22:58 2007 UTC
# Line 323  namespace gig { Line 323  namespace gig {
323          progress_t();          progress_t();
324      };      };
325    
326        /** @brief CRC-32 checksum implementation
327         *
328         * This class is used to calculate checksums of the sample data in
329         * a gig file. The checksums are stored in the 3crc chunk of the
330         * gig file and automatically updated when a sample is written
331         * with Sample::Write().
332         */
333      class CRC {      class CRC {
334      private:      private:
335          uint32_t value;          uint32_t value;
# Line 463  namespace gig { Line 470  namespace gig {
470              double GetVelocityAttenuation(uint8_t MIDIKeyVelocity);              double GetVelocityAttenuation(uint8_t MIDIKeyVelocity);
471              double GetVelocityRelease(uint8_t MIDIKeyVelocity);              double GetVelocityRelease(uint8_t MIDIKeyVelocity);
472              double GetVelocityCutoff(uint8_t MIDIKeyVelocity);              double GetVelocityCutoff(uint8_t MIDIKeyVelocity);
473                Region* GetParent() const;
474              // derived methods              // derived methods
475              DLS::Sampler::AddSampleLoop;              DLS::Sampler::AddSampleLoop;
476              DLS::Sampler::DeleteSampleLoop;              DLS::Sampler::DeleteSampleLoop;
# Line 470  namespace gig { Line 478  namespace gig {
478              virtual void UpdateChunks();              virtual void UpdateChunks();
479          protected:          protected:
480              uint8_t* VelocityTable; ///< For velocity dimensions with custom defined zone ranges only: used for fast converting from velocity MIDI value to dimension bit number.              uint8_t* VelocityTable; ///< For velocity dimensions with custom defined zone ranges only: used for fast converting from velocity MIDI value to dimension bit number.
481              DimensionRegion(RIFF::List* _3ewl);              DimensionRegion(Region* pParent, RIFF::List* _3ewl);
482                DimensionRegion(RIFF::List* _3ewl, const DimensionRegion& src);
483             ~DimensionRegion();             ~DimensionRegion();
484              friend class Region;              friend class Region;
485          private:          private:
# Line 509  namespace gig { Line 518  namespace gig {
518              double*                  pVelocityAttenuationTable;  ///< Points to the velocity table corresponding to the velocity parameters of this DimensionRegion.              double*                  pVelocityAttenuationTable;  ///< Points to the velocity table corresponding to the velocity parameters of this DimensionRegion.
519              double*                  pVelocityReleaseTable;      ///< Points to the velocity table corresponding to the release velocity parameters of this DimensionRegion              double*                  pVelocityReleaseTable;      ///< Points to the velocity table corresponding to the release velocity parameters of this DimensionRegion
520              double*                  pVelocityCutoffTable;       ///< Points to the velocity table corresponding to the filter velocity parameters of this DimensionRegion              double*                  pVelocityCutoffTable;       ///< Points to the velocity table corresponding to the filter velocity parameters of this DimensionRegion
521                Region*                  pRegion;
522    
523              leverage_ctrl_t DecodeLeverageController(_lev_ctrl_t EncodedController);              leverage_ctrl_t DecodeLeverageController(_lev_ctrl_t EncodedController);
524              _lev_ctrl_t     EncodeLeverageController(leverage_ctrl_t DecodedController);              _lev_ctrl_t     EncodeLeverageController(leverage_ctrl_t DecodedController);
# Line 585  namespace gig { Line 595  namespace gig {
595              unsigned long        FileNo;                  ///< File number (> 0 when sample is stored in an extension file, 0 when it's in the gig)              unsigned long        FileNo;                  ///< File number (> 0 when sample is stored in an extension file, 0 when it's in the gig)
596              RIFF::Chunk*         pCk3gix;              RIFF::Chunk*         pCk3gix;
597              RIFF::Chunk*         pCkSmpl;              RIFF::Chunk*         pCkSmpl;
598              CRC                  crc;              CRC                  crc;                     ///< CRC-32 checksum of the raw sample data
599    
600              Sample(File* pFile, RIFF::List* waveList, unsigned long WavePoolOffset, unsigned long fileNo = 0);              Sample(File* pFile, RIFF::List* waveList, unsigned long WavePoolOffset, unsigned long fileNo = 0);
601             ~Sample();             ~Sample();
# Line 628  namespace gig { Line 638  namespace gig {
638              DimensionRegion*        pDimensionRegions[256];   ///< Pointer array to the 32 (gig2) or 256 (gig3) possible dimension regions (reflects NULL for dimension regions not in use). Avoid to access the array directly and better use GetDimensionRegionByValue() instead, but of course in some cases it makes sense to use the array (e.g. iterating through all DimensionRegions). Use AddDimension() and DeleteDimension() to create a new dimension or delete an existing one (which will create or delete the respective dimension region(s) automatically).              DimensionRegion*        pDimensionRegions[256];   ///< Pointer array to the 32 (gig2) or 256 (gig3) possible dimension regions (reflects NULL for dimension regions not in use). Avoid to access the array directly and better use GetDimensionRegionByValue() instead, but of course in some cases it makes sense to use the array (e.g. iterating through all DimensionRegions). Use AddDimension() and DeleteDimension() to create a new dimension or delete an existing one (which will create or delete the respective dimension region(s) automatically).
639              unsigned int            Layers;                   ///< Amount of defined layers (1 - 32). A value of 1 actually means no layering, a value > 1 means there is Layer dimension. The same information can of course also be obtained by accessing pDimensionDefinitions. Do not alter this value!              unsigned int            Layers;                   ///< Amount of defined layers (1 - 32). A value of 1 actually means no layering, a value > 1 means there is Layer dimension. The same information can of course also be obtained by accessing pDimensionDefinitions. Do not alter this value!
640    
641                // own methods
642              DimensionRegion* GetDimensionRegionByValue(const uint DimValues[8]);              DimensionRegion* GetDimensionRegionByValue(const uint DimValues[8]);
643              DimensionRegion* GetDimensionRegionByBit(const uint8_t DimBits[8]);              DimensionRegion* GetDimensionRegionByBit(const uint8_t DimBits[8]);
644              Sample*          GetSample();              Sample*          GetSample();
645              void             AddDimension(dimension_def_t* pDimDef);              void             AddDimension(dimension_def_t* pDimDef);
646              void             DeleteDimension(dimension_def_t* pDimDef);              void             DeleteDimension(dimension_def_t* pDimDef);
647                // overridden methods
648                virtual void     SetKeyRange(uint16_t Low, uint16_t High);
649              virtual void     UpdateChunks();              virtual void     UpdateChunks();
650          protected:          protected:
651              Region(Instrument* pInstrument, RIFF::List* rgnList);              Region(Instrument* pInstrument, RIFF::List* rgnList);
# Line 667  namespace gig { Line 680  namespace gig {
680    
681              // derived methods from DLS::Resource              // derived methods from DLS::Resource
682              DLS::Resource::GetParent;              DLS::Resource::GetParent;
             // derived methods from DLS::Instrument  
             DLS::Instrument::MoveRegion;  
683              // overridden methods              // overridden methods
684              Region*   GetFirstRegion();              Region*   GetFirstRegion();
685              Region*   GetNextRegion();              Region*   GetNextRegion();
# Line 684  namespace gig { Line 695  namespace gig {
695             ~Instrument();             ~Instrument();
696              void UpdateRegionKeyTable();              void UpdateRegionKeyTable();
697              friend class File;              friend class File;
698                friend class Region; // so Region can call UpdateRegionKeyTable()
699      };      };
700    
701      /** @brief Group of Gigasampler objects      /** @brief Group of Gigasampler objects

Legend:
Removed from v.1199  
changed lines
  Added in v.1335

  ViewVC Help
Powered by ViewVC