예제 #1
0
 private void TransKB(clsKeyTicks key, bool kbtrans)
 {
     TransposeNamesSharp = key.TransposeNamesSharp;
     Scale = key.Scale;
     Ticks = key.Ticks;
     if (kbtrans)
     {
         int trans = GetTransposeKB();
         KeyNote = (trans == 0) ? key.KeyNote : (key.KeyNote + trans).Mod12();
         MidiKey = (trans == 0) ? key.MidiKey : NoteName.PitchToMidiKey(KeyNote, Scale, null);
         //KeyNoteStr = (trans == 0) ? key.KeyNoteStr : NoteName._Names[MidiKey + 7][KeyNote];
         KeyNoteStr = (trans == 0) ? key.KeyNoteStr : NoteName.GetName(this, KeyNote);
     }
     else
     {
         KeyNoteStr = key.KeyNoteStr;
         KeyNote    = key.KeyNote;
         MidiKey    = key.MidiKey;
     }
 }
예제 #2
0
 //internal string ChordName(sNote[] notes) {  //eg C, Am, F#dim
 internal string ChordName(eKBTrans kbtranspc, bool kbtranskey) //eg C, Am, F#dim
 //* show in txt boxes
 {
     if (Notes == null || Notes.Length == 0)
     {
         return("null");
     }
     if (Root)
     {
         //int pitch = (kbtrans) ? Notes[0].PC_KBTrans : Notes[0].PC_NoKBTrans;
         int pitch = Notes[0].PC[kbtranspc];
         //int midikey = P.F.Keys[OnTime].KBTrans_MidiKey;
         clsKey key = P.F.Keys[OnTime, kbtranskey];
         //return NoteName.ToSharpFlat(NoteName._Names[midikey + 7][pitch].TrimEnd()) + ChordQualifier;
         return(NoteName.ToSharpFlat(NoteName.GetName(key, pitch).TrimEnd()) + ChordQualifier);
     }
     else
     {
         return("xxxx");
     }
 }
예제 #3
0
            internal static clsChord Validate(string txt)
            {
                if (string.IsNullOrWhiteSpace(txt))
                {
                    return(new clsChord("", 0));
                }
                if (txt == "***" || txt == "null")
                {
                    return(new clsChord(txt, 0));
                }
                string qualifier;
                int    pc = NoteName.GetPitchAndQualifier(txt, out qualifier);

                if (pc < 0)
                {
                    return(null);  //invalid chord
                }
                //string root = NoteName.ToSharpFlat(NoteName._Names[P.F.Keys[0].MidiKey + 7][pc]).TrimEnd();
                string root = NoteName.ToSharpFlat(NoteName.GetName(P.F.Keys[0], pc).TrimEnd());

                return(new clsChord(root + qualifier, root.Length));
            }
예제 #4
0
        internal static string ShowChordText(int[] chord, clsKeyTicks key)
        {
            //* form thread
            //* show current playchord (root and qualifier)
            if (chord == null || chord.Length < 3)
            {
                //P.frmSC.txtChordBottom.Text = "";
                return("");
            }
            bool[] pcs = new bool[12];
            foreach (int c in chord)
            {
                pcs[c] = true;
            }
            int rootpc = chord[0];
            //List<string> names = ChordAnalysis.GetMatchingChordNames(pcs, rootpc);
            //string qualifier = (names.Count == 0) ? "xxx" : names[0];
            string qualifier = ChordAnalysis.GetName(pcs);
            //string txt = NoteName.ToSharpFlat(NoteName._Names[key.MidiKey + 7][rootpc].TrimEnd()) + qualifier;
            string txt = NoteName.ToSharpFlat(NoteName.GetName(key, rootpc).TrimEnd()) + qualifier;

            return(txt);
        }