// ****************************************************************************
//
//		CEchoGals_midi.cpp
//
//		Implementation file for the CEchoGals driver class (midi functions).
//
//		Set editor tabs to 3 for your viewing pleasure.
//
//		Copyright Echo Digital Audio Corporation (c) 1998 - 2002
//		All rights reserved
//		www.echoaudio.com
//		
//		Permission is hereby granted, free of charge, to any person obtaining a
//		copy of this software and associated documentation files (the
//		"Software"), to deal with the Software without restriction, including
//		without limitation the rights to use, copy, modify, merge, publish,
//		distribute, sublicense, and/or sell copies of the Software, and to
//		permit persons to whom the Software is furnished to do so, subject to
//		the following conditions:
//		
//		- Redistributions of source code must retain the above copyright
//		notice, this list of conditions and the following disclaimers.
//		
//		- Redistributions in binary form must reproduce the above copyright
//		notice, this list of conditions and the following disclaimers in the
//		documentation and/or other materials provided with the distribution.
//		
//		- Neither the name of Echo Digital Audio, nor the names of its
//		contributors may be used to endorse or promote products derived from
//		this Software without specific prior written permission.
//
//		THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
//		EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
//		MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
//		IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR
//		ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
//		TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
//		SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE.
//
// ****************************************************************************

#include "CEchoGals.h"


#ifdef MIDI_SUPPORT

/****************************************************************************

	MIDI output

 ****************************************************************************/

//===========================================================================
//
// Write a bunch of MIDI data to the MIDI output
//
// The DSP only buffers up 16 bytes internally for MIDI output; if you try
// to send more than the DSP can handle, the actual count sent will be returned
// to you and you get ECHOSTATUS_BUSY as the return value.
//
//===========================================================================

ECHOSTATUS CEchoGals::WriteMidi
(
	DWORD		dwExpectedCt,
	PBYTE		pBuffer,
	PDWORD	pdwActualCt
)
{
	return GetDspCommObject()->WriteMidi( 	pBuffer,
														dwExpectedCt,
														pdwActualCt );
}	// ECHOSTATUS CLayla24::WriteMidi




/****************************************************************************

	MIDI input

 ****************************************************************************/


//===========================================================================
//
//	Read a single MIDI byte from the circular MIDI input buffer
// 
//===========================================================================

ECHOSTATUS CEchoGals::ReadMidiByte(BYTE &Midi)
{
	
	return m_MidiIn.GetMidi(Midi);
	
}	// ReadMidiByte


//===========================================================================
//
//	Open and enable the MIDI input
// 
//===========================================================================

ECHOSTATUS CEchoGals::OpenMidiInput()
{

	return m_MidiIn.Arm();
	
}	// OpenMidiInput


//===========================================================================
//
//	Close and disable the MIDI input
// 
//===========================================================================

ECHOSTATUS CEchoGals::CloseMidiInput()
{
	m_MidiIn.Disarm();
	
	return ECHOSTATUS_OK;
}	


//===========================================================================
//
//	Reset the MIDI input, but leave it open and enabled
// 
//===========================================================================

ECHOSTATUS CEchoGals::ResetMidiInput()
{
	m_MidiIn.Reset();
	
	return ECHOSTATUS_OK;
}	



#endif // MIDI_SUPPORT

