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);
        }
Beispiel #3
0
        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
        }
Beispiel #7
0
        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));
        }
Beispiel #9
0
        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;
        }
Beispiel #10
0
        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());
        }
Beispiel #12
0
        public void InvalidString_7()
        {
            var scoreNote = new GuitarScoreNote("E6", 1, 0, 480, 0);

            var notePosition = scoreNote.CalculateNotePosition(7);
        }
Beispiel #13
0
 public void InvalidGuitarNote_TooHigh()
 {
     //TODO: Verify if E7 is more accute guitar note.
     var scoreNote = new GuitarScoreNote("F7", 1, 0, 480, 0);
 }
Beispiel #14
0
 public void InvalidGuitarNote_TooLow()
 {
     var scoreNote = new GuitarScoreNote("Eb3", 1, 0, 480, 0);
 }
Beispiel #15
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;
                }
            }
        }