Beispiel #1
0
        public GuitarMessage(GuitarMessageList owner, TickPair pair, GuitarMessageType type)
        {
            this.messageType = type;
            this.props       = new MidiEventProps(owner, pair);

            this.SetTicks(pair);
        }
Beispiel #2
0
        GuitarBigRockEnding GetBigRockEnding(GuitarMessageList owner, IEnumerable <Data1ChannelEventList> events)
        {
            GuitarBigRockEnding ret = null;
            var data1List           = Utility.GetBigRockEndingData1(owner.IsPro);

            var breEvents = events.GetEventPairs(data1List);

            if (breEvents != null && breEvents.Any())
            {
                var ticks = breEvents.GetTickPair();

                if (breEvents.Count() != data1List.Count())
                {
                    breEvents.ToList().ForEach(x => owner.Remove(x));

                    ret = GuitarBigRockEnding.CreateBigRockEnding(owner, ticks);
                }
                else
                {
                    ret = new GuitarBigRockEnding(owner, ticks, breEvents);
                    ret.AddToList();
                }
            }
            return(ret);
        }
Beispiel #3
0
        public GuitarChord CloneToMemory(GuitarMessageList owner, GuitarDifficulty difficulty)
        {
            GuitarChord ret   = null;
            var         notes = Notes.Select(x => x.CloneToMemory(owner)).Where(x => x != null).ToList();

            if (notes.Any())
            {
                ret = GuitarChord.GetChord(owner, difficulty, notes, false);
                if (ret != null)
                {
                    if (HasSlide)
                    {
                        ret.AddSlide(HasSlideReversed, false);
                    }
                    if (HasStrum)
                    {
                        ret.AddStrum(StrumMode, false);
                    }
                    if (HasHammeron)
                    {
                        ret.AddHammeron(false);
                    }
                }
            }
            return(ret);
        }
 public GuitarNote(GuitarMessageList owner, TickPair ticks)
     : base(owner, ticks, GuitarMessageType.GuitarNote)
 {
     Data2   = Utility.Data2Default;
     Channel = Utility.ChannelDefault;
     SetTicks(ticks);
 }
Beispiel #5
0
 public GuitarBigRockEnding(GuitarMessageList owner, TickPair ticks, IEnumerable <MidiEventPair> events) :
     this(owner, ticks)
 {
     Channel = 0;
     events.ToList().ForEach(ev => AddSubMessage(new GuitarBigRockEndingSubMessage(this, ev)));
     SetTicks(ticks);
 }
 public GuitarModifier(GuitarMessageList owner, TickPair ticks, GuitarModifierType type, GuitarMessageType mt) :
     base(owner, ticks, mt)
 {
     Data2             = 100;
     Channel           = 0;
     this.ModifierType = type;
 }
        public GuitarNote CloneToMemory(GuitarMessageList owner)
        {
            GuitarNote ret = null;

            if (owner != null)
            {
                ret = GetNote(owner, Difficulty, this.TickPair, NoteString, NoteFretDown, IsTapNote, IsArpeggioNote, IsXNote);
            }
            else if (IsPro)
            {
                ret = GetNotePro(owner, Difficulty, this.TickPair, NoteString, NoteFretDown, IsTapNote, IsArpeggioNote, IsXNote);
            }
            else
            {
                ret = GetNote5(owner, Difficulty, this.TickPair, NoteString, NoteFretDown, IsTapNote, IsArpeggioNote, IsXNote);
            }
            if (ret != null)
            {
                if (owner != null)
                {
                    if (IsPro == false && owner.IsPro)
                    {
                        ret.Data2 = 100;
                    }
                }
            }
            return(ret);
        }
