Ejemplo n.º 1
0
        private void _UpdateBeats()
        {
            _thirtySecondCount++;
            _BuildBeatMask();
            if (Tick != null)
            {
                Tick(new BeatArgs(BeatValue.ThirtySecond, _thirtySecondCount, _nextThirtySecond, _nextThirtySecond + _thirtySecondLength, _beatMask));
            }

            eventManager.Fire(new ThirtySecond(_thirtySecondCount));

            if (Beat != null)
            {
                Beat(new BeatArgs(BeatValue.ThirtySecond, _thirtySecondCount, _nextThirtySecond, _nextThirtySecond + _thirtySecondLength, _beatMask));
            }

            if (_unitOfTempo == BeatValue.ThirtySecond)
            {
                eventManager.Fire(new Beat(_thirtySecondCount));
            }

            //latency.Add(AudioSettings.dspTime - _nextThirtySecond); //benchmarking stuff
            _nextThirtySecond += _thirtySecondLength;

            if (_beatMask[(int)BeatValue.Sixteenth])
            {
                _sixteenthCount++;
                eventManager.Fire(new Sixteenth(_sixteenthCount));
                if (Beat != null)
                {
                    Beat(new BeatArgs(BeatValue.Sixteenth, _sixteenthCount, _nextSixteenth, _nextSixteenth + _sixteenthLength, _beatMask));
                }

                if (_unitOfTempo == BeatValue.Sixteenth)
                {
                    eventManager.Fire(new Beat(_sixteenthCount));
                }

                _nextSixteenth += _sixteenthLength;
            }
            if (_beatMask[(int)BeatValue.Eighth])
            {
                _eighthCount++;
                eventManager.Fire(new Eighth(_eighthCount));
                if (Beat != null)
                {
                    Beat(new BeatArgs(BeatValue.Eighth, _eighthCount, _nextEighth, _nextEighth + _eighthLength, _beatMask));
                }

                if (_unitOfTempo == BeatValue.Eighth)
                {
                    eventManager.Fire(new Beat(_eighthCount));
                }

                _nextEighth += _eighthLength;
            }
            if (_beatMask[(int)BeatValue.Quarter])
            {
                _quarterCount++;
                eventManager.Fire(new Quarter(_quarterCount));

                if (Beat != null)
                {
                    Beat(new BeatArgs(BeatValue.Quarter, _quarterCount, _nextQuarter, _nextQuarter + _quarterLength,
                                      _beatMask));
                }

                if (_unitOfTempo == BeatValue.Quarter)
                {
                    eventManager.Fire(new Beat(_quarterCount));
                }

                _nextQuarter += _quarterLength;
            }
            if (_beatMask[(int)BeatValue.Half])
            {
                _halfCount++;
                eventManager.Fire(new Half(_halfCount));
                if (Beat != null)
                {
                    Beat(new BeatArgs(BeatValue.Half, _halfCount, _nextHalf, _nextHalf + _halfLength, _beatMask));
                }

                if (_unitOfTempo == BeatValue.Half)
                {
                    eventManager.Fire(new Beat(_halfCount));
                }

                _nextHalf += _halfLength;
            }
            if (_beatMask[(int)BeatValue.Whole])
            {
                _wholeCount++;
                eventManager.Fire(new Whole(_wholeCount));
                _nextWhole += _wholeLength;
            }
            if (_beatMask[(int)BeatValue.Measure])
            {
                _measureCount++;
                eventManager.Fire(new Measure(_measureCount));
                _nextMeasure += _measureLength;
            }
        }