/[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 384 by schoenebeck, Thu Feb 17 02:22:26 2005 UTC revision 666 by persson, Sun Jun 19 15:18:59 2005 UTC
# Line 225  namespace gig { Line 225  namespace gig {
225          dimension_channelaftertouch = 0x83, ///< Channel Key Pressure          dimension_channelaftertouch = 0x83, ///< Channel Key Pressure
226          dimension_releasetrigger    = 0x84, ///< Special dimension for triggering samples on releasing a key.          dimension_releasetrigger    = 0x84, ///< Special dimension for triggering samples on releasing a key.
227          dimension_keyboard          = 0x85, ///< Dimension for keyswitching          dimension_keyboard          = 0x85, ///< Dimension for keyswitching
228            dimension_roundrobin        = 0x86, ///< Different samples triggered each time a note is played, dimension regions selected in sequence
229            dimension_random            = 0x87, ///< Different samples triggered each time a note is played, random order
230          dimension_modwheel          = 0x01, ///< Modulation Wheel (MIDI Controller 1)          dimension_modwheel          = 0x01, ///< Modulation Wheel (MIDI Controller 1)
231          dimension_breath            = 0x02, ///< Breath Controller (Coarse, MIDI Controller 2)          dimension_breath            = 0x02, ///< Breath Controller (Coarse, MIDI Controller 2)
232          dimension_foot              = 0x04, ///< Foot Pedal (Coarse, MIDI Controller 4)          dimension_foot              = 0x04, ///< Foot Pedal (Coarse, MIDI Controller 4)
# Line 307  namespace gig { Line 309  namespace gig {
309          unsigned long loop_cycles_left;  ///< How many times the loop has still to be passed, this value will be decremented with each loop cycle.          unsigned long loop_cycles_left;  ///< How many times the loop has still to be passed, this value will be decremented with each loop cycle.
310      };      };
311    
312        /**
313         * @brief Used for indicating the progress of a certain task.
314         *
315         * The function pointer argument has to be supplied with a valid
316         * function of the given signature which will then be called on
317         * progress changes. An equivalent progress_t structure will be passed
318         * back as argument to the callback function on each progress change.
319         * The factor field of the supplied progress_t structure will then
320         * reflect the current progress as value between 0.0 and 1.0. You might
321         * want to use the custom field for data needed in your callback
322         * function.
323         */
324        struct progress_t {
325            void (*callback)(progress_t*); ///< Callback function pointer which has to be assigned to a function for progress notification.
326            float factor;                  ///< Reflects current progress as value between 0.0 and 1.0.
327            void* custom;                  ///< This pointer can be used for arbitrary data.
328            float __range_min;             ///< Only for internal usage, do not modify!
329            float __range_max;             ///< Only for internal usage, do not modify!
330            progress_t();
331        };
332    
333      // just symbol prototyping      // just symbol prototyping
334      class File;      class File;
335      class Instrument;      class Instrument;
# Line 409  namespace gig { Line 432  namespace gig {
432              bool               SustainDefeat;                 ///< If <i>true</i>: Sustain pedal will not hold a note.              bool               SustainDefeat;                 ///< If <i>true</i>: Sustain pedal will not hold a note.
433              bool               MSDecode;                      ///< Gigastudio flag: defines if Mid Side Recordings should be decoded.              bool               MSDecode;                      ///< Gigastudio flag: defines if Mid Side Recordings should be decoded.
434              uint16_t           SampleStartOffset;             ///< Number of samples the sample start should be moved (0 - 2000).              uint16_t           SampleStartOffset;             ///< Number of samples the sample start should be moved (0 - 2000).
435                double             SampleAttenuation;             ///< Sample volume (calculated from DLS::Sampler::Gain)
436    
437              // derived attributes from DLS::Sampler              // derived attributes from DLS::Sampler
438              DLS::Sampler::UnityNote;              DLS::Sampler::UnityNote;
439              DLS::Sampler::FineTune;              DLS::Sampler::FineTune;
# Line 418  namespace gig { Line 443  namespace gig {
443    
444              // Methods              // Methods
445              double GetVelocityAttenuation(uint8_t MIDIKeyVelocity);              double GetVelocityAttenuation(uint8_t MIDIKeyVelocity);
446                double GetVelocityRelease(uint8_t MIDIKeyVelocity);
447    
448          protected:          protected:
449              DimensionRegion(RIFF::List* _3ewl);              DimensionRegion(RIFF::List* _3ewl);
450             ~DimensionRegion();             ~DimensionRegion();
# Line 456  namespace gig { Line 483  namespace gig {
483              static uint              Instances;                  ///< Number of DimensionRegion instances.              static uint              Instances;                  ///< Number of DimensionRegion instances.
484              static VelocityTableMap* pVelocityTables;            ///< Contains the tables corresponding to the various velocity parameters (VelocityResponseCurve and VelocityResponseDepth).              static VelocityTableMap* pVelocityTables;            ///< Contains the tables corresponding to the various velocity parameters (VelocityResponseCurve and VelocityResponseDepth).
485              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.
486                double*                  pVelocityReleaseTable;      ///< Points to the velocity table corresponding to the release velocity parameters of this DimensionRegion
487    
488              leverage_ctrl_t DecodeLeverageController(_lev_ctrl_t EncodedController);              leverage_ctrl_t DecodeLeverageController(_lev_ctrl_t EncodedController);
489                double* GetVelocityTable(curve_type_t curveType, uint8_t depth, uint8_t scaling);
490              double* CreateVelocityTable(curve_type_t curveType, uint8_t depth, uint8_t scaling);              double* CreateVelocityTable(curve_type_t curveType, uint8_t depth, uint8_t scaling);
491      };      };
492    
# Line 481  namespace gig { Line 510  namespace gig {
510              uint32_t       LoopFraction;      ///< The fractional value specifies a fraction of a sample at which to loop (only if Loops > 0). This allows a loop to be fine tuned at a resolution greater than one sample. A value of 0 means no fraction, a value of 0x80000000 means 1/2 of a sample length. 0xFFFFFFFF is the smallest fraction of a sample that can be represented.              uint32_t       LoopFraction;      ///< The fractional value specifies a fraction of a sample at which to loop (only if Loops > 0). This allows a loop to be fine tuned at a resolution greater than one sample. A value of 0 means no fraction, a value of 0x80000000 means 1/2 of a sample length. 0xFFFFFFFF is the smallest fraction of a sample that can be represented.
511              uint32_t       LoopPlayCount;     ///< Number of times the loop should be played (only if Loops > 0, a value of 0 = infinite).              uint32_t       LoopPlayCount;     ///< Number of times the loop should be played (only if Loops > 0, a value of 0 = infinite).
512              bool           Compressed;        ///< If the sample wave is compressed (probably just interesting for instrument and sample editors, as this library already handles the decompression in it's sample access methods anyway).              bool           Compressed;        ///< If the sample wave is compressed (probably just interesting for instrument and sample editors, as this library already handles the decompression in it's sample access methods anyway).
513                uint32_t       TruncatedBits;     ///< For 24-bit compressed samples only: number of bits truncated during compression (0, 4 or 6)
514                bool           Dithered;          ///< For 24-bit compressed samples only: if dithering was used during compression with bit reduction
515    
516              // own methods              // own methods
517              buffer_t      LoadSampleData();              buffer_t      LoadSampleData();
# Line 507  namespace gig { Line 538  namespace gig {
538              unsigned long        WorstCaseFrameSize;      ///< For compressed samples only: size (in bytes) of the largest possible sample frame.              unsigned long        WorstCaseFrameSize;      ///< For compressed samples only: size (in bytes) of the largest possible sample frame.
539              unsigned long        SamplesPerFrame;         ///< For compressed samples only: number of samples in a full sample frame.              unsigned long        SamplesPerFrame;         ///< For compressed samples only: number of samples in a full sample frame.
540              buffer_t             RAMCache;                ///< Buffers samples (already uncompressed) in RAM.              buffer_t             RAMCache;                ///< Buffers samples (already uncompressed) in RAM.
541                unsigned long        FileNo;                  ///< File number (> 0 when sample is stored in an extension file, 0 when it's in the gig)
542    
543              Sample(File* pFile, RIFF::List* waveList, unsigned long WavePoolOffset);              Sample(File* pFile, RIFF::List* waveList, unsigned long WavePoolOffset, unsigned long fileNo = 0);
544             ~Sample();             ~Sample();
545              /**              /**
546               * Swaps the order of the data words in the given memory area               * Swaps the order of the data words in the given memory area
# Line 616  namespace gig { Line 648  namespace gig {
648    
649              Region(Instrument* pInstrument, RIFF::List* rgnList);              Region(Instrument* pInstrument, RIFF::List* rgnList);
650              void LoadDimensionRegions(RIFF::List* rgn);              void LoadDimensionRegions(RIFF::List* rgn);
651              Sample* GetSampleFromWavePool(unsigned int WavePoolTableIndex);              Sample* GetSampleFromWavePool(unsigned int WavePoolTableIndex, progress_t* pProgress = NULL);
652             ~Region();             ~Region();
653              friend class Instrument;              friend class Instrument;
654      };      };
# Line 655  namespace gig { Line 687  namespace gig {
687              Region*   RegionKeyTable[128]; ///< fast lookup for the corresponding Region of a MIDI key              Region*   RegionKeyTable[128]; ///< fast lookup for the corresponding Region of a MIDI key
688              int       RegionIndex;              int       RegionIndex;
689    
690              Instrument(File* pFile, RIFF::List* insList);              Instrument(File* pFile, RIFF::List* insList, progress_t* pProgress = NULL);
691             ~Instrument();             ~Instrument();
692              friend class File;              friend class File;
693      };      };
# Line 675  namespace gig { Line 707  namespace gig {
707              DLS::Resource::GetParent;              DLS::Resource::GetParent;
708              // overridden  methods              // overridden  methods
709              File(RIFF::File* pRIFF);              File(RIFF::File* pRIFF);
710              Sample*     GetFirstSample();     ///< Returns a pointer to the first <i>Sample</i> object of the file, <i>NULL</i> otherwise.              Sample*     GetFirstSample(progress_t* pProgress = NULL); ///< Returns a pointer to the first <i>Sample</i> object of the file, <i>NULL</i> otherwise.
711              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.
712              Instrument* GetFirstInstrument(); ///< Returns a pointer to the first <i>Instrument</i> object of the file, <i>NULL</i> otherwise.              Instrument* GetFirstInstrument(); ///< Returns a pointer to the first <i>Instrument</i> object of the file, <i>NULL</i> otherwise.
713              Instrument* GetNextInstrument();  ///< Returns a pointer to the next <i>Instrument</i> object of the file, <i>NULL</i> otherwise.              Instrument* GetNextInstrument();  ///< Returns a pointer to the next <i>Instrument</i> object of the file, <i>NULL</i> otherwise.
714              Instrument* GetInstrument(uint index);              Instrument* GetInstrument(uint index, progress_t* pProgress = NULL);
715             ~File();             ~File();
716          protected:          protected:
717              typedef std::list<Sample*>     SampleList;              typedef std::list<Sample*>     SampleList;
# Line 690  namespace gig { Line 722  namespace gig {
722              InstrumentList*          pInstruments;              InstrumentList*          pInstruments;
723              InstrumentList::iterator InstrumentsIterator;              InstrumentList::iterator InstrumentsIterator;
724    
725              void LoadSamples();              void LoadSamples(progress_t* pProgress = NULL);
726              void LoadInstruments();              void LoadInstruments(progress_t* pProgress = NULL);
727              friend class Region;              friend class Region;
728    
729                std::list<RIFF::File*> ExtensionFiles;
730      };      };
731    
732      /** Will be thrown whenever a gig specific error occurs while trying to access a Gigasampler File. */      /** Will be thrown whenever a gig specific error occurs while trying to access a Gigasampler File. */
# Line 702  namespace gig { Line 736  namespace gig {
736              void PrintMessage();              void PrintMessage();
737      };      };
738    
739        String libraryName();
740        String libraryVersion();
741    
742  } // namespace gig  } // namespace gig
743    
744  #endif // __GIG_H__  #endif // __GIG_H__

Legend:
Removed from v.384  
changed lines
  Added in v.666

  ViewVC Help
Powered by ViewVC