コード例 #1
0
            public IEnumerable <Midi.MidiMessage> GetCurrMessages(int channel, Midi.MidiMessage.Type type)
            {
                float currTime = 0f;

                if (audio.volume != 0.0f)
                {
                    currTime = audio.time;
                }
                else
                {
                    return(new List <Midi.MidiMessage>());
                }
                if (lastTime > currTime)
                {
                    Refill();
                }
                lastTime = currTime;
                List <Midi.MidiMessage> targets      = new List <Assets.Midi.MidiMessage>();
                List <Midi.MidiMessage> afterConsume = new List <Assets.Midi.MidiMessage>();

                foreach (var msg in midiMessages)
                {
                    if (Math.Abs(msg.Time - currTime) < delta && audio.isPlaying && msg.Channel == channel && msg.MessageType == type)
                    {
                        targets.Add(msg);
                    }
                    else
                    {
                        afterConsume.Add(msg);
                    }
                }
                midiMessages = afterConsume;
                return(targets);
            }
コード例 #2
0
 public ClipMidiEvent(Params ps)
     : base(ps)
 {
     this.clipName = ps.GetString("ClipName");
     this.channel  = ps.GetInt("Channel");
     this.type     = (Midi.MidiMessage.Type)Enum.Parse(typeof(Midi.MidiMessage.Type), ps.GetString("MessageType"));
     this.clip     = MonoHelper.MonoFindClip(clipName);
     this.tracker  = clip.GetTracker();
 }