Beispiel #8
0
        public IEnumerable <GuitarTempo> GetTempoMessages(GuitarMessageList owner, Track tempoTrack)
        {
            var ret = new List <GuitarTempo>();

            try
            {
                var tempos = internalGetTempo(owner, tempoTrack);

                int nextTick = 0;

                tempos.For((t, i) =>
                {
                    tempos.ElementAtOrDefault(i + 1).IfObjectNotNull(next =>
                    {
                        nextTick = next.AbsoluteTicks;
                    },
                                                                     Else =>
                    {
                        nextTick = Sequence.GetLength();
                    });

                    t.SetUpTick(nextTick);
                });

                ret.AddRange(tempos.ToList());
            }
            catch { }
            return(ret);
        }
        public static GuitarChordName CreateEvent(GuitarMessageList owner, TickPair ticks, ChordNameMeta meta, bool chordNameHidden)
        {
            var ret = new GuitarChordName(owner, ticks, meta, chordNameHidden);

            ret.IsNew = true;
            ret.CreateEvents();
            return(ret);
        }
Beispiel #10
0
        public static GuitarHandPosition CreateEvent(GuitarMessageList owner, TickPair ticks, int noteFret)
        {
            var ret = new GuitarHandPosition(owner, ticks, noteFret);

            ret.IsNew = true;
            ret.CreateEvents();
            return(ret);
        }
Beispiel #11
0
 public GuitarHandPosition(GuitarMessageList owner, TickPair pair, int noteFret)
     : base(owner, pair, GuitarMessageType.GuitarHandPosition)
 {
     this.Data1   = Utility.HandPositionData1;
     NoteFretDown = noteFret;
     Channel      = 0;
     this.SetTicks(pair);
 }
Beispiel #12
0
 public GuitarMultiStringTremelo(GuitarMessageList owner, TickPair pair)
     : base(owner, pair, GuitarModifierType.MultiStringTremelo, GuitarMessageType.GuitarMultiStringTremelo)
 {
     this.Data1 = Utility.MultiStringTremeloData1;
     this.Data2 = 100;
     Channel    = 0;
     this.SetTicks(pair);
 }
Beispiel #13
0
 public GuitarSingleStringTremelo(GuitarMessageList owner, TickPair ticks) :
     base(owner, ticks, GuitarModifierType.SingleStringTremelo, GuitarMessageType.GuitarSingleStringTremelo)
 {
     this.Data1 = Utility.SingleStringTremeloData1;
     this.Data2 = 100;
     Channel    = 0;
     this.SetTicks(ticks);
 }
        public static GuitarTextEvent CreateTextEvent(GuitarMessageList owner, int absoluteTicks, string text)
        {
            var ret = new GuitarTextEvent(owner, absoluteTicks, text);

            ret.IsNew = true;
            ret.CreateEvents();
            return(ret);
        }
 public GuitarChordName(GuitarMessageList owner, TickPair pair, ChordNameMeta meta, bool hidden)
     : base(owner, pair, GuitarMessageType.GuitarChordName)
 {
     this.Data1           = meta.ToneName.ToToneNameData1().ToInt();
     this.Meta            = meta;
     this.ChordNameHidden = hidden;
     Channel = 0;
 }
 public GuitarPowerup(GuitarMessageList owner, TickPair pair)
     : base(owner, pair, GuitarModifierType.Powerup, GuitarMessageType.GuitarPowerup)
 {
     this.Data1 = Utility.PowerupData1;
     this.Data2 = 100;
     Channel    = 0;
     this.SetTicks(pair);
 }
Beispiel #17
0
        public static GuitarMultiStringTremelo CreateMultiStringTremelo(GuitarMessageList owner, TickPair ticks)
        {
            var ret = new GuitarMultiStringTremelo(owner, ticks);

            ret.IsNew = true;
            ret.CreateEvents();

            return(ret);
        }
Beispiel #18
0
        public static GuitarBigRockEnding CreateBigRockEnding(GuitarMessageList owner, TickPair ticks)
        {
            var ret = new GuitarBigRockEnding(owner, ticks);

            ret.IsNew = true;
            ret.CreateEvents();

            return(ret);
        }
        public static GuitarPowerup CreatePowerup(GuitarMessageList owner, TickPair ticks)
        {
            var ret = new GuitarPowerup(owner, ticks);

            ret.IsNew = true;
            ret.CreateEvents();

            return(ret);
        }
