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

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

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

revision 1626 by schoenebeck, Sun Nov 25 17:29:37 2007 UTC revision 1627 by persson, Sun Jan 6 10:53:53 2008 UTC
# Line 2923  namespace { Line 2923  namespace {
2923      }      }
2924    
2925    
2926    // *************** MidiRule ***************
2927    // *
2928    
2929    MidiRuleCtrlTrigger::MidiRuleCtrlTrigger(RIFF::Chunk* _3ewg) {
2930        _3ewg->SetPos(36);
2931        Triggers = _3ewg->ReadUint8();
2932        _3ewg->SetPos(40);
2933        ControllerNumber = _3ewg->ReadUint8();
2934        _3ewg->SetPos(46);
2935        for (int i = 0 ; i < Triggers ; i++) {
2936            pTriggers[i].TriggerPoint = _3ewg->ReadUint8();
2937            pTriggers[i].Descending = _3ewg->ReadUint8();
2938            pTriggers[i].VelSensitivity = _3ewg->ReadUint8();
2939            pTriggers[i].Key = _3ewg->ReadUint8();
2940            pTriggers[i].NoteOff = _3ewg->ReadUint8();
2941            pTriggers[i].Velocity = _3ewg->ReadUint8();
2942            pTriggers[i].OverridePedal = _3ewg->ReadUint8();
2943            _3ewg->ReadUint8();
2944        }
2945    }
2946    
2947    
2948  // *************** Instrument ***************  // *************** Instrument ***************
2949  // *  // *
# Line 2958  namespace { Line 2979  namespace {
2979                  PianoReleaseMode       = dimkeystart & 0x01;                  PianoReleaseMode       = dimkeystart & 0x01;
2980                  DimensionKeyRange.low  = dimkeystart >> 1;                  DimensionKeyRange.low  = dimkeystart >> 1;
2981                  DimensionKeyRange.high = _3ewg->ReadUint8();                  DimensionKeyRange.high = _3ewg->ReadUint8();
2982    
2983                    if (_3ewg->GetSize() > 32) {
2984                        // read MIDI rules
2985                        _3ewg->SetPos(32);
2986                        uint8_t id1 = _3ewg->ReadUint8();
2987                        uint8_t id2 = _3ewg->ReadUint8();
2988    
2989                        if (id1 == 4 && id2 == 16) {
2990                            MidiRules.push_back(new MidiRuleCtrlTrigger(_3ewg));
2991                        }
2992                        //TODO: all the other types of rules
2993                    }
2994              }              }
2995          }          }
2996    
# Line 3108  namespace { Line 3141  namespace {
3141          UpdateRegionKeyTable();          UpdateRegionKeyTable();
3142      }      }
3143    
3144        /**
3145         * Returns the first MIDI rule of the instrument. You have to call
3146         * this method once before you use GetNextMidiRule().
3147         *
3148         * The list of MIDI rules, at least in gig v3, always contains at
3149         * most two rules. The second rule can only be the DEF filter
3150         * (which currently isn't supported by libgig).
3151         *
3152         * @returns  pointer address to first MIDI rule or NULL if there is none
3153         * @see      GetNextMidiRule()
3154         */
3155        MidiRule* Instrument::GetFirstMidiRule() {
3156            MidiRulesIterator = MidiRules.begin();
3157            return MidiRulesIterator != MidiRules.end() ? *MidiRulesIterator : NULL;
3158        }
3159    
3160        /**
3161         * Returns the next MIDI rule of the instrument. You have to call
3162         * GetFirstMidiRule() once before you can use this method. By
3163         * calling this method multiple times it iterates through the
3164         * available rules.
3165         *
3166         * @returns  pointer address to the next MIDI rule or NULL if end reached
3167         * @see      GetFirstMidiRule()
3168         */
3169        MidiRule* Instrument::GetNextMidiRule() {
3170            MidiRulesIterator++;
3171            return MidiRulesIterator != MidiRules.end() ? *MidiRulesIterator : NULL;
3172        }
3173    
3174    
3175  // *************** Group ***************  // *************** Group ***************

Legend:
Removed from v.1626  
changed lines
  Added in v.1627

  ViewVC Help
Powered by ViewVC