melody_sw_syn.h
11.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
/*****************************************************************************
* Copyright Statement:
* --------------------
* This software is protected by Copyright and the information contained
* herein is confidential. The software may not be copied and the information
* contained herein may not be used or disclosed except with the written
* permission of MediaTek Inc. (C) 2005
*
* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
*
* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/
/*******************************************************************************
*
* Filename:
* ---------
* melody_sw_syn.h
*
* Project:
* --------
* MAUI
*
* Description:
* ------------
* Software MIDI Synthesizer Definitions
*
* Author:
* -------
* -------
*
*============================================================================
* HISTORY
* Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*------------------------------------------------------------------------------
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
*
*------------------------------------------------------------------------------
* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*==============================================================================
*******************************************************************************/
#ifndef MELODY_SW_SYN_H
#define MELODY_SW_SYN_H
#include "media.h"
#include "l1audio_def.h"
#include "Melody_Component.h"
#define RTMIDI_BUFSIZE 384
#define RTMIDI_INPUTSIZE 256
#define MAX_MIDICHANNEL 16
#define MELODY_MAX_DURATION 108000000
#define MELODY_SAMPLINGRATE SR_32K
#define MELODY_MAX_POLYPHONY 64
#define MELODY_FINE_POLYPHONY 8
#define MELODY_SYNTH_PERIOD 18
#define MELODY_SMF_NOTEGAIN 96
#define MELODY_IMY_NOTEGAIN 512
#define MELODY_TONE_NOTEGAIN 2048
#define MIDI_STATE_OPENED 1
#define MIDI_STATE_READY 2
#define MIDI_STATE_PLAYING 3
#define MIDI_STATE_PAUSED 4
#define MIDI_STATE_ABORT 5
#define MIDI_STATE_ENDING 6
#define MIDI_STATE_RTMIDI_OPENED 7
#define MIDI_STATE_RTMIDI_ONLY 8
#define MIDI_CTRL_IDLE 0
#define MIDI_CTRL_INIT 1
#define MIDI_CTRL_RUN 2
#define MIDI_CTRL_STOP 3
#define MELODY_DEV_INST 0xFF
#define MELODY_DEV_FILELEN 0xFFFF
typedef enum{
MELODYFORMAT_SMF = 0,
MELODYFORMAT_IMY,
MELODYFORMAT_JTS,
MELODYFORMAT_DEV
}MELODYFORMAT_T;
typedef struct {
kal_uint8 program;
kal_uint8 volume;
}TCKMIDI_CHANNEL_T;
#if SINGLE_PASER_SINGLE_WTSYNTH
typedef struct {
union {
Media_SMF_Param smf;
Media_iMelody_Param imy;
Media_ToneSeq_Param jts;
}param;
kal_bool init;
kal_bool fplay;
kal_bool bad_format;
kal_bool freaderr;
kal_bool dpmrgwt_check;
kal_int32 pitchTranspose;
kal_int32 tempo;
kal_int32 jstart_time;
kal_int32 java_tempo;
kal_int32 jtempo_state;
kal_int32 state;
MELODYFORMAT_T format;
MelodyParseParam parsedata;
MelodySynthParam synthdata;
MelodyDevParam devdata;
AcHdlNode ParNode;
AcHdlNode DecNode;
AcHdlNode SinkNode;
AcHdlNode PPNode;
void* wrkbuf;
TCKMIDI_CHANNEL_T tckmidchannel[MAX_MIDICHANNEL];
kal_int32 pitchtrans;
#if defined(MIDFILE_PLAY_SUPPORT)
kal_int32 fsize;
#endif
} MIDI_Player;
/*
============================================================================================================
------------------------------------------------------------------------------------------------------------
|| Multiple Parser Framework
------------------------------------------------------------------------------------------------------------
============================================================================================================
*/
#elif MULTIPLE_PASER_SINGLE_WTSYNTH
typedef struct {
union {
Media_SMF_Param smf;
Media_iMelody_Param imy;
Media_ToneSeq_Param jts;
}param;
kal_bool init;
kal_bool fplay;
kal_bool bad_format;
kal_bool freaderr;
kal_bool dpmrgwt_check;
kal_int32 pitchTranspose;
kal_int32 tempo;
kal_int32 jstart_time;
kal_int32 java_tempo;
kal_int32 jtempo_state;
kal_int32 state;
MELODYFORMAT_T format;
void* wrkbuf;
#if defined(MIDFILE_PLAY_SUPPORT)
int fsize;
#endif
} MIDI_Player;
typedef struct media_handle_midictrl {
Media_Handle mh; /* this should be the first line in this structure */
kal_uint16 state_bit;
kal_uint16 hdlstate;
kal_uint16 end_flag;
MELODYUSAGE_T usage;
struct media_handle_midictrl *next;
} Media_Handle_MIDICTRL;
typedef struct {
kal_bool init;
kal_bool dpmrgwt_check;
kal_bool mid_device;
kal_bool endingflag;
kal_uint16 playstate;
kal_uint16 run_state;
kal_uint16 parser_size;
kal_int32 pitchtrans;
kal_int8 dpmrgwt_count;
MelodyParseParam parsedata;
MelodySynthParam synthdata;
AcHdlNode ParNode;
AcHdlNode DecNode;
AcHdlNode SinkNode;
AcHdlNode PPNode;
MHPB_Internal *mhpb;
TCKMIDI_CHANNEL_T tckmidchannel[MAX_MIDICHANNEL];
Media_Handle_MIDICTRL *hdl_list;
void *wrkbuf;
}MIDI_CTRL_MANAGER_INT;
typedef struct {
kal_uint16 hdl_state[2]; // sound effect
MELODYUSAGE_T current_usage;
MIDI_CTRL_MANAGER_INT *data[2];
}MIDI_CTRL_MANAGER;
extern MIDI_CTRL_MANAGER melodyCtl;
#else
#error the framework should either be SINGLE_PASER_SINGLE_WTSYNTH or MULTIPLE_PASER_SINGLE_WTSYNTH
#endif /* SINGLE_PASER_SINGLE_WTSYNTH, MULTIPLE_PASER_SINGLE_WTSYNTH */
extern const unsigned char Wavetable[];
extern void AFE_SetDigitalGain( kal_uint8 aud_func, kal_uint8 level );
extern OMX_U32 MelodyDev_GetMemSize( void );
extern OMX_U32 MelodyPar_GetMemSize( void );
extern OMX_ERRORTYPE MelodyDev_Init(AudComHdl **pHandle, void *pBuffer, void *pFWData, AudComCallback *pCallback);
extern OMX_ERRORTYPE MelodyPar_Init(AudComHdl **pHandle, void *pBuffer, void *pFWData, AudComCallback *pCallback);
extern OMX_U32 MelodySyn_GetMemSize( void );
extern OMX_ERRORTYPE MelodySyn_Init(AudComHdl **pHandle, void *pBuffer, void *pFWData, AudComCallback *pCallback);
extern OMX_ERRORTYPE MelodySyn_SetParameter(AudComHdl *hdl, OMX_INDEXTYPE index, OMX_PTR pStruct);
extern void MelodyComp_InitIP(Media_Handle *handle);
extern void MelodyComp_Init(Media_Handle *handle, MIDI_Player *player, bool isMidiDevice);
extern Media_Status MelodyComp_Free( Media_Handle *handle );
extern Media_Status MelodyComp_Play( Media_Handle *handle );
extern Media_Status MelodyComp_Stop( Media_Handle *handle );
extern MIDI_Format MelodyComp_Format( Media_Handle *handle );
extern kal_int32 MelodyComp_GetPitchTranspose( Media_Handle *handle );
extern kal_int32 MelodyComp_GetRate( Media_Handle *handle );
extern kal_uint8 MelodyComp_GetLevel( Media_Handle *handle );
extern int32 MelodyComp_GetDuration( Media_Handle *handle );
extern kal_int32 MelodyComp_GetCurrentTime( Media_Handle *handle );
extern Media_Status MelodyComp_SetPitchTranspose( Media_Handle *handle, kal_int32 milliSt );
extern Media_Status MelodyComp_SetLevel( Media_Handle *handle, kal_uint8 level );
extern Media_Status MelodyComp_SetProgram(Media_Handle *handle, kal_uint8 channel, kal_uint8 program);
extern Media_Status MelodyComp_SetRate( Media_Handle *handle, kal_int32 milliRate );
extern Media_Status MelodyComp_SetStartTime( Media_Handle *handle, kal_int32 msStartTime );
extern Media_Status MelodyComp_SetStopTime( Media_Handle *handle, kal_int32 msStopTime );
extern Media_Status MelodyComp_SetTSRate( Media_Handle *handle, kal_int32 Rate );
extern Media_Handle *MelodyComp_ObtainHandle( kal_bool mid_device );
extern void MelodyComp_SetTCKChannelVolume(Media_Handle *handle, kal_uint8 channel, kal_uint8 level );
extern kal_uint8 MelodyComp_GetTCKChannelVolume(Media_Handle *handle, kal_uint8 channel);
extern void MelodyComp_SetTCKChannelProgram(Media_Handle *handle, kal_uint8 channel, kal_uint8 program );
extern kal_uint8 MelodyComp_GetTCKChannelProgram(Media_Handle *handle, kal_uint8 channel);
extern kal_uint8 MelodyComp_GetChannelProgram(Media_Handle *handle, kal_uint8 channel);
extern kal_uint8 MelodyComp_GetChannelVolume(Media_Handle *handle, kal_uint8 channel);
extern kal_int32 MelodyComp_GetTempo( Media_Handle *handle );
extern Media_Status MelodyComp_SetTempo( Media_Handle *handle, kal_int32 milliTempo );
extern kal_bool MelodyComp_isSpMidi(Media_Handle *handle);
extern Media_Status MelodyComp_SendShortMsg( Media_Handle *handle, kal_uint8 type, kal_uint8 data1, kal_uint8 data2 );
extern Media_Status MelodyComp_SendLongMsg( Media_Handle *handle, const uint8 *buf, uint16 len );
#endif /* MELODY_SW_SYN_H */