1 /*----------------------------------------------------------------------------
2  *
3  * File:
4  * eas_wt_IPC_frame.h
5  *
6  * Contents and purpose:
7  * This module contains data definitions for the interprocessor
8  * communications framework for a split-architecture synthesizer.
9  *
10  * This sample version writes IPC data to a file that can be used
11  * as a test vector for the DSP simulator. For a real-time system
12  * the file I/O is replaced with an IPC protocol in the hardware.
13  *
14  * Synchronization with the DSP is accomplished at the API level,
15  * i.e. the host code should call EAS_Render when it is ready to
16  * buffer another block of data for transmission to the DSP.
17  *
18  * Copyright Sonic Network Inc. 2005
19 
20  * Licensed under the Apache License, Version 2.0 (the "License");
21  * you may not use this file except in compliance with the License.
22  * You may obtain a copy of the License at
23  *
24  *      http://www.apache.org/licenses/LICENSE-2.0
25  *
26  * Unless required by applicable law or agreed to in writing, software
27  * distributed under the License is distributed on an "AS IS" BASIS,
28  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
29  * See the License for the specific language governing permissions and
30  * limitations under the License.
31  *
32  *----------------------------------------------------------------------------
33  * Revision Control:
34  *   $Revision: 818 $
35  *   $Date: 2007-08-02 15:19:41 -0700 (Thu, 02 Aug 2007) $
36  *----------------------------------------------------------------------------
37 */
38 
39 #ifndef _EAS_WT_IPC_FRAME_H
40 #define _EAS_WT_IPC_FRAME_H
41 
42 /*----------------------------------------------------------------------------
43  * S_WT_FRAME
44  *
45  * This structure contains the common parameters that are updated
46   *for each frame of audio.
47  *----------------------------------------------------------------------------
48 */
49 typedef struct s_wt_frame_tag
50 {
51     EAS_I32         gainTarget;
52     EAS_I32         phaseIncrement;
53 
54 #if defined(_FILTER_ENABLED)
55     EAS_I32         k;
56     EAS_I32         b1;
57     EAS_I32         b2;
58 #endif
59 } S_WT_FRAME;
60 
61 /*----------------------------------------------------------------------------
62  * S_WT_CONFIG
63  *
64  * This structure contains state data for the wavetable engine
65  *----------------------------------------------------------------------------
66 */
67 typedef struct s_wt_config_tag
68 {
69     EAS_U32             loopEnd;                /* points to last PCM sample (not 1 beyond last) */
70     EAS_U32             loopStart;              /* points to first sample at start of loop */
71     EAS_U32             phaseAccum;             /* current sample, integer portion of phase */
72 
73 #if (NUM_OUTPUT_CHANNELS == 2)
74     EAS_I16             gainLeft;               /* left channel gain */
75     EAS_I16             gainRight;              /* right channel gain */
76 #endif
77 
78     EAS_I16             gain;                   /* current voice gain */
79 } S_WT_CONFIG;
80 
81 #endif
82 
83