1/* 2 ********************************************************************** 3 * sblive_voice.h -- EMU Voice Resource Manager header file 4 * Copyright 1999, 2000 Creative Labs, Inc. 5 * 6 ********************************************************************** 7 * 8 * Date Author Summary of changes 9 * ---- ------ ------------------ 10 * October 20, 1999 Bertrand Lee base code release 11 * 12 ********************************************************************** 13 * 14 * This program is free software; you can redistribute it and/or 15 * modify it under the terms of the GNU General Public License as 16 * published by the Free Software Foundation; either version 2 of 17 * the License, or (at your option) any later version. 18 * 19 * This program is distributed in the hope that it will be useful, 20 * but WITHOUT ANY WARRANTY; without even the implied warranty of 21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 22 * GNU General Public License for more details. 23 * 24 * You should have received a copy of the GNU General Public 25 * License along with this program; if not, write to the Free 26 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, 27 * USA. 28 * 29 ********************************************************************** 30 */ 31 32#ifndef _VOICEMGR_H 33#define _VOICEMGR_H 34 35#include "hwaccess.h" 36 37/* struct emu_voice.usage flags */ 38#define VOICE_USAGE_FREE 0x01 39#define VOICE_USAGE_MIDI 0x02 40#define VOICE_USAGE_PLAYBACK 0x04 41 42/* struct emu_voice.flags flags */ 43#define VOICE_FLAGS_STEREO 0x02 44#define VOICE_FLAGS_16BIT 0x04 45 46struct voice_param 47{ 48 /* FX bus amount send */ 49 50 u32 send_routing; 51 // audigy only: 52 u32 send_routing2; 53 54 u32 send_dcba; 55 // audigy only: 56 u32 send_hgfe; 57 58 59 u32 initial_fc; 60 u32 fc_target; 61 62 u32 initial_attn; 63 u32 volume_target; 64 65 u32 byampl_env_sustain; 66 u32 byampl_env_decay; 67}; 68 69struct voice_mem { 70 int emupageindex; 71 void *addr[BUFMAXPAGES]; 72 dma_addr_t dma_handle[BUFMAXPAGES]; 73 u32 pages; 74}; 75 76struct emu_voice 77{ 78 struct emu10k1_card *card; 79 u8 usage; /* Free, MIDI, playback */ 80 u8 num; /* Voice ID */ 81 u8 flags; /* Stereo/mono, 8/16 bit */ 82 83 u32 startloop; 84 u32 endloop; 85 u32 start; 86 87 u32 initial_pitch; 88 u32 pitch_target; 89 90 struct voice_param params[2]; 91 92 struct voice_mem mem; 93}; 94 95int emu10k1_voice_alloc_buffer(struct emu10k1_card *, struct voice_mem *, u32); 96void emu10k1_voice_free_buffer(struct emu10k1_card *, struct voice_mem *); 97int emu10k1_voice_alloc(struct emu10k1_card *, struct emu_voice *); 98void emu10k1_voice_free(struct emu_voice *); 99void emu10k1_voice_playback_setup(struct emu_voice *); 100void emu10k1_voices_start(struct emu_voice *, unsigned int, int); 101void emu10k1_voices_stop(struct emu_voice *, int); 102 103#endif /* _VOICEMGR_H */ 104