public GuitarModifier(MidiEventPair ev, GuitarModifierType type, GuitarMessageType mt)
     : base(ev, mt)
 {
     Data2 = 100;
     Channel = 0;
     this.ModifierType = type;
 }
 public GuitarMessage(MidiEventPair pair, GuitarMessageType type)
     : this()
 {
     this.messageType = type;
     this.props = new MidiEventProps(pair, type);
     SetTicks(pair.TickPair);
 }
 public GuitarNote(MidiEventPair pair)
     : base(pair, GuitarMessageType.GuitarNote)
 {
     Data1 = pair.Data1;
     Data2 = pair.Data2;
     Channel = pair.Channel;
 }
        public GuitarArpeggio(MidiEventPair ev)
            : base(ev, GuitarModifierType.Arpeggio, GuitarMessageType.GuitarArpeggio)
        {
            Data1 = ev.Data1;

            SetTicks(ev.TickPair);
        }
 public GuitarHandPosition( MidiEventPair pair)
     : base(pair, GuitarMessageType.GuitarHandPosition)
 {
     this.Data1 = pair.Data1;
     Channel = 0;
     NoteFretDown = pair.Data2 - 100;
 }
 public GuitarPowerup(MidiEventPair ev)
     : base(ev, GuitarModifierType.Powerup, GuitarMessageType.GuitarPowerup)
 {
     this.Data1 = Utility.PowerupData1;
     this.Data2 = 100;
     Channel = 0;
     this.SetTicks(ev.TickPair);
 }
 public GuitarBigRockEndingSubMessage(GuitarBigRockEnding owner, MidiEventPair events)
     : base(events, GuitarMessageType.GuitarBigRockEndingSubMessage)
 {
     Channel = 0;
     this.owner = owner;
     this.Data2 = 100;
     this.Data1 = events.Data1;
 }
 public GuitarHammeron(MidiEventPair pair)
     : base(pair, ChordModifierType.Hammeron, GuitarMessageType.GuitarHammeron)
 {
     Data1 = Utility.GetHammeronData1(pair.Data1.GetData1Difficulty(IsPro));
     Data2 = pair.Data2;
     Channel = pair.Channel;
     SetTicks(pair.TickPair);
 }
 public GuitarSlide(MidiEventPair pair)
     : base(pair, pair.Channel == Utility.ChannelSlideReversed  ? ChordModifierType.SlideReverse : ChordModifierType.Slide, 
     GuitarMessageType.GuitarSlide)
 {
     Data1 = Utility.GetSlideData1(pair.Data1.GetData1Difficulty(IsPro));
     Data2 = Utility.Data2Default;
     Channel = pair.Channel.GetIfNull(Utility.ChannelSlide);
 }
 public MidiEventProps(MidiEventPair pair, GuitarMessageType type)
 {
     if (type == GuitarMessageType.GuitarTempo)
     {
         setEventPair(pair, false);
         TickPair = pair.TickPair;
     }
     else
     {
         setEventPair(pair);
         TickPair = pair.TickPair;
     }
 }
        private void resetProps(GuitarMessageList owner)
        {
            Owner = owner;
            IsPro = (owner == null ? true : owner.IsPro);
            Data1 = Int32.MinValue;
            Data2 = Int32.MinValue;
            Channel = Int32.MinValue;
            Command = ChannelCommand.Invalid;
            Text = string.Empty;
            TickPair = TickPair.NullValue;
            TimePair = TimePair.NullValue;

            _eventPair = new MidiEventPair(owner);
        }
 public ChordModifier(MidiEventPair pair, ChordModifierType type, GuitarMessageType gt)
     : base(pair, gt)
 {
     Chord = null;
     ModifierType = type;
 }
 public GuitarSingleStringTremelo(MidiEventPair ev)
     : base(ev, GuitarModifierType.SingleStringTremelo, GuitarMessageType.GuitarSingleStringTremelo)
 {
 }
 public GuitarChordName(MidiEventPair pair)
     : base(pair, GuitarMessageType.GuitarChordName)
 {
     this.Data1 = pair.Data1;
     Channel = 0;
 }
 public MidiEventProps(MidiEventPair pair)
 {
     setEventPair(pair);
     TickPair = pair.TickPair;
 }
 public void SetUpdatedEventPair(MidiEventPair pair)
 {
     setEventPair(pair);
 }
 public void Remove(MidiEventPair ev)
 {
     if (ev.Down != null && !ev.Down.Deleted)
     {
         midiTrack.Remove(ev.Down);
     }
     if (ev.Up != null && !ev.Up.Deleted)
     {
         midiTrack.Remove(ev.Up);
     }
 }
 public GuitarSolo(MidiEventPair ev)
     : base(ev, GuitarModifierType.Solo, GuitarMessageType.GuitarSolo)
 {
 }
        private void setEventPair(MidiEventPair pair, bool calcTime=true)
        {
            resetProps(pair.Owner);

            _eventPair = pair;

            if (_eventPair.Down != null)
            {
                if (_eventPair.Down.IsChannelEvent())
                {
                    Data1 = _eventPair.Down.Data1;
                    Data2 = _eventPair.Down.Data2;
                    Channel = _eventPair.Down.Channel;
                    Command = _eventPair.Down.Command;
                }

                if (_eventPair.Down.IsTextEvent())
                {
                    Text = _eventPair.Down.Text;
                }
            }

            this.TickPair = new TickPair((_eventPair.Down == null ? Int32.MinValue : _eventPair.Down.AbsoluteTicks),
                                     (_eventPair.Up == null ? Int32.MinValue : _eventPair.Up.AbsoluteTicks));
            if (calcTime)
            {
                if (TickPair.IsValid)
                {
                    this.TimePair = new TimePair(Owner.Owner.GuitarTrack.TickToTime(TickPair));
                }
                else if (TickPair.Down.IsNotNull())
                {
                    var time = Owner.Owner.GuitarTrack.TickToTime(TickPair.Down);
                    this.TimePair = new TimePair(time, time);
                }
            }
        }