/[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 2913 by schoenebeck, Tue May 17 15:19:33 2016 UTC revision 3138 by schoenebeck, Wed May 3 14:41:58 2017 UTC
# Line 2  Line 2 
2   *                                                                         *   *                                                                         *
3   *   libgig - C++ cross-platform Gigasampler format file access library    *   *   libgig - C++ cross-platform Gigasampler format file access library    *
4   *                                                                         *   *                                                                         *
5   *   Copyright (C) 2003-2016 by Christian Schoenebeck                      *   *   Copyright (C) 2003-2017 by Christian Schoenebeck                      *
6   *                              <cuse@users.sourceforge.net>               *   *                              <cuse@users.sourceforge.net>               *
7   *                                                                         *   *                                                                         *
8   *   This library is free software; you can redistribute it and/or modify  *   *   This library is free software; you can redistribute it and/or modify  *
# Line 25  Line 25 
25  #define __GIG_H__  #define __GIG_H__
26    
27  #include "DLS.h"  #include "DLS.h"
28    #include "Serialization.h"
29  #include <vector>  #include <vector>
30    
31  #if WORDS_BIGENDIAN  #if WORDS_BIGENDIAN
# Line 191  namespace gig { Line 192  namespace gig {
192    
193          type_t type;              ///< Controller type          type_t type;              ///< Controller type
194          uint   controller_number; ///< MIDI controller number if this controller is a control change controller, 0 otherwise          uint   controller_number; ///< MIDI controller number if this controller is a control change controller, 0 otherwise
195    
196            void serialize(Serialization::Archive* archive);
197      };      };
198    
199      /**      /**
# Line 304  namespace gig { Line 307  namespace gig {
307          uint8_t out_start;  ///< Start position of fade out.          uint8_t out_start;  ///< Start position of fade out.
308          uint8_t out_end;    ///< End postition of fade out.          uint8_t out_end;    ///< End postition of fade out.
309          #endif // WORDS_BIGENDIAN          #endif // WORDS_BIGENDIAN
310    
311            void serialize(Serialization::Archive* archive);
312      };      };
313    
314      /** Reflects the current playback state for a sample. */      /** Reflects the current playback state for a sample. */
# Line 486  namespace gig { Line 491  namespace gig {
491              DimensionRegion(RIFF::List* _3ewl, const DimensionRegion& src);              DimensionRegion(RIFF::List* _3ewl, const DimensionRegion& src);
492             ~DimensionRegion();             ~DimensionRegion();
493              void CopyAssign(const DimensionRegion* orig, const std::map<Sample*,Sample*>* mSamples);              void CopyAssign(const DimensionRegion* orig, const std::map<Sample*,Sample*>* mSamples);
494                void serialize(Serialization::Archive* archive);
495              friend class Region;              friend class Region;
496                friend class Serialization::Archive;
497          private:          private:
498              typedef enum { ///< Used to decode attenuation, EG1 and EG2 controller              typedef enum { ///< Used to decode attenuation, EG1 and EG2 controller
499                  // official leverage controllers as they were defined in the original Gigasampler/GigaStudio format:                  // official leverage controllers as they were defined in the original Gigasampler/GigaStudio format:
# Line 589  namespace gig { Line 596  namespace gig {
596              } _lev_ctrl_t;              } _lev_ctrl_t;
597              typedef std::map<uint32_t, double*> VelocityTableMap;              typedef std::map<uint32_t, double*> VelocityTableMap;
598    
599              static uint              Instances;                  ///< Number of DimensionRegion instances.              static size_t            Instances;                  ///< Number of DimensionRegion instances.
600              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).
601              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.
602              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
# Line 661  namespace gig { Line 668  namespace gig {
668              static void     DestroyDecompressionBuffer(buffer_t& DecompressionBuffer);              static void     DestroyDecompressionBuffer(buffer_t& DecompressionBuffer);
669              // overridden methods              // overridden methods
670              void          ReleaseSampleData();              void          ReleaseSampleData();
671              void          Resize(int iNewSize);              void          Resize(file_offset_t NewSize);
672              file_offset_t SetPos(file_offset_t SampleCount, RIFF::stream_whence_t Whence = RIFF::stream_start);              file_offset_t SetPos(file_offset_t SampleCount, RIFF::stream_whence_t Whence = RIFF::stream_start);
673              file_offset_t GetPos() const;              file_offset_t GetPos() const;
674              file_offset_t Read(void* pBuffer, file_offset_t SampleCount, buffer_t* pExternalDecompressionBuffer = NULL);              file_offset_t Read(void* pBuffer, file_offset_t SampleCount, buffer_t* pExternalDecompressionBuffer = NULL);
# Line 671  namespace gig { Line 678  namespace gig {
678              virtual void  UpdateChunks(progress_t* pProgress);              virtual void  UpdateChunks(progress_t* pProgress);
679              void CopyAssignMeta(const Sample* orig);              void CopyAssignMeta(const Sample* orig);
680              void CopyAssignWave(const Sample* orig);              void CopyAssignWave(const Sample* orig);
681                uint32_t GetWaveDataCRC32Checksum();
682                bool VerifyWaveData(uint32_t* pActually = NULL);
683          protected:          protected:
684              static unsigned int  Instances;               ///< Number of instances of class Sample.              static size_t        Instances;               ///< Number of instances of class Sample.
685              static buffer_t      InternalDecompressionBuffer; ///< Buffer used for decompression as well as for truncation of 24 Bit -> 16 Bit samples.              static buffer_t      InternalDecompressionBuffer; ///< Buffer used for decompression as well as for truncation of 24 Bit -> 16 Bit samples.
686              Group*               pGroup;                  ///< pointer to the Group this sample belongs to (always not-NULL)              Group*               pGroup;                  ///< pointer to the Group this sample belongs to (always not-NULL)
687              file_offset_t        FrameOffset;             ///< Current offset (sample points) in current sample frame (for decompression only).              file_offset_t        FrameOffset;             ///< Current offset (sample points) in current sample frame (for decompression only).
# Line 685  namespace gig { Line 694  namespace gig {
694              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)
695              RIFF::Chunk*         pCk3gix;              RIFF::Chunk*         pCk3gix;
696              RIFF::Chunk*         pCkSmpl;              RIFF::Chunk*         pCkSmpl;
697              uint32_t             crc;                     ///< CRC-32 checksum of the raw sample data              uint32_t             crc;                     ///< Reflects CRC-32 checksum of the raw sample data at the last time when the sample's raw wave form data has been modified consciously by the user by calling Write().
698    
699              Sample(File* pFile, RIFF::List* waveList, file_offset_t WavePoolOffset, unsigned long fileNo = 0);              Sample(File* pFile, RIFF::List* waveList, file_offset_t WavePoolOffset, unsigned long fileNo = 0, int index = -1);
700             ~Sample();             ~Sample();
701                uint32_t CalculateWaveDataChecksum();
702    
703              // Guess size (in bytes) of a compressed sample              // Guess size (in bytes) of a compressed sample
704              inline file_offset_t GuessSize(file_offset_t samples) {              inline file_offset_t GuessSize(file_offset_t samples) {
# Line 1011  namespace gig { Line 1021  namespace gig {
1021              void   SetScriptAsText(const String& text);              void   SetScriptAsText(const String& text);
1022              void   SetGroup(ScriptGroup* pGroup);              void   SetGroup(ScriptGroup* pGroup);
1023              ScriptGroup* GetGroup() const;              ScriptGroup* GetGroup() const;
1024                void   CopyAssign(const Script* orig);
1025          protected:          protected:
1026              Script(ScriptGroup* group, RIFF::Chunk* ckScri);              Script(ScriptGroup* group, RIFF::Chunk* ckScri);
1027              virtual ~Script();              virtual ~Script();
# Line 1267  namespace gig { Line 1278  namespace gig {
1278              virtual void LoadInstruments(progress_t* pProgress);              virtual void LoadInstruments(progress_t* pProgress);
1279              virtual void LoadScriptGroups();              virtual void LoadScriptGroups();
1280              void SetSampleChecksum(Sample* pSample, uint32_t crc);              void SetSampleChecksum(Sample* pSample, uint32_t crc);
1281                uint32_t GetSampleChecksum(Sample* pSample);
1282                uint32_t GetSampleChecksumByIndex(int index);
1283                bool VerifySampleChecksumTable();
1284                bool RebuildSampleChecksumTable();
1285                int  GetWaveTableIndexOf(gig::Sample* pSample);
1286              friend class Region;              friend class Region;
1287              friend class Sample;              friend class Sample;
1288              friend class Instrument;              friend class Instrument;

Legend:
Removed from v.2913  
changed lines
  Added in v.3138

  ViewVC Help
Powered by ViewVC