Esempio n. 1
0
        internal static unsafe void WriteToJackMidi(this MidiEventCollection <MidiOutEvent> midiEvents, uint nframes)
        {
            float *portBuf = PortApi.GetBuffer(midiEvents.Port._port, nframes);

            MidiApi.ClearBuffer(portBuf);
            foreach (MidiOutEvent midiEvent in midiEvents)
            {
                byte *buffer = MidiApi.ReserveEvent(portBuf, (uint)midiEvent.Time, (uint)midiEvent.MidiData.Length);
                StructPointer <byte> bufferPointer = new StructPointer <byte> ((IntPtr)buffer, (uint)midiEvent.MidiData.Length);
                bufferPointer.Array = midiEvent.MidiData;
                bufferPointer.CopyToPointer();
            }
        }
Esempio n. 2
0
        internal unsafe List <MidiInEvent> GetMidiEvents(uint nframes)
        {
            List <MidiInEvent> midiEvents = new List <MidiInEvent> ();

            IntPtr portBuffer = (IntPtr)PortApi.GetBuffer(_port, nframes);
            uint   eventCount = MidiApi.GetEventCount(portBuffer);

            for (uint i = 0; i < eventCount; i++)
            {
                UnsafeStructs.jack_midi_event_t inEvent;
                MidiApi.GetEvent(&inEvent, portBuffer, i);
                midiEvents.Add(new MidiInEvent(inEvent));
            }
            return(midiEvents);
        }