コード例 #1
0
        public void GtSceneGuitarNoteValueAndNumber(int pString, int pFret, NoteValue pNoteValue, int pNoteNumber)
        {
            var guitarNote = new GtSceneGuitarNote(new BeatTick(1, 0), new BeatTick(2, 0), pString, pFret);

            Assert.AreEqual(pNoteValue, guitarNote.NoteValue);
            Assert.AreEqual(pNoteNumber, guitarNote.NoteNumber);
        }
コード例 #2
0
        public void StartHitedIsNotReset()
        {
            var factory = new GtFactory();

            factory.AddMapping <IGtPlayedNotesAnalyserHelper, MockGtPlayedNotesAnalyserHelperAlwaysIsNotPlaying>();

            var analyser = factory.Instantiate <IGtPlayedNotesAnalyser>(factory, new DoubleAudioListenerDoNothing(40));

            var note = new GtSceneGuitarNote(new BeatTick(1, 0), new BeatTick(1, 240), 6, 0);

            var startingNotes = new List <GtSceneGuitarNote>();

            startingNotes.Add(note);

            var expectedPlayingNotes = new List <GtSceneGuitarNote>();

            expectedPlayingNotes.Add(note);

            note.Playing    = true;
            note.StartHited = true;

            analyser.Analyse(startingNotes, expectedPlayingNotes);

            Assert.IsTrue(startingNotes[0].StartHited);
            Assert.IsFalse(startingNotes[0].Playing);
        }
コード例 #3
0
        public void NoteIsPlayinAddInLastQueriedPlayedNotes()
        {
            IGtPlayedNotesAnalyserHelper analyserHelper = new GtPlayedNotesAnalyserHelperMock(
                new GtFactoryMockedClock(),
                new DoubleAudioListenerDoNothing(40));

            var note = new GtSceneGuitarNote(
                new BeatTick(1, 0),
                new BeatTick(2, 0),
                6,
                0); //E3

            GtFactoryMockedClock.MockCurrentDateTime = new DateTime(2010, 1, 1, 0, 0, 0, 0);
            GtPlayedNotesAnalyserHelperMock.ValueForNoteIsPlaying = true;
            Assert.IsTrue(analyserHelper.NoteIsPlaying(note)); //note is added to LastQueriedPlayedNotes list

            //50 ms after playedNote added to LastQueriedPlayedNotes
            GtFactoryMockedClock.MockCurrentDateTime = new DateTime(2010, 1, 1, 0, 0, 0,
                                                                    GtPlayedNotesAnalyserHelper.DELAY_TIME_FOR_PLAYING_NOTES_RECOGNITION);
            GtPlayedNotesAnalyserHelperMock.ValueForNoteIsPlaying = false;
            Assert.IsTrue(analyserHelper.NoteIsPlaying(note));

            //51 ms after playedNote added to LastQueriedPlayedNotes
            GtFactoryMockedClock.MockCurrentDateTime = new DateTime(2010, 1, 1, 0, 0, 0,
                                                                    GtPlayedNotesAnalyserHelper.DELAY_TIME_FOR_PLAYING_NOTES_RECOGNITION + 1);
            Assert.IsFalse(analyserHelper.NoteIsPlaying(note));

            //The expired playedNote was removed from analyserHelper.LastQueriedPlayedNotes
            Assert.AreEqual(0, analyserHelper.LastQueriedPlayedNotes.Count);
        }
コード例 #4
0
        public void LastQueriedPlayedNotes()
        {
            IGtPlayedNotesAnalyserHelper analyserHelper = new GtPlayedNotesAnalyserHelper(
                new GtFactoryMockedClock(),
                new DoubleAudioListenerDoNothing(40));

            var note = new GtSceneGuitarNote(
                new BeatTick(1, 0),
                new BeatTick(2, 0),
                6,
                0); //E3

            Assert.IsFalse(analyserHelper.NoteIsPlaying(note));

            //Add the "E3" to the LastQueriedPlayedNotes list
            var playedNote = new MusicalNoteAndTimeStamp();

            playedNote.MusicalNote = new MusicalNote("E3");
            playedNote.TimeStamp   = new DateTime(2010, 1, 1, 0, 0, 0, 0);

            analyserHelper.LastQueriedPlayedNotes.Add(playedNote);

            //50 ms after playedNote added to LastQueriedPlayedNotes
            GtFactoryMockedClock.MockCurrentDateTime = new DateTime(2010, 1, 1, 0, 0, 0,
                                                                    GtPlayedNotesAnalyserHelper.DELAY_TIME_FOR_PLAYING_NOTES_RECOGNITION);
            Assert.IsTrue(analyserHelper.NoteIsPlaying(note));

            //51 ms after playedNote added to LastQueriedPlayedNotes
            GtFactoryMockedClock.MockCurrentDateTime = new DateTime(2010, 1, 1, 0, 0, 0,
                                                                    GtPlayedNotesAnalyserHelper.DELAY_TIME_FOR_PLAYING_NOTES_RECOGNITION + 1);
            Assert.IsFalse(analyserHelper.NoteIsPlaying(note));

            //The expired playedNote was removed from analyserHelper.LastQueriedPlayedNotes
            Assert.AreEqual(0, analyserHelper.LastQueriedPlayedNotes.Count);
        }
