Пример #1
0
 public MidiID(int channel, int data1, int port, MidiStatus status)
 {
     this.channel = channel;
     this.data1   = data1;
     this.port    = port;
     this.status  = status;
 }
Пример #2
0
    public void PlayMidi(MidiStatus midiStatus)
    {
        switch (midiStatus)
        {
        case MidiStatus.Play:
            if (!Running)
            {
                StartCoroutine(playMidi);
                Running = true;
            }
            break;

        case MidiStatus.Stop:
            if (Running)
            {
                StopCoroutine(playMidi);
                Running = false;
            }
            break;

        case MidiStatus.Pause:
        default:
            UnityEngine.Debug.Log(string.Format("MIDI status, {0}, not available", midiStatus));
            break;
        }
    }
Пример #3
0
        //get data2 from midi
        static int GetMidi(int data1, int port = -1, MidiStatus status = MidiStatus.Dummy)
        {
            //initialize if necessary
            if (!_initialized)
            {
                Initialize();

                //quit if initialization was not done successfully
                if (!_initialized)
                {
                    return(0);
                }
            }
            // check if no port was given
            if (port < 0)
            {
                //check every port
                for (int i = 0; i < currdevices.Length; i++)
                {
                    //if the note is active
                    if (currdevices[i].DataActive(data1, status))
                    {
                        return(currdevices[i].getData(data1).data2);
                    }
                }
                return(0);
            }
            // if port was specified, find and get data from port given.
            else if (port < portCount && currdevices[port].DataActive(data1, status))
            {
                return(currdevices[port].getData(data1).data2);
            }
            return(0);
        }
Пример #4
0
        public void EqualityTest()
        {
            var code1 = new MidiStatus(1);
            var code2 = new MidiStatus(2);

            Assert.IsTrue(code1.Equals(new MidiStatus(1)));
            Assert.IsFalse(code1.Equals(code2));
        }
Пример #5
0
 public MidiNoteOn(
     MidiStatus status,
     MidiNoteNumber midiNoteNumber,
     MidiVelocity midiVelocity)
 {
     Status    = status;
     DataByte1 = midiNoteNumber;
     DataByte2 = midiVelocity;
 }
Пример #6
0
 public MidiData getLastSpecial(MidiStatus status)
 {
     //check if the status given is special
     if (isSpecial(status) && activedata.ContainsKey(11 - (int)status))
     {
         return(activedata[11 - (int)status]);
     }
     return(CreateMidiDummy(0));
 }
Пример #7
0
 public MidiData(float timeStamp, MidiStatus status, int channel, byte data1, byte data2, byte[] rawData)
 {
     this.timeStamp = timeStamp;
     this.status    = status;
     this.channel   = channel;
     this.data1     = data1;
     this.data2     = data2;
     this.rawData   = rawData;
 }
Пример #8
0
 public MidiControlChange(
     MidiStatus status,
     MidiControlChangeNumber midiControlChangeNumber,
     MidiControlChangeValue midiControlChangeValue)
 {
     Status    = status;
     DataByte1 = midiControlChangeNumber;
     DataByte2 = midiControlChangeValue;
 }
Пример #9
0
        public static void SendSimpleData(uint port, MidiStatus status, byte data1, byte data2, byte channel = 0)
        {
            byte[] data = { (byte)(((int)status << 4) | (channel & 0xF)), data1, data2 };

            SendRawData(port, data);
        }
Пример #10
0
 bool isSpecial(MidiStatus status)
 {
     //values after CC messages do not follow a unique value on data 1
     return((int)status > 11);
 }
Пример #11
0
 //creates a dummy data for any uninitialized midi notes
 //returns MidiData Dummy
 static MidiData CreateMidiDummy(int data1, MidiStatus status = MidiStatus.Dummy)
 {
     return(new MidiData(0, status, 0, (byte)data1, 0, null));
 }
Пример #12
0
 public bool DataActive(int data1, MidiStatus status = MidiStatus.Dummy)
 {
     return(activedata.ContainsKey(data1) &&
            activedata[data1].status == status &&
            activedata[data1].data2 != 0);
 }
Пример #13
0
 public MidiProgramChange(MidiStatus status, MidiProgramChangeNumber number)
 {
     Status    = status;
     DataByte1 = number;
     DataByte2 = GenericMidiData.Empty;
 }
Пример #14
0
		// Constructors
		public MidiData( MidiStatus status, byte channel, byte byte1, byte byte2, uint ts )
		{
			this.status = (byte)(status+channel);
			this.byte1 = byte1;
			this.byte2 = byte2;
			timestamp = ts;
		}