/[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 1381 by schoenebeck, Thu Oct 4 18:57:10 2007 UTC revision 2274 by schoenebeck, Mon Sep 19 21:41:34 2011 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-2007 by Christian Schoenebeck                      *   *   Copyright (C) 2003-2010 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 31  Line 31 
31  # define LIST_TYPE_3EWL 0x3365776C  # define LIST_TYPE_3EWL 0x3365776C
32  # define LIST_TYPE_3GRI 0x33677269  # define LIST_TYPE_3GRI 0x33677269
33  # define LIST_TYPE_3GNL 0x33676E6C  # define LIST_TYPE_3GNL 0x33676E6C
 # define CHUNK_ID_SMPL  0x736D706C  
34  # define CHUNK_ID_3GIX  0x33676978  # define CHUNK_ID_3GIX  0x33676978
35  # define CHUNK_ID_3EWA  0x33657761  # define CHUNK_ID_3EWA  0x33657761
36  # define CHUNK_ID_3LNK  0x336C6E6B  # define CHUNK_ID_3LNK  0x336C6E6B
# Line 45  Line 44 
44  # define LIST_TYPE_3EWL 0x6C776533  # define LIST_TYPE_3EWL 0x6C776533
45  # define LIST_TYPE_3GRI 0x69726733  # define LIST_TYPE_3GRI 0x69726733
46  # define LIST_TYPE_3GNL 0x6C6E6733  # define LIST_TYPE_3GNL 0x6C6E6733
 # define CHUNK_ID_SMPL  0x6C706D73  
47  # define CHUNK_ID_3GIX  0x78696733  # define CHUNK_ID_3GIX  0x78696733
48  # define CHUNK_ID_3EWA  0x61776533  # define CHUNK_ID_3EWA  0x61776533
49  # define CHUNK_ID_3LNK  0x6B6E6C33  # define CHUNK_ID_3LNK  0x6B6E6C33
# Line 639  namespace gig { Line 637  namespace gig {
637              friend class Instrument;              friend class Instrument;
638      };      };
639    
640        /** Abstract base class for all MIDI rules. */
641        class MidiRule {
642            public:
643                virtual ~MidiRule() { }
644        };
645    
646        /** MIDI rule for triggering notes by control change events. */
647        class MidiRuleCtrlTrigger : public MidiRule {
648            public:
649                uint8_t ControllerNumber;   ///< MIDI controller number.
650                uint8_t Triggers;           ///< Number of triggers.
651                struct trigger_t {
652                    uint8_t TriggerPoint;   ///< The CC value to pass for the note to be triggered.
653                    bool    Descending;     ///< If the change in CC value should be downwards.
654                    uint8_t VelSensitivity; ///< How sensitive the velocity should be to the speed of the controller change.
655                    uint8_t Key;            ///< Key to trigger.
656                    bool    NoteOff;        ///< If a note off should be triggered instead of a note on.
657                    uint8_t Velocity;       ///< Velocity of the note to trigger. 255 means that velocity should depend on the speed of the controller change.
658                    bool    OverridePedal;  ///< If a note off should be triggered even if the sustain pedal is down.
659                } pTriggers[32];
660    
661            protected:
662                MidiRuleCtrlTrigger(RIFF::Chunk* _3ewg);
663                friend class Instrument;
664        };
665    
666      /** Provides all neccessary information for the synthesis of an <i>Instrument</i>. */      /** Provides all neccessary information for the synthesis of an <i>Instrument</i>. */
667      class Instrument : protected DLS::Instrument {      class Instrument : protected DLS::Instrument {
668          public:          public:
# Line 671  namespace gig { Line 695  namespace gig {
695              virtual void UpdateChunks();              virtual void UpdateChunks();
696              // own methods              // own methods
697              Region*   GetRegion(unsigned int Key);              Region*   GetRegion(unsigned int Key);
698                MidiRule* GetMidiRule(int i);
699          protected:          protected:
700              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
701    
# Line 679  namespace gig { Line 704  namespace gig {
704              void UpdateRegionKeyTable();              void UpdateRegionKeyTable();
705              friend class File;              friend class File;
706              friend class Region; // so Region can call UpdateRegionKeyTable()              friend class Region; // so Region can call UpdateRegionKeyTable()
707            private:
708                MidiRule** pMidiRules;
709      };      };
710    
711      /** @brief Group of Gigasampler objects      /** @brief Group of Gigasampler objects
# Line 731  namespace gig { Line 758  namespace gig {
758              DLS::Resource::GetParent;              DLS::Resource::GetParent;
759              // derived methods from DLS::File              // derived methods from DLS::File
760              DLS::File::Save;              DLS::File::Save;
761                DLS::File::GetFileName;
762              // overridden  methods              // overridden  methods
763              File();              File();
764              File(RIFF::File* pRIFF);              File(RIFF::File* pRIFF);
# Line 749  namespace gig { Line 777  namespace gig {
777              Group*      AddGroup();              Group*      AddGroup();
778              void        DeleteGroup(Group* pGroup);              void        DeleteGroup(Group* pGroup);
779              void        DeleteGroupOnly(Group* pGroup);              void        DeleteGroupOnly(Group* pGroup);
780                void        SetAutoLoad(bool b);
781                bool        GetAutoLoad();
782              virtual    ~File();              virtual    ~File();
783              virtual void UpdateChunks();              virtual void UpdateChunks();
784          protected:          protected:
# Line 764  namespace gig { Line 794  namespace gig {
794              friend class Sample;              friend class Sample;
795              friend class Group; // so Group can access protected member pRIFF              friend class Group; // so Group can access protected member pRIFF
796          private:          private:
             static const DLS::Info::FixedStringLength FixedStringLengths[];  
797              std::list<Group*>*          pGroups;              std::list<Group*>*          pGroups;
798              std::list<Group*>::iterator GroupsIterator;              std::list<Group*>::iterator GroupsIterator;
799                bool                        bAutoLoad;
800      };      };
801    
802      /**      /**

Legend:
Removed from v.1381  
changed lines
  Added in v.2274

  ViewVC Help
Powered by ViewVC