Beispiel #20
0
        public static GuitarChord GetChord(GuitarMessageList owner,
                                           GuitarDifficulty difficulty,
                                           TickPair ticks,
                                           GuitarChordConfig config)
        {
            GuitarChord ret = null;

            var lowE = Utility.GetStringLowE(difficulty);

            var notes = new List <GuitarNote>();

            for (int x = 0; x < config.Frets.Length; x++)
            {
                var fret    = config.Frets[x];
                var channel = config.Channels[x];

                if (!fret.IsNull() && fret >= 0 && fret <= 23)
                {
                    var note = GuitarNote.GetNote(owner,
                                                  difficulty, ticks, x, fret,
                                                  channel == Utility.ChannelTap,
                                                  channel == Utility.ChannelArpeggio,
                                                  channel == Utility.ChannelX);

                    if (note != null && note.NoteFretDown.IsNotNull() && note.NoteString.IsNotNull())
                    {
                        notes.Add(note);
                    }
                    else
                    {
                    }
                }
            }

            if (notes.Any())
            {
                ret             = new GuitarChord(owner, ticks, difficulty, notes);
                ret.chordConfig = config.Clone();

                if (ret != null)
                {
                    if (config.IsSlide || config.IsSlideReverse)
                    {
                        ret.AddSlide(config.IsSlideReverse, false);
                    }

                    if (config.IsHammeron)
                    {
                        ret.AddHammeron(false);
                    }

                    ret.AddStrum(config.StrumMode, false);
                }
            }

            return(ret);
        }
        public static GuitarNote CreateNote(GuitarMessageList owner, GuitarDifficulty diff, TickPair ticks,
                                            int noteString, int noteFret, bool isTap, bool isArpeggio, bool isX)
        {
            var ret = GetNote(owner, diff, ticks, noteString, noteFret, isTap, isArpeggio, isX);

            ret.IsNew = true;
            ret.CreateEvents();

            return(ret);
        }
Beispiel #22
0
        public GuitarBigRockEnding(GuitarMessageList owner, TickPair ticks) :
            base(owner, ticks, GuitarModifierType.BigRockEnding, GuitarMessageType.GuitarBigRockEnding)
        {
            Channel = 0;
            foreach (var data1 in Utility.GetBigRockEndingData1(IsPro))
            {
                childEvents.Add(new GuitarBigRockEndingSubMessage(this, ticks, data1));
            }

            SetTicks(ticks);
        }
Beispiel #23
0
 public GuitarChord CloneAtTime(
     GuitarMessageList owner,
     TickPair ticks,
     int stringOffset = int.MinValue)
 {
     return(GuitarChord.CreateChord(owner, owner.Owner.CurrentDifficulty,
                                    owner.Owner.SnapLeftRightTicks(ticks, new SnapConfig(true, true, true)),
                                    new GuitarChordConfig(Notes.GetFretsAtStringOffset(stringOffset.GetIfNull(0)),
                                                          Notes.GetChannelsAtStringOffset(stringOffset.GetIfNull(0)),
                                                          HasSlide, HasSlideReversed, HasHammeron, StrumMode,
                                                          RootNoteConfig.GetIfNotNull(x => x.Clone()))));
 }
