| 
							- /*
 - Copyright (C) 2010 Devin Anderson
 - 
 - This program is free software; you can redistribute it and/or modify
 - it under the terms of the GNU Lesser General Public License as published by
 - the Free Software Foundation; either version 2.1 of the License, or
 - (at your option) any later version.
 - 
 - This program is distributed in the hope that it will be useful,
 - but WITHOUT ANY WARRANTY; without even the implied warranty of
 - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 - GNU Lesser General Public License for more details.
 - 
 - You should have received a copy of the GNU Lesser General Public License
 - along with this program; if not, write to the Free Software
 - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 - 
 - */
 - 
 - #ifndef __JackMidiUtil__
 - #define __JackMidiUtil__
 - 
 - #include "JackMidiPort.h"
 - 
 - namespace Jack {
 - 
 -     /**
 -      * Use this function to optimize MIDI output by omitting unnecessary status
 -      * bytes.  This can't be used with all MIDI APIs, so before using this
 -      * function, make sure that your MIDI API doesn't require complete MIDI
 -      * messages to be sent.
 -      *
 -      * To start using this function, call this method with pointers to the
 -      * `size` and `buffer` arguments of the MIDI message you want to send, and
 -      * set the `running_status` argument to '0'.  For each subsequent MIDI
 -      * message, call this method with pointers to its `size` and `buffer`
 -      * arguments, and set the `running_status` argument to the return value of
 -      * the previous call to this function.
 -      *
 -      * Note: This function will alter the `size` and `buffer` of your MIDI
 -      * message for each message that can be optimized.
 -      */
 - 
 -     SERVER_EXPORT jack_midi_data_t
 -     ApplyRunningStatus(size_t *size, jack_midi_data_t **buffer,
 -                        jack_midi_data_t running_status=0);
 - 
 -     /**
 -      * A wrapper function for the above `ApplyRunningStatus` function.
 -      */
 - 
 -     SERVER_EXPORT jack_midi_data_t
 -     ApplyRunningStatus(jack_midi_event_t *event,
 -                        jack_midi_data_t running_status);
 - 
 -     /**
 -      * Gets the estimated current time in frames.  This function has the same
 -      * functionality as the JACK client API function `jack_frame_time`.
 -      */
 - 
 -     SERVER_EXPORT jack_nframes_t
 -     GetCurrentFrame();
 - 
 -     /**
 -      * Gets the estimated frame that will be occurring at the given time.  This
 -      * function has the same functionality as the JACK client API function
 -      * `jack_time_to_frames`.
 -      */
 - 
 -     SERVER_EXPORT jack_nframes_t
 -     GetFramesFromTime(jack_time_t time);
 - 
 -     /**
 -      * Gets the precise time at the start of the current process cycle.  This
 -      * function has the same functionality as the JACK client API function
 -      * `jack_last_frame_time`.
 -      */
 - 
 -     SERVER_EXPORT jack_nframes_t
 -     GetLastFrame();
 - 
 -     /**
 -      * Returns the expected message length for the status byte.  Returns 0 if
 -      * the status byte is a system exclusive status byte, or -1 if the status
 -      * byte is invalid.
 -      */
 - 
 -     SERVER_EXPORT int
 -     GetMessageLength(jack_midi_data_t status_byte);
 - 
 -     /**
 -      * Gets the estimated time at which the given frame will occur.  This
 -      * function has the same functionality as the JACK client API function
 -      * `jack_frames_to_time`.
 -      */
 - 
 -     SERVER_EXPORT jack_time_t
 -     GetTimeFromFrames(jack_nframes_t frames);
 - 
 - };
 - 
 - #endif
 
 
  |