Exemple #1
0
        public IEnumerable <PinEvent> getOnOffEvents(PinMessage m, double ms)
        {
            var pinToSend = m.PinNumber;

            var actuator = pins.GetActuatorPin(pinToSend).Actuator;

            // calculate the off time
            var offTime = ms + actuator.GetOnLengthMsForVoltage(m.Value);

            // do the velocity (it is scaled in the actuator)
            var value = actuator.MapData(m.Value);

            // on
            yield return(new PinEvent()
            {
                TotalMsDelta = ms,
                Message = new PinMessage()
                {
                    PinNumber = pinToSend,
                    Value = value
                }
            });

            // off
            yield return(new PinEvent()
            {
                TotalMsDelta = offTime,
                Message = new PinMessage()
                {
                    PinNumber = pinToSend,
                    Value = 0
                }
            });
        }
 public void Schedule(PinMessage m, double ms)
 {
     Schedule(new PinEvent()
     {
         Message = m, TotalMsDelta = ms
     });
 }
        public void Record(PinMessage cmd)
        {
            if ((events.Count == 0) && (FirstNoteStartsRecording))
            {
                BeginRecord();
            }

            //            System.Diagnostics.Debug.WriteLine("Recorded pin " + cmd.PinNumber + "," + cmd.Value + " #" + events.Count + " at " + DeltaMs);

            events.Enqueue(new PinEvent()
            {
                Message      = cmd,
                TotalMsDelta = DeltaMs
            });
        }
        public void Record(PinMessage cmd)
        {
            if ((events.Count == 0) && (FirstNoteStartsRecording))
            {
                BeginRecord();
            }

            //            System.Diagnostics.Debug.WriteLine("Recorded pin " + cmd.PinNumber + "," + cmd.Value + " #" + events.Count + " at " + DeltaMs);

            events.Enqueue(new PinEvent()
            {
                Message = cmd,
                TotalMsDelta = DeltaMs
            });
        }
Exemple #5
0
        public void Send(PinMessage cmd)
        {
            //            System.Diagnostics.Debug.WriteLine(value);
            // get the actual pin messages (on and off)
            var events = getOnOffEvents(cmd, 0);

            foreach (var e in events)
            {
                // send each message
                if (!noteons.ContainsKey(cmd.PinNumber))
                {
                    // not already playing.. send it
                    send(e);
                }
                else
                {
                    System.Diagnostics.Debug.WriteLine("skip " + cmd.PinNumber);
                }
            }
        }
 public void Schedule(PinMessage m, double ms)
 {
     Schedule(new PinEvent() { Message = m, TotalMsDelta = ms });
 }
        public void Send(PinMessage cmd)
        {
            //            System.Diagnostics.Debug.WriteLine(value);
            // get the actual pin messages (on and off)
            var events = getOnOffEvents(cmd, 0);

            foreach (var e in events)
            {
                // send each message
                if (!noteons.ContainsKey(cmd.PinNumber))
                {
                    // not already playing.. send it
                    send(e);
                }
                else
                {
                    System.Diagnostics.Debug.WriteLine("skip " + cmd.PinNumber);
                }
            }
        }
        public IEnumerable<PinEvent> getOnOffEvents(PinMessage m, double ms)
        {
            var pinToSend = m.PinNumber;

            var actuator = pins.GetActuatorPin(pinToSend).Actuator;

            // calculate the off time
            var offTime = ms + actuator.GetOnLengthMsForVoltage(m.Value);

            // do the velocity (it is scaled in the actuator)
            var value = actuator.MapData(m.Value);

            // on
            yield return new PinEvent()
            {
                TotalMsDelta = ms,
                Message = new PinMessage()
                {
                    PinNumber = pinToSend,
                    Value = value
                }
            };
            // off
            yield return new PinEvent()
            {
                TotalMsDelta = offTime,
                Message = new PinMessage()
                {
                    PinNumber = pinToSend,
                    Value = 0
                }
            };
        }