Exemplo n.º 1
0
        public void TestBeat()
        {
            int beatCount = 0;

            DummyMusicController musicController = new DummyMusicController();
            Metronome            metronome       = new Metronome()
            {
                AudioController = musicController
            };

            metronome.OnBeat += () => beatCount++;

            Assert.AreEqual(TimingControlPoint.DefaultBeatLength, metronome.BeatLength.Value, Delta);
            Assert.AreEqual(0, beatCount);

            metronome.Update();
            Assert.AreEqual(1, beatCount);

            musicController.CurrentTime = metronome.BeatLength.Value * 0.5f;
            metronome.Update();
            Assert.AreEqual(1, beatCount);

            musicController.CurrentTime = metronome.BeatLength.Value;
            metronome.Update();
            Assert.AreEqual(2, beatCount);

            musicController.CurrentTime = metronome.BeatLength.Value * 1.5f;
            metronome.Update();
            Assert.AreEqual(2, beatCount);

            musicController.CurrentTime = metronome.BeatLength.Value * 2f;
            metronome.Update();
            Assert.AreEqual(3, beatCount);

            musicController.Stop();
            metronome.Update();
            Assert.AreEqual(4, beatCount);

            musicController.Seek(metronome.BeatLength.Value * 3f);
            metronome.Update();
            Assert.AreEqual(5, beatCount);

            musicController.CurrentTime = metronome.BeatLength.Value * 4f;
            metronome.Update();
            Assert.AreEqual(6, beatCount);
        }
Exemplo n.º 2
0
        public void TestChangeAudioController()
        {
            DummyMusicController controller1 = new DummyMusicController();
            DummyMusicController controller2 = new DummyMusicController();
            Metronome            metronome   = new Metronome();

            controller1.CurrentTime = metronome.BeatLength.Value * 1f;
            controller2.CurrentTime = metronome.BeatLength.Value * 3f;

            metronome.AudioController = controller1;
            Assert.AreEqual(1, metronome.BeatIndex.Value);

            metronome.AudioController = controller2;
            Assert.AreEqual(3, metronome.BeatIndex.Value);

            controller1.Seek(4);
            Assert.AreEqual(3, metronome.BeatIndex.Value);

            metronome.AudioController = controller1;
            Assert.AreEqual(0, metronome.BeatIndex.Value);

            controller1.Seek(metronome.BeatLength.Value * 6);
            Assert.AreEqual(2, metronome.BeatIndex.Value);
        }
Exemplo n.º 3
0
        public void TestBeatIndex()
        {
            DummyMusicController musicController = new DummyMusicController();
            Metronome            metronome       = new Metronome()
            {
                AudioController = musicController
            };

            Assert.AreEqual(BeatFrequency.Full, metronome.Frequency.Value);
            Assert.AreEqual((int)TimeSignatureType.Quadruple * (int)BeatFrequency.Full, metronome.BeatsInInterval.Value);
            Assert.AreEqual(0, metronome.BeatIndex.Value);

            musicController.CurrentTime = metronome.BeatLength.Value * 0.5f;
            metronome.Update();
            Assert.AreEqual(0, metronome.BeatIndex.Value);

            for (int i = 1; i < 4; i++)
            {
                musicController.CurrentTime = metronome.BeatLength.Value * i;
                metronome.Update();
                Assert.AreEqual(i, metronome.BeatIndex.Value);
            }

            musicController.CurrentTime = metronome.BeatLength.Value * 4f;
            metronome.Update();
            Assert.AreEqual(0, metronome.BeatIndex.Value);

            metronome.Frequency.Value   = BeatFrequency.Half;
            musicController.CurrentTime = metronome.BeatLength.Value * 8f;
            metronome.Update();
            Assert.AreEqual(0, metronome.BeatIndex.Value);

            for (int i = 1; i < 8; i++)
            {
                musicController.CurrentTime = metronome.BeatLength.Value * (i + 8f);
                metronome.Update();
                Assert.AreEqual(i, metronome.BeatIndex.Value);
            }

            musicController.CurrentTime = metronome.BeatLength.Value * 16f;
            metronome.Update();
            Assert.AreEqual(0, metronome.BeatIndex.Value);

            metronome.Frequency.Value   = BeatFrequency.Quarter;
            musicController.CurrentTime = metronome.BeatLength.Value * 32f;
            metronome.Update();
            Assert.AreEqual(0, metronome.BeatIndex.Value);

            for (int i = 1; i < 16; i++)
            {
                musicController.CurrentTime = metronome.BeatLength.Value * (i + 32f);
                metronome.Update();
                Assert.AreEqual(i, metronome.BeatIndex.Value);
            }

            musicController.CurrentTime = metronome.BeatLength.Value * 48f;
            metronome.Update();
            Assert.AreEqual(0, metronome.BeatIndex.Value);

            musicController.CurrentTime = metronome.BeatLength.Value * 49f;
            metronome.Update();
            Assert.AreEqual(1, metronome.BeatIndex.Value);

            musicController.Stop();
            metronome.Update();
            Assert.AreEqual(0, metronome.BeatIndex.Value);

            musicController.Seek(metronome.BeatLength.Value * 8);
            metronome.Update();
            Assert.AreEqual(8, metronome.BeatIndex.Value);
        }