Click here to Skip to main content
15,881,600 members
Articles / Programming Languages / C#

C# MIDI Toolkit

Rate me:
Please Sign up or sign in to vote.
4.95/5 (177 votes)
18 Apr 2007MIT18 min read 3.2M   41.7K   303  
A toolkit for creating MIDI applications with C#.
<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Multimedia.Midi</name>
    </assembly>
    <members>
        <member name="T:Multimedia.Midi.IMidiDevice">
            <summary>
            Represents the basic functionality provided by MIDI devices.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.IMidiDevice.Open(System.Int32)">
            <summary>
            Opens the MIDI device with the specified device ID.
            </summary>
            <param name="deviceID">
            The device ID.
            </param>
        </member>
        <member name="M:Multimedia.Midi.IMidiDevice.Close">
            <summary>
            Closes the MIDI device.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.IMidiDevice.IsOpen">
            <summary>
            Indicates whether or not the MIDI device is open.
            </summary>
            <returns>
            <b>true</b> if the MIDI device is open; otherwise, <b>false</b>.
            </returns>
        </member>
        <member name="E:Multimedia.Midi.IMidiDevice.SysExHeaderErrorOccurred">
            <summary>
            Occures when the MIDI device encounters an error processing 
            system exclusive headers.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.IMidiDevice.DeviceHandle">
            <summary>
            Gets the MIDI device's handle.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.IMidiDevice.DeviceID">
            <summary>
            Gets the MIDI device's ID.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.SysExHeaderErrorHandler">
            <summary>
            Represents the method for handling system exclusive header errors.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.SysExHeaderErrorEventArgs">
            <summary>
            Provides data for the SysExHeaderErrorOccurred event.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.SysExHeaderErrorEventArgs.#ctor(System.String)">
            <summary>
            Initializes a new instance of the SysExHeaderErrorEventArgs class 
            with the specified string message.
            </summary>
            <param name="message">
            The text message describing the error.
            </param>
        </member>
        <member name="P:Multimedia.Midi.SysExHeaderErrorEventArgs.Message">
            <summary>
            Gets the text description of the error.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.InvalidShortMessageEventHandler">
            <summary>
            Represents the method that will handle the event that occurs when an
            invalid short message is received.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.IMidiReceiver">
            <summary>
            Represents the basic functionality provided by a device capable of 
            receiving Midi messages.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.IMidiReceiver.Start">
            <summary>
            Starts receiving Midi messages.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.IMidiReceiver.Stop">
            <summary>
            Stops receiving Midi messages.
            </summary> 
        </member>
        <member name="M:Multimedia.Midi.IMidiReceiver.IsRecording">
            <summary>
            Indicates whether or not the MIDI receiver is recording.
            </summary>
            <returns>
            <b>true</b> if the MIDI receiver is recording; otherwise, 
            <b>false</b>.
            </returns>
        </member>
        <member name="E:Multimedia.Midi.IMidiReceiver.ChannelMessageReceived">
            <summary>
            Occurs when a channel message is received.
            </summary>
        </member>
        <member name="E:Multimedia.Midi.IMidiReceiver.SysCommonReceived">
            <summary>
            Occures when a system common message is received.
            </summary>
        </member>
        <member name="E:Multimedia.Midi.IMidiReceiver.SysExReceived">
            <summary>
            Occurs when a system exclusive message is received.
            </summary>
        </member>
        <member name="E:Multimedia.Midi.IMidiReceiver.SysRealtimeReceived">
            <summary>
            Occurs when a system realtime message is received.
            </summary>
        </member>
        <member name="E:Multimedia.Midi.IMidiReceiver.InvalidShortMessageReceived">
            <summary>
            Occures when an invalid short message is received.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.IMidiSender">
            <summary>
            Represents the basic functionality provided by a device capable of 
            sending Midi messages.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.IMidiSender.Send(Multimedia.Midi.ChannelMessage)">
            <summary>
            Sends a channel message.
            </summary>
            <param name="message">
            The channel message to send.
            </param>
        </member>
        <member name="M:Multimedia.Midi.IMidiSender.Send(Multimedia.Midi.SysRealtimeMessage)">
            <summary>
            Sends a system realtime message.
            </summary>
            <param name="message">
            The system realtime message to send.
            </param>
        </member>
        <member name="M:Multimedia.Midi.IMidiSender.Send(Multimedia.Midi.SysCommonMessage)">
            <summary>
            Sends a system common message.
            </summary>
            <param name="message">
            The system common message to send.
            </param>
        </member>
        <member name="M:Multimedia.Midi.IMidiSender.Send(Multimedia.Midi.SysExMessage)">
            <summary>
            Sends a system exclusive message.
            </summary>
            <param name="message">
            The system exclusive message to send.
            </param>
        </member>
        <member name="M:Multimedia.Midi.IMidiSender.Reset">
            <summary>
            Resets the MIDI sender.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.IMidiSender.RunningStatusEnabled">
            <summary>
            Gets or sets a value indicating whether or not to use a running
            status.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.MidiInCaps">
            <summary>
            Represents Midi input device capabilities.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MidiInCaps.mid">
            <summary>
            Manufacturer identifier of the device driver for the Midi output 
            device. 
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MidiInCaps.pid">
            <summary>
            Product identifier of the Midi output device. 
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MidiInCaps.driverVersion">
            <summary>
            Version number of the device driver for the Midi output device. The 
            high-order byte is the major version number, and the low-order byte 
            is the minor version number. 
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MidiInCaps.name">
            <summary>
            Product name.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MidiInCaps.support">
            <summary>
            Optional functionality supported by the device. 
            </summary>
        </member>
        <member name="T:Multimedia.Midi.InputDevice">
            <summary>
            Represents Midi input devices.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.InputDevice.components">
            <summary>
            Required designer variable.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.InputDevice.#ctor">
            <summary>
            Initializes a new instance of the InputDevice class.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.InputDevice.#ctor(System.ComponentModel.IContainer)">
            <summary>
            Initializes an instance of the InputDevice class with the specified
            component container.
            </summary>
            <param name="container">
            The component container to add this instance of the InputDevice 
            class.
            </param>
        </member>
        <member name="M:Multimedia.Midi.InputDevice.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the InputDevice class with the 
            specified device Id.
            </summary>
            <param name="deviceID">
            The device Id.
            </param>
        </member>
        <member name="M:Multimedia.Midi.InputDevice.#ctor(System.ComponentModel.IContainer,System.Int32)">
            <summary>
            Initializes an instance of the InputDevice class with the specified
            component container and device Id.
            </summary>
            <param name="container">
            The component container to add this instance of the InputDevice 
            class.
            </param>
            <param name="deviceID">
            The device Id.
            </param>
        </member>
        <member name="M:Multimedia.Midi.InputDevice.InitializeComponent">
            <summary>
            Required method for Designer support - do not modify
            the contents of this method with the code editor.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.InputDevice.Dispose(System.Boolean)">
            <summary> 
            Clean up any resources being used.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.InputDevice.Connect(Multimedia.Midi.OutputDevice)">
            <summary>
            Connects to an output device for Midi thru operations.
            </summary>
            <param name="outDevice">
            The output device to connect to.
            </param>
        </member>
        <member name="M:Multimedia.Midi.InputDevice.Disconnect(Multimedia.Midi.OutputDevice)">
            <summary>
            Disconnects from an output device to cease Midi thru operations.
            </summary>
            <param name="outDevice">
            The output device from which to disconnect.
            </param>
        </member>
        <member name="M:Multimedia.Midi.InputDevice.GetCapabilities(System.Int32)">
            <summary>
            Gets the input device capabilities.
            </summary>
            <param name="deviceID">
            The device Identifier.
            </param>
            <exception cref="T:Multimedia.Midi.InputDeviceException">
            Thrown if an error occurred while retrieving the input device
            capabilities.
            </exception>
            <returns>
            The Midi intput device's capabilities.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.InputDevice.InitializeInputDevice">
            <summary>
            Initializes input device.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.InputDevice.OnMessage(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)">
            <summary>
            Handles messages from Windows.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.InputDevice.ThrowOnError(System.Int32)">
            <summary>
            Throw exception on error.
            </summary>
            <param name="errCode">
            The error code.
            </param>
        </member>
        <member name="M:Multimedia.Midi.InputDevice.DispatchShortMessage(System.Int32,System.Int32)">
            <summary>
            Determines the type of message received and triggers the correct
            event in response.
            </summary>
            <param name="message">
            The short Midi message received.
            </param>
            <param name="timeStamp">
            Number of milliseconds that have passed since the input device 
            began recording.
            </param>
        </member>
        <member name="M:Multimedia.Midi.InputDevice.DispatchInvalidShortMsg(System.Int32,System.Int32)">
            <summary>
            Handles triggering the invalid short message received event.
            </summary>
            <param name="message">
            The invalid short message received.
            </param>
            <param name="timeStamp">
            Number of milliseconds that have passed since the input device 
            began recording.
            </param>
        </member>
        <member name="M:Multimedia.Midi.InputDevice.ManageSysExMessage(System.Int32,System.Int32)">
            <summary>
            Manages system exclusive messages received by the input device.
            </summary>
            <param name="param1">
            Integer pointer to the header containing the received system
            exclusive message.
            </param>
            <param name="timeStamp">
            Number of milliseconds that have passed since the input device 
            began recording.
            </param>
        </member>
        <member name="M:Multimedia.Midi.InputDevice.ManageSysExHeaders">
            <summary>
            Unprepares/prepares and adds a MIDIHDR header back to the buffer to
            record another system exclusive message.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.InputDevice.DispatchSysExMessage(Multimedia.Midi.MidiHeader,System.Int32)">
            <summary>
            Handles triggering the system exclusive message received event.
            </summary>
            <param name="header">
            Midi header containing the system exclusive message.
            </param>
            <param name="timeStamp">
            Number of milliseconds that have passed since the input device 
            began recording.
            </param>
        </member>
        <member name="M:Multimedia.Midi.InputDevice.CreateHeaders">
            <summary>
            Create headers for system exclusive messages.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.InputDevice.DestroyHeaders">
            <summary>
            Destroy headers.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.InputDevice.UnprepareHeaders">
            <summary>
            Unprepares headers.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.InputDevice.Open(System.Int32)">
            <summary>
            Opens the InputDevice with the specified device Identifier.
            </summary>
            <param name="deviceID">
            The device Identifier.
            </param>
            <exception cref="T:Multimedia.Midi.InputDeviceException">
            Thrown if an error occurred while opening the input device.
            </exception>
        </member>
        <member name="M:Multimedia.Midi.InputDevice.Close">
            <summary>
            Closes the InputDevice.
            </summary>
            <exception cref="T:Multimedia.Midi.InputDeviceException">
            Thrown if an error occurred while closing the input device.
            </exception>
        </member>
        <member name="M:Multimedia.Midi.InputDevice.IsOpen">
            <summary>
            Indicate whether or not the input device is open
            </summary>
            <returns>
            true if the device is open; otherwise, false.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.InputDevice.Start">
            <summary>
            Starts recording Midi messages.
            </summary>
            <exception cref="T:Multimedia.Midi.InputDeviceException">
            Thrown if there was an error starting the input device.
            </exception>
        </member>
        <member name="M:Multimedia.Midi.InputDevice.Stop">
            <summary>
            Stop recording Midi messages.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.InputDevice.IsRecording">
            <summary>
            Indicates whether or not the device is recording.
            </summary>
            <returns>
            true if the device is recording; otherwise, false.
            </returns>
        </member>
        <member name="P:Multimedia.Midi.InputDevice.DeviceCount">
            <summary>
            Gets the number of intput devices present in the system.
            </summary>
        </member>
        <member name="E:Multimedia.Midi.InputDevice.SysExHeaderErrorOccurred">
            <summary>
            Occures when the MIDI receiver encounters an error processing 
            system exclusive headers.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.InputDevice.DeviceHandle">
            <summary>
            Gets the device handle.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.InputDevice.DeviceID">
            <summary>
            Gets the device ID.
            </summary>
        </member>
        <member name="E:Multimedia.Midi.InputDevice.ChannelMessageReceived">
            <summary>
            Occurs when a channel message is received.
            </summary>
        </member>
        <member name="E:Multimedia.Midi.InputDevice.SysCommonReceived">
            <summary>
            Occurs when a system common message is received.
            </summary>
        </member>
        <member name="E:Multimedia.Midi.InputDevice.SysExReceived">
            <summary>
            Occurs when a system exclusive message is received.
            </summary>
        </member>
        <member name="E:Multimedia.Midi.InputDevice.SysRealtimeReceived">
            <summary>
            Occurs when a system realtime message is received.
            </summary>
        </member>
        <member name="E:Multimedia.Midi.InputDevice.InvalidShortMessageReceived">
            <summary>
            Occurs when an invalid short message is received.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.InputDeviceException">
            <summary>
            The exception that is thrown when a error occurs with the InputDevice
            class.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.InputDeviceException.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the InputDeviceException class with
            the specified error code.
            </summary>
            <param name="errCode">
            The error code.
            </param>
        </member>
        <member name="P:Multimedia.Midi.InputDeviceException.Message">
            <summary>
            Gets a message that describes the current exception.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.InvalidShortMsgEventArgs">
            <summary>
            Provides data for the InvalidShortMsgEvent event.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.InvalidShortMsgEventArgs.#ctor(System.Int32,System.Int32)">
            <summary>
            Initializes a new instance of the InvalidShortMsgEventArgs class 
            with the specified message and time stamp.
            </summary>
            <param name="message">
            The invalid short message as an integer. 
            </param>
            <param name="timeStamp">
            Time in milliseconds since the input device began recording.
            </param>
        </member>
        <member name="P:Multimedia.Midi.InvalidShortMsgEventArgs.Message">
            <summary>
            Invalid short message as an integer.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.InvalidShortMsgEventArgs.TimeStamp">
            <summary>
            Time in milliseconds since the input device began recording.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.MidiHeader">
            <summary>
            Represents the Windows Multimedia MidiHDR structure.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.MidiOutCaps">
            <summary>
            Represents Midi output device capabilities.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MidiOutCaps.mid">
            <summary>
            Manufacturer identifier of the device driver for the Midi output 
            device. 
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MidiOutCaps.pid">
            <summary>
            Product identifier of the Midi output device. 
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MidiOutCaps.driverVersion">
            <summary>
            Version number of the device driver for the Midi output device. The 
            high-order byte is the major version number, and the low-order byte 
            is the minor version number. 
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MidiOutCaps.name">
            <summary>
            Product name.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MidiOutCaps.technology">
            <summary>
            Flags describing the type of the Midi output device. 
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MidiOutCaps.voices">
            <summary>
            Number of voices supported by an internal synthesizer device. If 
            the device is a port, this member is not meaningful and is set 
            to 0. 
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MidiOutCaps.notes">
            <summary>
            Maximum number of simultaneous notes that can be played by an 
            internal synthesizer device. If the device is a port, this member 
            is not meaningful and is set to 0. 
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MidiOutCaps.channelMask">
            <summary>
            Channels that an internal synthesizer device responds to, where the 
            least significant bit refers to channel 0 and the most significant 
            bit to channel 15. Port devices that transmit on all channels set 
            this member to 0xFFFF. 
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MidiOutCaps.support">
            <summary>
            Optional functionality supported by the device. 
            </summary>
        </member>
        <member name="T:Multimedia.Midi.OutputDevice">
            <summary>
            Represents Midi output devices.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.OutputDevice.components">
            <summary>
            Required designer variable.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.OutputDevice.#ctor">
            <summary>
            Initializes a new instance of the OutputDevice class.
            </summary>
            <remarks>
            This constructor initializes a new instance of the OutputDevice 
            class in a closed state.
            </remarks>
        </member>
        <member name="M:Multimedia.Midi.OutputDevice.#ctor(System.ComponentModel.IContainer)">
            <summary>
            Initializes a new instance of the OutputDevice class with the
            specified IContainer.
            </summary>
            <param name="container">
            The container to add this component to.
            </param>
            <remarks>
            This constructor initializes a new instance of the OutputDevice 
            class in a closed state.
            </remarks>
        </member>
        <member name="M:Multimedia.Midi.OutputDevice.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the OutputDevice class with the 
            specified device Identifier.
            </summary>
            <param name="deviceID">
            The device Identifier.
            </param>
            <exception cref="T:Multimedia.Midi.OutputDeviceException">
            Thrown if an error occurred while opening the output device.
            </exception>
            <remarks>
            This constructor initializes a new instance of the OutputDevice 
            class and opens it with the specified device Identifier.
            </remarks>
        </member>
        <member name="M:Multimedia.Midi.OutputDevice.#ctor(System.ComponentModel.IContainer,System.Int32)">
            <summary>
            Initializes a new instance of the OutputDevice class with the 
            specified device Identifier.
            </summary>
            <param name="container">
            The container to add this component to.
            </param>
            <param name="deviceID">
            The device Identifier.
            </param>
            <exception cref="T:Multimedia.Midi.OutputDeviceException">
            Thrown if an error occurred while opening the output device.
            </exception>
            <remarks>
            This constructor initializes a new instance of the OutputDevice 
            class and opens it with the specified device Identifier.
            </remarks>
        </member>
        <member name="M:Multimedia.Midi.OutputDevice.Finalize">
            <summary>
            Destructor.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.OutputDevice.Dispose(System.Boolean)">
            <summary> 
            Clean up any resources being used.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.OutputDevice.InitializeComponent">
            <summary>
            Required method for Designer support - do not modify
            the contents of this method with the code editor.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.OutputDevice.GetCapabilities(System.Int32)">
            <summary>
            Gets the output device capabilities.
            </summary>
            <param name="deviceID">
            The device Identifier.
            </param>
            <exception cref="T:Multimedia.Midi.OutputDeviceException">
            Thrown if an error occurred while retrieving the output device
            capabilities.
            </exception>
            <returns>
            The Midi output device's capabilities.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.OutputDevice.InitializeOutputDevice">
            <summary>
            Initializes output device.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.OutputDevice.OnMessage(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)">
            <summary>
            Handles messages from Windows.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.OutputDevice.ThrowOnError(System.Int32)">
            <summary>
            Throws exception on error.
            </summary>
            <param name="errCode">
            The error code. 
            </param>
        </member>
        <member name="M:Multimedia.Midi.OutputDevice.ManageHeaders">
            <summary>
            Thread method for managing headers.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.OutputDevice.EmptyHeaderQueue">
            <summary>
            Empties header queue.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.OutputDevice.Open(System.Int32)">
            <summary>
            Opens the OutputDevice with the specified device Identifier.
            </summary>
            <param name="deviceID">
            The device Identifier.
            </param>
            <exception cref="T:Multimedia.Midi.OutputDeviceException">
            Thrown if an error occurred while opening the output device.
            </exception>
        </member>
        <member name="M:Multimedia.Midi.OutputDevice.Close">
            <summary>
            Closes the OutputDevice.
            </summary>
            <exception cref="T:Multimedia.Midi.OutputDeviceException">
            Thrown if an error occurred while closing the output device.
            </exception>
        </member>
        <member name="M:Multimedia.Midi.OutputDevice.IsOpen">
            <summary>
            Indicates whether or not the OutputDevice is open.
            </summary>
            <returns>
            true if the device is open; otherwise, false.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.OutputDevice.Send(Multimedia.Midi.ChannelMessage)">
            <summary>
            Sends a channel message.
            </summary>
            <param name="message">
            The channel message to send.
            </param>
            <exception cref="T:Multimedia.Midi.OutputDeviceException">
            Thrown if an error occurred while sending the message.
            </exception>
        </member>
        <member name="M:Multimedia.Midi.OutputDevice.Send(Multimedia.Midi.SysRealtimeMessage)">
            <summary>
            Sends a system realtime message.
            </summary>
            <param name="message">
            The system realtime message to send.
            </param>
            <exception cref="T:Multimedia.Midi.OutputDeviceException">
            Thrown if an error occurred while sending the message.
            </exception>
        </member>
        <member name="M:Multimedia.Midi.OutputDevice.Send(Multimedia.Midi.SysCommonMessage)">
            <summary>
            Sends a system common message.
            </summary>
            <param name="message">
            The system common message to send.
            </param>
            <exception cref="T:Multimedia.Midi.OutputDeviceException">
            Thrown if an error occurred while sending the message.
            </exception>
        </member>
        <member name="M:Multimedia.Midi.OutputDevice.Send(Multimedia.Midi.SysExMessage)">
            <summary>
            Sends system exclusive messages.
            </summary>
            <param name="message">
            The system exclusive message to send.
            </param>
        </member>
        <member name="M:Multimedia.Midi.OutputDevice.Reset">
            <summary>
            Turns off all Note on all Midi channels for the output device.
            </summary>
            <exception cref="T:Multimedia.Midi.OutputDeviceException">
            Thrown if an error occurred while resetting the output device.
            </exception>
        </member>
        <member name="P:Multimedia.Midi.OutputDevice.DeviceCount">
            <summary>
            Gets the number of output devices present in the system.
            </summary>
        </member>
        <member name="E:Multimedia.Midi.OutputDevice.SysExHeaderErrorOccurred">
            <summary>
            Occures when the MIDI receiver encounters an error processing 
            system exclusive headers.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.OutputDevice.DeviceHandle">
            <summary>
            Gets the device handle.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.OutputDevice.DeviceID">
            <summary>
            Gets the device Identifier.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.OutputDevice.RunningStatusEnabled">
            <summary>
            Gets or sets a value indicating whether or not to use a running
            status.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.OutputDeviceException">
            <summary>
            The exception that is thrown when a error occurs with the OutputDevice
            class.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.OutputDeviceException.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the OutputDeviceException class with
            the specified error code.
            </summary>
            <param name="errCode">
            The error code.
            </param>
        </member>
        <member name="P:Multimedia.Midi.OutputDeviceException.Message">
            <summary>
            Gets a message that describes the current exception.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.IMetaMessageAdaptor">
            <summary>
            Represents the basic functionality of meta message adaptors.
            </summary>
            <remarks>
            The MetaMessage class only provides an indexer for accessing its 
            internal data. This can sometimes be inconvenient. Meta message 
            adaptors alleviate this inconvenience by providing an easy to use 
            interface for getting and setting meta message data. 
            </remarks>
        </member>
        <member name="M:Multimedia.Midi.IMetaMessageAdaptor.ToMessage">
            <summary>
            Returns a clone of the adapted meta message.
            </summary>
            <returns>
            A clone of the adapted meta message.
            </returns>
        </member>
        <member name="T:Multimedia.Midi.ISysCommonMessageAdaptor">
            <summary>
            Represents the basic functionality of system common message adaptors.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.ISysCommonMessageAdaptor.ToMessage">
            <summary>
            Returns a clone of the adapted system common message.
            </summary>
            <returns>
            A clone of the adapted system common message.
            </returns>
        </member>
        <member name="T:Multimedia.Midi.MetaMessageText">
            <summary>
            Provides easy to use functionality for meta message text messages.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MetaMessageText.#ctor">
            <summary>
            Initializes a new instance of the MetaMessageText class.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MetaMessageText.#ctor(Multimedia.Midi.MetaType)">
            <summary>
            Initializes a new instance of the MetaMessageText class with the 
            specified type.
            </summary>
            <param name="type">
            The type of meta message.
            </param>
            <exception cref="T:System.ArgumentException">
            If the meta message is not a text based type.
            </exception>
            <remarks>
            The meta message type must be one of the following text based 
            types:
            <list>
            <item>
            Copyright
            </item>
            <item>
            Cuepoint
            </item>
            <item>
            DeviceName
            </item>
            <item>
            InstrumentName
            </item>
            <item>
            Lyric
            </item>
            <item>
            Marker
            </item>
            <item>
            ProgramName
            </item>
            <item>
            Text
            </item>
            <item>
            TrackName
            </item>
            </list>
            If the meta message is not a text based type, an exception 
            will be thrown.
            </remarks>
        </member>
        <member name="M:Multimedia.Midi.MetaMessageText.#ctor(Multimedia.Midi.MetaMessage)">
            <summary>
            Initializes a new instance of the MetaMessageText class with the
            specified meta message.
            </summary>
            <param name="message">
            The meta message to use for initialization.
            </param>
            <exception cref="T:System.ArgumentException">
            If the meta message is not a text based type.
            </exception>
            <remarks>
            The meta message must be one of the following text based types:
            <list>
            <item>
            Copyright
            </item>
            <item>
            Cuepoint
            </item>
            <item>
            DeviceName
            </item>
            <item>
            InstrumentName
            </item>
            <item>
            Lyric
            </item>
            <item>
            Marker
            </item>
            <item>
            ProgramName
            </item>
            <item>
            Text
            </item>
            <item>
            TrackName
            </item>
            </list>
            If the meta message is not a text based type, an exception will be 
            thrown.
            </remarks>
        </member>
        <member name="M:Multimedia.Midi.MetaMessageText.IsTextType(Multimedia.Midi.MetaType)">
            <summary>
            Indicates whether or not a meta message type is a text based type.
            </summary>
            <param name="type">
            The meta message type to test.
            </param>
            <returns>
            <b>true</b> if the meta message type is a text based type; 
            otherwise, <b>false</b>.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.MetaMessageText.ToMessage">
            <summary>
            Returns a clone of the adapted text based meta message.
            </summary>
            <returns>
            A clone of the adapted text based meta message.
            </returns>
        </member>
        <member name="P:Multimedia.Midi.MetaMessageText.Text">
            <summary>
            Gets or sets the text for the meta message.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.SongPositionPointer">
            <summary>
            Provides easy to use functionality for song position pointer messages.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.SongPositionPointer.#ctor(System.Int32)">
            <summary>
            Initializes an instance of the SongPositionPointer class with the
            specified pulses per quarter note.
            </summary>
            <param name="ppqn">
            Pulses per quarter note resolution.
            </param>
            <exception cref="T:System.ArgumentException">
            If the pulses per quarter note value is invalid.
            </exception>
        </member>
        <member name="M:Multimedia.Midi.SongPositionPointer.#ctor(System.Int32,Multimedia.Midi.SysCommonMessage)">
            <summary>
            Initializes a new instance of the SongPositionPointer class with 
            the specified system common message and pulses per quarter note.
            </summary>
            <param name="ppqn">
            Pulses per quarter note resolution.
            </param>
            <param name="message">
            The system common message to use for initialization.
            </param>      
            <exception cref="T:System.ArgumentException">
            If the specified message is not a song position pointer message or
            the pulses per quarter note value is invalid.
            </exception>
        </member>
        <member name="M:Multimedia.Midi.SongPositionPointer.ToMessage">
            <summary>
            Returns a clone of the adapted song position pointer message.
            </summary>
            <returns>
            A clone of the adapted song position pointer message.
            </returns>
        </member>
        <member name="P:Multimedia.Midi.SongPositionPointer.PositionInTicks">
            <summary>
            Gets or sets the sequence position in ticks.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.SongPositionPointer.SongPosition">
            <summary>
            Gets or sets the song position.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.TempoChange">
            <summary>
            Provides easy to use functionality for meta tempo messages.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.TempoChange.#ctor">
            <summary>
            Initializes a new instance of the TempoChange class.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.TempoChange.#ctor(Multimedia.Midi.MetaMessage)">
            <summary>
            Initialize a new instance of the TempoChange class with the 
            specified meta message.
            </summary>
            <param name="message">
            The meta message to use for initialization.
            </param>
            <exception cref="T:System.ArgumentException">
            If the specified meta message is not a tempo type.
            </exception>
        </member>
        <member name="M:Multimedia.Midi.TempoChange.ToMessage">
            <summary>
            Returns a clone of the adapted meta message.
            </summary>
            <returns>
            A clone of the adapted meta message.
            </returns>
        </member>
        <member name="P:Multimedia.Midi.TempoChange.Tempo">
            <summary>
            Gets or sets the tempo in microseconds per beat.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.TimeSignature">
            <summary>
            Provides easy to use functionality for meta time signature messages.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.TimeSignature.#ctor">
            <summary>
            Initializes a new instance of the TimeSignature class.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.TimeSignature.#ctor(Multimedia.Midi.MetaMessage)">
            <summary>
            Initializes a new instance of the TimeSignature class with the 
            specified meta message.
            </summary>
            <param name="message">
            The meta message to use for initialization.
            </param>
            <exception cref="T:System.ArgumentException">
            If the specified meta message is not a time signature type.
            </exception>
        </member>
        <member name="M:Multimedia.Midi.TimeSignature.ToMessage">
            <summary>
            Returns a clone of the adapted meta message.
            </summary>
            <returns>
            A clone of the adapted meta message.
            </returns>
        </member>
        <member name="P:Multimedia.Midi.TimeSignature.Numerator">
            <summary>
            Gets or sets the numerator.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.TimeSignature.Denominator">
            <summary>
            Gets or sets the denominator.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.TimeSignature.ClocksPerMetronomeClick">
            <summary>
            Gets or sets the clocks per metronome click.
            </summary>
            <remarks>
            Clocks per metronome click determines how many MIDI clocks occur
            for each metronome click.
            </remarks>
        </member>
        <member name="P:Multimedia.Midi.TimeSignature.ThirtySecondNotesPerQuarterNote">
            <summary>
            Gets or sets how many thirty second notes there are for each
            quarter note.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.ChannelMessageEventHandler">
            <summary>
            Represents the method that will handle the event that occurs when a 
            channel message is received.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.ChannelCommand">
            <summary>
            Specifies constants defining channel message types.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ChannelCommand.NoteOff">
            <summary>
            Represents the note-off command type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ChannelCommand.NoteOn">
            <summary>
            Represents the note-on command type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ChannelCommand.PolyPressure">
            <summary>
            Represents the poly pressure (aftertouch) command type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ChannelCommand.Controller">
            <summary>
            Represents the controller command type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ChannelCommand.ProgramChange">
            <summary>
            Represents the program change command type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ChannelCommand.ChannelPressure">
            <summary>
            Represents the channel pressure (aftertouch) command 
            type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ChannelCommand.PitchWheel">
            <summary>
            Represents the pitch wheel command type.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.ControllerType">
            <summary>
            Specifies constants defining controller types.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.BankSelect">
            <summary>
            The Bank Select coarse.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.ModulationWheel">
            <summary>
            The Modulation Wheel coarse.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.BreathControl">
            <summary>
            The Breath Control coarse.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.FootPedal">
            <summary>
            The Foot Pedal coarse.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.PortamentoTime">
            <summary>
            The Portamento Time coarse.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.DataEntrySlider">
            <summary>
            The Data Entry Slider coarse.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.Volume">
            <summary>
            The Volume coarse.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.Balance">
            <summary>
            The Balance coarse.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.Pan">
            <summary>
            The Pan position coarse.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.Expression">
            <summary>
            The Expression coarse.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.EffectControl1">
            <summary>
            The Effect Control 1 coarse.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.EffectControl2">
            <summary>
            The Effect Control 2 coarse.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.GeneralPurposeSlider1">
            <summary>
            The General Puprose Slider 1
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.GeneralPurposeSlider2">
            <summary>
            The General Puprose Slider 2
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.GeneralPurposeSlider3">
            <summary>
            The General Puprose Slider 3
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.GeneralPurposeSlider4">
            <summary>
            The General Puprose Slider 4
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.BankSelectFine">
            <summary>
            The Bank Select fine.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.ModulationWheelFine">
            <summary>
            The Modulation Wheel fine.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.BreathControlFine">
            <summary>
            The Breath Control fine.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.FootPedalFine">
            <summary>
            The Foot Pedal fine.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.PortamentoTimeFine">
            <summary>
            The Portamento Time fine.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.DataEntrySliderFine">
            <summary>
            The Data Entry Slider fine.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.VolumeFine">
            <summary>
            The Volume fine.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.BalanceFine">
            <summary>
            The Balance fine.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.PanFine">
            <summary>
            The Pan position fine.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.ExpressionFine">
            <summary>
            The Expression fine.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.EffectControl1Fine">
            <summary>
            The Effect Control 1 fine.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.EffectControl2Fine">
            <summary>
            The Effect Control 2 fine.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.HoldPedal">
            <summary>
            The Hold Pedal.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.Portamento">
            <summary>
            The Portamento.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.SustenutoPedal">
            <summary>
            The Sustenuto Pedal.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.SoftPedal">
            <summary>
            The Soft Pedal.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.LegatoPedal">
            <summary>
            The Legato Pedal.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.HoldPedal2">
            <summary>
            The Hold Pedal 2.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.SoundVariation">
            <summary>
            The Sound Variation.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.SoundTimbre">
            <summary>
            The Sound Timbre.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.SoundReleaseTime">
            <summary>
            The Sound Release Time.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.SoundAttackTime">
            <summary>
            The Sound Attack Time.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.SoundBrightness">
            <summary>
            The Sound Brightness.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.SoundControl6">
            <summary>
            The Sound Control 6.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.SoundControl7">
            <summary>
            The Sound Control 7.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.SoundControl8">
            <summary>
            The Sound Control 8.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.SoundControl9">
            <summary>
            The Sound Control 9.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.SoundControl10">
            <summary>
            The Sound Control 10.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.GeneralPurposeButton1">
            <summary>
            The General Purpose Button 1.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.GeneralPurposeButton2">
            <summary>
            The General Purpose Button 2.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.GeneralPurposeButton3">
            <summary>
            The General Purpose Button 3.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.GeneralPurposeButton4">
            <summary>
            The General Purpose Button 4.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.EffectsLevel">
            <summary>
            The Effects Level.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.TremeloLevel">
            <summary>
            The Tremelo Level.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.ChorusLevel">
            <summary>
            The Chorus Level.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.CelesteLevel">
            <summary>
            The Celeste Level.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.PhaserLevel">
            <summary>
            The Phaser Level.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.DataButtonIncrement">
            <summary>
            The Data Button Increment.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.DataButtonDecrement">
            <summary>
            The Data Button Decrement.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.NonRegisteredParameterFine">
            <summary>
            The Nonregistered Parameter Fine.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.NonRegisteredParameterCoarse">
            <summary>
            The Nonregistered Parameter Coarse.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.RegisteredParameterFine">
            <summary>
            The Registered Parameter Fine.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.RegisteredParameterCoarse">
            <summary>
            The Registered Parameter Coarse.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.AllSoundOff">
            <summary>
            The All Sound Off.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.AllControllersOff">
            <summary>
            The All Controllers Off.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.LocalKeyboard">
            <summary>
            The Local Keyboard.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.AllNotesOff">
            <summary>
            The All Notes Off.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.OmniModeOff">
            <summary>
            The Omni Mode Off.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.OmniModeOn">
            <summary>
            The Omni Mode On.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.MonoOperation">
            <summary>
            The Mono Operation.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ControllerType.PolyOperation">
            <summary>
            The Poly Operation.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.ChannelMessage">
            <summary>
            Represents Midi channel messages.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.ShortMessage">
            <summary>
            The base class for all MIDI short messages.
            </summary>
            <remarks>
            Short messages are any MIDI message except for system exclusive 
            messages. This includes all channel, system common, and system 
            realtime messages.
            </remarks>
        </member>
        <member name="T:Multimedia.Midi.IMidiMessage">
            <summary>
            Represents the basic functionality for all MIDI messages.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.IMidiMessage.Accept(Multimedia.Midi.MidiMessageVisitor)">
            <summary>
            Accepts a MIDI message visitor for double dispatching.
            </summary>
            <param name="visitor">
            The MIDI message visitor to visit.
            </param>
        </member>
        <member name="P:Multimedia.Midi.IMidiMessage.Status">
            <summary>
            Gets the MIDI message's status value.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ShortMessage.StatusValueMax">
            <summary>
            Maximum value allowed for any status byte.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ShortMessage.DataValueMax">
            <summary>
            Maximum value allowed for any data byte.
            </summary> 
        </member>
        <member name="M:Multimedia.Midi.ShortMessage.#ctor">
            <summary>
            Initializes a new instance of the ShortMessage class.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.ShortMessage.UnpackStatus(System.Int32)">
            <summary>
            Unpacks the status value from a packed MIDI short message.
            </summary>
            <param name="message">
            The packed MIDI short message.
            </param>
            <returns>
            The status value of the message.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.ShortMessage.UnpackData1(System.Int32)">
            <summary>
            Unpacks the first data value from a packed MIDI short message.
            </summary>
            <param name="message">
            The packed MIDI short message.
            </param>
            <returns>
            The first data value of the message.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.ShortMessage.UnpackData2(System.Int32)">
            <summary>
            Unpacks the second data value from a packed MIDI short message.
            </summary>
            <param name="message">
            The packed MIDI short message.
            </param>
            <returns>
            The second data value of the message.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.ShortMessage.SetStatus(System.Int32)">
            <summary>
            Sets the status value.
            </summary>
            <param name="status">
            The new status value.
            </param>
        </member>
        <member name="M:Multimedia.Midi.ShortMessage.GetData1">
            <summary>
            Gets the first data value.
            </summary>
            <returns>
            The first data value.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.ShortMessage.SetData1(System.Int32)">
            <summary>
            Sets the first data value.
            </summary>
            <param name="data1">
            The first data value.
            </param>
        </member>
        <member name="M:Multimedia.Midi.ShortMessage.GetData2">
            <summary>
            Gets the second data value.
            </summary>
            <returns>
            The second data value.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.ShortMessage.SetData2(System.Int32)">
            <summary>
            Sets the second data value.
            </summary>
            <param name="data2">
            The second data value.
            </param>
        </member>
        <member name="M:Multimedia.Midi.ShortMessage.Accept(Multimedia.Midi.MidiMessageVisitor)">
            <summary>
            Accepts a MIDI message visitor.
            </summary>
            <param name="visitor">
            The visitor to accept.
            </param>
        </member>
        <member name="M:Multimedia.Midi.ShortMessage.Clone">
            <summary>
            Creates a deep copy of this message.
            </summary>
            <returns>
            A deep copy of this message.
            </returns>
        </member>
        <member name="P:Multimedia.Midi.ShortMessage.Message">
            <summary>
            Gets the message as a packed integer.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.ShortMessage.Status">
            <summary>
            Gets the Midi message's status value.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.ChannelMessage.ChannelValueMax">
            <summary>
            Maximum value allowed for Midi channel.
            </summary> 
        </member>
        <member name="M:Multimedia.Midi.ChannelMessage.#ctor(Multimedia.Midi.ChannelCommand)">
            <summary>
            Initializes a new instance of the ChannelMessage class with the 
            specified command value.
            </summary>
            <param name="command">
            The Midi command represented by this message.
            </param>
        </member>
        <member name="M:Multimedia.Midi.ChannelMessage.#ctor(Multimedia.Midi.ChannelCommand,System.Int32)">
            <summary>
            Initializes a new instance of the ChannelMessage class with the 
            specified command value and Midi channel.
            </summary>
            <param name="command">
            The Midi command represented by the message.
            </param>
            <param name="channel">
            The Midi channel associated with the message.
            </param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            Thrown if the Midi channel is set to a value less than zero or 
            greater than ChannelValueMax.
            </exception>
        </member>
        <member name="M:Multimedia.Midi.ChannelMessage.#ctor(Multimedia.Midi.ChannelCommand,System.Int32,System.Int32)">
            <summary>
            Initializes a new instance of the ChannelMessage class with the
            specified command value, Midi channel, and first data value.
            </summary>
            <param name="command">
            The Midi command represented by the message.
            </param>
            <param name="channel">
            The Midi channel associated with the message.
            </param>
            <param name="data1">
            The first data value.
            </param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            Thrown if the Midi channel or the first data value is out of range.
            </exception>
        </member>
        <member name="M:Multimedia.Midi.ChannelMessage.#ctor(Multimedia.Midi.ChannelCommand,System.Int32,System.Int32,System.Int32)">
            <summary>
            Initializes a new instance of the ChannelMessage class with the
            specified command value, Midi channel, first data value, and 
            second data value.
            </summary>
            <param name="command">
            The Midi command represented by the message.
            </param>
            <param name="channel">
            The Midi channel associated with the message.
            </param>
            <param name="data1">
            The first data value.
            </param>
            <param name="data2">
            The second data value.
            </param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            Thrown if the Midi channel, first data value, or second data value 
            is out of range.
            </exception>
        </member>
        <member name="M:Multimedia.Midi.ChannelMessage.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the ChannelMessage class with a 
            channel message packed into an integer.
            </summary>
            <param name="message">
            The packed channel message to use for initialization.
            </param>
            <exception cref="T:System.ArgumentException">
            Thrown if the message does not represent a channel message.
            </exception>
        </member>
        <member name="M:Multimedia.Midi.ChannelMessage.#ctor(Multimedia.Midi.ChannelMessage)">
            <summary>
            Initializes a new instance of the ChannelMessage class with 
            another instance of the ChannelMessage class.
            </summary>
            <param name="message">
            The ChannelMessage instance to use for initialization.
            </param>
        </member>
        <member name="M:Multimedia.Midi.ChannelMessage.Accept(Multimedia.Midi.MidiMessageVisitor)">
            <summary>
            Accepts a MIDI message visitor.
            </summary>
            <param name="visitor">
            The visitor to accept.
            </param>
        </member>
        <member name="M:Multimedia.Midi.ChannelMessage.Clone">
            <summary>
            Creates a deep copy of this message.
            </summary>
            <returns>
            A deep copy of this message.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.ChannelMessage.BytesPerType(Multimedia.Midi.ChannelCommand)">
            <summary>
            Returns a value indicating how many bytes are used for the 
            specified channel command type.
            </summary>
            <param name="cmd">
            The channel command type to test.
            </param>
            <returns>
            The number of bytes used for the specified channel command type.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.ChannelMessage.IsChannelMessage(System.Int32)">
            <summary>
            Tests to see if a status value belongs to a channel message.
            </summary>
            <param name="status">
            The message to test.
            </param>
            <returns>
            <b>true</b> if the status value belongs to a channel message;
            otherwise, <b>false</b>.
            </returns>
        </member>
        <member name="P:Multimedia.Midi.ChannelMessage.Command">
            <summary>
            Gets or sets the Midi command type.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.ChannelMessage.MidiChannel">
            <summary>
            Gets or sets the Midi channel.
            </summary>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <b>Midichannel</b> is set to a value less than zero or greater than 
            ChannelValueMax.
            </exception>
        </member>
        <member name="P:Multimedia.Midi.ChannelMessage.Data1">
            <summary>
            Gets or sets the first data value.
            </summary>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <b>Data1</b> is set to a value less than zero or greater than 
            DataValueMax.
            </exception>
        </member>
        <member name="P:Multimedia.Midi.ChannelMessage.Data2">
            <summary>
            Gets or sets the second data value.
            </summary>
            <exception cref="T:System.ArgumentOutOfRangeException">
            <b>Data2</b> is set to a value less than zero or greater than 
            DataValueMax.
            </exception>
        </member>
        <member name="T:Multimedia.Midi.ChannelMessageEventArgs">
            <summary>
            Provides data for ChannelMessageReceived events.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.ChannelMessageEventArgs.#ctor(Multimedia.Midi.ChannelMessage,System.Int32)">
            <summary>
            Initializes a new instance of the ChannelMessageEventArgs class with the 
            specified ChannelMessage and time stamp.
            </summary>
            <param name="message">
            The ChannelMessage for this event.
            </param>
            <param name="timeStamp">
            The time in milliseconds since the input device began recording.
            </param>
        </member>
        <member name="P:Multimedia.Midi.ChannelMessageEventArgs.Message">
            <summary>
            Gets the ChannelMessage for this event.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.ChannelMessageEventArgs.TimeStamp">
            <summary>
            Gets the time in milliseconds since the input device began 
            recording.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.MetaType">
            <summary>
            Represents the various types.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MetaType.SequenceNumber">
            <summary>
            Represents sequencer number type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MetaType.Text">
            <summary>
            Represents the text type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MetaType.Copyright">
            <summary>
            Represents the copyright type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MetaType.TrackName">
            <summary>
            Represents the track name type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MetaType.InstrumentName">
            <summary>
            Represents the instrument name type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MetaType.Lyric">
            <summary>
            Represents the lyric type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MetaType.Marker">
            <summary>
            Represents the marker type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MetaType.CuePoint">
            <summary>
            Represents the cue point type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MetaType.ProgramName">
            <summary>
            Represents the program name type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MetaType.DeviceName">
            <summary>
            Represents the device name type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MetaType.EndOfTrack">
            <summary>
            Represents then end of track type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MetaType.Tempo">
            <summary>
            Represents the tempo type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MetaType.SmpteOffset">
            <summary>
            Represents the Smpte offset type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MetaType.TimeSignature">
            <summary>
            Represents the time signature type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MetaType.KeySignature">
            <summary>
            Represents the key signature type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MetaType.ProprietaryEvent">
            <summary>
            Represents the proprietary event type.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.MetaMessage">
            <summary>
            Represents MIDI meta messages.
            </summary>
            <remarks>
            Meta messages are MIDI messages that are stored in MIDI files. These
            messages are not sent or received via MIDI but are read and 
            interpretted from MIDI files. They provide information that describes 
            a MIDI file's properties. For example, tempo changes are implemented
            using meta messages.
            </remarks>
        </member>
        <member name="F:Multimedia.Midi.MetaMessage.Shift">
            <summary>
            The amount to shift data bytes when packing and unpacking them.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MetaMessage.TempoLength">
            <summary>
            Length in bytes for tempo meta message data.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MetaMessage.SmpteOffsetLength">
            <summary>
            Length in bytes for SMPTE offset meta message data.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MetaMessage.TimeSigLength">
            <summary>
            Length in bytes for time signature meta message data.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MetaMessage.KeySigLength">
            <summary>
            Length in bytes for key signature meta message data.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MetaMessage.#ctor(Multimedia.Midi.MetaType,System.Int32)">
            <summary>
            Initializes a new instance of the MetaMessage class with the
            specified type and length.
            </summary>
            <param name="type">
            The type of meta message.
            </param>
            <param name="length">
            The length of the meta message data.
            </param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            The length of the meta message is not valid for the type of meta
            message.
            </exception>
            <remarks>
            Each meta message has type and length properties. For certain 
            types, the length of the message data must be a specific value. For
            example, tempo messages must have a data length of exactly three. 
            Some meta message types can have any data length. Text messages are
            an example of a meta message that can have a variable data length.
            When a meta message is created, the length of the data is checked
            to make sure that it is valid for the specified type. If it is not,
            an exception is thrown. 
            </remarks>
        </member>
        <member name="M:Multimedia.Midi.MetaMessage.#ctor(Multimedia.Midi.MetaType,System.Byte[])">
            <summary>
            Initializes a new instance of the MetaMessage class.
            </summary>
            <param name="type">
            The type of meta message.
            </param>
            <param name="data">
            The meta message data.
            </param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            The length of the meta message is not valid for the type of meta
            message.
            </exception>
            <remarks>
            Each meta message has type and length properties. For certain 
            types, the length of the message data must be a specific value. For
            example, tempo messages must have a data length of exactly three. 
            Some meta message types can have any data length. Text messages are
            an example of a meta message that can have a variable data length.
            When a meta message is created, the length of the data is checked
            to make sure that it is valid for the specified type. If it is not,
            an exception is thrown. 
            </remarks>
        </member>
        <member name="M:Multimedia.Midi.MetaMessage.#ctor(Multimedia.Midi.MetaMessage)">
            <summary>
            Initializes a new instance of the MetaMessage class with 
            another instance of the MetaMessage class.
            </summary>
            <param name="message">
            The MetaMessage instance to use for initialization.
            </param>
        </member>
        <member name="M:Multimedia.Midi.MetaMessage.GetDataBytes">
            <summary>
            Gets a copy of the data bytes for this meta message.
            </summary>
            <returns>
            A copy of the data bytes for this meta message.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.MetaMessage.IsMetaMessage(System.Int32)">
            <summary>
            Tests to see if a status value belongs to a meta message.
            </summary>
            <param name="status">
            The status value to test.
            </param>
            <returns>
            <b>true</b> if the status value belongs to a meta message; 
            otherwise, <b>false</b>.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.MetaMessage.ValidateDataLength(Multimedia.Midi.MetaType,System.Int32)">
            <summary>
            Validates data length.
            </summary>
            <param name="type">
            The type of meta message.
            </param>
            <param name="length">
            The length of the meta message data.
            </param>
            <returns>
            <b>true</b> if the data length is valid for this type of meta
            message; otherwise, <b>false</b>.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.MetaMessage.Clone">
            <summary>
            Creates a deep copy of this message.
            </summary>
            <returns>
            A deep copy of this message.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.MetaMessage.Accept(Multimedia.Midi.MidiMessageVisitor)">
            <summary>
            Accepts a MIDI message visitor.
            </summary>
            <param name="visitor">
            The visitor to accept.
            </param>
        </member>
        <member name="P:Multimedia.Midi.MetaMessage.Item(System.Int32)">
            <summary>
            Gets or sets the element at the specified index.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.MetaMessage.Length">
            <summary>
            Gets the length of the meta message.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.MetaMessage.Type">
            <summary>
            Gets the type of meta message.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.MetaMessage.Status">
            <summary>
            Gets the status value.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.MidiMessageVisitor">
            <summary>
            Summary description for MidiMessageVisitor.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MidiMessageVisitor.Visit(Multimedia.Midi.ChannelMessage)">
            <summary>
            
            </summary>
            <param name="message"></param>
        </member>
        <member name="M:Multimedia.Midi.MidiMessageVisitor.Visit(Multimedia.Midi.MetaMessage)">
            <summary>
            
            </summary>
            <param name="message"></param>
        </member>
        <member name="M:Multimedia.Midi.MidiMessageVisitor.Visit(Multimedia.Midi.SysCommonMessage)">
            <summary>
            
            </summary>
            <param name="message"></param>
        </member>
        <member name="M:Multimedia.Midi.MidiMessageVisitor.Visit(Multimedia.Midi.SysExMessage)">
            <summary>
            
            </summary>
            <param name="message"></param>
        </member>
        <member name="M:Multimedia.Midi.MidiMessageVisitor.Visit(Multimedia.Midi.SysRealtimeMessage)">
            <summary>
            
            </summary>
            <param name="message"></param>
        </member>
        <member name="T:Multimedia.Midi.SysCommonEventHandler">
            <summary>
            Represents the method that will handle the event that occurs when a 
            system common message is received.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.SysCommonType">
            <summary>
            Represents the various system common message types.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.SysCommonType.MidiTimeCode">
            <summary>
            Represents the MTC system common message type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.SysCommonType.SongPositionPointer">
            <summary>
            Represents the song position pointer type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.SysCommonType.SongSelect">
            <summary>
            Represents the song select type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.SysCommonType.TuneRequest">
            <summary>
            Represents the tune request type.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.SysCommonMessage">
            <summary>
            Represents Midi system common messages.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.SysCommonMessage.#ctor(Multimedia.Midi.SysCommonType)">
            <summary>
            Initializes a new instance of the SysCommonMessage class with the
            specified type.
            </summary>
            <param name="type">
            The type of system common message.
            </param>
        </member>
        <member name="M:Multimedia.Midi.SysCommonMessage.#ctor(Multimedia.Midi.SysCommonType,System.Int32)">
            <summary>
            Initializes a new instance of the SysCommonMessage class with the 
            specified type and the first data value.
            </summary>
            <param name="type">
            The type of system common message.
            </param>
            <param name="data1">
            The first data value.
            </param>
        </member>
        <member name="M:Multimedia.Midi.SysCommonMessage.#ctor(Multimedia.Midi.SysCommonType,System.Int32,System.Int32)">
            <summary>
            Initializes a new instance of the SysCommonMessage class with the 
            specified type, first data value, and second data value.
            </summary>
            <param name="type">
            The type of system common message.
            </param>
            <param name="data1">
            The first data value.
            </param>
            <param name="data2">
            The second data value.
            </param>
        </member>
        <member name="M:Multimedia.Midi.SysCommonMessage.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the SysCommonMessage class with a
            system common message packed as an integer.
            </summary>
            <param name="message">
            The packed system common message to use for initialization.
            </param>
        </member>
        <member name="M:Multimedia.Midi.SysCommonMessage.#ctor(Multimedia.Midi.SysCommonMessage)">
            <summary>
            Initializes a new instance of the SysCommonMessage class with 
            another instance of the SysCommonMessage class.
            </summary>
            <param name="message">
            The SysCommonMessage instance to use for initialization.
            </param>
        </member>
        <member name="M:Multimedia.Midi.SysCommonMessage.Accept(Multimedia.Midi.MidiMessageVisitor)">
            <summary>
            Accepts a MIDI message visitor.
            </summary>
            <param name="visitor">
            The visitor to accept.
            </param>
        </member>
        <member name="M:Multimedia.Midi.SysCommonMessage.Clone">
            <summary>
            Creates a deep copy of this message.
            </summary>
            <returns>
            A deep copy of this message.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.SysCommonMessage.IsSysCommonMessage(System.Int32)">
            <summary>
            Tests to see if a status value belongs to a system common message.
            </summary>
            <param name="status">
            The status value to test.
            </param>
            <returns>
            <b>true</b> if the status value belongs to a system common message; 
            otherwise, <b>false</b>.
            </returns>
        </member>
        <member name="P:Multimedia.Midi.SysCommonMessage.Type">
            <summary>
            Gets or sets the system common type.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.SysCommonMessage.Data1">
            <summary>
            Gets or sets the first data value.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.SysCommonMessage.Data2">
            <summary>
            Gets or sets the second data value.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.SysCommonEventArgs">
            <summary>
            Represents data for SysCommonEvent events.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.SysCommonEventArgs.#ctor(Multimedia.Midi.SysCommonMessage,System.Int32)">
            <summary>
            Initializes a new instance of the SysCommonEventArgs class with the
            specified SysCommonMessage and time stamp.
            </summary>
            <param name="message">
            The SysCommonMessage for this event.
            </param>
            <param name="timeStamp">
            The time in milliseconds since the input device began recording.
            </param>
        </member>
        <member name="P:Multimedia.Midi.SysCommonEventArgs.Message">
            <summary>
            Gets the SysCommonMessage for this event.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.SysCommonEventArgs.TimeStamp">
            <summary>
            Gets the time in milliseconds since the input device began 
            recording.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.SysExEventHandler">
            <summary>
            Represents the method that will handle the event that occurs when a
            system exclusive message is received.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.SysExType">
            <summary>
            Represents various system exclusive message types.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.SysExType.Start">
            <summary>
            Represents the start of system exclusive message type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.SysExType.Special">
            <summary>
            Represents either the continuation or the escape system 
            exclusive message type.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.SysExMessage">
            <summary>
            Represents Midi system exclusive messages.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.SysExMessage.#ctor(Multimedia.Midi.SysExType,System.Byte[])">
            <summary>
            Initializes a new instance of the SysExMessage class with the
            specified system exclusive type and data.
            </summary>
            <param name="type">
            The type of system exclusive message.
            </param>
            <param name="data">
            The system exclusive data.
            </param>
        </member>
        <member name="M:Multimedia.Midi.SysExMessage.#ctor(Multimedia.Midi.SysExMessage)">
            <summary>
            Initializes a new instance of the SysExMessage class with 
            another instance of the SysExMessage class.
            </summary>
            <param name="message">
            The SysExMessage instance to use for initialization.
            </param>
        </member>
        <member name="M:Multimedia.Midi.SysExMessage.IsSysExMessage(System.Int32)">
            <summary>
            Tests to see if a status value belongs to a system exclusive 
            message.
            </summary>
            <param name="status">
            The status value to test.
            </param>
            <returns>
            <b>true</b> if the status value belongs to a system exclusive 
            message; otherwise, <b>false</b>.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.SysExMessage.Clone">
            <summary>
            Creates a deep copy of this message.
            </summary>
            <returns>
            A deep copy of this message.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.SysExMessage.Accept(Multimedia.Midi.MidiMessageVisitor)">
            <summary>
            Accepts a MIDI message visitor.
            </summary>
            <param name="visitor">
            The visitor to accept.
            </param>
        </member>
        <member name="P:Multimedia.Midi.SysExMessage.Item(System.Int32)">
            <summary>
            Gets or sets the element at the specified index.
            </summary>
            <remarks>
            Indexing this class allows access to the system exclusive data. 
            This is any element other than the status value, which cannot 
            be changed.
            </remarks>
        </member>
        <member name="P:Multimedia.Midi.SysExMessage.Length">
            <summary>
            Gets the length of the system exclusive data.
            </summary>
            <remarks>
            The status byte is not included in the length of the system 
            exclusive message.
            </remarks>
        </member>
        <member name="P:Multimedia.Midi.SysExMessage.Message">
            <summary>
            Gets the system exclusive data.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.SysExMessage.Type">
            <summary>
            Gets the system exclusive type.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.SysExMessage.Status">
            <summary>
            Gets the status value.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.SysExEventArgs">
            <summary>
            Provides data for the <b>SysExReceived</b> event.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.SysExEventArgs.#ctor(Multimedia.Midi.SysExMessage,System.Int32)">
            <summary>
            Initializes a new instance of the SysExEventArgs class with the 
            specified system exclusive message and the time stamp.
            </summary>
            <param name="message">
            The system exclusive message for this event.
            </param>
            <param name="timeStamp">
            The time in milliseconds since the input device began recording.
            </param>
        </member>
        <member name="P:Multimedia.Midi.SysExEventArgs.Message">
            <summary>
            Gets the system exclusive message for this event.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.SysExEventArgs.TimeStamp">
            <summary>
            Gets the time in milliseconds since the input device began 
            recording.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.SysRealtimeEventHandler">
            <summary>
            Represents the method that will handle SysRealtimeEvent events from an
            InputDevice.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.SysRealtimeType">
            <summary>
            Represents the various system realtime message types.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.SysRealtimeType.Clock">
            <summary>
            Represents the clock system realtime type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.SysRealtimeType.Tick">
            <summary>
            Represents the tick system realtime type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.SysRealtimeType.Start">
            <summary>
            Represents the start system realtime type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.SysRealtimeType.Continue">
            <summary>
            Represents the continue system realtime type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.SysRealtimeType.Stop">
            <summary>
            Represents the stop system realtime type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.SysRealtimeType.ActiveSense">
            <summary>
            Represents the active sense system realtime type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.SysRealtimeType.Reset">
            <summary>
            Represents the reset system realtime type.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.SysRealtimeMessage">
            <summary>
            Represents Midi system realtime messages.
            </summary>
            <remarks>
            System realtime messages are Midi messages that are primarily concerned 
            with controlling and synchronizing Midi devices. 
            </remarks>
        </member>
        <member name="M:Multimedia.Midi.SysRealtimeMessage.#ctor(Multimedia.Midi.SysRealtimeType)">
            <summary>
            Initializes a new instance of the SysRealtimeMessage class.
            </summary>
            <param name="type">
            The type of system realtime message.
            </param>
        </member>
        <member name="M:Multimedia.Midi.SysRealtimeMessage.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the SysRealtimeMessage class with a
            system realtime message packed as an integer.
            </summary>
            <param name="message">
            The packed system realtime message to use for initialization.
            </param>
        </member>
        <member name="M:Multimedia.Midi.SysRealtimeMessage.#ctor(Multimedia.Midi.SysRealtimeMessage)">
            <summary>
            Initializes a new instance of the SysRealtimeMessage class with 
            another instance of the SysRealtimeMessage class.
            </summary>
            <param name="message">
            The SysRealtimeMessage instance to use for initialization.
            </param>
        </member>
        <member name="M:Multimedia.Midi.SysRealtimeMessage.Accept(Multimedia.Midi.MidiMessageVisitor)">
            <summary>
            Accepts a MIDI message visitor.
            </summary>
            <param name="visitor">
            The visitor to accept.
            </param>
        </member>
        <member name="M:Multimedia.Midi.SysRealtimeMessage.Clone">
            <summary>
            Creates a deep copy of this message.
            </summary>
            <returns>
            A deep copy of this message.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.SysRealtimeMessage.IsSysRealtimeMessage(System.Int32)">
            <summary>
            Tests to see if a status value belongs to a system realtime 
            message.
            </summary>
            <param name="status">
            The status value to test.
            </param>
            <returns>
            <b>true</b> if the status value belongs to a system realtime 
            message; otherwise, <b>false</b>.
            </returns>
        </member>
        <member name="P:Multimedia.Midi.SysRealtimeMessage.Type">
            <summary>
            Gets or sets the system realtime type.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.SysRealtimeEventArgs">
            <summary>
            Represents data for SysRealtimeEvent events.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.SysRealtimeEventArgs.#ctor(Multimedia.Midi.SysRealtimeMessage,System.Int32)">
            <summary>
            Initializes a new instance of the SysRealtimeEventArgs class with 
            the specified SysRealtimeMessage and time stamp.
            </summary>
            <param name="message">
            The SysRealtimeMessage for this event.
            </param>
            <param name="timeStamp">
            The time in milliseconds since the input device began recording.
            </param>
        </member>
        <member name="P:Multimedia.Midi.SysRealtimeEventArgs.Message">
            <summary>
            Gets the SysRealtimeMessage for this event.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.SysRealtimeEventArgs.TimeStamp">
            <summary>
            Gets the time in milliseconds since the input device began 
            recording.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.MessageWriter">
            <summary>
            Writes MIDI events to a stream.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MessageWriter.#ctor(System.IO.Stream)">
            <summary>
            Initializes a new instance of the MessageWriter class with the
            specified stream.
            </summary>
            <param name="midiStream">
            The stream for writing MIDI events.
            </param>
        </member>
        <member name="M:Multimedia.Midi.MessageWriter.WriteNextEvent(Multimedia.Midi.MidiEvent)">
            <summary>
            Writes the next MIDI event to the stream.
            </summary>
            <param name="e">
            The next MIDI event to write.
            </param>
        </member>
        <member name="M:Multimedia.Midi.MessageWriter.WriteVariableLengthQuantity(System.Int32)">
            <summary>
            Writes variable length values to stream.
            </summary>
            <param name="value">
            The value to write.
            </param>
        </member>
        <member name="M:Multimedia.Midi.MessageWriter.Visit(Multimedia.Midi.ChannelMessage)">
            <summary>
            Visits channel messages.
            </summary>
            <param name="message">
            The channel message to visit.
            </param>
        </member>
        <member name="M:Multimedia.Midi.MessageWriter.Visit(Multimedia.Midi.MetaMessage)">
            <summary>
            Visits meta messages.
            </summary>
            <param name="message">
            The meta message to visit.
            </param>
        </member>
        <member name="M:Multimedia.Midi.MessageWriter.Visit(Multimedia.Midi.SysExMessage)">
            <summary>
            Visits system exclusive messages.
            </summary>
            <param name="message">
            The system exclusive message to visit.
            </param>
        </member>
        <member name="T:Multimedia.Midi.MidiFileResult">
            <summary>
            Error codes for Midi file operations.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MidiFileResult.Success">
            <summary>
            The Midi file operation was successful.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MidiFileResult.NotMidiFile">
            <summary>
            The specified file is not a Midi file.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MidiFileResult.InvalidFormat">
            <summary>
            The Midi file format value is either out of range or the number of 
            tracks does not match the format type.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MidiFileResult.EndofFileError">
            <summary>
            The end of the Midi file was unexpectedly reached.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.MidiFileException">
            <summary>
            The exception that is thrown when a Midi file operation fails.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MidiFileException.#cctor">
            <summary>
            Initializes class data.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MidiFileException.#ctor(Multimedia.Midi.MidiFileResult)">
            <summary>
            Initializes a new instance of the MidiFileException class with the
            specified error code.
            </summary>
            <param name="result">
            Error code.
            </param>
        </member>
        <member name="P:Multimedia.Midi.MidiFileException.Message">
            <summary>
            Gets a message that describes the current exception.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.MidiFileReader">
            <summary>
            Reads data from MIDI files and stores them in sequences.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MidiFileReader.FormatMax">
            <summary>
            The format maximum value.
            </summary> 
        </member>
        <member name="M:Multimedia.Midi.MidiFileReader.#ctor">
            <summary>
            Initializes a new instance of the MidiFileReader class.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MidiFileReader.#ctor(System.String)">
            <summary>
            Initializes a new instance of the MidiFileReader class with the 
            specified path of the Midi file to read.
            </summary>
            <param name="path">
            The path of the Midi file to read.
            </param>
        </member>
        <member name="M:Multimedia.Midi.MidiFileReader.Read(System.String)">
            <summary>
            Reads a MIDI file at the specified path.
            </summary>
            <param name="path">
            Name of MIDI file.
            </param>
        </member>
        <member name="M:Multimedia.Midi.MidiFileReader.VerifyFileType">
            <summary>
            Verifies that the file is a Midi file.
            </summary>
            <returns>
            <b>MidiFileResult.Success</b> if the file is a Midi file; 
            otherwise, <b>MidiFileResult.NotMidiFile</b>.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.MidiFileReader.ReadFormat">
            <summary>
            Reads the format type.
            </summary>
            <returns>
            <b>MidiFileResult.Success</b> if the format was read and is valid;
            otherwise, <b>MidiFileResult.InvalidFormat</b>.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.MidiFileReader.ReadTrackCount">
            <summary>
            Reads the number of tracks in the Midi file.
            </summary>
            <returns>
            <b>MidiFileResult.Succes</b> if the track count and format type 
            are valid; otherwise, <b>MidiFileResult.InvalidFormat</b>.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.MidiFileReader.ReadDivision">
            <summary>
            Reads the division value.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MidiFileReader.ReadTracks">
            <summary>
            Reads the track data from the Midi file.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MidiFileReader.FindNextTrack">
            <summary>
            Finds the next track in the Midi file.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MidiFileReader.ReadNextTrack(System.Int32)">
            <summary>
            Reads the data for the next track from the Midi file.
            </summary>
            <param name="trackNum">
            The track number.
            </param>
        </member>
        <member name="M:Multimedia.Midi.MidiFileReader.ConvertByteArray(System.Byte[])">
            <summary>
            Converts byte order of the specified array to match the byte order
            of this platform.
            </summary>
            <param name="array">
            The array to convert.
            </param>
        </member>
        <member name="M:Multimedia.Midi.MidiFileReader.ThrowOnError(Multimedia.Midi.MidiFileResult)">
            <summary>
            Throws exception based on the specified error result.
            </summary>
            <param name="result">
            A value representing which error occurred.
            </param>
        </member>
        <member name="M:Multimedia.Midi.MidiFileReader.ReadChannelMessage(System.Int32)">
            <summary>
            Reads the next channel message.
            </summary>
            <param name="status">
            The status value for the next channel message.
            </param>
            <returns>
            The next channel message.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.MidiFileReader.ReadChannelMessage(System.Int32,System.Int32)">
            <summary>
            Reads the next channel message.
            </summary>
            <param name="status">
            The status value for the next channel message.
            </param>
            <param name="data1">
            The first data byte.
            </param>
            <returns>
            The next channel message.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.MidiFileReader.ReadVariableLengthQuantity">
            <summary>
            Reads variable length quantities from the Midi file.
            </summary>
            <returns>
            The variable length quantity packed into an integer.
            </returns>
        </member>
        <member name="P:Multimedia.Midi.MidiFileReader.Format">
            <summary>
            Gets the Midi file's format type.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.MidiFileReader.Sequence">
            <summary>
            Gets the sequence created from the Midi file.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.MidiFileWriter">
            <summary>
            Writes data from a Sequence to a MIDI file.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MidiFileWriter.#ctor">
            <summary>
            Initializes a new instance of the MidiFileWriter class.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MidiFileWriter.#ctor(System.String,System.Int16,Multimedia.Midi.Sequence)">
            <summary>
            Initializes a new instance of the MidiFileWriter class with the
            specified file path name, the MIDI file format, and the sequence
            to write to a MIDI file.
            </summary>
            <param name="path">
            The file path name to use to write the MIDI file.
            </param>
            <param name="format">
            The MIDI file format.
            </param>
            <param name="seq">
            The sequence to write as a MIDI file.
            </param>
        </member>
        <member name="M:Multimedia.Midi.MidiFileWriter.Write(System.String)">
            <summary>
            Writes the sequence to a MIDI file.
            </summary>
            <param name="path">
            The file path name to use to write the MIDI file.
            </param>
        </member>
        <member name="M:Multimedia.Midi.MidiFileWriter.WriteFileHeader">
            <summary>
            Writes the file header.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MidiFileWriter.WriteFormat">
            <summary>
            Writes the MIDI file format.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MidiFileWriter.WriteTrackCount">
            <summary>
            Writes the track count.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MidiFileWriter.WriteDivision">
            <summary>
            Writes the MIDI file division.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MidiFileWriter.WriteShort(System.Int16)">
            <summary>
            Writes short values to file.
            </summary>
            <param name="value"></param>
        </member>
        <member name="M:Multimedia.Midi.MidiFileWriter.WriteTrack(Multimedia.Midi.Track)">
            <summary>
            Writes the specified track to MIDI file.
            </summary>
            <param name="trk">
            The track to write to the MIDI file.
            </param>
        </member>
        <member name="P:Multimedia.Midi.MidiFileWriter.Format">
            <summary>
            Gets or sets the MIDI file format.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.MidiFileWriter.Sequence">
            <summary>
            Gets or sets the sequence to write to the MIDI file.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.MidiChaser">
            <summary>
            Provides functionality for updating playback settings.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MidiChaser.#ctor(Multimedia.Midi.IMidiSender,Multimedia.Midi.TickGenerator)">
            <summary>
            Initializes a new instance of the MidiChaser class with the 
            specified MIDI sender and tick generator.
            </summary>
            <param name="midiSender">
            The MIDI sender to use for sending MIDI messages.
            </param>
            <param name="tickGenerator">
            The tick generator to use for setting the tempo.
            </param>
        </member>
        <member name="M:Multimedia.Midi.MidiChaser.Add(Multimedia.Midi.IMidiMessage)">
            <summary>
            Adds a MIDI message to the chaser to use for updating the playback
            settings later.
            </summary>
            <param name="message">
            The MIDI message to add to the chaser.
            </param>
            <remarks>
            Only certain MIDI messages are accepted by the chaser. If the
            message is not accepted, no operation occurs.
            </remarks>
        </member>
        <member name="M:Multimedia.Midi.MidiChaser.Chase">
            <summary>
            Update playback settings based on the stored set of MIDI messages.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MidiChaser.Visit(Multimedia.Midi.ChannelMessage)">
            <summary>
            Visits channel messages.
            </summary>
            <param name="message">
            The channel message to visit.
            </param>
            <remarks>
            This method should not be called by an outside source.
            </remarks>
        </member>
        <member name="M:Multimedia.Midi.MidiChaser.Visit(Multimedia.Midi.MetaMessage)">
            <summary>
            Visits meta messages.
            </summary>
            <param name="message">
            The meta message to visit.
            </param>
            <remarks>
            This method should not be called by an outside source.
            </remarks>
        </member>
        <member name="M:Multimedia.Midi.MidiChaser.Initialize">
            <summary>
            Initializes the MIDI chaser.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.MidiEventHandler">
            <summary>
            Represents the method for handling Midi events.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.MidiEvent">
            <summary>
            Represents a time-stamped event in which a Midi message occurs.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MidiEvent.#ctor(Multimedia.Midi.IMidiMessage,System.Int32)">
            <summary>
            Initializes a new instance of the Midi event struct with the 
            specified Midi message and the number of ticks for this event.
            </summary>
            <param name="message">
            The Midi message for the event.
            </param>
            <param name="ticks">
            The delta tick value for the event.
            </param>
        </member>
        <member name="M:Multimedia.Midi.MidiEvent.Clone">
            <summary>
            Creates a new object that is a copy of the Midi event.
            </summary>
            <returns>
            A new object that is a copy of this Midi event.
            </returns>
        </member>
        <member name="P:Multimedia.Midi.MidiEvent.Message">
            <summary>
            Gets or set the Midi message for the Midi event.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.MidiEvent.Ticks">
            <summary>
            Gets or sets the ticks for the Midi event.
            </summary>
            <exception cref="T:System.ArgumentOutOfRangeException">
            Thrown if the ticks value is set to a negative number.
            </exception>
        </member>
        <member name="T:Multimedia.Midi.MidiEventArgs">
            <summary>
            Provides data for Midi events.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MidiEventArgs.#ctor(Multimedia.Midi.MidiEvent)">
            <summary>
            Initializes a new instance of the MidiEventArgs class with the
            specified Midi event.
            </summary>
            <param name="e">
            The Midi event for this event.
            </param>
        </member>
        <member name="P:Multimedia.Midi.MidiEventArgs.MidiEvent">
            <summary>
            Gets the Midi event for this event.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.Sequence">
            <summary>
            Represents a collection of Tracks.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.Sequence.#ctor">
            <summary>
            Initializes a new instance of the Sequence class.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.Sequence.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the Sequence class with the 
            specified division.
            </summary>
            <param name="division">
            The division value for the sequence.
            </param>
        </member>
        <member name="M:Multimedia.Midi.Sequence.Add(Multimedia.Midi.Track)">
            <summary>
            Adds a track to the Sequence.
            </summary>
            <param name="trk">
            The track to add to the Sequence.
            </param>
            <exception cref="T:System.InvalidOperationException">
            Thrown if the sequence is currently locked.
            </exception>
        </member>
        <member name="M:Multimedia.Midi.Sequence.Remove(Multimedia.Midi.Track)">
            <summary>
            Removes the specified track from the sequence.
            </summary>
            <param name="trk">
            The track to remove.
            </param>
            <exception cref="T:System.InvalidOperationException">
            Thrown if the sequence is currently locked.
            </exception>
        </member>
        <member name="M:Multimedia.Midi.Sequence.RemoveAt(System.Int32)">
            <summary>
            Remove the Track at the specified index.
            </summary>
            <param name="index">
            The zero-based index of the Track to remove. 
            </param>
            <exception cref="T:System.InvalidOperationException">
            Thrown if the sequence is currently locked.
            </exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            Thrown if index is less than zero or greater or equal to Count.
            </exception>
        </member>
        <member name="M:Multimedia.Midi.Sequence.IsLocked">
            <summary>
            Determines whether or not the sequence is locked.
            </summary>
            <returns>
            <b>true</b> if the sequence is locked; otherwise, <b>false</b>.
            </returns>
            <remarks>
            A sequence is locked when a sequencer is playing it. Attempting to
            change a sequence while it is locked will result in an exception 
            being thrown.
            </remarks>
        </member>
        <member name="M:Multimedia.Midi.Sequence.IsSmpte">
            <summary>
            Determines whether or not this is a Smpte sequence.
            </summary>
            <returns>
            <b>true</b> if this is a Smpte sequence; otherwise, <b>false</b>.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.Sequence.LockSequence(System.Object,System.Boolean)">
            <summary>
            Locks a sequence to keep it from being modified.
            </summary>
            <param name="locker">
            The object locking the sequence.
            </param>
            <param name="lockSequence">
            A value indicating whether or not to lock the sequence.
            </param>
        </member>
        <member name="M:Multimedia.Midi.Sequence.GetEnumerator">
            <summary>
            
            </summary>
            <returns></returns>
        </member>
        <member name="P:Multimedia.Midi.Sequence.Item(System.Int32)">
            <summary>
            Gets or sets the Track at the specified index.
            </summary>
            <exception cref="T:System.InvalidOperationException">
            Thrown if an attempt is made to set a track at the specified index
            and the sequence is currently locked.
            </exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            Thrown if index is less than zero or greater or equal to Count.
            </exception>
        </member>
        <member name="P:Multimedia.Midi.Sequence.Count">
            <summary>
            Gets the number of Tracks in the Sequence.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.Sequence.Division">
            <summary>
            Gets the division value for the Sequence.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.Sequence.Length">
            <summary>
            Gets the length of the sequence in ticks.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.Sequence.Version">
            <summary>
            Gets a value representing the version of the sequence.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.Sequence.SequenceEnumerator">
            <summary>
            Provides enumeration for the Sequence class.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.Sequence.SequenceEnumerator.#ctor(Multimedia.Midi.Sequence)">
            <summary>
            Initializes a new instance of the SequenceEnumerator class with 
            the specified sequence to iterate over.
            </summary>
            <param name="owner">
            The sequence to iterate over.
            </param>
        </member>
        <member name="M:Multimedia.Midi.Sequence.SequenceEnumerator.Reset">
            <summary>
            Resets the enumerator to just before the first track in the
            sequence.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.Sequence.SequenceEnumerator.MoveNext">
            <summary>
            Moves to the next track in the sequence.
            </summary>
            <returns>
            <b>true</b> if the end of the sequence has not been reached; 
            otherwise, <b>false</b>.
            </returns>
        </member>
        <member name="P:Multimedia.Midi.Sequence.SequenceEnumerator.Current">
            <summary>
            The track at the current position.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.SequencePlayer">
            <summary>
            Handles playback of a sequence.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.SequencePlayer.#ctor(Multimedia.Midi.IMidiSender,Multimedia.Midi.TickGenerator,Multimedia.Midi.Sequence)">
            <summary>
            Initializes a new instance of the SequencePlayer class with the 
            specified MIDI sender, tick generator and sequence.
            </summary>
            <param name="midiSender">
            The MIDI sender to use to send MIDI messages.
            </param>
            <param name="tickGen">
            The tick generator used for timing the playback of MIDI messages.
            </param>
            <param name="seq">
            The sequence to playback.
            </param>
        </member>
        <member name="M:Multimedia.Midi.SequencePlayer.AllSoundsOff">
            <summary>
            Turns all currently sounding notes off.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.SequencePlayer.Seek(System.Int32)">
            <summary>
            Seeks a position within the sequence.
            </summary>
            <param name="position">
            The position in ticks to seek.
            </param>
        </member>
        <member name="M:Multimedia.Midi.SequencePlayer.MuteTrack(System.Int32,System.Boolean)">
            <summary>
            Sets the mute state of a track.
            </summary>
            <param name="index">
            Index into the sequence of the track to solo.
            </param>
            <param name="mute">
            A value indicating whether or not to mute the track.
            </param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            Thrown if the track index is out of range.
            </exception>
        </member>
        <member name="M:Multimedia.Midi.SequencePlayer.SoloTrack(System.Int32,System.Boolean)">
            <summary>
            Sets the solo state of a track.
            </summary>
            <param name="index">
            Index into the sequence of the track to solo.
            </param>
            <param name="solo">
            A value indicating whether or not to solo the track.
            </param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            Thrown if the track index is out of range.
            </exception>
        </member>
        <member name="M:Multimedia.Midi.SequencePlayer.EndOfTrackReachedHandler(System.Object,System.EventArgs)">
            <summary>
            Keeps track of how many tracks are still playing.
            </summary>
            <param name="sender">
            The track responsible for triggering the event.
            </param>
            <param name="e">
            Information about the event.
            </param>
        </member>
        <member name="M:Multimedia.Midi.SequencePlayer.OnEndOfSequenceReached">
            <summary>
            Raises the end of sequence event.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.SequencePlayer.Dispose">
            <summary>
            Disposes of the sequence player.
            </summary>
        </member>
        <member name="E:Multimedia.Midi.SequencePlayer.EndOfSequenceReached">
            <summary>
            Occurs when the end of the sequence has been reached.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.Sequencer">
            <summary>
            Plays back sequences.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.Sequencer.#ctor(System.ComponentModel.IContainer)">
            <summary>
            Initializes an instance of the Sequencer class with the specified 
            component container.
            </summary>
            <param name="container">
            The component container.
            </param>
        </member>
        <member name="M:Multimedia.Midi.Sequencer.#ctor">
            <summary>
            Initializes an instance of the Sequencer class.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.Sequencer.Dispose(System.Boolean)">
            <summary> 
            Clean up any resources being used.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.Sequencer.InitializeComponent">
            <summary>
            Required method for Designer support - do not modify
            the contents of this method with the code editor.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.Sequencer.InitializeSequencer">
            <summary>
            Initializes the sequencer.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.Sequencer.Start">
            <summary>
            Starts playback at the beginning of the sequence.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.Sequencer.Continue">
            <summary>
            Continues playback from the current position.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.Sequencer.Stop">
            <summary>
            Stops playback.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.Sequencer.AttachToTickGenerator(System.EventHandler)">
            <summary>
            Attaches a delegate to the internal tick generator the sequencer
            uses for timing playback.
            </summary>
            <param name="handler">
            The delegate to attach to the tick generator.
            </param>
            <remarks>
            Attaching a delegate to a sequencer's tick generator allows a 
            client to synchronize itself with the sequencer's playback.
            </remarks>
        </member>
        <member name="M:Multimedia.Midi.Sequencer.DetachFromTickGenerator(System.EventHandler)">
            <summary>
            Detaches a delegate from the internal tick generator the sequencer
            uses for timing playback.
            </summary>
            <param name="handler">
            The delegate to detach from the tick generator.
            </param>
        </member>
        <member name="M:Multimedia.Midi.Sequencer.MuteTrack(System.Int32,System.Boolean)">
            <summary>
            Sets the mute state of a track.
            </summary>
            <param name="index">
            The index into the sequence of the track to mute.
            </param>
            <param name="mute">
            A value indicating whether or not to mute the track.
            </param>
        </member>
        <member name="M:Multimedia.Midi.Sequencer.SoloTrack(System.Int32,System.Boolean)">
            <summary>
            Sets the solo state of a track.
            </summary>
            <param name="index">
            The index into the sequence of the track to solo.
            </param>
            <param name="solo">
            A value indicating whether or not to solo the track.
            </param>
        </member>
        <member name="M:Multimedia.Midi.Sequencer.TickHandler(System.Object,System.EventArgs)">
            <summary>
            Handles tick events generated by the tick generator.
            </summary>
            <param name="sender">
            The tick generator responsible for the event.
            </param>
            <param name="e">
            Information about the event.
            </param>
        </member>
        <member name="M:Multimedia.Midi.Sequencer.StartingHandler(System.Object,System.EventArgs)">
            <summary>
            Handles the starting event generated by the MIDI clock.
            </summary>
            <param name="sender">
            The MIDI clock responsible for the event.
            </param>
            <param name="e">
            Information about the event.
            </param>
        </member>
        <member name="M:Multimedia.Midi.Sequencer.ContinuingHandler(System.Object,System.EventArgs)">
            <summary>
            Handles the continuing event generated by the MIDI clock.
            </summary>
            <param name="sender">
            The MIDI clock responsible for the event.
            </param>
            <param name="e">
            Information about the event.
            </param>
        </member>
        <member name="M:Multimedia.Midi.Sequencer.StoppingHandler(System.Object,System.EventArgs)">
            <summary>
            Handles the stopping event generated by the MIDI clock.
            </summary>
            <param name="sender">
            The MIDI clock responsible for the event.
            </param>
            <param name="e">
            Information about the event.
            </param>
        </member>
        <member name="M:Multimedia.Midi.Sequencer.PositionChangedHandler(System.Object,Multimedia.Midi.PositionChangedEventArgs)">
            <summary>
            Handles the position changed event generated by the MIDI clock.
            </summary>
            <param name="sender">
            The MIDI clock responsible for the event.
            </param>
            <param name="e">
            Information about the event.
            </param>
        </member>
        <member name="M:Multimedia.Midi.Sequencer.EndOfSequenceReachedHandler(System.Object,System.EventArgs)">
            <summary>
            Handles the end of sequence reached event generated by the sequence 
            player.
            </summary>
            <param name="sender">
            The sequence player responsible for the event.
            </param>
            <param name="e">
            Information about the event.
            </param>
        </member>
        <member name="M:Multimedia.Midi.Sequencer.OnTempoChanged(System.Object,System.EventArgs)">
            <summary>
            Handles and raises the tempo changed event.
            </summary>
            <param name="sender">
            The tick generator responsible for the event.
            </param>
            <param name="e">
            Information about the event.
            </param>
        </member>
        <member name="M:Multimedia.Midi.Sequencer.PreparePlayer">
            <summary>
            Prepares the sequence player for playback.
            </summary>
        </member>
        <member name="E:Multimedia.Midi.Sequencer.TempoChanged">
            <summary>
            Occurs when the tempo changes.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.Sequencer.InputDeviceID">
            <summary>
            Gets or sets the input device's id.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.Sequencer.OutputDeviceID">
            <summary>
            Gets or sets the output device's id.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.Sequencer.MasterEnabled">
            <summary>
            Gets or sets a value indicating whether or not the master mode
            is enabled.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.Sequencer.SlaveEnabled">
            <summary>
            Gets or sets a value indicating whether or not the slave mode is 
            enabled.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.Sequencer.Position">
            <summary>
            Gets or sets the playback position in ticks.
            </summary>
            <remarks>
            Attempting to set the position while the slave mode is enabled has
            no effect.
            </remarks>
        </member>
        <member name="P:Multimedia.Midi.Sequencer.SongPositionPointer">
            <summary>
            Gets or sets the song position pointer.
            </summary>
            <remarks>
            
            </remarks>
        </member>
        <member name="P:Multimedia.Midi.Sequencer.Sequence">
            <summary>
            Gets or sets the sequence to play back.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.Sequencer.Tempo">
            <summary>
            Gets or sets the tempo in microseconds.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.Track">
            <summary>
            Represents a collection of MIDI events.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.Track.#ctor">
            <summary>
            Initializes a new instance of the Track class.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.Track.#ctor(Multimedia.Midi.Track)">
            <summary>
            Initializes a new instance of the Track class with another instance
            of the Track class.
            </summary>
            <param name="trk">
            The Track instance to use for initialization.
            </param>
        </member>
        <member name="M:Multimedia.Midi.Track.Add(Multimedia.Midi.MidiEvent)">
            <summary>
            Add a Midi event to the end of the track.
            </summary>
            <param name="e">
            The Midi event to add to the track.
            </param>
        </member>
        <member name="M:Multimedia.Midi.Track.Clear">
            <summary>
            Removes all but the last MIDI event from the track.
            </summary>
            <remarks>
            The very last message in a track is an end of track meta message
            This message must be present at the end of all tracks. When a track 
            is cleared, all but the last message are removed; The end of track 
            message is left so that the track remains valid after it has been 
            cleared.
            </remarks>
        </member>
        <member name="M:Multimedia.Midi.Track.Insert(System.Int32,Multimedia.Midi.MidiEvent)">
            <summary>
            Inserts a MidiEvent into the Track at the specified index.
            </summary>
            <param name="index">
            The zero-based index at which <i>e</i> should be inserted. 
            </param>
            <param name="e">
            The MidiEvent to insert.
            </param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            Thrown if index is less than zero or greater than or equal to 
            Count.
            </exception>
        </member>
        <member name="M:Multimedia.Midi.Track.RemoveAt(System.Int32)">
            <summary>
            Removes a MidiEvent at the specified index of the Track.
            </summary>
            <param name="index">
            The zero-based index of the MidiEvent to remove. 
            </param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            Thrown if index is less than zero or greater than or equal to 
            Count minus one.
            </exception>
            <remarks>
            Every track must end with an end of track message. If an attempt is
            made to remove the end of track message, an exception is thrown.
            </remarks>
        </member>
        <member name="M:Multimedia.Midi.Track.RemoveRange(System.Int32,System.Int32)">
            <summary>
            
            </summary>
            <param name="index"></param>
            <param name="count"></param>
            <remarks>
            Every track must end with an end of track message. If an attempt is
            made to remove a range of events which includes the end of track 
            message, an exception is thrown.
            </remarks>
        </member>
        <member name="M:Multimedia.Midi.Track.Slide(System.Int32,System.Int32)">
            <summary>
            Slides events forwards or backwards at the specified index in the 
            Track.
            </summary>
            <param name="index">
            The zero-based index of the MidiEvent to slide. 
            </param>
            <param name="slideAmount">
            The amount to slide the MidiEvent.
            </param>
            <remarks>
            If the slide amount is a negative number, the Midi event at the
            specified index will be moved backwards in time; its ticks value 
            will be summed with the slide amount thus reducing its value. It
            is important that using a negative slide amount does not result in
            a negative tick value for the specified Midi event. If this occurs,
            an exception is thrown. If the slide amount is positive, the Midi 
            event at the specified index will be moved forwards in time; its 
            ticks value will be increased by the slide amount. 
            </remarks>
            <exception cref="T:System.ArgumentOutOfRangeException">
            Thrown if index is less than zero or greater than or equal to 
            Count. Or if slide amount results in a ticks value less than zero.
            </exception>
        </member>
        <member name="M:Multimedia.Midi.Track.IndexToPosition(System.Int32)">
            <summary>
            
            </summary>
            <param name="index"></param>
            <returns></returns>
        </member>
        <member name="M:Multimedia.Midi.Track.PositionToIndex(System.Int32)">
            <summary>
            
            </summary>
            <param name="position"></param>
            <returns></returns>
        </member>
        <member name="M:Multimedia.Midi.Track.IsRecordEnabled">
            <summary>
            
            </summary>
            <returns></returns>
        </member>
        <member name="M:Multimedia.Midi.Track.Merge(Multimedia.Midi.Track,Multimedia.Midi.Track)">
            <summary>
            Merges two tracks together.
            </summary>
            <param name="trackA">
            The first of two tracks to merge.
            </param>
            <param name="trackB">
            The second of two tracks to merge.
            </param>
            <returns>
            The merged track.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.Track.Merge(System.Collections.ArrayList)">
            <summary>
            
            </summary>
            <param name="tracks"></param>
            <returns></returns>
        </member>
        <member name="M:Multimedia.Midi.Track.FindTrackNameMetaMessage">
            <summary>
            Finds the track name meta message.
            </summary>
            <returns>
            The index to the MIDI event containing the track name meta message
            if it exists; otherwise, -1.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.Track.Clone">
            <summary>
            Creates a new object that is a copy of the Track.
            </summary>
            <returns>
            A new object that is a copy of this Track.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.Track.GetEnumerator">
            <summary>
            Returns an enumerator that can iterate through the track's MIDI
            events.
            </summary>
            <returns>
            An enumerator that can iterate through the track's MIDI events.
            </returns>
        </member>
        <member name="P:Multimedia.Midi.Track.Item(System.Int32)">
            <summary>
            Gets or sets the MidiEvent at the specified index.
            </summary>
            <remarks>
            
            </remarks>
        </member>
        <member name="P:Multimedia.Midi.Track.Count">
            <summary>
            Gets the number of MidiEvents in the track.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.Track.Name">
            <summary>
            Gets or sets the track name.
            </summary>
            <remarks>
            If a track name does not exist, an empty string is returned.
            </remarks>
        </member>
        <member name="P:Multimedia.Midi.Track.Length">
            <summary>
            Gets the length of the track in ticks.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.Track.RecordEnabled">
            <summary>
            Gets or sets a value indicating whether the track is enabled to
            record MIDI events.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.Track.Version">
            <summary>
            Gets a value representing the version of the track.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.Track.TrackEnumerator">
            <summary>
            Provides enumeration for the Track class.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.Track.TrackEnumerator.#ctor(Multimedia.Midi.Track)">
            <summary>
            Initializes a new instance of the TrackEnumerator class with 
            the specified track to iterate over.
            </summary>
            <param name="owner">
            The track to iterate over.
            </param>
        </member>
        <member name="M:Multimedia.Midi.Track.TrackEnumerator.MoveNext">
            <summary>
            Moves to the next MIDI event in the track.
            </summary>
            <returns>
            <b>true</b> if the end of the track has not yet been reached; 
            otherwise, <b>false</b>.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.Track.TrackEnumerator.Reset">
            <summary>
            Resets the enumerator to just before the beginning of the 
            track.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.Track.TrackEnumerator.Current">
            <summary>
            Gets the MIDI event at the current position in the track.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.TrackPlayer">
            <summary>
            Handles playback of a single Track.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.TrackPlayer.#ctor(Multimedia.Midi.IMidiSender,Multimedia.Midi.TickGenerator,Multimedia.Midi.Track)">
            <summary>
            Initializes a new instance of the TrackPlayer class with the 
            specified MIDI sender, tick generator, and track.
            </summary>
            <param name="midiSender">
            The MIDI sender to use for sending MIDI messages.
            </param>
            <param name="tickGen">
            The tick generator used for timing the playback of MIDI messages.
            </param>
            <param name="trk">
            The track to play back.
            </param>
        </member>
        <member name="M:Multimedia.Midi.TrackPlayer.AllSoundsOff">
            <summary>
            Turns all currently sounding notes off.
            </summary>
            <remarks>
            When a track is muted, all of the currently sounding notes need to
            be turned off. Also, a sequencer can call this method if one of the
            other tracks are soloed.
            </remarks>
        </member>
        <member name="M:Multimedia.Midi.TrackPlayer.Seek(System.Int32)">
            <summary>
            Seeks the specified position in the track.
            </summary>
            <param name="position">
            The position in ticks to seek.
            </param>
        </member>
        <member name="M:Multimedia.Midi.TrackPlayer.ResetNoteOnTable">
            <summary>
            Resets the table for keeping track of note-on messages.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.TrackPlayer.Visit(Multimedia.Midi.ChannelMessage)">
            <summary>
            Visit channel messages.
            </summary>
            <param name="message">
            The channel message to visit.
            </param>
        </member>
        <member name="M:Multimedia.Midi.TrackPlayer.Visit(Multimedia.Midi.MetaMessage)">
            <summary>
            Visit meta messages.
            </summary>
            <param name="message">
            The message to visit.
            </param>
        </member>
        <member name="M:Multimedia.Midi.TrackPlayer.Visit(Multimedia.Midi.SysExMessage)">
            <summary>
            Visit system exclusive messages.
            </summary>
            <param name="message">
            The message to visit.
            </param>
        </member>
        <member name="M:Multimedia.Midi.TrackPlayer.Send(Multimedia.Midi.ChannelMessage)">
            <summary>
            Sends a channel message.
            </summary>
            <param name="message">
            The message to send.
            </param>
            <remarks>
            This method filters messages based on the state of the track.
            </remarks>
        </member>
        <member name="M:Multimedia.Midi.TrackPlayer.TickHandler(System.Object,System.EventArgs)">
            <summary>
            Handles tick events generated by the tick generator.
            </summary>
            <param name="sender">
            The tick generator responsible for the tick event.
            </param>
            <param name="e">
            Information about the event.
            </param>
        </member>
        <member name="M:Multimedia.Midi.TrackPlayer.Dispose">
            <summary>
            Disposes of the track player.
            </summary>
        </member>
        <member name="E:Multimedia.Midi.TrackPlayer.EndOfTrackReached">
            <summary>
            Occurs when the end of the track has been reached.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.TrackPlayer.Mute">
            <summary>
            Gets or sets a value indicating whether or not the track is muted.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.TrackPlayer.Solo">
            <summary>
            Gets or sets a value indicating whether or not the track is soloed.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.TrackPlayer.SoloModeEnabled">
            <summary>
            Gets or sets the value indicating whether or not the solo mode is
            enabled.
            </summary>
            <remarks>
            When a sequence is being played back and any one of the tracks is
            soloed, only the soloed tracks should sound; all other tracks 
            should be quieted. The sequencer can enable the solo mode of its 
            track players whenever any of its tracks are soloed. This lets the 
            track players know to filter its track based on whether or not it 
            is soloed.
            </remarks>
        </member>
        <member name="P:Multimedia.Midi.TrackPlayer.Track">
            <summary>
            Gets the track being played back.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.MasterClock">
            <summary>
            Provides functionality for controlling playback.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.MidiClock">
            <summary>
            Provides functionality for controlling playback.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MidiClock.tickGenerator">
            <summary>
            The tick generator that is controlled by the MIDI clock.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MidiClock.#ctor(Multimedia.Midi.TickGenerator)">
            <summary>
            Initializes a new instance of the MidiClock class with the 
            specified tick generator.
            </summary>
            <param name="tickGenerator">
            The tick generator the MIDI clock will control.
            </param>
        </member>
        <member name="M:Multimedia.Midi.MidiClock.Start">
            <summary>
            Starts the MIDI clock.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MidiClock.Continue">
            <summary>
            Continues the MIDI clock.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MidiClock.Stop">
            <summary>
            Stops the MIDI clock.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MidiClock.IsRunning">
            <summary>
            Returns a value indicating whether or not the MIDI clock is 
            running.
            </summary>
            <returns>
            A value indicating whether or not the MIDI clock is running.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.MidiClock.OnStarting">
            <summary>
            Raises the started event.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MidiClock.OnContinuing">
            <summary>
            Raises the continued event.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MidiClock.OnStopping">
            <summary>
            Raises the stopped event.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MidiClock.Dispose(System.Boolean)">
            <summary>
            Disposes of the MIDI clock.
            </summary>
            <param name="disposing">
            A value indicating whether or not to dispose of the MIDI clock.
            </param>
        </member>
        <member name="M:Multimedia.Midi.MidiClock.Dispose">
            <summary>
            Disposes of the MIDI clock.
            </summary>
        </member>
        <member name="E:Multimedia.Midi.MidiClock.Starting">
            <summary>
            Occurs when the MIDI clock is in the process of starting.
            </summary>
        </member>
        <member name="E:Multimedia.Midi.MidiClock.Continuing">
            <summary>
            Occurs when the MIDI clock is in the process of continuing.
            </summary>
        </member>
        <member name="E:Multimedia.Midi.MidiClock.Stopping">
            <summary>
            Occurs when the MIDI clock is in the process of stopping.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.MasterClock.midiSender">
            <summary>
            The MIDI sender for sending system realtime messages.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MasterClock.#ctor(Multimedia.Midi.IMidiSender,Multimedia.Midi.TickGenerator)">
            <summary>
            Initializes a new instance of the MasterClock class with the 
            specified MIDI sender and tick generator.
            </summary>
            <param name="midiSender">
            The MIDI sender used for sending system realtime messages.
            </param>
            <param name="tickGenerator">
            The tick generator the MIDI clock will control.
            </param>
        </member>
        <member name="M:Multimedia.Midi.MasterClock.Start">
            <summary>
            Starts the MIDI clock.
            </summary>
            <remarks>
            If the master mode is enabled, the MIDI clock will send a start
            system realtime message to its slaves.
            </remarks>
        </member>
        <member name="M:Multimedia.Midi.MasterClock.Continue">
            <summary>
            Continues the MIDI clock.
            </summary>
            <remarks>
            If the master mode is enabled, the MIDI clock will send a continue
            system realtime message to its slaves.
            </remarks>
        </member>
        <member name="M:Multimedia.Midi.MasterClock.Stop">
            <summary>
            Stops the MIDI clock.
            </summary>
            <remarks>
            If the master mode is enabled, the MIDI clock will send a stop
            system realtime message to its slaves.
            </remarks>
        </member>
        <member name="M:Multimedia.Midi.MasterClock.SendSongPositionPointer(Multimedia.Midi.SongPositionPointer)">
            <summary>
            Sends song position pointer to its slaves.
            </summary>
            <param name="spp">
            The sont position pointer.
            </param>
            <remarks>
            If the master mode is not enabled, this method has no effect.
            </remarks>
        </member>
        <member name="M:Multimedia.Midi.MasterClock.Dispose(System.Boolean)">
            <summary>
            Disposes of the MIDI clock.
            </summary>
            <param name="disposing">
            Indicates whether or not to dispose the MIDI clock.
            </param>
        </member>
        <member name="M:Multimedia.Midi.MasterClock.TickHandler(System.Object,System.EventArgs)">
            <summary>
            Handles tick events.
            </summary>
            <param name="sender">
            The tick generator responsible for the event.
            </param>
            <param name="e">
            Information about the event.
            </param>
        </member>
        <member name="P:Multimedia.Midi.MasterClock.MasterEnabled">
            <summary>
            Gets or sets a value indicating whether or not the master mode is
            enabled.
            </summary>
            <remarks>
            When the master mode is enabled, system realtime messages are sent
            to slave devices for controlling playback.
            </remarks>
        </member>
        <member name="T:Multimedia.Midi.PositionChangedEventHandler">
            <summary>
            Represents methods for handling position changed events.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.SlaveClock">
            <summary>
            Provides functionality for controlling playback timing with slave 
            capabilities.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.SlaveClock.#ctor(Multimedia.Midi.IMidiReceiver,Multimedia.Midi.IMidiSender,Multimedia.Midi.TickGenerator)">
            <summary>
            Initializes an instance of the SlaveClock class with the specified
            MIDI receiver, MIDI sender, and tick generator.
            </summary>
            <param name="midiReceiver">
            The MIDI receiver used for receiving MIDI messages from a master 
            device.
            </param>
            <param name="midiSender">
            The MIDI sender used for sending MIDI messages to slave devices.
            </param>
            <param name="tickGenerator">
            The tick generator the MIDI clock will control.
            </param>
        </member>
        <member name="M:Multimedia.Midi.SlaveClock.Start">
            <summary>
            Starts the MIDI clock.
            </summary>
            <remarks>
            If the slave mode has been enabled, this method has no effect.
            </remarks>
        </member>
        <member name="M:Multimedia.Midi.SlaveClock.Continue">
            <summary>
            Continues the MIDI clock.
            </summary>
            <remarks>
            If the slave mode has been enabled, this method has no effect.
            </remarks>
        </member>
        <member name="M:Multimedia.Midi.SlaveClock.Stop">
            <summary>
            Stops the MIDI clock.
            </summary>
            <remarks>
            If the slave mode has been enabled, this method has no effect.
            </remarks>
        </member>
        <member name="M:Multimedia.Midi.SlaveClock.Dispose(System.Boolean)">
            <summary>
            Disposes of the MIDI clock.
            </summary>
            <param name="disposing">
            A value indicating whether or not to dispose of the MIDI clock.
            </param>
        </member>
        <member name="M:Multimedia.Midi.SlaveClock.SysRealtimeReceivedHandler(System.Object,Multimedia.Midi.SysRealtimeEventArgs)">
            <summary>
            Handles system realtime received events.
            </summary>
            <param name="sender">
            The MIDI receiver responsible for the event.
            </param>
            <param name="e">
            Information about the event.
            </param>
        </member>
        <member name="M:Multimedia.Midi.SlaveClock.SysCommonReceivedHandler(System.Object,Multimedia.Midi.SysCommonEventArgs)">
            <summary>
            Handles system common received events.
            </summary>
            <param name="sender">
            The MIDI receiver responsible for the event.
            </param>
            <param name="e">
            Information about the event.
            </param>
        </member>
        <member name="M:Multimedia.Midi.SlaveClock.Initial(Multimedia.Midi.SysRealtimeEventArgs)">
            <summary>
            Initial state.
            </summary>
            <param name="e">
            Information about the event.
            </param>
        </member>
        <member name="M:Multimedia.Midi.SlaveClock.Waiting(Multimedia.Midi.SysRealtimeEventArgs)">
            <summary>
            Waiting state.
            </summary>
            <param name="e">
            Information about the event.
            </param>
        </member>
        <member name="M:Multimedia.Midi.SlaveClock.Running(Multimedia.Midi.SysRealtimeEventArgs)">
            <summary>
            Running state.
            </summary>
            <param name="e">
            Information about the event.
            </param>
        </member>
        <member name="E:Multimedia.Midi.SlaveClock.PositionChanged">
            <summary>
            Occurs when a song position pointer message is received from a 
            master device.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.SlaveClock.SlaveEnabled">
            <summary>
            Gets or sets a value indicating whether or not the slave mode is
            enabled.
            </summary>
            <remarks>
            Enabling the slave mode causes the MIDI clock to begin waiting for 
            MIDI messages for synchronizing playback.
            </remarks>
        </member>
        <member name="T:Multimedia.Midi.SlaveClock.SlaveModeCallback">
            <summary>
            Represents state handler methods.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.PositionChangedEventArgs">
            <summary>
            Provides data for the PositionChanged event.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.PositionChangedEventArgs.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the PositionChangeEventArgs class 
            with the specified position.
            </summary>
            <param name="position">
            The position in ticks.
            </param>
        </member>
        <member name="P:Multimedia.Midi.PositionChangedEventArgs.Position">
            <summary>
            Gets the position in ticks.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.TickGenerator">
            <summary>
            Generates ticks for Midi timing.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.TickGenerator.TempoMin">
            <summary>
            The minimum tempo value allowed (250 bpm).
            </summary>
        </member>
        <member name="F:Multimedia.Midi.TickGenerator.TempoMax">
            <summary>
            The maximum tempo value allowed (8 bpm).
            </summary>
        </member>
        <member name="F:Multimedia.Midi.TickGenerator.PpqnMin">
            <summary>
            The minimum pulses per quarter note allowed.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.TickGenerator.PpqnMax">
            <summary>
            The maximum pulses per quarter note allowed.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.TickGenerator.components">
            <summary>
            Required designer variable.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.TickGenerator.#ctor(System.ComponentModel.IContainer)">
            <summary>
            Initializes an instance of the TickGenerator class with the 
            specified component container.
            </summary>
            <param name="container">
            The container the tick generator should add itself to.
            </param>
        </member>
        <member name="M:Multimedia.Midi.TickGenerator.#ctor">
            <summary>
            Initializes a new instance of the TickGenerator class.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.TickGenerator.Dispose(System.Boolean)">
            <summary> 
            Clean up any resources being used.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.TickGenerator.InitializeComponent">
            <summary>
            Required method for Designer support - do not modify
            the contents of this method with the code editor.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.TickGenerator.Start">
            <summary>
            Starts the tick generator.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.TickGenerator.Stop">
            <summary>
            Stops the tick generator.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.TickGenerator.IsRunning">
            <summary>
            Indicates wheter or not the tick generator is running.
            </summary>
            <returns>
            <b>true</b> if the tick generator is running; otherwise, 
            <b>false</b>.
            </returns>
        </member>
        <member name="M:Multimedia.Midi.TickGenerator.InitializeTickGenerator">
            <summary>
            Initializes tick generator.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.TickGenerator.Reset">
            <summary>
            Reset tick generator.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.TickGenerator.OnTick(System.Object)">
            <summary>
            Handles tick events from the multimedia timer.
            </summary>
            <param name="state">
            State information (ignorned here).
            </param>
        </member>
        <member name="E:Multimedia.Midi.TickGenerator.Tick">
            <summary>
            Occurs when a tick is generated.
            </summary>
        </member>
        <member name="E:Multimedia.Midi.TickGenerator.TempoChanged">
            <summary>
            
            </summary>
        </member>
        <member name="P:Multimedia.Midi.TickGenerator.Tempo">
            <summary>
            Gets or sets the tempo in microseconds.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.TickGenerator.Ppqn">
            <summary>
            Gets or sets the pulses per quarter note.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.UI.GMProgramSelector">
            <summary>
            Provides functionality for choosing General MIDI instruments.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.UI.GMProgramSelector.components">
            <summary> 
            Required designer variable.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.UI.GMProgramSelector.#ctor">
            <summary>
            Initializes a new instance of the GMProgramSelector class.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.UI.GMProgramSelector.Dispose(System.Boolean)">
            <summary> 
            Clean up any resources being used.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.UI.GMProgramSelector.InitializeComponent">
            <summary> 
            Required method for Designer support - do not modify 
            the contents of this method with the code editor.
            </summary>
        </member>
        <member name="E:Multimedia.Midi.UI.GMProgramSelector.SelectedProgramChanged">
            <summary>
            Occurs when the selected program is changed.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.UI.GMProgramSelector.ProgramNumber">
            <summary>
            Gets or sets the program number.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.UI.MidiInDeviceDialog">
            <summary>
            Represents a dialog box for selecting a Midi input device.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.UI.MidiInDeviceDialog.components">
            <summary>
            Required designer variable.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.UI.MidiInDeviceDialog.#ctor">
            <summary>
            Initializes a new instance of the MidiInDeviceDlg.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.UI.MidiInDeviceDialog.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the MidiInDeviceDlg with the 
            specified intput device Id.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.UI.MidiInDeviceDialog.Dispose(System.Boolean)">
            <summary>
            Clean up any resources being used.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.UI.MidiInDeviceDialog.InitializeComponent">
            <summary>
            Required method for Designer support - do not modify
            the contents of this method with the code editor.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.UI.MidiInDeviceDialog.InitializeComboBox">
            <summary>
            Initializes ComboBox.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.UI.MidiInDeviceDialog.SelectedDeviceID">
            <summary>
            Gets or sets the selected device ID.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.UI.MidiOutDeviceDialog">
            <summary>
            Represents a dialog box for selecting a Midi output device.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.UI.MidiOutDeviceDialog.components">
            <summary>
            Required designer variable.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.UI.MidiOutDeviceDialog.#ctor">
            <summary>
            Initializes a new instance of the MidiOutDeviceDlg.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.UI.MidiOutDeviceDialog.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the MidiOutDeviceDlg with the 
            specified output device Id.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.UI.MidiOutDeviceDialog.Dispose(System.Boolean)">
            <summary>
            Clean up any resources being used.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.UI.MidiOutDeviceDialog.InitializeComponent">
            <summary>
            Required method for Designer support - do not modify
            the contents of this method with the code editor.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.UI.MidiOutDeviceDialog.InitializeComboBox">
            <summary>
            Initializes ComboBox.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.UI.MidiOutDeviceDialog.SelectedDeviceID">
            <summary>
            Gets or sets the selected device ID.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.UI.NoteSelector">
            <summary>
            Provides functionality for choosing Midi notes.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.UI.NoteSelector.components">
            <summary> 
            Required designer variable.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.UI.NoteSelector.#ctor">
            <summary>
            Initializes a new instance of the NoteSelector class.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.UI.NoteSelector.Dispose(System.Boolean)">
            <summary> 
            Clean up any resources being used.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.UI.NoteSelector.InitializeComponent">
            <summary> 
            Required method for Designer support - do not modify 
            the contents of this method with the code editor.
            </summary>
        </member>
        <member name="E:Multimedia.Midi.UI.NoteSelector.NoteNumberChanged">
            <summary>
            Occurs when the note number has changed.
            </summary>
        </member>
        <member name="P:Multimedia.Midi.UI.NoteSelector.NoteNumber">
            <summary>
            Gets or sets the note number.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.UI.PositionControl">
            <summary>
            Summary description for PositionControl.
            </summary>
        </member>
        <member name="F:Multimedia.Midi.UI.PositionControl.components">
            <summary> 
            Required designer variable.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.UI.PositionControl.#ctor">
            <summary>
            
            </summary>
        </member>
        <member name="M:Multimedia.Midi.UI.PositionControl.Dispose(System.Boolean)">
            <summary> 
            Clean up any resources being used.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.UI.PositionControl.InitializeComponent">
            <summary> 
            Required method for Designer support - do not modify 
            the contents of this method with the code editor.
            </summary>
        </member>
        <member name="T:Multimedia.Midi.MidiNoteConverter">
            <summary>
            Converts a Midi note number to its corresponding frequency.
            </summary>
        </member>
        <member name="M:Multimedia.Midi.MidiNoteConverter.NoteToFrequency(System.Int32)">
            <summary>
            Converts note to frequency.
            </summary>
            <param name="noteNumber">
            The number of the note to convert.
            </param>
            <returns>
            The frequency of the specified note.
            </returns>
        </member>
    </members>
</doc>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The MIT License


Written By
United States United States
Aside from dabbling in BASIC on his old Atari 1040ST years ago, Leslie's programming experience didn't really begin until he discovered the Internet in the late 90s. There he found a treasure trove of information about two of his favorite interests: MIDI and sound synthesis.

After spending a good deal of time calculating formulas he found on the Internet for creating new sounds by hand, he decided that an easier way would be to program the computer to do the work for him. This led him to learn C. He discovered that beyond using programming as a tool for synthesizing sound, he loved programming in and of itself.

Eventually he taught himself C++ and C#, and along the way he immersed himself in the ideas of object oriented programming. Like many of us, he gotten bitten by the design patterns bug and a copy of GOF is never far from his hands.

Now his primary interest is in creating a complete MIDI toolkit using the C# language. He hopes to create something that will become an indispensable tool for those wanting to write MIDI applications for the .NET framework.

Besides programming, his other interests are photography and playing his Les Paul guitars.

Comments and Discussions