コード例 #5
0
        private static Color CalculateNoteColor(GtSceneGuitarNote pSceneGuitarNote)
        {
            //Color by Fret
            return(CalculateColorByFret(pSceneGuitarNote.Fret));

            //Color by Note - Use the MusicalNote class to get the right color for this note
            //var auxNote = new MusicalNote(pSceneGuitarNote.NoteValue.ToString() + "3");
            //var color = auxNote.NoteColor();
            //return color;
        }
コード例 #6
0
        public void NoteIsPlayingSignature()
        {
            IGtPlayedNotesAnalyserHelper analyserHelper = new GtPlayedNotesAnalyserHelper(
                new GtFactory(),
                new DoubleAudioListenerDoNothing(40));

            var note = new GtSceneGuitarNote(
                new BeatTick(1, 0),
                new BeatTick(2, 0),
                6,
                0); //E3

            Assert.IsFalse(analyserHelper.NoteIsPlaying(note));
        }
コード例 #7
0
        public void OnePlayingNoteShouldReturn1Point()
        {
            var factory = new GtFactory();

            factory.AddMapping <IGtPlayedNotesAnalyserHelper, MockGtPlayedNotesAnalyserHelperAlwaysIsPlaying>();

            var analyser = factory.Instantiate <IGtPlayedNotesAnalyser>(factory, new DoubleAudioListenerDoNothing(40));

            var note1 = new GtSceneGuitarNote(new BeatTick(1, 0), new BeatTick(1, 240), 6, 0);

            var startingNotes = new List <GtSceneGuitarNote>();

            var expectedPlayingNotes = new List <GtSceneGuitarNote>();

            expectedPlayingNotes.Add(note1);

            var points = analyser.Analyse(startingNotes, expectedPlayingNotes);

            Assert.AreEqual(1, points);
        }
コード例 #8
0
        private void RenderNoteDuration(GtSceneGuitarNote pSceneGuitarNote, Rectangle pNoteRectangle, Color pColor, SpriteBatch pSpriteBatch)
        {
            var width = pNoteRectangle.Width / 3;
            var x     = pNoteRectangle.X + (pNoteRectangle.Width - width) / 2;

            //height
            var lengthInTicks = pSceneGuitarNote.EndPosition.AsTicks() - pSceneGuitarNote.StartPosition.AsTicks();
            var height        = (int)(this.TickHeight * lengthInTicks);

            var y = (pNoteRectangle.Y - height) + (this.BallWidth / 2);

            Rectangle visibleArea = this.CutOffOutOfBoundArea(new Rectangle(x, y, width, height));

            //draw effect (back)
            if (pSceneGuitarNote.Playing)
            {
                Rectangle effectArea = this.CutOffOutOfBoundArea(new Rectangle(x - width / 2, y, 2 * width, height));

                //draw the duration bar
                pSpriteBatch.Draw(
                    this.Game.NoteSusteinTexture,
                    effectArea,
                    pColor);


                //draw the duration bar with playing effect
                pSpriteBatch.Draw(
                    this.Game.NoteSusteinPlayingEffect,
                    visibleArea,
                    pColor);
            }
            else
            {
                //draw the duration bar
                pSpriteBatch.Draw(
                    this.Game.NoteSusteinTexture,
                    visibleArea,
                    pColor);
            }
        }
コード例 #9
0
        public void AnalyseMustReturnZeroIfNoNoteIsCorrect()
        {
            var factory = new GtFactory();

            factory.AddMapping <IGtPlayedNotesAnalyserHelper, MockGtPlayedNotesAnalyserHelperAlwaysIsNotPlaying>();

            var analyser = factory.Instantiate <IGtPlayedNotesAnalyser>(factory, new DoubleAudioListenerDoNothing(40));

            var note = new GtSceneGuitarNote(new BeatTick(1, 0), new BeatTick(1, 240), 6, 0);

            var startingNotes = new List <GtSceneGuitarNote>();

            startingNotes.Add(note);

            var expectedPlayingNotes = new List <GtSceneGuitarNote>();

            expectedPlayingNotes.Add(note);

            var points    = analyser.Analyse(startingNotes, expectedPlayingNotes);
            var maxPoints = analyser.AnalyseMaximum(startingNotes, expectedPlayingNotes);

            Assert.AreEqual(0, points);
            Assert.AreEqual(101, maxPoints);
        }
