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;
 }
 public GuitarChordRootNoteConfig()
 {
     UseUserChordName = false;
     UserChordName    = string.Empty;
     RootNoteData1    = Int32.MinValue;
     HideNoteName     = false;
     ChordNameMeta    = null;
 }
 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 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;
 }
Пример #5
0
        public void CreateChordNameEvents(GuitarDifficulty difficulty,
                                          int[] GuitarTuning, int[] BassTuning, Track ownerTrack)
        {
            var x108 = Generate108().Where(x => x.Chord != null).ToList();

            foreach (var item in x108)
            {
                if (item.Chord.Notes.Count() > 1)
                {
                    ChordNameMeta name = null;
                    if (ownerTrack.Name.IsBassTrackName())
                    {
                        name = item.Chord.GetTunedChordName(BassTuning);
                    }
                    else
                    {
                        name = item.Chord.GetTunedChordName(GuitarTuning);
                    }

                    int data1            = -1;
                    var useUserChordName = false;
                    var chordName        = string.Empty;
                    var hideChordName    = false;

                    item.Chord.RootNoteConfig.IfNotNull(x => useUserChordName = x.UseUserChordName);
                    item.Chord.RootNoteConfig.IfNotNull(x => chordName        = x.UserChordName);
                    item.Chord.RootNoteConfig.IfNotNull(x => data1            = x.RootNoteData1);
                    item.Chord.RootNoteConfig.IfNotNull(x => hideChordName    = x.HideNoteName);

                    if (difficulty == GuitarDifficulty.Expert)
                    {
                        if (hideChordName || (data1 == -1 && (name == null || (name != null && name.ToneName.ToToneNameData1() == ToneNameData1.NotSet))))
                        {
                            ownerTrack.Insert(item.Ticks.Down, new ChannelMessage(ChannelCommand.NoteOn, Utility.ChordNameHiddenData1, 100 + item.Fret));
                            ownerTrack.Insert(item.Ticks.Up, new ChannelMessage(ChannelCommand.NoteOff, Utility.ChordNameHiddenData1, 0));
                        }
                        else
                        {
                            if (data1 == -1)
                            {
                                data1 = name.ToneName.ToToneNameData1().ToInt();
                            }
                            ownerTrack.Insert(item.Ticks.Down, new ChannelMessage(ChannelCommand.NoteOn, data1, 100 + item.Fret));
                            ownerTrack.Insert(item.Ticks.Up, new ChannelMessage(ChannelCommand.NoteOff, data1, 0));
                        }
                    }


                    var chordNameText = Utility.CreateChordNameText(item.Chord.Difficulty, useUserChordName ? chordName : name.ToStringEx());

                    if (chordNameText.IsNotEmpty())
                    {
                        ownerTrack.Insert(item.Chord.AbsoluteTicks, new MetaMessage(MetaType.Text, chordNameText));
                    }
                }
            }
        }
Пример #6
0
        public IEnumerable <ChordNameMeta> GetTunedChordNames(int[] tuning, bool allMatches = true)
        {
            var ret = new List <ChordNameMeta>();

            var tunedNotes = GetTunedNoteScale(tuning).ToList().Where(x => x != ToneNameEnum.NotSet).ToList();

            if (tunedNotes.Any())
            {
                if (tunedNotes.Count() == 1)
                {
                    var item = new ChordNameMeta();
                    item.ToneName = tunedNotes.Single();
                    ret.Add(item);
                }
                else
                {
                    if (tunedNotes.Count() == 2)
                    {
                        tunedNotes.Add(tunedNotes.First());
                    }
                    if (allMatches)
                    {
                        var items = ChordNameFinder.GetChordNames(tunedNotes);
                        if (items == null)
                        {
                            var item = new ChordNameMeta();
                            item.ToneName = tunedNotes.Single();
                            ret.Add(item);
                        }
                        else
                        {
                            ret.AddRange(items);
                        }
                    }
                    else
                    {
                        var item = ChordNameFinder.GetChordName(tunedNotes);
                        if (item != null)
                        {
                            ret.Add(item);
                        }
                        else
                        {
                            item          = new ChordNameMeta();
                            item.ToneName = tunedNotes.Single();
                            ret.Add(item);
                        }
                    }
                }
            }
            return(ret);
        }
Пример #7
0
        static ChordNameMeta EC_ShowChord(string chord)
        {
            ChordNameMeta ret = null;

            if (chord.IsNotEmpty())
            {
                ret = new ChordNameMeta();

                ret.RootNote = chord[0].ToString();

                for (var j = 1; j < chord.Length; j++)
                {
                    var c = chord[j];
                    switch (c)
                    {
                    case '>':
                        ret.IsSuper = true;
                        break;

                    case '#':
                    case 'b':
                    {
                        if (c == 'b')
                        {
                            ret.IsFlat = true;
                        }
                        else
                        {
                            ret.IsSharp = true;
                        }
                    }
                    break;

                    default:
                    {
                        if (ret.IsSuper)
                        {
                            ret.Super += c;
                        }
                        else
                        {
                            ret.Number += c;
                        }
                    }
                    break;
                    }
                }
            }
            return(ret);
        }
Пример #8
0
        public static ChordNameMeta GetChordName(IEnumerable <ToneNameEnum> tones)
        {
            ChordNameMeta ret = null;

            if (tones != null)
            {
                tones = tones.Where(x => x != ToneNameEnum.NotSet).ToArray();
                if (tones.Count() > 2)
                {
                    var ecTones = tones.Select(x => GetECToneName(x)).ToArray();

                    ret = EC_CalculateChordSymbols(ecTones, true).FirstOrDefault();
                }
            }

            return(ret);
        }
 public static string CreateChordNameText(GuitarDifficulty difficulty, ChordNameMeta chordName)
 {
     return "[" + GetChordNameTextPrefix(difficulty) + " " + chordName.ToStringEx().GetIfEmpty(" ") + "]";
 }
 public static string CreateChordNameText(GuitarDifficulty difficulty, ChordNameMeta chordName)
 {
     return("[" + GetChordNameTextPrefix(difficulty) + " " + chordName.ToStringEx().GetIfEmpty(" ") + "]");
 }
        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);
        }
        static ChordNameMeta EC_ShowChord(string chord)
        {
            ChordNameMeta ret = null;

            if (chord.IsNotEmpty())
            {
                ret = new ChordNameMeta();

                ret.RootNote = chord[0].ToString();

                for (var j = 1; j < chord.Length; j++)
                {
                    var c = chord[j];
                    switch (c)
                    {
                        case '>':
                            ret.IsSuper = true;
                            break;
                        case '#':
                        case 'b':
                            {
                                if (c == 'b')
                                {
                                    ret.IsFlat = true;
                                }
                                else
                                {
                                    ret.IsSharp = true;
                                }
                            }
                            break;
                        default:
                            {
                                if (ret.IsSuper)
                                {
                                    ret.Super += c;
                                }
                                else
                                {
                                    ret.Number += c;
                                }
                            }
                            break;
                    }
                }
            }
            return ret;
        }