Beispiel #24
0
        public static GuitarChord GetChord(GuitarMessageList owner,
                                           GuitarDifficulty difficulty,
                                           IEnumerable <GuitarNote> notes,
                                           bool findModifiers = true)
        {
            GuitarChord ret = null;

            try
            {
                if (notes != null && notes.Any())
                {
                    if (notes.Any(x => x.IsDeleted))
                    {
                        Debug.WriteLine("getting deleted note");
                    }

                    var tickPair = notes.GetTickPairSmallest();

                    if (!tickPair.IsValid)
                    {
                        Debug.WriteLine("short chord");
                        return(ret);
                    }

                    var unfit = notes.Where(x => x.TickPair != tickPair);
                    if (unfit.Any())
                    {
                        unfit.ForEach(x => x.SetTicks(tickPair));
                    }

                    ret = new GuitarChord(owner, tickPair, difficulty, notes.ToList());

                    if (findModifiers)
                    {
                        ret.Modifiers.AddRange(owner.Hammerons.Where(x => x.Chord == null).GetBetweenTick(ret.TickPair).ToList());
                        ret.Modifiers.AddRange(owner.Slides.Where(x => x.Chord == null).GetBetweenTick(ret.TickPair).ToList());
                        ret.Modifiers.AddRange(owner.ChordStrums.Where(x => x.Chord == null).GetBetweenTick(ret.TickPair).ToList());

                        ret.ChordNameEvents.SetNames(owner.ChordNames.GetAtTick(ret.AbsoluteTicks).ToList());

                        var mods = ret.Modifiers.Where(x => x.TickPair != ret.TickPair).ToList();
                        foreach (var mod in mods)
                        {
                            mod.SetTicks(ret.TickPair);
                        }
                        mods.ForEach(x => x.Chord = ret);
                    }
                }
            }
            catch (Exception ex) { Debug.WriteLine("GetChord: " + ex.Message); }
            return(ret);
        }
Beispiel #25
0
 public GuitarTempo(GuitarMessageList owner, MidiEvent ev)
     : base(owner, ev, null, GuitarMessageType.GuitarTempo)
 {
     if (ev == null)
     {
         this.Tempo = Utility.DummyTempo;
     }
     else
     {
         var cb = new TempoChangeBuilder((MetaMessage)ev.Clone());
         this.Tempo = cb.Tempo;
     }
 }
        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);
        }
Beispiel #27
0
        IEnumerable <GuitarTimeSignature> GetTimeSignaturesFromTrack(GuitarMessageList owner, Track tempoTrack)
        {
            var ret = new List <GuitarTimeSignature>();

            if (tempoTrack != null && tempoTrack.TimeSig.Any())
            {
                ret.AddRange(tempoTrack.TimeSig.Select(t => new GuitarTimeSignature(owner, t)));
            }
            else
            {
                ret.Add(GuitarTimeSignature.GetDefaultTimeSignature(owner));
            }
            return(ret);
        }
Beispiel #28
0
        public static GuitarChord CreateChord(GuitarMessageList owner, GuitarDifficulty difficulty, TickPair ticks,
                                              GuitarChordConfig config)
        {
            GuitarChord ret = null;

            ret = GetChord(owner, difficulty, ticks, config);

            if (ret != null)
            {
                ret.IsNew = true;
                ret.CreateEvents();
            }
            return(ret);
        }
        public static GuitarArpeggio CreateArpeggio(GuitarMessageList owner, TickPair ticks, GuitarDifficulty difficulty)
        {
            GuitarArpeggio ret = null;

            if (Utility.GetArpeggioData1(difficulty).IsNotNull())
            {
                ret = new GuitarArpeggio(owner, ticks, difficulty);
                if (ret != null)
                {
                    ret.IsNew = true;
                    ret.CreateEvents();
                }
            }
            return(ret);
        }
Beispiel #30
0
        public GuitarTrainer(GuitarMessageList owner, TickPair ticks, GuitarTrainerType type, GuitarTextEvent start, GuitarTextEvent end, GuitarTextEvent norm)
            : base(owner, ticks, GuitarMessageType.GuitarTrainer)
        {
            this.TrainerType = type;

            Start = start;
            End   = end;
            Norm  = norm;

            this.TrainerIndex = ParseTrainerIndex();

            this.Loopable = norm != null;

            SetTicks(ticks);
        }