From 56c99cd2c2c1e6ab038dac5fced5b92ccf11ff6c Mon Sep 17 00:00:00 2001 From: Dave Sparks Date: Mon, 24 Aug 2009 17:35:45 -0700 Subject: Sonivox whitespace cleanup --- arm-fm-22k/host_src/eas.h | 2100 ++++++++++++++++++++++----------------------- 1 file changed, 1050 insertions(+), 1050 deletions(-) (limited to 'arm-fm-22k/host_src/eas.h') diff --git a/arm-fm-22k/host_src/eas.h b/arm-fm-22k/host_src/eas.h index 0bb04fe..c64af49 100644 --- a/arm-fm-22k/host_src/eas.h +++ b/arm-fm-22k/host_src/eas.h @@ -1,17 +1,17 @@ -/*---------------------------------------------------------------------------- - * - * File: - * eas.h - * - * Contents and purpose: - * The public interface header for the EAS synthesizer. - * - * This header only contains declarations that are specific - * to this implementation. - * - * DO NOT MODIFY THIS FILE! - * - * Copyright Sonic Network Inc. 2005, 2006 +/*---------------------------------------------------------------------------- + * + * File: + * eas.h + * + * Contents and purpose: + * The public interface header for the EAS synthesizer. + * + * This header only contains declarations that are specific + * to this implementation. + * + * DO NOT MODIFY THIS FILE! + * + * Copyright Sonic Network Inc. 2005, 2006 * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,1039 +24,1039 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * - *---------------------------------------------------------------------------- - * Revision Control: - * $Revision: 852 $ - * $Date: 2007-09-04 11:43:49 -0700 (Tue, 04 Sep 2007) $ - *---------------------------------------------------------------------------- -*/ - -#ifndef _EAS_H -#define _EAS_H - -#include "eas_types.h" - -/* for C++ linkage */ -#ifdef __cplusplus -extern "C" { -#endif - -/* library version macro */ -#define MAKE_LIB_VERSION(a,b,c,d) (((((((EAS_U32) a <<8) | (EAS_U32) b) << 8) | (EAS_U32) c) << 8) | (EAS_U32) d) -#define LIB_VERSION MAKE_LIB_VERSION(3, 6, 10, 14) - -typedef struct -{ - EAS_U32 libVersion; - EAS_BOOL checkedVersion; - EAS_I32 maxVoices; - EAS_I32 numChannels; - EAS_I32 sampleRate; - EAS_I32 mixBufferSize; - EAS_BOOL filterEnabled; - EAS_U32 buildTimeStamp; - EAS_CHAR *buildGUID; -} S_EAS_LIB_CONFIG; - -/* enumerated effects module numbers for configuration */ -typedef enum -{ - EAS_MODULE_ENHANCER = 0, - EAS_MODULE_COMPRESSOR, - EAS_MODULE_REVERB, - EAS_MODULE_CHORUS, - EAS_MODULE_WIDENER, - EAS_MODULE_GRAPHIC_EQ, - EAS_MODULE_WOW, - EAS_MODULE_MAXIMIZER, - EAS_MODULE_TONECONTROLEQ, - NUM_EFFECTS_MODULES -} E_FX_MODULES; - -/* enumerated optional module numbers for configuration */ -typedef enum -{ - EAS_MODULE_MMAPI_TONE_CONTROL = 0, - EAS_MODULE_METRICS -} E_OPT_MODULES; -#define NUM_OPTIONAL_MODULES 2 - -/* enumerated audio decoders for configuration */ -typedef enum -{ - EAS_DECODER_PCM = 0, - EAS_DECODER_SMAF_ADPCM, - EAS_DECODER_IMA_ADPCM, - EAS_DECODER_7BIT_SMAF_ADPCM, - EAS_DECODER_NOT_SUPPORTED -} E_DECODER_MODULES; -#define NUM_DECODER_MODULES 4 - -/* defines for EAS_PEOpenStream flags parameter */ -#define PCM_FLAGS_STEREO 0x00000100 /* stream is stereo */ -#define PCM_FLAGS_8_BIT 0x00000001 /* 8-bit format */ -#define PCM_FLAGS_UNSIGNED 0x00000010 /* unsigned format */ -#define PCM_FLAGS_STREAMING 0x80000000 /* streaming mode */ - -/* maximum volume setting */ -#define EAS_MAX_VOLUME 100 - -/*---------------------------------------------------------------------------- - * EAS_Init() - *---------------------------------------------------------------------------- - * Purpose: - * Initialize the synthesizer library - * - * Inputs: - * polyphony - number of voices to play (dynamic memory model only) - * ppLibData - pointer to data handle variable for this instance - * - * Outputs: - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_Init (EAS_DATA_HANDLE *ppEASData); - -/*---------------------------------------------------------------------------- - * EAS_Config() - *---------------------------------------------------------------------------- - * Purpose: - * Returns a pointer to a structure containing the configuration options - * in this library build. - * - * Inputs: - * - * Outputs: - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC const S_EAS_LIB_CONFIG *EAS_Config (void); - -/*---------------------------------------------------------------------------- - * EAS_Shutdown() - *---------------------------------------------------------------------------- - * Purpose: - * Shuts down the library. Deallocates any memory associated with the - * synthesizer (dynamic memory model only) - * - * Inputs: - * pEASData - handle to data for this instance - * - * Outputs: - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_Shutdown (EAS_DATA_HANDLE pEASData); - -/*---------------------------------------------------------------------------- - * EAS_Render() - *---------------------------------------------------------------------------- - * Purpose: - * Parse the Midi data and render PCM audio data. - * - * Inputs: - * pEASData - buffer for internal EAS data - * pOut - output buffer pointer - * nNumRequested - requested num samples to generate - * pnNumGenerated - actual number of samples generated - * - * Outputs: - * EAS_SUCCESS if PCM data was successfully rendered - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_Render (EAS_DATA_HANDLE pEASData, EAS_PCM *pOut, EAS_I32 numRequested, EAS_I32 *pNumGenerated); - -/*---------------------------------------------------------------------------- - * EAS_SetRepeat() - *---------------------------------------------------------------------------- - * Purpose: - * Set the selected stream to repeat. - * - * Inputs: - * pEASData - handle to data for this instance - * streamHandle - handle to stream - * repeatCount - repeat count (0 = no repeat, -1 = repeat forever) - * - * Outputs: - * - * Side Effects: - * - * Notes: - * 0 = no repeat - * 1 = repeat once, i.e. play through twice - * -1 = repeat forever - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_SetRepeat (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_I32 repeatCount); - -/*---------------------------------------------------------------------------- - * EAS_GetRepeat() - *---------------------------------------------------------------------------- - * Purpose: - * Gets the current repeat count for the selected stream. - * - * Inputs: - * pEASData - handle to data for this instance - * streamHandle - handle to stream - * pRrepeatCount - pointer to variable to hold repeat count - * - * Outputs: - * - * Side Effects: - * - * Notes: - * 0 = no repeat - * 1 = repeat once, i.e. play through twice - * -1 = repeat forever - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_GetRepeat (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_I32 *pRepeatCount); - -/*---------------------------------------------------------------------------- - * EAS_SetPlaybackRate() - *---------------------------------------------------------------------------- - * Purpose: - * Set the playback rate. - * - * Inputs: - * pEASData - handle to data for this instance - * streamHandle - handle to stream - * rate - rate (28-bit fractional amount) - * - * Outputs: - * - * Side Effects: - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_SetPlaybackRate (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_U32 rate); -#define MAX_PLAYBACK_RATE (EAS_U32)(1L << 29) -#define MIN_PLAYBACK_RATE (EAS_U32)(1L << 27) - -/*---------------------------------------------------------------------------- - * EAS_SetTransposition) - *---------------------------------------------------------------------------- - * Purpose: - * Sets the key tranposition for the synthesizer. Transposes all - * melodic instruments by the specified amount. Range is limited - * to +/-12 semitones. - * - * Inputs: - * pEASData - handle to data for this instance - * streamHandle - handle to stream - * transposition - +/-12 semitones - * - * Outputs: - * - * Side Effects: - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_SetTransposition (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_I32 transposition); -#define MAX_TRANSPOSE 12 - -/*---------------------------------------------------------------------------- - * EAS_SetSynthPolyphony() - *---------------------------------------------------------------------------- - * Purpose: - * Set the polyphony of the synthesizer. Value must be >= 1 and <= the - * maximum number of voices. This function will pin the polyphony - * at those limits - * - * Inputs: - * pEASData - pointer to overall EAS data structure - * synthNum - synthesizer number (0 = onboard, 1 = DSP) - * polyphonyCount - the desired polyphony count - * - * Outputs: - * - * Side Effects: - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_SetSynthPolyphony (EAS_DATA_HANDLE pEASData, EAS_I32 synthNum, EAS_I32 polyphonyCount); - -/*---------------------------------------------------------------------------- - * EAS_GetSynthPolyphony() - *---------------------------------------------------------------------------- - * Purpose: - * Returns the current polyphony setting of the synthesizer - * - * Inputs: - * pEASData - pointer to overall EAS data structure - * synthNum - synthesizer number (0 = onboard, 1 = DSP) - * pPolyphonyCount - pointer to variable to receive polyphony count - * - * Outputs: - * - * Side Effects: - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_GetSynthPolyphony (EAS_DATA_HANDLE pEASData, EAS_I32 synthNum, EAS_I32 *pPolyphonyCount); - -/*---------------------------------------------------------------------------- - * EAS_SetPolyphony() - *---------------------------------------------------------------------------- - * Purpose: - * Set the polyphony of the stream. Value must be >= 1 and <= the - * maximum number of voices. This function will pin the polyphony - * at those limits - * - * Inputs: - * pEASData - pointer to overall EAS data structure - * streamHandle - handle returned by EAS_OpenFile - * polyphonyCount - the desired polyphony count - * - * Outputs: - * - * Side Effects: - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_SetPolyphony (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_I32 polyphonyCount); - -/*---------------------------------------------------------------------------- - * EAS_GetPolyphony() - *---------------------------------------------------------------------------- - * Purpose: - * Returns the current polyphony setting of the stream - * - * Inputs: - * pEASData - pointer to overall EAS data structure - * streamHandle - handle returned by EAS_OpenFile - * pPolyphonyCount - pointer to variable to receive polyphony count - * - * Outputs: - * - * Side Effects: - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_GetPolyphony (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_I32 *pPolyphonyCount); - -/*---------------------------------------------------------------------------- - * EAS_SetPriority() - *---------------------------------------------------------------------------- - * Purpose: - * Set the priority of the stream. Determines which stream's voices - * are stolen when there are insufficient voices for all notes. - * Value must be in the range of 1-255, lower values are higher - * priority. The default priority is 50. - * - * Inputs: - * pEASData - pointer to overall EAS data structure - * streamHandle - handle returned by EAS_OpenFile - * polyphonyCount - the desired polyphony count - * - * Outputs: - * - * Side Effects: - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_SetPriority (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_I32 priority); - -/*---------------------------------------------------------------------------- - * EAS_GetPriority() - *---------------------------------------------------------------------------- - * Purpose: - * Returns the current priority setting of the stream - * - * Inputs: - * pEASData - pointer to overall EAS data structure - * streamHandle - handle returned by EAS_OpenFile - * pPriority - pointer to variable to receive priority - * - * Outputs: - * - * Side Effects: - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_GetPriority (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_I32 *pPriority); - -/*---------------------------------------------------------------------------- - * EAS_SetVolume() - *---------------------------------------------------------------------------- - * Purpose: - * Set the master volume for the mixer. The default volume setting is - * 90 (-10 dB). The volume range is 0 to 100 in 1dB increments. - * - * Inputs: - * pEASData - pointer to overall EAS data structure - * volume - the desired master volume - * - * Outputs: - * - * - * Side Effects: - * overrides any previously set master volume from sysex - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_SetVolume (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_I32 volume); - -/*---------------------------------------------------------------------------- - * EAS_GetVolume() - *---------------------------------------------------------------------------- - * Purpose: - * Returns the master volume for the mixer in 1dB increments. - * - * Inputs: - * pEASData - pointer to overall EAS data structure - * volume - the desired master volume - * - * Outputs: - * - * - * Side Effects: - * overrides any previously set master volume from sysex - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_I32 EAS_GetVolume (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle); - -/*---------------------------------------------------------------------------- - * EAS_SetMaxLoad() - *---------------------------------------------------------------------------- - * Purpose: - * Sets the maximum workload the parsers will do in a single call to - * EAS_Render. The units are currently arbitrary, but should correlate - * well to the actual CPU cycles consumed. The primary effect is to - * reduce the occasional peaks in CPU cycles consumed when parsing - * dense parts of a MIDI score. Setting maxWorkLoad to zero disables - * the workload limiting function. - * - * Inputs: - * pEASData - handle to data for this instance - * maxLoad - the desired maximum workload - * - * Outputs: - * - * Side Effects: - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_SetMaxLoad (EAS_DATA_HANDLE pEASData, EAS_I32 maxLoad); - -/*---------------------------------------------------------------------------- - * EAS_SetMaxPCMStreams() - *---------------------------------------------------------------------------- - * Sets the maximum number of PCM streams allowed in parsers that - * use PCM streaming. - * - * Inputs: - * pEASData - pointer to overall EAS data structure - * streamHandle - handle returned by EAS_OpenFile - * maxNumStreams - maximum number of PCM streams - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_SetMaxPCMStreams (EAS_DATA_HANDLE pEASData, EAS_HANDLE pStream, EAS_I32 maxNumStreams); - -/*---------------------------------------------------------------------------- - * EAS_OpenFile() - *---------------------------------------------------------------------------- - * Purpose: - * Opens a file for audio playback. - * - * Inputs: - * pEASData - pointer to overall EAS data structure - * locator - pointer to filename or other locating information - * pStreamHandle - pointer to stream handle variable - * - * Outputs: - * - * - * Side Effects: - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_OpenFile (EAS_DATA_HANDLE pEASData, EAS_FILE_LOCATOR locator, EAS_HANDLE *pStreamHandle); - -#ifdef MMAPI_SUPPORT -/*---------------------------------------------------------------------------- - * EAS_MMAPIToneControl() - *---------------------------------------------------------------------------- - * Purpose: - * Opens a ToneControl file for audio playback. - * - * Inputs: - * pEASData - pointer to overall EAS data structure - * locator - pointer to filename or other locating information - * pStreamHandle - pointer to stream handle variable - * - * Outputs: - * - * - * Side Effects: - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_MMAPIToneControl (EAS_DATA_HANDLE pEASData, EAS_FILE_LOCATOR locator, EAS_HANDLE *pStreamHandle); - -/*---------------------------------------------------------------------------- - * EAS_GetWaveFmtChunk - *---------------------------------------------------------------------------- - * Helper function to retrieve WAVE file fmt chunk for MMAPI - *---------------------------------------------------------------------------- - * pEASData - pointer to EAS persistent data object - * streamHandle - stream handle - * pFmtChunk - pointer to pointer to FMT chunk data - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_GetWaveFmtChunk (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_VOID_PTR *ppFmtChunk); -#endif - -/*---------------------------------------------------------------------------- - * EAS_GetFileType - *---------------------------------------------------------------------------- - * Returns the file type (see eas_types.h for enumerations) - *---------------------------------------------------------------------------- - * pEASData - pointer to EAS persistent data object - * streamHandle - stream handle - * pFileType - pointer to variable to receive file type - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_GetFileType (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_I32 *pFileType); - -/*---------------------------------------------------------------------------- - * EAS_ParseMetaData() - *---------------------------------------------------------------------------- - * Purpose: - * - * - * Inputs: - * pEASData - pointer to overall EAS data structure - * streamHandle - file or stream handle - * playLength - pointer to variable to store the play length (in msecs) - * - * Outputs: - * - * - * Side Effects: - * - resets the parser to the start of the file - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_ParseMetaData (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_I32 *pPlayLength); - -/*---------------------------------------------------------------------------- - * EAS_Prepare() - *---------------------------------------------------------------------------- - * Purpose: - * Prepares the synthesizer to play the file or stream. Parses the first - * frame of data from the file and arms the synthesizer. - * - * Inputs: - * pEASData - pointer to overall EAS data structure - * streamHandle - file or stream handle - * - * Outputs: - * - * - * Side Effects: - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_Prepare (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle); - -/*---------------------------------------------------------------------------- - * EAS_State() - *---------------------------------------------------------------------------- - * Purpose: - * Returns the state of an audio file or stream. - * - * Inputs: - * pEASData - pointer to overall EAS data structure - * streamHandle - file or stream handle - * - * Outputs: - * - * - * Side Effects: - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_State (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_STATE *pState); - -/*---------------------------------------------------------------------------- - * EAS_RegisterMetaDataCallback() - *---------------------------------------------------------------------------- - * Purpose: - * Registers a metadata callback function for parsed metadata. To - * de-register the callback, call this function again with parameter - * cbFunc set to NULL. - * - * Inputs: - * pEASData - pointer to overall EAS data structure - * streamHandle - file or stream handle - * cbFunc - pointer to host callback function - * metaDataBuffer - pointer to metadata buffer - * metaDataBufSize - maximum size of the metadata buffer - * - * Outputs: - * - * - * Side Effects: - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_RegisterMetaDataCallback ( - EAS_DATA_HANDLE pEASData, - EAS_HANDLE streamHandle, - EAS_METADATA_CBFUNC cbFunc, - char *metaDataBuffer, - EAS_I32 metaDataBufSize, - EAS_VOID_PTR pUserData); - -/*---------------------------------------------------------------------------- - * EAS_GetNoteCount () - *---------------------------------------------------------------------------- - * Returns the total number of notes played in this stream - * - * Inputs: - * pEASData - pointer to overall EAS data structure - * streamHandle - file or stream handle - * pNoteCount - pointer to variable to receive note count - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_GetNoteCount (EAS_DATA_HANDLE pEASData, EAS_HANDLE pStream, EAS_I32 *pNoteCount); - -/*---------------------------------------------------------------------------- - * EAS_CloseFile() - *---------------------------------------------------------------------------- - * Purpose: - * Closes an audio file or stream. Playback should have either paused or - * completed (EAS_State returns EAS_PAUSED or EAS_STOPPED). - * - * Inputs: - * pEASData - pointer to overall EAS data structure - * streamHandle - file or stream handle - * - * Outputs: - * - * - * Side Effects: - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_CloseFile (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle); - -/*---------------------------------------------------------------------------- - * EAS_OpenMIDIStream() - *---------------------------------------------------------------------------- - * Purpose: - * Opens a raw MIDI stream allowing the host to route MIDI cable data directly to the synthesizer - * - * Inputs: - * pEASData - pointer to overall EAS data structure - * pStreamHandle - pointer to variable to hold file or stream handle - * streamHandle - open stream or NULL for new synthesizer instance - * - * Outputs: - * - * - * Side Effects: - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_OpenMIDIStream (EAS_DATA_HANDLE pEASData, EAS_HANDLE *pStreamHandle, EAS_HANDLE streamHandle); - -/*---------------------------------------------------------------------------- - * EAS_WriteMIDIStream() - *---------------------------------------------------------------------------- - * Purpose: - * Send data to the MIDI stream device - * - * Inputs: - * pEASData - pointer to overall EAS data structure - * streamHandle - stream handle - * pBuffer - pointer to buffer - * count - number of bytes to write - * - * Outputs: - * - * - * Side Effects: - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_WriteMIDIStream(EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_U8 *pBuffer, EAS_I32 count); - -/*---------------------------------------------------------------------------- - * EAS_CloseMIDIStream() - *---------------------------------------------------------------------------- - * Purpose: - * Closes a raw MIDI stream - * - * Inputs: - * pEASData - pointer to overall EAS data structure - * streamHandle - stream handle - * - * Outputs: - * - * - * Side Effects: - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_CloseMIDIStream (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle); - -/*---------------------------------------------------------------------------- - * EAS_Locate() - *---------------------------------------------------------------------------- - * Purpose: - * Locate into the file associated with the handle. - * - * Inputs: - * pEASData - pointer to overall EAS data structure - * streamHandle - file handle - * milliseconds - playback offset from start of file in milliseconds - * - * Outputs: - * - * - * Side Effects: - * the actual offset will be quantized to the closest update period, typically - * a resolution of 5.9ms. Notes that are started prior to this time will not - * sound. Any notes currently playing will be shut off. - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_Locate (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_I32 milliseconds, EAS_BOOL offset); - -/*---------------------------------------------------------------------------- - * EAS_GetRenderTime() - *---------------------------------------------------------------------------- - * Purpose: - * Returns the current playback offset - * - * Inputs: - * pEASData - pointer to overall EAS data structure - * - * Outputs: - * Gets the render time clock in msecs. - * - * Side Effects: - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_GetRenderTime (EAS_DATA_HANDLE pEASData, EAS_I32 *pTime); - -/*---------------------------------------------------------------------------- - * EAS_GetLocation() - *---------------------------------------------------------------------------- - * Purpose: - * Returns the current playback offset - * - * Inputs: - * pEASData - pointer to overall EAS data structure - * streamHandle - file handle - * - * Outputs: - * The offset in milliseconds from the start of the current sequence, quantized - * to the nearest update period. Actual resolution is typically 5.9 ms. - * - * Side Effects: - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_GetLocation (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_I32 *pTime); - -/*---------------------------------------------------------------------------- - * EAS_Pause() - *---------------------------------------------------------------------------- - * Purpose: - * Pauses the playback of the data associated with this handle. The audio - * is gracefully ramped down to prevent clicks and pops. It may take several - * buffers of audio before the audio is muted. - * - * Inputs: - * psEASData - pointer to overall EAS data structure - * streamHandle - file or stream handle - * - * Outputs: - * - * - * Side Effects: - * - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_Pause (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle); - -/*---------------------------------------------------------------------------- - * EAS_Resume() - *---------------------------------------------------------------------------- - * Purpose: - * Resumes the playback of the data associated with this handle. The audio - * is gracefully ramped up to prevent clicks and pops. - * - * Inputs: - * psEASData - pointer to overall EAS data structure - * streamHandle - file or stream handle - * - * Outputs: - * - * - * Side Effects: - * - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_Resume (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle); - -/*---------------------------------------------------------------------------- - * EAS_GetParameter() - *---------------------------------------------------------------------------- - * Purpose: - * Set the parameter of a module. See E_MODULES for a list of modules - * and the header files of the modules for a list of parameters. - * - * Inputs: - * psEASData - pointer to overall EAS data structure - * module - enumerated module number - * param - enumerated parameter number - * pValue - pointer to variable to receive parameter value - * - * Outputs: - * - * - * Side Effects: - * - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_GetParameter (EAS_DATA_HANDLE pEASData, EAS_I32 module, EAS_I32 param, EAS_I32 *pValue); - -/*---------------------------------------------------------------------------- - * EAS_SetParameter() - *---------------------------------------------------------------------------- - * Purpose: - * Set the parameter of a module. See E_MODULES for a list of modules - * and the header files of the modules for a list of parameters. - * - * Inputs: - * psEASData - pointer to overall EAS data structure - * handle - file or stream handle - * module - enumerated module number - * param - enumerated parameter number - * value - new parameter value - * - * Outputs: - * - * - * Side Effects: - * - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_SetParameter (EAS_DATA_HANDLE pEASData, EAS_I32 module, EAS_I32 param, EAS_I32 value); - -#ifdef _METRICS_ENABLED -/*---------------------------------------------------------------------------- - * EAS_MetricsReport() - *---------------------------------------------------------------------------- - * Purpose: - * Displays the current metrics through the EAS_Report interface. - * - * Inputs: - * pEASData - instance data handle - * - * Outputs: - * - * - * Side Effects: - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_MetricsReport (EAS_DATA_HANDLE pEASData); - -/*---------------------------------------------------------------------------- - * EAS_MetricsReset() - *---------------------------------------------------------------------------- - * Purpose: - * Displays the current metrics through the EAS_Report interface. - * - * Inputs: - * pEASData - instance data handle - * - * Outputs: - * - * - * Side Effects: - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_MetricsReset (EAS_DATA_HANDLE pEASData); -#endif - -/*---------------------------------------------------------------------------- - * EAS_SetSoundLibrary() - *---------------------------------------------------------------------------- - * Purpose: - * Sets the location of the sound library. - * - * Inputs: - * pEASData - instance data handle - * streamHandle - file or stream handle - * pSoundLib - pointer to sound library - * - * Outputs: - * - * - * Side Effects: - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_SetSoundLibrary (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_SNDLIB_HANDLE pSndLib); - -/*---------------------------------------------------------------------------- - * EAS_SetHeaderSearchFlag() - *---------------------------------------------------------------------------- - * By default, when EAS_OpenFile is called, the parsers check the - * first few bytes of the file looking for a specific header. Some - * mobile devices may add a header to the start of a file, which - * will prevent the parser from recognizing the file. If the - * searchFlag is set to EAS_TRUE, the parser will search the entire - * file looking for the header. This may enable EAS to recognize - * some files that it would ordinarily reject. The negative is that - * it make take slightly longer to process the EAS_OpenFile request. - * - * Inputs: - * pEASData - instance data handle - * searchFlag - search flag (EAS_TRUE or EAS_FALSE) - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_SetHeaderSearchFlag (EAS_DATA_HANDLE pEASData, EAS_BOOL searchFlag); - -/*---------------------------------------------------------------------------- - * EAS_SetPlayMode() - *---------------------------------------------------------------------------- - * Some file formats support special play modes, such as iMode partial - * play mode. This call can be used to change the play mode. The - * default play mode (usually straight playback) is always zero. - * - * Inputs: - * pEASData - instance data handle - * handle - file or stream handle - * playMode - play mode (see eas_types.h for enumerations) - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_SetPlayMode (EAS_DATA_HANDLE pEASData, EAS_HANDLE pStream, EAS_I32 playMode); - -#ifdef DLS_SYNTHESIZER -/*---------------------------------------------------------------------------- - * EAS_LoadDLSCollection() - *---------------------------------------------------------------------------- - * Purpose: - * Downloads a DLS collection - * - * Inputs: - * pEASData - instance data handle - * streamHandle - file or stream handle - * locator - file locator - * - * Outputs: - * - * - * Side Effects: - * May overlay instruments in the GM sound set - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_LoadDLSCollection (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_FILE_LOCATOR locator); -#endif - -/*---------------------------------------------------------------------------- - * EAS_SetFrameBuffer() - *---------------------------------------------------------------------------- - * Purpose: - * Sets the frame buffer pointer passed to the IPC communications functions - * - * Inputs: - * pEASData - instance data handle - * locator - file locator - * - * Outputs: - * - * - * Side Effects: - * May overlay instruments in the GM sound set - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_SetFrameBuffer (EAS_DATA_HANDLE pEASData, EAS_FRAME_BUFFER_HANDLE pFrameBuffer); - -#ifdef EXTERNAL_AUDIO -/*---------------------------------------------------------------------------- - * EAS_RegExtAudioCallback() - *---------------------------------------------------------------------------- - * Purpose: - * Registers callback functions for audio events. - * - * Inputs: - * pEASData - pointer to overall EAS data structure - * streamHandle - file or stream handle - * cbProgChgFunc - pointer to host callback function for program change - * cbEventFunc - pointer to host callback functio for note events - * - * Outputs: - * - * - * Side Effects: - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_RegExtAudioCallback (EAS_DATA_HANDLE pEASData, - EAS_HANDLE streamHandle, - EAS_VOID_PTR pInstData, - EAS_EXT_PRG_CHG_FUNC cbProgChgFunc, - EAS_EXT_EVENT_FUNC cbEventFunc); - -/*---------------------------------------------------------------------------- - * EAS_GetMIDIControllers() - *---------------------------------------------------------------------------- - * Purpose: - * Returns the current state of MIDI controllers on the requested channel. - * - * Inputs: - * pEASData - pointer to overall EAS data structure - * streamHandle - file or stream handle - * pControl - pointer to structure to receive data - * - * Outputs: - * - * - * Side Effects: - * - *---------------------------------------------------------------------------- -*/ -EAS_PUBLIC EAS_RESULT EAS_GetMIDIControllers (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_U8 channel, S_MIDI_CONTROLLERS *pControl); -#endif - -/*---------------------------------------------------------------------------- - * EAS_SearchFile - *---------------------------------------------------------------------------- - * Search file for specific sequence starting at current file - * position. Returns offset to start of sequence. - * - * Inputs: - * pEASData - pointer to EAS persistent data object - * fileHandle - file handle - * searchString - pointer to search sequence - * len - length of search sequence - * pOffset - pointer to variable to store offset to sequence - * - * Returns EAS_EOF if end-of-file is reached - *---------------------------------------------------------------------------- -*/ -EAS_RESULT EAS_SearchFile (EAS_DATA_HANDLE pEASData, EAS_FILE_HANDLE fileHandle, const EAS_U8 *searchString, EAS_I32 len, EAS_I32 *pOffset); - -#ifdef __cplusplus -} /* end extern "C" */ -#endif - -#endif /* #ifndef _EAS_H */ + * + *---------------------------------------------------------------------------- + * Revision Control: + * $Revision: 852 $ + * $Date: 2007-09-04 11:43:49 -0700 (Tue, 04 Sep 2007) $ + *---------------------------------------------------------------------------- +*/ + +#ifndef _EAS_H +#define _EAS_H + +#include "eas_types.h" + +/* for C++ linkage */ +#ifdef __cplusplus +extern "C" { +#endif + +/* library version macro */ +#define MAKE_LIB_VERSION(a,b,c,d) (((((((EAS_U32) a <<8) | (EAS_U32) b) << 8) | (EAS_U32) c) << 8) | (EAS_U32) d) +#define LIB_VERSION MAKE_LIB_VERSION(3, 6, 10, 14) + +typedef struct +{ + EAS_U32 libVersion; + EAS_BOOL checkedVersion; + EAS_I32 maxVoices; + EAS_I32 numChannels; + EAS_I32 sampleRate; + EAS_I32 mixBufferSize; + EAS_BOOL filterEnabled; + EAS_U32 buildTimeStamp; + EAS_CHAR *buildGUID; +} S_EAS_LIB_CONFIG; + +/* enumerated effects module numbers for configuration */ +typedef enum +{ + EAS_MODULE_ENHANCER = 0, + EAS_MODULE_COMPRESSOR, + EAS_MODULE_REVERB, + EAS_MODULE_CHORUS, + EAS_MODULE_WIDENER, + EAS_MODULE_GRAPHIC_EQ, + EAS_MODULE_WOW, + EAS_MODULE_MAXIMIZER, + EAS_MODULE_TONECONTROLEQ, + NUM_EFFECTS_MODULES +} E_FX_MODULES; + +/* enumerated optional module numbers for configuration */ +typedef enum +{ + EAS_MODULE_MMAPI_TONE_CONTROL = 0, + EAS_MODULE_METRICS +} E_OPT_MODULES; +#define NUM_OPTIONAL_MODULES 2 + +/* enumerated audio decoders for configuration */ +typedef enum +{ + EAS_DECODER_PCM = 0, + EAS_DECODER_SMAF_ADPCM, + EAS_DECODER_IMA_ADPCM, + EAS_DECODER_7BIT_SMAF_ADPCM, + EAS_DECODER_NOT_SUPPORTED +} E_DECODER_MODULES; +#define NUM_DECODER_MODULES 4 + +/* defines for EAS_PEOpenStream flags parameter */ +#define PCM_FLAGS_STEREO 0x00000100 /* stream is stereo */ +#define PCM_FLAGS_8_BIT 0x00000001 /* 8-bit format */ +#define PCM_FLAGS_UNSIGNED 0x00000010 /* unsigned format */ +#define PCM_FLAGS_STREAMING 0x80000000 /* streaming mode */ + +/* maximum volume setting */ +#define EAS_MAX_VOLUME 100 + +/*---------------------------------------------------------------------------- + * EAS_Init() + *---------------------------------------------------------------------------- + * Purpose: + * Initialize the synthesizer library + * + * Inputs: + * polyphony - number of voices to play (dynamic memory model only) + * ppLibData - pointer to data handle variable for this instance + * + * Outputs: + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_Init (EAS_DATA_HANDLE *ppEASData); + +/*---------------------------------------------------------------------------- + * EAS_Config() + *---------------------------------------------------------------------------- + * Purpose: + * Returns a pointer to a structure containing the configuration options + * in this library build. + * + * Inputs: + * + * Outputs: + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC const S_EAS_LIB_CONFIG *EAS_Config (void); + +/*---------------------------------------------------------------------------- + * EAS_Shutdown() + *---------------------------------------------------------------------------- + * Purpose: + * Shuts down the library. Deallocates any memory associated with the + * synthesizer (dynamic memory model only) + * + * Inputs: + * pEASData - handle to data for this instance + * + * Outputs: + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_Shutdown (EAS_DATA_HANDLE pEASData); + +/*---------------------------------------------------------------------------- + * EAS_Render() + *---------------------------------------------------------------------------- + * Purpose: + * Parse the Midi data and render PCM audio data. + * + * Inputs: + * pEASData - buffer for internal EAS data + * pOut - output buffer pointer + * nNumRequested - requested num samples to generate + * pnNumGenerated - actual number of samples generated + * + * Outputs: + * EAS_SUCCESS if PCM data was successfully rendered + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_Render (EAS_DATA_HANDLE pEASData, EAS_PCM *pOut, EAS_I32 numRequested, EAS_I32 *pNumGenerated); + +/*---------------------------------------------------------------------------- + * EAS_SetRepeat() + *---------------------------------------------------------------------------- + * Purpose: + * Set the selected stream to repeat. + * + * Inputs: + * pEASData - handle to data for this instance + * streamHandle - handle to stream + * repeatCount - repeat count (0 = no repeat, -1 = repeat forever) + * + * Outputs: + * + * Side Effects: + * + * Notes: + * 0 = no repeat + * 1 = repeat once, i.e. play through twice + * -1 = repeat forever + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_SetRepeat (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_I32 repeatCount); + +/*---------------------------------------------------------------------------- + * EAS_GetRepeat() + *---------------------------------------------------------------------------- + * Purpose: + * Gets the current repeat count for the selected stream. + * + * Inputs: + * pEASData - handle to data for this instance + * streamHandle - handle to stream + * pRrepeatCount - pointer to variable to hold repeat count + * + * Outputs: + * + * Side Effects: + * + * Notes: + * 0 = no repeat + * 1 = repeat once, i.e. play through twice + * -1 = repeat forever + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_GetRepeat (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_I32 *pRepeatCount); + +/*---------------------------------------------------------------------------- + * EAS_SetPlaybackRate() + *---------------------------------------------------------------------------- + * Purpose: + * Set the playback rate. + * + * Inputs: + * pEASData - handle to data for this instance + * streamHandle - handle to stream + * rate - rate (28-bit fractional amount) + * + * Outputs: + * + * Side Effects: + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_SetPlaybackRate (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_U32 rate); +#define MAX_PLAYBACK_RATE (EAS_U32)(1L << 29) +#define MIN_PLAYBACK_RATE (EAS_U32)(1L << 27) + +/*---------------------------------------------------------------------------- + * EAS_SetTransposition) + *---------------------------------------------------------------------------- + * Purpose: + * Sets the key tranposition for the synthesizer. Transposes all + * melodic instruments by the specified amount. Range is limited + * to +/-12 semitones. + * + * Inputs: + * pEASData - handle to data for this instance + * streamHandle - handle to stream + * transposition - +/-12 semitones + * + * Outputs: + * + * Side Effects: + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_SetTransposition (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_I32 transposition); +#define MAX_TRANSPOSE 12 + +/*---------------------------------------------------------------------------- + * EAS_SetSynthPolyphony() + *---------------------------------------------------------------------------- + * Purpose: + * Set the polyphony of the synthesizer. Value must be >= 1 and <= the + * maximum number of voices. This function will pin the polyphony + * at those limits + * + * Inputs: + * pEASData - pointer to overall EAS data structure + * synthNum - synthesizer number (0 = onboard, 1 = DSP) + * polyphonyCount - the desired polyphony count + * + * Outputs: + * + * Side Effects: + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_SetSynthPolyphony (EAS_DATA_HANDLE pEASData, EAS_I32 synthNum, EAS_I32 polyphonyCount); + +/*---------------------------------------------------------------------------- + * EAS_GetSynthPolyphony() + *---------------------------------------------------------------------------- + * Purpose: + * Returns the current polyphony setting of the synthesizer + * + * Inputs: + * pEASData - pointer to overall EAS data structure + * synthNum - synthesizer number (0 = onboard, 1 = DSP) + * pPolyphonyCount - pointer to variable to receive polyphony count + * + * Outputs: + * + * Side Effects: + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_GetSynthPolyphony (EAS_DATA_HANDLE pEASData, EAS_I32 synthNum, EAS_I32 *pPolyphonyCount); + +/*---------------------------------------------------------------------------- + * EAS_SetPolyphony() + *---------------------------------------------------------------------------- + * Purpose: + * Set the polyphony of the stream. Value must be >= 1 and <= the + * maximum number of voices. This function will pin the polyphony + * at those limits + * + * Inputs: + * pEASData - pointer to overall EAS data structure + * streamHandle - handle returned by EAS_OpenFile + * polyphonyCount - the desired polyphony count + * + * Outputs: + * + * Side Effects: + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_SetPolyphony (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_I32 polyphonyCount); + +/*---------------------------------------------------------------------------- + * EAS_GetPolyphony() + *---------------------------------------------------------------------------- + * Purpose: + * Returns the current polyphony setting of the stream + * + * Inputs: + * pEASData - pointer to overall EAS data structure + * streamHandle - handle returned by EAS_OpenFile + * pPolyphonyCount - pointer to variable to receive polyphony count + * + * Outputs: + * + * Side Effects: + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_GetPolyphony (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_I32 *pPolyphonyCount); + +/*---------------------------------------------------------------------------- + * EAS_SetPriority() + *---------------------------------------------------------------------------- + * Purpose: + * Set the priority of the stream. Determines which stream's voices + * are stolen when there are insufficient voices for all notes. + * Value must be in the range of 1-255, lower values are higher + * priority. The default priority is 50. + * + * Inputs: + * pEASData - pointer to overall EAS data structure + * streamHandle - handle returned by EAS_OpenFile + * polyphonyCount - the desired polyphony count + * + * Outputs: + * + * Side Effects: + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_SetPriority (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_I32 priority); + +/*---------------------------------------------------------------------------- + * EAS_GetPriority() + *---------------------------------------------------------------------------- + * Purpose: + * Returns the current priority setting of the stream + * + * Inputs: + * pEASData - pointer to overall EAS data structure + * streamHandle - handle returned by EAS_OpenFile + * pPriority - pointer to variable to receive priority + * + * Outputs: + * + * Side Effects: + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_GetPriority (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_I32 *pPriority); + +/*---------------------------------------------------------------------------- + * EAS_SetVolume() + *---------------------------------------------------------------------------- + * Purpose: + * Set the master volume for the mixer. The default volume setting is + * 90 (-10 dB). The volume range is 0 to 100 in 1dB increments. + * + * Inputs: + * pEASData - pointer to overall EAS data structure + * volume - the desired master volume + * + * Outputs: + * + * + * Side Effects: + * overrides any previously set master volume from sysex + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_SetVolume (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_I32 volume); + +/*---------------------------------------------------------------------------- + * EAS_GetVolume() + *---------------------------------------------------------------------------- + * Purpose: + * Returns the master volume for the mixer in 1dB increments. + * + * Inputs: + * pEASData - pointer to overall EAS data structure + * volume - the desired master volume + * + * Outputs: + * + * + * Side Effects: + * overrides any previously set master volume from sysex + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_I32 EAS_GetVolume (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle); + +/*---------------------------------------------------------------------------- + * EAS_SetMaxLoad() + *---------------------------------------------------------------------------- + * Purpose: + * Sets the maximum workload the parsers will do in a single call to + * EAS_Render. The units are currently arbitrary, but should correlate + * well to the actual CPU cycles consumed. The primary effect is to + * reduce the occasional peaks in CPU cycles consumed when parsing + * dense parts of a MIDI score. Setting maxWorkLoad to zero disables + * the workload limiting function. + * + * Inputs: + * pEASData - handle to data for this instance + * maxLoad - the desired maximum workload + * + * Outputs: + * + * Side Effects: + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_SetMaxLoad (EAS_DATA_HANDLE pEASData, EAS_I32 maxLoad); + +/*---------------------------------------------------------------------------- + * EAS_SetMaxPCMStreams() + *---------------------------------------------------------------------------- + * Sets the maximum number of PCM streams allowed in parsers that + * use PCM streaming. + * + * Inputs: + * pEASData - pointer to overall EAS data structure + * streamHandle - handle returned by EAS_OpenFile + * maxNumStreams - maximum number of PCM streams + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_SetMaxPCMStreams (EAS_DATA_HANDLE pEASData, EAS_HANDLE pStream, EAS_I32 maxNumStreams); + +/*---------------------------------------------------------------------------- + * EAS_OpenFile() + *---------------------------------------------------------------------------- + * Purpose: + * Opens a file for audio playback. + * + * Inputs: + * pEASData - pointer to overall EAS data structure + * locator - pointer to filename or other locating information + * pStreamHandle - pointer to stream handle variable + * + * Outputs: + * + * + * Side Effects: + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_OpenFile (EAS_DATA_HANDLE pEASData, EAS_FILE_LOCATOR locator, EAS_HANDLE *pStreamHandle); + +#ifdef MMAPI_SUPPORT +/*---------------------------------------------------------------------------- + * EAS_MMAPIToneControl() + *---------------------------------------------------------------------------- + * Purpose: + * Opens a ToneControl file for audio playback. + * + * Inputs: + * pEASData - pointer to overall EAS data structure + * locator - pointer to filename or other locating information + * pStreamHandle - pointer to stream handle variable + * + * Outputs: + * + * + * Side Effects: + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_MMAPIToneControl (EAS_DATA_HANDLE pEASData, EAS_FILE_LOCATOR locator, EAS_HANDLE *pStreamHandle); + +/*---------------------------------------------------------------------------- + * EAS_GetWaveFmtChunk + *---------------------------------------------------------------------------- + * Helper function to retrieve WAVE file fmt chunk for MMAPI + *---------------------------------------------------------------------------- + * pEASData - pointer to EAS persistent data object + * streamHandle - stream handle + * pFmtChunk - pointer to pointer to FMT chunk data + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_GetWaveFmtChunk (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_VOID_PTR *ppFmtChunk); +#endif + +/*---------------------------------------------------------------------------- + * EAS_GetFileType + *---------------------------------------------------------------------------- + * Returns the file type (see eas_types.h for enumerations) + *---------------------------------------------------------------------------- + * pEASData - pointer to EAS persistent data object + * streamHandle - stream handle + * pFileType - pointer to variable to receive file type + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_GetFileType (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_I32 *pFileType); + +/*---------------------------------------------------------------------------- + * EAS_ParseMetaData() + *---------------------------------------------------------------------------- + * Purpose: + * + * + * Inputs: + * pEASData - pointer to overall EAS data structure + * streamHandle - file or stream handle + * playLength - pointer to variable to store the play length (in msecs) + * + * Outputs: + * + * + * Side Effects: + * - resets the parser to the start of the file + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_ParseMetaData (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_I32 *pPlayLength); + +/*---------------------------------------------------------------------------- + * EAS_Prepare() + *---------------------------------------------------------------------------- + * Purpose: + * Prepares the synthesizer to play the file or stream. Parses the first + * frame of data from the file and arms the synthesizer. + * + * Inputs: + * pEASData - pointer to overall EAS data structure + * streamHandle - file or stream handle + * + * Outputs: + * + * + * Side Effects: + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_Prepare (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle); + +/*---------------------------------------------------------------------------- + * EAS_State() + *---------------------------------------------------------------------------- + * Purpose: + * Returns the state of an audio file or stream. + * + * Inputs: + * pEASData - pointer to overall EAS data structure + * streamHandle - file or stream handle + * + * Outputs: + * + * + * Side Effects: + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_State (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_STATE *pState); + +/*---------------------------------------------------------------------------- + * EAS_RegisterMetaDataCallback() + *---------------------------------------------------------------------------- + * Purpose: + * Registers a metadata callback function for parsed metadata. To + * de-register the callback, call this function again with parameter + * cbFunc set to NULL. + * + * Inputs: + * pEASData - pointer to overall EAS data structure + * streamHandle - file or stream handle + * cbFunc - pointer to host callback function + * metaDataBuffer - pointer to metadata buffer + * metaDataBufSize - maximum size of the metadata buffer + * + * Outputs: + * + * + * Side Effects: + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_RegisterMetaDataCallback ( + EAS_DATA_HANDLE pEASData, + EAS_HANDLE streamHandle, + EAS_METADATA_CBFUNC cbFunc, + char *metaDataBuffer, + EAS_I32 metaDataBufSize, + EAS_VOID_PTR pUserData); + +/*---------------------------------------------------------------------------- + * EAS_GetNoteCount () + *---------------------------------------------------------------------------- + * Returns the total number of notes played in this stream + * + * Inputs: + * pEASData - pointer to overall EAS data structure + * streamHandle - file or stream handle + * pNoteCount - pointer to variable to receive note count + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_GetNoteCount (EAS_DATA_HANDLE pEASData, EAS_HANDLE pStream, EAS_I32 *pNoteCount); + +/*---------------------------------------------------------------------------- + * EAS_CloseFile() + *---------------------------------------------------------------------------- + * Purpose: + * Closes an audio file or stream. Playback should have either paused or + * completed (EAS_State returns EAS_PAUSED or EAS_STOPPED). + * + * Inputs: + * pEASData - pointer to overall EAS data structure + * streamHandle - file or stream handle + * + * Outputs: + * + * + * Side Effects: + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_CloseFile (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle); + +/*---------------------------------------------------------------------------- + * EAS_OpenMIDIStream() + *---------------------------------------------------------------------------- + * Purpose: + * Opens a raw MIDI stream allowing the host to route MIDI cable data directly to the synthesizer + * + * Inputs: + * pEASData - pointer to overall EAS data structure + * pStreamHandle - pointer to variable to hold file or stream handle + * streamHandle - open stream or NULL for new synthesizer instance + * + * Outputs: + * + * + * Side Effects: + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_OpenMIDIStream (EAS_DATA_HANDLE pEASData, EAS_HANDLE *pStreamHandle, EAS_HANDLE streamHandle); + +/*---------------------------------------------------------------------------- + * EAS_WriteMIDIStream() + *---------------------------------------------------------------------------- + * Purpose: + * Send data to the MIDI stream device + * + * Inputs: + * pEASData - pointer to overall EAS data structure + * streamHandle - stream handle + * pBuffer - pointer to buffer + * count - number of bytes to write + * + * Outputs: + * + * + * Side Effects: + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_WriteMIDIStream(EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_U8 *pBuffer, EAS_I32 count); + +/*---------------------------------------------------------------------------- + * EAS_CloseMIDIStream() + *---------------------------------------------------------------------------- + * Purpose: + * Closes a raw MIDI stream + * + * Inputs: + * pEASData - pointer to overall EAS data structure + * streamHandle - stream handle + * + * Outputs: + * + * + * Side Effects: + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_CloseMIDIStream (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle); + +/*---------------------------------------------------------------------------- + * EAS_Locate() + *---------------------------------------------------------------------------- + * Purpose: + * Locate into the file associated with the handle. + * + * Inputs: + * pEASData - pointer to overall EAS data structure + * streamHandle - file handle + * milliseconds - playback offset from start of file in milliseconds + * + * Outputs: + * + * + * Side Effects: + * the actual offset will be quantized to the closest update period, typically + * a resolution of 5.9ms. Notes that are started prior to this time will not + * sound. Any notes currently playing will be shut off. + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_Locate (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_I32 milliseconds, EAS_BOOL offset); + +/*---------------------------------------------------------------------------- + * EAS_GetRenderTime() + *---------------------------------------------------------------------------- + * Purpose: + * Returns the current playback offset + * + * Inputs: + * pEASData - pointer to overall EAS data structure + * + * Outputs: + * Gets the render time clock in msecs. + * + * Side Effects: + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_GetRenderTime (EAS_DATA_HANDLE pEASData, EAS_I32 *pTime); + +/*---------------------------------------------------------------------------- + * EAS_GetLocation() + *---------------------------------------------------------------------------- + * Purpose: + * Returns the current playback offset + * + * Inputs: + * pEASData - pointer to overall EAS data structure + * streamHandle - file handle + * + * Outputs: + * The offset in milliseconds from the start of the current sequence, quantized + * to the nearest update period. Actual resolution is typically 5.9 ms. + * + * Side Effects: + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_GetLocation (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_I32 *pTime); + +/*---------------------------------------------------------------------------- + * EAS_Pause() + *---------------------------------------------------------------------------- + * Purpose: + * Pauses the playback of the data associated with this handle. The audio + * is gracefully ramped down to prevent clicks and pops. It may take several + * buffers of audio before the audio is muted. + * + * Inputs: + * psEASData - pointer to overall EAS data structure + * streamHandle - file or stream handle + * + * Outputs: + * + * + * Side Effects: + * + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_Pause (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle); + +/*---------------------------------------------------------------------------- + * EAS_Resume() + *---------------------------------------------------------------------------- + * Purpose: + * Resumes the playback of the data associated with this handle. The audio + * is gracefully ramped up to prevent clicks and pops. + * + * Inputs: + * psEASData - pointer to overall EAS data structure + * streamHandle - file or stream handle + * + * Outputs: + * + * + * Side Effects: + * + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_Resume (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle); + +/*---------------------------------------------------------------------------- + * EAS_GetParameter() + *---------------------------------------------------------------------------- + * Purpose: + * Set the parameter of a module. See E_MODULES for a list of modules + * and the header files of the modules for a list of parameters. + * + * Inputs: + * psEASData - pointer to overall EAS data structure + * module - enumerated module number + * param - enumerated parameter number + * pValue - pointer to variable to receive parameter value + * + * Outputs: + * + * + * Side Effects: + * + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_GetParameter (EAS_DATA_HANDLE pEASData, EAS_I32 module, EAS_I32 param, EAS_I32 *pValue); + +/*---------------------------------------------------------------------------- + * EAS_SetParameter() + *---------------------------------------------------------------------------- + * Purpose: + * Set the parameter of a module. See E_MODULES for a list of modules + * and the header files of the modules for a list of parameters. + * + * Inputs: + * psEASData - pointer to overall EAS data structure + * handle - file or stream handle + * module - enumerated module number + * param - enumerated parameter number + * value - new parameter value + * + * Outputs: + * + * + * Side Effects: + * + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_SetParameter (EAS_DATA_HANDLE pEASData, EAS_I32 module, EAS_I32 param, EAS_I32 value); + +#ifdef _METRICS_ENABLED +/*---------------------------------------------------------------------------- + * EAS_MetricsReport() + *---------------------------------------------------------------------------- + * Purpose: + * Displays the current metrics through the EAS_Report interface. + * + * Inputs: + * pEASData - instance data handle + * + * Outputs: + * + * + * Side Effects: + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_MetricsReport (EAS_DATA_HANDLE pEASData); + +/*---------------------------------------------------------------------------- + * EAS_MetricsReset() + *---------------------------------------------------------------------------- + * Purpose: + * Displays the current metrics through the EAS_Report interface. + * + * Inputs: + * pEASData - instance data handle + * + * Outputs: + * + * + * Side Effects: + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_MetricsReset (EAS_DATA_HANDLE pEASData); +#endif + +/*---------------------------------------------------------------------------- + * EAS_SetSoundLibrary() + *---------------------------------------------------------------------------- + * Purpose: + * Sets the location of the sound library. + * + * Inputs: + * pEASData - instance data handle + * streamHandle - file or stream handle + * pSoundLib - pointer to sound library + * + * Outputs: + * + * + * Side Effects: + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_SetSoundLibrary (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_SNDLIB_HANDLE pSndLib); + +/*---------------------------------------------------------------------------- + * EAS_SetHeaderSearchFlag() + *---------------------------------------------------------------------------- + * By default, when EAS_OpenFile is called, the parsers check the + * first few bytes of the file looking for a specific header. Some + * mobile devices may add a header to the start of a file, which + * will prevent the parser from recognizing the file. If the + * searchFlag is set to EAS_TRUE, the parser will search the entire + * file looking for the header. This may enable EAS to recognize + * some files that it would ordinarily reject. The negative is that + * it make take slightly longer to process the EAS_OpenFile request. + * + * Inputs: + * pEASData - instance data handle + * searchFlag - search flag (EAS_TRUE or EAS_FALSE) + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_SetHeaderSearchFlag (EAS_DATA_HANDLE pEASData, EAS_BOOL searchFlag); + +/*---------------------------------------------------------------------------- + * EAS_SetPlayMode() + *---------------------------------------------------------------------------- + * Some file formats support special play modes, such as iMode partial + * play mode. This call can be used to change the play mode. The + * default play mode (usually straight playback) is always zero. + * + * Inputs: + * pEASData - instance data handle + * handle - file or stream handle + * playMode - play mode (see eas_types.h for enumerations) + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_SetPlayMode (EAS_DATA_HANDLE pEASData, EAS_HANDLE pStream, EAS_I32 playMode); + +#ifdef DLS_SYNTHESIZER +/*---------------------------------------------------------------------------- + * EAS_LoadDLSCollection() + *---------------------------------------------------------------------------- + * Purpose: + * Downloads a DLS collection + * + * Inputs: + * pEASData - instance data handle + * streamHandle - file or stream handle + * locator - file locator + * + * Outputs: + * + * + * Side Effects: + * May overlay instruments in the GM sound set + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_LoadDLSCollection (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_FILE_LOCATOR locator); +#endif + +/*---------------------------------------------------------------------------- + * EAS_SetFrameBuffer() + *---------------------------------------------------------------------------- + * Purpose: + * Sets the frame buffer pointer passed to the IPC communications functions + * + * Inputs: + * pEASData - instance data handle + * locator - file locator + * + * Outputs: + * + * + * Side Effects: + * May overlay instruments in the GM sound set + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_SetFrameBuffer (EAS_DATA_HANDLE pEASData, EAS_FRAME_BUFFER_HANDLE pFrameBuffer); + +#ifdef EXTERNAL_AUDIO +/*---------------------------------------------------------------------------- + * EAS_RegExtAudioCallback() + *---------------------------------------------------------------------------- + * Purpose: + * Registers callback functions for audio events. + * + * Inputs: + * pEASData - pointer to overall EAS data structure + * streamHandle - file or stream handle + * cbProgChgFunc - pointer to host callback function for program change + * cbEventFunc - pointer to host callback functio for note events + * + * Outputs: + * + * + * Side Effects: + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_RegExtAudioCallback (EAS_DATA_HANDLE pEASData, + EAS_HANDLE streamHandle, + EAS_VOID_PTR pInstData, + EAS_EXT_PRG_CHG_FUNC cbProgChgFunc, + EAS_EXT_EVENT_FUNC cbEventFunc); + +/*---------------------------------------------------------------------------- + * EAS_GetMIDIControllers() + *---------------------------------------------------------------------------- + * Purpose: + * Returns the current state of MIDI controllers on the requested channel. + * + * Inputs: + * pEASData - pointer to overall EAS data structure + * streamHandle - file or stream handle + * pControl - pointer to structure to receive data + * + * Outputs: + * + * + * Side Effects: + * + *---------------------------------------------------------------------------- +*/ +EAS_PUBLIC EAS_RESULT EAS_GetMIDIControllers (EAS_DATA_HANDLE pEASData, EAS_HANDLE streamHandle, EAS_U8 channel, S_MIDI_CONTROLLERS *pControl); +#endif + +/*---------------------------------------------------------------------------- + * EAS_SearchFile + *---------------------------------------------------------------------------- + * Search file for specific sequence starting at current file + * position. Returns offset to start of sequence. + * + * Inputs: + * pEASData - pointer to EAS persistent data object + * fileHandle - file handle + * searchString - pointer to search sequence + * len - length of search sequence + * pOffset - pointer to variable to store offset to sequence + * + * Returns EAS_EOF if end-of-file is reached + *---------------------------------------------------------------------------- +*/ +EAS_RESULT EAS_SearchFile (EAS_DATA_HANDLE pEASData, EAS_FILE_HANDLE fileHandle, const EAS_U8 *searchString, EAS_I32 len, EAS_I32 *pOffset); + +#ifdef __cplusplus +} /* end extern "C" */ +#endif + +#endif /* #ifndef _EAS_H */ -- cgit v1.2.3