Exemple #1
0
 MidiDriver.KnobDelegate CreateControlChangeDelegate(int ccNumber, FieldInfo portField)
 {
     MidiDriver.KnobDelegate knobDelegate = (MidiChannel channel, int knobNumber, float knobValue) =>
     {
         if (channel.Equals(this.MidiChannel))
         {
             if (knobNumber.Equals(ccNumber))
             {
                 portField.SetValue(this, knobValue);
                 Debug.Log("cc: " + ccNumber + ", " + knobValue);
             }
         }
     };
     ControlChangeDelegates.Add(knobDelegate);
     return(knobDelegate);
 }
Exemple #2
0
 public override void Apply()
 {
     MidiDriver.KnobDelegate action = (MidiChannel ch, int knob, float val) =>
     {
         if ((ch == channel || channel == MidiChannel.All) && knob == knobNumber)
         {
             onKnob.Invoke(val);
         }
     };
     info = new MidiCcEventInfo()
     {
         knobName   = knobName,
         channel    = channel,
         knobNumber = knobNumber,
         methods    = Enumerable.Range(0, onKnob.GetPersistentEventCount())
                      .Select(idx => onKnob.GetPersistentTarget(idx).ToString() + "." + onKnob.GetPersistentMethodName(idx))
                      .ToArray()
     };
     MidiController.AddCcAction(action, info);
 }
Exemple #3
0
 public static void AddCcAction(MidiDriver.KnobDelegate knobAction, MidiCcEventInfo info)
 {
     MidiMaster.knobDelegate += knobAction;
     Instance.eventList.Add(info);
     Instance.eventList.OrderBy(b => b.channel.ToString() + b.knobNumber).ToList();
 }