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; } }
//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"); } }
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)); }
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); }