| /*---------------------------------------------------------------------------- |
| * |
| * 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 */ |