public void ParseToNodeTest() { // Dm/a TwoOctaveNoteArray notes = new TwoOctaveNoteArray(); notes[9] = true; notes[14] = true; notes[17] = true; Chord dMa = Chord.ParseToNode("Dm/a").Chord; Assert.AreEqual<TwoOctaveNoteArray>(notes, dMa.ChordNotes); // Am notes = new TwoOctaveNoteArray(); notes[9] = true; notes[12] = true; notes[16] = true; Chord aM = Chord.ParseToNode("Am").Chord; Assert.AreEqual<TwoOctaveNoteArray>(notes, aM.ChordNotes); // E/g# notes = new TwoOctaveNoteArray(); notes[8] = true; notes[11] = true; notes[16] = true; Chord eGsharp = Chord.ParseToNode("E/g#").Chord; Assert.AreEqual<TwoOctaveNoteArray>(notes, eGsharp.ChordNotes); }
public static Chord Minor(string noteName) { int rootNoteAbsVal = Note.ParseAbsoluteValue(noteName); string chordName = noteName.ToUpper() + "m"; TwoOctaveNoteArray notes = new TwoOctaveNoteArray(); notes[rootNoteAbsVal] = true; notes[rootNoteAbsVal + 3] = true; notes[rootNoteAbsVal + 7] = true; return new Chord(chordName, notes); }
//currently a mock public static ChordNode ParseToNode(string chordName) { TwoOctaveNoteArray notes = new TwoOctaveNoteArray(); switch (chordName) { // first inversion case "Dm/a": // NB: next backfactoring we wanna make it look like this // notes = Minor("D").FirstInversion(), Minor("D") should return an instance(non-static) chord object (this class) // instanceChord.FirstInversion() should return a TwoOctaveNoteArray. notes = MinorTwoOctaveFirstInversion(Note.ParseAbsoluteValue("D")); break; case "Am": //notes[9] = true; //notes[12] = true; //notes[16] = true; notes = MinorTwoOctave(Note.ParseAbsoluteValue("A")); break; // second inversion case "E/g#": //notes[8] = true; //notes[11] = true; //notes[16] = true; notes = MajorTwoOctaveSecondInversion(Note.ParseAbsoluteValue("E")); break; default: //light em all up notes.SetAll(true); break; } return new ChordNode(chordName, notes); }
public void MinorTest() { //c minor TwoOctaveNoteArray notes = new TwoOctaveNoteArray(); notes[0] = true; notes[3] = true; notes[7] = true; Chord chord = Chord.Minor("C"); Assert.AreEqual(notes, chord.ChordNotes); //e minor notes = new TwoOctaveNoteArray(); notes[4] = true; notes[7] = true; notes[11] = true; chord = Chord.Minor("E"); Assert.AreEqual(notes, chord.ChordNotes); }
private static TwoOctaveNoteArray MinorTwoOctaveFirstInversion(int rootNote) { //pattern is -5, 0, 3 //coax range while(rootNote - 5 < 0) { rootNote += 12; } TwoOctaveNoteArray notes = new TwoOctaveNoteArray(); notes[rootNote - 5] = true; notes[rootNote] = true; notes[rootNote + 3] = true; return notes; }
public Chord(string chordName, TwoOctaveNoteArray notes) { ChordName = chordName; ChordNotes = notes; }
private static TwoOctaveNoteArray MinorTwoOctave(int rootNote) { //pattern is 0, 3, 7 //coax range while(rootNote < 0) { rootNote += 12; } TwoOctaveNoteArray notes = new TwoOctaveNoteArray(); notes[rootNote] = true; notes[rootNote + 3] = true; notes[rootNote + 7] = true; return notes; }
private static TwoOctaveNoteArray MajorTwoOctaveSecondInversion(int rootNote) { //pattern is -8, -5, 0 //coax range while (rootNote - 8 < 0) { rootNote += 12; } TwoOctaveNoteArray notes = new TwoOctaveNoteArray(); notes[rootNote - 8] = true; notes[rootNote - 5] = true; notes[rootNote] = true; return notes; }
public TwoOctaveNoteArray FirstInversion() { bool first = true; TwoOctaveNoteArray notes = new TwoOctaveNoteArray(); return notes; }