public void AutoCompleteMomentInMilisecondsWithAllNull() { var notes = new List <GuitarScoreNote>(); { var note = new GuitarScoreNote("B3", 1, 0, 240, null); notes.Add(note); } { var note = new GuitarScoreNote("F#3", 2, 0, 240, null); notes.Add(note); } { var note = new GuitarScoreNote("G#3", 3, 0, 240, null); notes.Add(note); } { var note = new GuitarScoreNote("E3", 4, 0, 240, null); notes.Add(note); } var xmlScoreReader = new MockXmlScoreReader(notes); Assert.IsNull(xmlScoreReader.ScoreNotes[0].MomentInMiliseconds); Assert.IsNull(xmlScoreReader.ScoreNotes[1].MomentInMiliseconds); Assert.IsNull(xmlScoreReader.ScoreNotes[2].MomentInMiliseconds); Assert.IsNull(xmlScoreReader.ScoreNotes[3].MomentInMiliseconds); }
public void AutoCompleteMomentInMilisecondsWith2Pins() { var notes = new List <GuitarScoreNote>(); { var note = new GuitarScoreNote("B3", 1, 0, 240, 1000); notes.Add(note); } { var note = new GuitarScoreNote("F#3", 2, 0, 240, null); notes.Add(note); } { var note = new GuitarScoreNote("G#3", 3, 0, 240, null); notes.Add(note); } { var note = new GuitarScoreNote("E3", 4, 0, 240, 4000); notes.Add(note); } var xmlScoreReader = new MockXmlScoreReader(notes); Assert.AreEqual(1000, xmlScoreReader.ScoreNotes[0].MomentInMiliseconds); Assert.AreEqual(2000, xmlScoreReader.ScoreNotes[1].MomentInMiliseconds); //auto completed Assert.AreEqual(3000, xmlScoreReader.ScoreNotes[2].MomentInMiliseconds); //auto completed Assert.AreEqual(4000, xmlScoreReader.ScoreNotes[3].MomentInMiliseconds); }
public void TesteF4() { var scoreNote = new GuitarScoreNote("F4", 1, 0, 480, 0); { var notePosition = scoreNote.CalculateNotePosition(6); Assert.AreEqual(6, notePosition.String); Assert.AreEqual(13, notePosition.Fret); } { var notePosition = scoreNote.CalculateNotePosition(5); Assert.AreEqual(5, notePosition.String); Assert.AreEqual(8, notePosition.Fret); } { var notePosition = scoreNote.CalculateNotePosition(4); Assert.AreEqual(4, notePosition.String); Assert.AreEqual(3, notePosition.Fret); } }
public void FillTickDataTable_1NoteWithMomentInMiliseconds() { var note = new GuitarScoreNote("G3", 1, 0, 480, 1000); var tickDataTable = new GtTickDataTable(1); var fileLoader = new GtFileLoader(); fileLoader.FillTickDataTable(tickDataTable, note); for (var pos = new BeatTick(1, 0); pos < new BeatTick(2, 0); pos = pos.AddTicks(10)) { var tickData = tickDataTable[pos.Beat, pos.Tick]; Assert.AreEqual(pos == new BeatTick(1, 0), tickData.IsStartTick); Assert.AreEqual(pos == new BeatTick(1, 470), tickData.IsEndTick); Assert.IsNull(tickData.String1); Assert.IsNull(tickData.String2); Assert.IsNull(tickData.String3); Assert.IsNull(tickData.String4); Assert.IsNull(tickData.String5); Assert.AreEqual(3, tickData.String6); if (pos == new BeatTick(1, 0)) { Assert.AreEqual(1000, tickData.MomentInMiliseconds); } else { Assert.IsNull(tickData.MomentInMiliseconds); } } }
public void AutoCompleteMomentInMilisecondsWithNotesAtTheSameBeatTick() { var notes = new List <GuitarScoreNote>(); { var note = new GuitarScoreNote("B3", 1, 0, 240, null); notes.Add(note); } { var note = new GuitarScoreNote("F#3", 2, 0, 240, 2000); notes.Add(note); } { var note = new GuitarScoreNote("C#4", 2, 0, 240, 2000); notes.Add(note); } { var note = new GuitarScoreNote("F#4", 2, 0, 240, 2000); notes.Add(note); } { var note = new GuitarScoreNote("G#3", 3, 0, 240, null); notes.Add(note); } { var note = new GuitarScoreNote("D#4", 3, 0, 240, null); notes.Add(note); } { var note = new GuitarScoreNote("E3", 4, 0, 240, 4000); notes.Add(note); } { var note = new GuitarScoreNote("E3", 5, 0, 240, null); notes.Add(note); } var xmlScoreReader = new MockXmlScoreReader(notes); Assert.AreEqual(1000, xmlScoreReader.ScoreNotes[0].MomentInMiliseconds); //auto completed Assert.AreEqual(2000, xmlScoreReader.ScoreNotes[1].MomentInMiliseconds); Assert.AreEqual(2000, xmlScoreReader.ScoreNotes[2].MomentInMiliseconds); Assert.AreEqual(2000, xmlScoreReader.ScoreNotes[3].MomentInMiliseconds); Assert.AreEqual(3000, xmlScoreReader.ScoreNotes[4].MomentInMiliseconds); //auto completed Assert.AreEqual(3000, xmlScoreReader.ScoreNotes[5].MomentInMiliseconds); //auto completed Assert.AreEqual(4000, xmlScoreReader.ScoreNotes[6].MomentInMiliseconds); Assert.AreEqual(5000, xmlScoreReader.ScoreNotes[7].MomentInMiliseconds); //auto completed }
public void AutoCompleteMomentInMilisecondsWithVariableTime() { var notes = new List <GuitarScoreNote>(); { var note = new GuitarScoreNote("B3", 1, 0, 240, null); notes.Add(note); } { var note = new GuitarScoreNote("F#3", 2, 0, 240, 2000); notes.Add(note); } { var note = new GuitarScoreNote("G#3", 3, 0, 240, null); notes.Add(note); } { var note = new GuitarScoreNote("E3", 4, 0, 240, 4000); notes.Add(note); } { var note = new GuitarScoreNote("E3", 5, 0, 240, null); notes.Add(note); } { var note = new GuitarScoreNote("E3", 6, 0, 240, 8000); notes.Add(note); } { var note = new GuitarScoreNote("E3", 7, 0, 240, null); notes.Add(note); } { var note = new GuitarScoreNote("E3", 8, 0, 240, null); notes.Add(note); } var xmlScoreReader = new MockXmlScoreReader(notes); Assert.AreEqual(1000, xmlScoreReader.ScoreNotes[0].MomentInMiliseconds); //auto completed Assert.AreEqual(2000, xmlScoreReader.ScoreNotes[1].MomentInMiliseconds); Assert.AreEqual(3000, xmlScoreReader.ScoreNotes[2].MomentInMiliseconds); //auto completed Assert.AreEqual(4000, xmlScoreReader.ScoreNotes[3].MomentInMiliseconds); Assert.AreEqual(6000, xmlScoreReader.ScoreNotes[4].MomentInMiliseconds); //auto completed Assert.AreEqual(8000, xmlScoreReader.ScoreNotes[5].MomentInMiliseconds); Assert.AreEqual(10000, xmlScoreReader.ScoreNotes[6].MomentInMiliseconds); //auto completed Assert.AreEqual(12000, xmlScoreReader.ScoreNotes[7].MomentInMiliseconds); //auto completed }
protected override void AddNoteToCollection() { var scoreNote = new GuitarScoreNote(fNoteId, (int)fBeat, (int)fTick, fDuration, null); scoreNote.RemarkOrChordName = this.fRemarkOrChordName; scoreNote.NotePositions.Clear(); scoreNote.NotePositions.Add(this.fFret.Value, new NotePosition(this.fString.Value, this.fFret.Value)); scoreNote.DefaultNotePositionIndex = 0; this.fScoreNotes.Add(scoreNote); }
public void GenerateScoreNoteElementForOneGuitarScoreNote() { var notes = new SortedList <GuitarScoreNote, GuitarScoreNote>(); var artist = "Metallica"; var title = "For Whom the Bell Tolls"; var xmlScoreWriter = new XmlScoreWriter(artist, title, PlayingMode.EletricGuitarScore, notes); var scoreNote = new GuitarScoreNote("A4", 1, 0, 10, null); string xmlScoreNote = "\t<ScoreNote Beat=\"1\" Tick=\"0\" NoteId=\"A4\" Duration=\"10\" String=\"3\" Fret=\"2\" RemarkOrChordName=\"\"/>"; Assert.AreEqual(xmlScoreNote, xmlScoreWriter.GenerateScoreNoteElement(scoreNote)); }
public void FillTickDataTable(GtTickDataTable pTickDataTable, GuitarScoreNote pGuitarScoreNote) { var pos = new BeatTick(pGuitarScoreNote.Beat, pGuitarScoreNote.Tick); pTickDataTable[pos.Beat, pos.Tick].IsStartTick = true; pTickDataTable[pos.Beat, pos.Tick].MomentInMiliseconds = pGuitarScoreNote.MomentInMiliseconds; if (pTickDataTable[pos.Beat, pos.Tick].RemarkOrChordName != string.Empty) { pTickDataTable[pos.Beat, pos.Tick].RemarkOrChordName += " "; } pTickDataTable[pos.Beat, pos.Tick].RemarkOrChordName += pGuitarScoreNote.RemarkOrChordName; int duration = (int)pGuitarScoreNote.DurationInTicks; for (int i = 0; i < duration; i += 10) { pos = (new BeatTick(pGuitarScoreNote.Beat, pGuitarScoreNote.Tick)).AddTicks(i); switch (pGuitarScoreNote.DefaultNotePosition.String) { case 1: pTickDataTable[pos.Beat, pos.Tick].String1 = pGuitarScoreNote.DefaultNotePosition.Fret; break; case 2: pTickDataTable[pos.Beat, pos.Tick].String2 = pGuitarScoreNote.DefaultNotePosition.Fret; break; case 3: pTickDataTable[pos.Beat, pos.Tick].String3 = pGuitarScoreNote.DefaultNotePosition.Fret; break; case 4: pTickDataTable[pos.Beat, pos.Tick].String4 = pGuitarScoreNote.DefaultNotePosition.Fret; break; case 5: pTickDataTable[pos.Beat, pos.Tick].String5 = pGuitarScoreNote.DefaultNotePosition.Fret; break; case 6: pTickDataTable[pos.Beat, pos.Tick].String6 = pGuitarScoreNote.DefaultNotePosition.Fret; break; } } pTickDataTable[pos.Beat, pos.Tick].IsEndTick = true; }
public void TesteE5() { var scoreNote = new GuitarScoreNote("E5", 1, 0, 480, 0); { var notePosition = scoreNote.CalculateNotePosition(6); Assert.AreEqual(6, notePosition.String); Assert.AreEqual(24, notePosition.Fret); } { var notePosition = scoreNote.CalculateNotePosition(5); Assert.AreEqual(5, notePosition.String); Assert.AreEqual(19, notePosition.Fret); } { var notePosition = scoreNote.CalculateNotePosition(4); Assert.AreEqual(4, notePosition.String); Assert.AreEqual(14, notePosition.Fret); } { var notePosition = scoreNote.CalculateNotePosition(3); Assert.AreEqual(3, notePosition.String); Assert.AreEqual(9, notePosition.Fret); } { var notePosition = scoreNote.CalculateNotePosition(2); Assert.AreEqual(2, notePosition.String); Assert.AreEqual(5, notePosition.Fret); } { var notePosition = scoreNote.CalculateNotePosition(1); Assert.AreEqual(1, notePosition.String); Assert.AreEqual(0, notePosition.Fret); } }
public void GenerateSyncElementFor3GuitarScoreNote() { var notes = new SortedList <GuitarScoreNote, GuitarScoreNote>(); { var n = new GuitarScoreNote("A4", 1, 0, 240, 0); notes.Add(n, n); } { var n = new GuitarScoreNote("B4", 1, 240, 240, 250); notes.Add(n, n); } { var n = new GuitarScoreNote("C5", 2, 0, 960, 500); notes.Add(n, n); } var artist = "Artist X"; var title = "Song Y"; var xmlScoreWriter = new XmlScoreWriter(artist, title, PlayingMode.EletricGuitarScore, notes); var expectedXml = new StringBuilder(); //Prepera the expected XML expectedXml.AppendLine("<?xml version=\"1.0\" encoding=\"utf-8\" ?>"); expectedXml.AppendLine(string.Format("<SongSync Artist=\"{0}\" Title=\"{1}\" PlayingMode=\"{2}\">", artist, title, PlayingMode.EletricGuitarScore)); expectedXml.AppendLine(string.Format("\t<ScoreNote Beat=\"{0}\" Tick=\"{1}\" SyncSongPin=\"0:0:0\"/>", 1, 0, "A4", 240)); expectedXml.AppendLine(string.Format("\t<ScoreNote Beat=\"{0}\" Tick=\"{1}\" SyncSongPin=\"0:0:250\"/>", 1, 240, "B4", 240)); expectedXml.AppendLine(string.Format("\t<ScoreNote Beat=\"{0}\" Tick=\"{1}\" SyncSongPin=\"0:0:500\"/>", 2, 0, "C5", 960)); expectedXml.AppendLine("</SongSync>"); Assert.AreEqual(expectedXml.ToString(), xmlScoreWriter.ToXmlSync()); }
public void InvalidString_7() { var scoreNote = new GuitarScoreNote("E6", 1, 0, 480, 0); var notePosition = scoreNote.CalculateNotePosition(7); }
public void InvalidGuitarNote_TooHigh() { //TODO: Verify if E7 is more accute guitar note. var scoreNote = new GuitarScoreNote("F7", 1, 0, 480, 0); }
public void InvalidGuitarNote_TooLow() { var scoreNote = new GuitarScoreNote("Eb3", 1, 0, 480, 0); }
public void ConvertNotesInGuitarScoreNote(SortedList <GuitarScoreNote, GuitarScoreNote> pScoreNotes, XmlNodeList pNotes) { int tick = 0; int durationInTicks = 0; string remarkOrChordName = null; foreach (XmlNode node in pNotes) { if (node.Name == "words") { remarkOrChordName = node.InnerText; } else if (node.Name == "note") { var chord = node.SelectSingleNode("descendant::chord"); if (chord != null) { tick -= durationInTicks; } var type = node.SelectSingleNode("descendant::type"); var dot = node.SelectSingleNode("descendant::dot"); if (dot == null) { durationInTicks = ConvertNoteTypeToTicks(type.InnerText, DottedType.NonDotted); } else { durationInTicks = ConvertNoteTypeToTicks(type.InnerText, DottedType.Dotted); } var step = node.SelectSingleNode("descendant::step"); if (step != null) { string noteId = step.InnerText; var alter = node.SelectSingleNode("descendant::alter"); if (alter != null) { if (alter.InnerText == "1") { noteId += "#"; } } var octave = node.SelectSingleNode("descendant::octave"); noteId += octave.InnerText; int beat = (tick / 480) + 1; var guitarScoreNote = new GuitarScoreNote(noteId, beat, (tick % 480), durationInTicks, 0); var stringNumber = node.SelectSingleNode("descendant::string"); if (stringNumber != null) { guitarScoreNote.DefaultNotePosition.String = int.Parse(stringNumber.InnerText); } var fret = node.SelectSingleNode("descendant::fret"); if (fret != null) { guitarScoreNote.DefaultNotePosition.Fret = int.Parse(fret.InnerText); } if (remarkOrChordName != null) { guitarScoreNote.RemarkOrChordName = remarkOrChordName; remarkOrChordName = null; } pScoreNotes.Add(guitarScoreNote, guitarScoreNote); } tick += durationInTicks; } } }