Пример #1
0
        public void SinglePlay(long tick)
        {
            if (Track.Count > 0)
            {
                SeqData curr = Track.Peek();

                if (tick > curr.TickTime)
                {
                    Track.Dequeue();

                    if (curr.Play && (prev == null || !prev.Play))
                    {
                        motor.Speed = Pitch.GetFrequency(curr.NoteId) / 2;

                        //if (OctaveOffset < 0)
                        //{
                        //    motor.Speed /= 2 * Math.Abs(OctaveOffset);
                        //}
                        //else if (OctaveOffset > 0)
                        //{
                        //    motor.Speed *= 2 * Math.Abs(OctaveOffset);
                        //}

                        prev = curr;
                    }
                    else if (!curr.Play && prev.NoteId == curr.NoteId)
                    {
                        motor.Speed = 0;

                        prev = curr;
                    }
                }
                else if (curr.TickTime - tick < 10)
                {
                    motor.Speed = 0;
                }
            }
            else
            {
                motor.Speed = 0;
                Done        = true;
                return;
            }

            motor.Run();
        }
Пример #2
0
 public override void Play()
 {
     motor.Run();
 }