void Awake() { _metronome = new Metronome(HighResTime.UtcNow, 60 * HighResTime.SECOND2TICK / tempo, loop); _metronome.Update(); _lastX = _metronome.x; _cubeInfos = new CubeInfo[loop, height]; _cubeLayerMask = (1 << LayerMask.NameToLayer("CubeMatrix")); _audioSources = new AudioSource[nAudioBuffers * height]; for (var i = 0; i < _audioSources.Length; i++) _audioSources[i] = gameObject.AddComponent<AudioSource>(); }
internal override void Update() { UpdatePendingChanges(); Metronome.Update(); //todo move internally into AudioEngine if (AudioEngine.ActiveTimingPointIndex != lastActiveTimingIndex) //This could be an event-delegate { lastActiveTimingIndex = AudioEngine.ActiveTimingPointIndex; GameBase.EditorControl.TimeSignatureChanged(AudioEngine.TimeSignature); } }
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); }
/// <inheritdoc /> /// <summary> /// </summary> /// <param name="gameTime"></param> public override void Update(GameTime gameTime) { if (!Exiting) { PlayHitsounds(); if (ConfigManager.EditorPlayMetronome.Value) { Metronome.Update(gameTime); } if (AudioEngine.Track.IsDisposed) { AudioEngine.LoadCurrentTrack(); } HandleInput(gameTime); } base.Update(gameTime); }
protected virtual void Update() { metronome.Update(); }
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); }