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