source: sbliveos2/trunk/sblive/voicemgr.h@ 149

Last change on this file since 149 was 142, checked in by ktk, 25 years ago

Import

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.8 KB
Line 
1/* $Id: voicemgr.h 142 2000-04-23 14:55:46Z ktk $ */
2
3/*
4 **********************************************************************
5 * sblive_voice.h -- EMU Voice Resource Manager header file
6 * Copyright 1999, 2000 Creative Labs, Inc.
7 *
8 **********************************************************************
9 *
10 * Date Author Summary of changes
11 * ---- ------ ------------------
12 * October 20, 1999 Bertrand Lee base code release
13 *
14 **********************************************************************
15 *
16 * This program is free software; you can redistribute it and/or
17 * modify it under the terms of the GNU General Public License as
18 * published by the Free Software Foundation; either version 2 of
19 * the License, or (at your option) any later version.
20 *
21 * This program is distributed in the hope that it will be useful,
22 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 * GNU General Public License for more details.
25 *
26 * You should have received a copy of the GNU General Public
27 * License along with this program; if not, write to the Free
28 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
29 * USA.
30 *
31 **********************************************************************
32 */
33
34#ifndef _VOICEMGR_H
35#define _VOICEMGR_H
36/* struct emu_voice.usage flags */
37#define VOICEMGR_USAGE_FREE 0x00000000
38#define VOICEMGR_USAGE_MIDI 0x00000001
39#define VOICEMGR_USAGE_PLAYBACK 0x00000002
40
41/* struct emu_voice.flags flags */
42#define VOICEMGR_FLAGS_MONO 0x00000002
43#define VOICEMGR_FLAGS_16BIT 0x00000004
44#define VOICEMGR_FLAGS_STEREOSLAVE 0x00000008
45#define VOICEMGR_FLAGS_VOICEMASTER 0x80000000
46#define VOICEMGR_FLAGS_FXRT2 0x00000010
47
48struct voice_param
49{
50 /* Sound engine */
51 u32 start;
52 u32 startloop;
53 u32 endloop;
54 u32 end;
55
56 u16 current_pitch;
57 u16 pitch_target;
58
59 u16 current_volume;
60 u16 volume_target;
61
62 u16 current_FC;
63 u16 FC_target;
64
65 u8 pan_target;
66 u8 aux_target;
67
68 /* FX bus amount send */
69
70 u32 send_a;
71 u32 send_b;
72 u32 send_c;
73 u32 send_d;
74
75 /* Envelope engine */
76 u16 ampl_env_delay;
77 u8 byampl_env_attack;
78 u8 byampl_env_hold;
79 u8 byampl_env_decay;
80 u8 byampl_env_sustain;
81 u8 byampl_env_release;
82
83 u16 aux_env_delay;
84 u8 byaux_env_attack;
85 u8 byaux_env_hold;
86 u8 byaux_env_decay;
87 u8 byaux_env_sustain;
88 u8 byaux_env_release;
89
90 u16 mod_LFO_delay; /* LFO1 */
91 u16 vib_LFO_delay; /* LFO2 */
92 u8 mod_LFO_freq; /* LFO1 */
93 u8 vib_LFO_freq; /* LFO2 */
94
95 s8 aux_env_to_pitch;
96 s8 aux_env_to_FC;
97 s8 mod_LFO_to_pitch;
98 s8 vib_LFO_to_pitch;
99 s8 mod_LFO_to_FC;
100 s8 mod_LFO_to_volume;
101
102 u16 sample_pitch;
103 u16 initial_pitch;
104 u8 initial_attn;
105 u8 initial_FC;
106};
107
108struct voice_allocdesc
109{
110 u32 usage; /* playback, Midi */
111 u32 flags; /* stereo/mono rec/playback 8/16 bit*/
112};
113
114struct emu_voice
115{
116 struct list_head list;
117
118 struct emu10k1_card *card;
119 u32 usage; /* Free, MIDI, playback */
120 u32 num; /* Voice ID */
121 u32 flags; /* Stereo/mono, rec/playback, 8/16 bit */
122
123 struct voice_param params;
124
125 struct emu_voice *linked_voice; /*for stereo voice*/
126
127 u32 sendhandle[NUM_FXSENDS];
128};
129
130struct voice_manager
131{
132 struct emu10k1_card *card;
133 spinlock_t lock;
134
135 struct emu_voice voice[NUM_G];
136};
137
138struct voice_cntlset
139{
140 u32 paramID;
141 u32 value;
142};
143
144struct emu_voice *emu10k1_voice_alloc(struct voice_manager *, struct voice_allocdesc *);
145void emu10k1_voice_free(struct voice_manager *, struct emu_voice *);
146void emu10k1_voice_playback_setup(struct emu_voice *);
147void emu10k1_voice_start(struct emu_voice *);
148void emu10k1_voice_stop(struct emu_voice *);
149void emu10k1_voice_setcontrol(struct emu_voice *, struct voice_cntlset *, u32);
150void emu10k1_voice_getcontrol(struct emu_voice *, u32, u32 *);
151
152#endif /* _VOICEMGR_H */
Note: See TracBrowser for help on using the repository browser.