blob: d66a2b760c32b66ba68c30c702e0416ffe17f01c [file] [log] [blame]
/*----------------------------------------------------------------------------
*
* File:
* eas_types.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. 2004
* 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: 726 $
* $Date: 2007-06-14 23:10:46 -0700 (Thu, 14 Jun 2007) $
*----------------------------------------------------------------------------
*/
#ifndef _EAS_TYPES_H
#define _EAS_TYPES_H
/* EAS_RESULT return codes */
typedef long EAS_RESULT;
#define EAS_SUCCESS 0
#define EAS_FAILURE -1
#define EAS_ERROR_INVALID_MODULE -2
#define EAS_ERROR_MALLOC_FAILED -3
#define EAS_ERROR_FILE_POS -4
#define EAS_ERROR_INVALID_FILE_MODE -5
#define EAS_ERROR_FILE_SEEK -6
#define EAS_ERROR_FILE_LENGTH -7
#define EAS_ERROR_NOT_IMPLEMENTED -8
#define EAS_ERROR_CLOSE_FAILED -9
#define EAS_ERROR_FILE_OPEN_FAILED -10
#define EAS_ERROR_INVALID_HANDLE -11
#define EAS_ERROR_NO_MIX_BUFFER -12
#define EAS_ERROR_PARAMETER_RANGE -13
#define EAS_ERROR_MAX_FILES_OPEN -14
#define EAS_ERROR_UNRECOGNIZED_FORMAT -15
#define EAS_BUFFER_SIZE_MISMATCH -16
#define EAS_ERROR_FILE_FORMAT -17
#define EAS_ERROR_SMF_NOT_INITIALIZED -18
#define EAS_ERROR_LOCATE_BEYOND_END -19
#define EAS_ERROR_INVALID_PCM_TYPE -20
#define EAS_ERROR_MAX_PCM_STREAMS -21
#define EAS_ERROR_NO_VOICE_ALLOCATED -22
#define EAS_ERROR_INVALID_CHANNEL -23
#define EAS_ERROR_ALREADY_STOPPED -24
#define EAS_ERROR_FILE_READ_FAILED -25
#define EAS_ERROR_HANDLE_INTEGRITY -26
#define EAS_ERROR_MAX_STREAMS_OPEN -27
#define EAS_ERROR_INVALID_PARAMETER -28
#define EAS_ERROR_FEATURE_NOT_AVAILABLE -29
#define EAS_ERROR_SOUND_LIBRARY -30
#define EAS_ERROR_NOT_VALID_IN_THIS_STATE -31
#define EAS_ERROR_NO_VIRTUAL_SYNTHESIZER -32
#define EAS_ERROR_FILE_ALREADY_OPEN -33
#define EAS_ERROR_FILE_ALREADY_CLOSED -34
#define EAS_ERROR_INCOMPATIBLE_VERSION -35
#define EAS_ERROR_QUEUE_IS_FULL -36
#define EAS_ERROR_QUEUE_IS_EMPTY -37
#define EAS_ERROR_FEATURE_ALREADY_ACTIVE -38
/* special return codes */
#define EAS_EOF 3
#define EAS_STREAM_BUFFERING 4
#define EAS_BUFFER_FULL 5
/* EAS_STATE return codes */
typedef long EAS_STATE;
typedef enum
{
EAS_STATE_READY = 0,
EAS_STATE_PLAY,
EAS_STATE_STOPPING,
EAS_STATE_PAUSING,
EAS_STATE_STOPPED,
EAS_STATE_PAUSED,
EAS_STATE_OPEN,
EAS_STATE_ERROR,
EAS_STATE_EMPTY
} E_EAS_STATE;
/* constants */
#ifndef EAS_CONST
#define EAS_CONST const
#endif
/* definition for public interface functions */
#ifndef EAS_PUBLIC
#define EAS_PUBLIC
#endif
/* boolean values */
typedef unsigned EAS_BOOL;
typedef unsigned char EAS_BOOL8;
#define EAS_FALSE 0
#define EAS_TRUE 1
/* scalar variable definitions */
typedef unsigned char EAS_U8;
typedef signed char EAS_I8;
typedef char EAS_CHAR;
typedef unsigned short EAS_U16;
typedef short EAS_I16;
typedef unsigned long EAS_U32;
typedef long EAS_I32;
typedef unsigned EAS_UINT;
typedef int EAS_INT;
typedef long EAS_LONG;
/* audio output type */
typedef short EAS_PCM;
/* file open modes */
typedef EAS_I32 EAS_FILE_MODE;
#define EAS_FILE_READ 1
#define EAS_FILE_WRITE 2
/* file locator e.g. filename or memory pointer */
typedef struct s_eas_file_tag {
const char* path;
int fd;
long long offset;
long long length;
} EAS_FILE, *EAS_FILE_LOCATOR;
/* handle to stream */
typedef struct s_eas_stream_tag *EAS_HANDLE;
/* handle to file */
typedef struct eas_hw_file_tag *EAS_FILE_HANDLE;
/* handle for synthesizer data */
typedef struct s_eas_data_tag *EAS_DATA_HANDLE;
/* handle to persistent data for host wrapper interface */
typedef struct eas_hw_inst_data_tag *EAS_HW_DATA_HANDLE;
/* handle to sound library */
typedef struct s_eas_sndlib_tag *EAS_SNDLIB_HANDLE;
typedef struct s_eas_dls_tag *EAS_DLSLIB_HANDLE;
/* pointer to frame buffer - used in split architecture only */
typedef struct s_eas_frame_buffer_tag *EAS_FRAME_BUFFER_HANDLE;
/* untyped pointer for instance data */
typedef void *EAS_VOID_PTR;
/* inline functions */
#ifndef EAS_INLINE
#if defined (__XCC__)
#define EAS_INLINE __inline__
#elif defined (__GNUC__)
#define EAS_INLINE inline static
#else
#define EAS_INLINE __inline
#endif
#endif
/* define NULL value */
#ifndef NULL
#define NULL 0
#endif
/* metadata types for metadata return codes */
typedef enum
{
EAS_METADATA_UNKNOWN = 0,
EAS_METADATA_TITLE,
EAS_METADATA_AUTHOR,
EAS_METADATA_COPYRIGHT,
EAS_METADATA_LYRIC,
EAS_METADATA_TEXT
} E_EAS_METADATA_TYPE;
/* metadata callback function */
typedef void (*EAS_METADATA_CBFUNC) (E_EAS_METADATA_TYPE metaDataType, char *metaDataBuf, EAS_VOID_PTR pUserData);
/* file types for metadata return codes */
typedef enum
{
EAS_FILE_UNKNOWN = 0,
EAS_FILE_SMF0,
EAS_FILE_SMF1,
EAS_FILE_SMAF_UNKNOWN,
EAS_FILE_SMAF_MA2,
EAS_FILE_SMAF_MA3,
EAS_FILE_SMAF_MA5,
EAS_FILE_CMX,
EAS_FILE_MFI,
EAS_FILE_OTA,
EAS_FILE_IMELODY,
EAS_FILE_RTTTL,
EAS_FILE_XMF0,
EAS_FILE_XMF1,
EAS_FILE_WAVE_PCM,
EAS_FILE_WAVE_IMA_ADPCM,
EAS_FILE_MMAPI_TONE_CONTROL
} E_EAS_FILE_TYPE;
/* enumeration for synthesizers */
typedef enum
{
EAS_MCU_SYNTH = 0,
EAS_DSP_SYNTH
} E_SYNTHESIZER;
/* external audio callback program change */
typedef struct s_ext_audio_prg_chg_tag
{
EAS_U16 bank;
EAS_U8 program;
EAS_U8 channel;
} S_EXT_AUDIO_PRG_CHG;
/* external audio callback event */
typedef struct s_ext_audio_event_tag
{
EAS_U8 channel;
EAS_U8 note;
EAS_U8 velocity;
EAS_BOOL8 noteOn;
} S_EXT_AUDIO_EVENT;
typedef struct s_midi_controllers_tag
{
EAS_U8 modWheel; /* CC1 */
EAS_U8 volume; /* CC7 */
EAS_U8 pan; /* CC10 */
EAS_U8 expression; /* CC11 */
EAS_U8 channelPressure; /* MIDI channel pressure */
#ifdef _REVERB
EAS_U8 reverbSend; /* CC91 */
#endif
#ifdef _CHORUS
EAS_U8 chorusSend; /* CC93 */
#endif
} S_MIDI_CONTROLLERS;
/* iMode play modes enumeration for EAS_SetPlayMode */
typedef enum
{
IMODE_PLAY_ALL = 0,
IMODE_PLAY_PARTIAL
} E_I_MODE_PLAY_MODE;
typedef EAS_BOOL (*EAS_EXT_PRG_CHG_FUNC) (EAS_VOID_PTR pInstData, S_EXT_AUDIO_PRG_CHG *pPrgChg);
typedef EAS_BOOL (*EAS_EXT_EVENT_FUNC) (EAS_VOID_PTR pInstData, S_EXT_AUDIO_EVENT *pEvent);
#endif /* #ifndef _EAS_TYPES_H */