コード例 #10
0
 public bool NoteIsPlaying(GtSceneGuitarNote pSceneGuitarNote)
 {
     return(false);
 }
コード例 #11
0
        private void RenderNote(GtSceneGuitar pSceneGuitar, GtSceneGuitarNote pSceneGuitarNote, SpriteBatch pSpriteBatch)
        {
            var x = this.X - (this.Distance / 2); //start position - 6th string

            //positioning at the correct string
            x += (6 - pSceneGuitarNote.String) * this.Distance;

            x += 2;

            var color = CalculateNoteColor(pSceneGuitarNote);

            switch (pSceneGuitarNote.String)
            {
            case 6:
                x += 1;     //this string is large
                break;

            case 5:
                x += 1;     //this string is large
                break;

            case 4:
                x += 1;     //this string is large
                break;

            case 3:
                break;

            case 2:
                break;

            case 1:
                break;
            }


            //Draw the boll
            int y = this.Height
                    - (int)(this.TickHeight * pSceneGuitarNote.DistanceFromCurrentPosition)
                    - (this.BallWidth / 2);


            if (y < 0)
            {
                return;
            }

            var noteRectangle = new Rectangle(x, y, this.BallWidth, this.BallWidth);

            this.RenderNoteDuration(pSceneGuitarNote, noteRectangle, color, pSpriteBatch);

            if (pSceneGuitarNote.Fret < 7)
            {
                pSpriteBatch.Draw(this.Game.BallTexture, noteRectangle, color);
            }
            else if (pSceneGuitarNote.Fret < 14)
            {
                pSpriteBatch.Draw(this.Game.StarTexture, noteRectangle, color);
            }
            else
            {
                pSpriteBatch.Draw(this.Game.SquareTexture, noteRectangle, color);
            }


            #region Draw the note content (note letter or fret number)

            string noteContent;
            int    shift;

            noteContent = pSceneGuitarNote.Fret.ToString();
            //noteContent = pSceneGuitarNote.NoteValue.AsSharpedString();

            //Draw the fret number
            if (noteContent.Length == 1)
            {
                shift = 8; //1 digit
            }
            else
            {
                shift = 2; //2 digits
            }
            var x2 = x + 3;
            var y2 = y + 5;

            pSpriteBatch.DrawString(this.Game.FontFretNumbers, noteContent, new Vector2(x2 + shift - 2, y2), Color.Black);
            pSpriteBatch.DrawString(this.Game.FontFretNumbers, noteContent, new Vector2(x2 + shift, y2 - 2), Color.Black);
            pSpriteBatch.DrawString(this.Game.FontFretNumbers, noteContent, new Vector2(x2 + shift + 2, y2), Color.Black);
            pSpriteBatch.DrawString(this.Game.FontFretNumbers, noteContent, new Vector2(x2 + shift, y2 + 2), Color.Black);
            pSpriteBatch.DrawString(this.Game.FontFretNumbers, noteContent, new Vector2(x2 + shift, y2), Color.White);

            #endregion

            if (pSceneGuitarNote.Playing)
            {
                var fireHeight    = 3 * this.BallWidth;
                var fireRectangle = new Rectangle(x, MatchBall_Y - fireHeight + (2 * this.BallWidth / 3), this.BallWidth, fireHeight);

                pSpriteBatch.Draw(this.Game.FireTexture,
                                  fireRectangle, Color.White);
            }


            #region Draw the chord name

            var tickData = pSceneGuitar.TickDataTable[pSceneGuitarNote.StartPosition.Beat, pSceneGuitarNote.StartPosition.Tick];
            if (tickData.IsStartTick)
            {
                var chordName = tickData.RemarkOrChordName;
                pSpriteBatch.DrawString(
                    this.Game.FontFretNumbers,
                    " " + chordName,
                    new Vector2(this.X - (2 * this.Distance), y), //left
                    Color.Silver);

                if (tickData.DrawChord)
                {
                    RenderChordPicture(pSpriteBatch, tickData, y);
                }
            }

            #endregion
        }
コード例 #12
0
 protected override bool CheckIfNoteIsPlaying(GtSceneGuitarNote pSceneGuitarNote)
 {
     //return base.CheckIfNoteIsPlaying(pSceneGuitarNote);
     return(ValueForNoteIsPlaying);
 }