Esempio n. 1
0
 // Invoke the BPM event
 private void OnBPM()
 {
     if (BPMEvent != null)
     {
         BPMEvent.Invoke();
     }
 }
Esempio n. 2
0
    public BeatLerper(BPMEvent[] events_arr, double offset)
    {
        IEnumerable <BPMEvent> events  = events_arr.OrderBy(ev => ev.beat);
        List <BeatLine>        lines_l = new List <BeatLine>();

        BPMEvent ev1 = events.First();

        if (ev1.type == BPMEventType.Stop)
        {
            Debug.LogException(new System.Exception("First BPM event must be a BPM change"));
        }
        lines_l.Add(new BeatLine(0, double.PositiveInfinity, ev1.newBPM / 60, 0, offset));

        foreach (BPMEvent ev in events.Skip(1))
        {
            BeatLine left = lines_l.Last();
            left.end = left.TimeFromBeat(ev.beat);
            lines_l[lines_l.Count - 1] = left;

            if (ev.type == BPMEventType.BPMChange)
            {
                double new_bps = ev.newBPM / 60;
                lines_l.Add(new BeatLine(left.end, double.PositiveInfinity, new_bps, ev.beat - new_bps * left.end, offset));
            }
            else // it's a stop
            {
                lines_l.Add(new BeatLine(left.end, left.end + ev.stopDuration, 0, ev.beat, offset));
                lines_l.Add(new BeatLine(left.end + ev.stopDuration, double.PositiveInfinity, left.bps, ev.beat - left.bps * (left.end + ev.stopDuration), offset));
            }
        }

        lines = lines_l.ToArray();
    }