1062 lines
36 KiB
C
1062 lines
36 KiB
C
/*----------------------------------------------------------------------------
|
|
*
|
|
* 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.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* 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 */
|