AlphaTab.Audio.Model.MidiTickLookup.FindBeat C# (CSharp) Method

FindBeat() public method

public FindBeat ( AlphaTab.Model.Track tracks, int tick ) : Beat
tracks AlphaTab.Model.Track
tick int
return AlphaTab.Model.Beat
        public Beat FindBeat(Track[] tracks, int tick)
        {
            // get all beats within the masterbar
            var masterBar = FindMasterBar(tick);
            if (masterBar == null)
            {
                return null;
            }

            BeatTickLookup beat = null;
            for (int t = 0; t < tracks.Length; t++)
            {
                var beats = masterBar.BeatsPerTrack[tracks[t].Index];
                if (beats != null)
                {
                    for (int b = 0; b < beats.Count; b++)
                    {
                        // is the current beat played on the given tick?
                        var currentBeat = beats[b];
                        if (currentBeat.Start <= tick && tick < currentBeat.End)
                        {
                            // take the latest played beat we can find. (most right)
                            if (beat == null || (beat.Start < currentBeat.Start))
                            {
                                beat = beats[b];
                            }
                        }
                        // if we are already past the tick, we can stop searching
                        else if (currentBeat.End > tick)
                        {
                            break;
                        }
                    }
                }
            }

            if (beat == null)
            {
                return null;
            }

            return beat.Beat;
        }