ref: 516fc276f112baf0bd4508596598aed49929bde9
dir: /src/audiolib/blaster.h/
/* Copyright (C) 1994-1995 Apogee Software, Ltd. Copyright (C) 2002-2015 icculus.org, GNU/Linux port Copyright (C) 2017-2018 Steven LeVesque This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>. */ /********************************************************************** module: BLASTER.H author: James R. Dose date: February 4, 1994 Public header for BLASTER.C (c) Copyright 1994 James R. Dose. All Rights Reserved. **********************************************************************/ #ifndef __BLASTER_H #define __BLASTER_H typedef struct { unsigned Address; unsigned Type; unsigned Interrupt; unsigned Dma8; unsigned Dma16; unsigned Midi; unsigned Emu; } BLASTER_CONFIG; extern BLASTER_CONFIG BLASTER_Config; extern int BLASTER_DMAChannel; #define UNDEFINED -1 enum BLASTER_ERRORS { BLASTER_Warning = -2, BLASTER_Error = -1, BLASTER_Ok = 0, BLASTER_EnvNotFound, BLASTER_AddrNotSet, BLASTER_DMANotSet, BLASTER_DMA16NotSet, BLASTER_InvalidParameter, BLASTER_CardNotReady, BLASTER_NoSoundPlaying, BLASTER_InvalidIrq, BLASTER_UnableToSetIrq, BLASTER_DmaError, BLASTER_NoMixer, BLASTER_DPMI_Error, BLASTER_OutOfMemory }; enum BLASTER_Types { SB = 1, SBPro = 2, SB20 = 3, SBPro2 = 4, SB16 = 6 }; #define BLASTER_MinCardType SB #define BLASTER_MaxCardType SB16 #define STEREO 1 #define SIXTEEN_BIT 2 #define MONO_8BIT 0 #define STEREO_8BIT ( STEREO ) #define MONO_16BIT ( SIXTEEN_BIT ) #define STEREO_16BIT ( STEREO | SIXTEEN_BIT ) #define BLASTER_MaxMixMode STEREO_16BIT #define MONO_8BIT_SAMPLE_SIZE 1 #define MONO_16BIT_SAMPLE_SIZE 2 #define STEREO_8BIT_SAMPLE_SIZE ( 2 * MONO_8BIT_SAMPLE_SIZE ) #define STEREO_16BIT_SAMPLE_SIZE ( 2 * MONO_16BIT_SAMPLE_SIZE ) #define BLASTER_DefaultSampleRate 11000 #define BLASTER_DefaultMixMode MONO_8BIT #define BLASTER_MaxIrq 15 char *BLASTER_ErrorString( int ErrorNumber ); void BLASTER_EnableInterrupt( void ); void BLASTER_DisableInterrupt( void ); int BLASTER_WriteDSP( unsigned data ); int BLASTER_ReadDSP( void ); int BLASTER_ResetDSP( void ); int BLASTER_GetDSPVersion( void ); void BLASTER_SpeakerOn( void ); void BLASTER_SpeakerOff( void ); void BLASTER_SetPlaybackRate( unsigned rate ); unsigned BLASTER_GetPlaybackRate( void ); int BLASTER_SetMixMode( int mode ); void BLASTER_StopPlayback( void ); int BLASTER_SetupDMABuffer( char *BufferPtr, int BufferSize, int mode ); int BLASTER_GetCurrentPos( void ); int BLASTER_DSP1xx_BeginPlayback( int length ); int BLASTER_DSP2xx_BeginPlayback( int length ); int BLASTER_DSP4xx_BeginPlayback( int length ); int BLASTER_BeginBufferedRecord( char *BufferStart, int BufferSize, int NumDivisions, unsigned SampleRate, int MixMode, void ( *CallBackFunc )( void ) ); int BLASTER_BeginBufferedPlayback( char *BufferStart, int BufferSize, int NumDivisions, unsigned SampleRate, int MixMode, void ( *CallBackFunc )( void ) ); void BLASTER_WriteMixer( int reg, int data ); int BLASTER_ReadMixer( int reg ); int BLASTER_GetVoiceVolume( void ); int BLASTER_SetVoiceVolume( int volume ); int BLASTER_GetMidiVolume( void ); int BLASTER_SetMidiVolume( int volume ); int BLASTER_CardHasMixer( void ); void BLASTER_SaveVoiceVolume( void ); void BLASTER_RestoreVoiceVolume( void ); void BLASTER_SaveMidiVolume( void ); void BLASTER_RestoreMidiVolume( void ); int BLASTER_GetEnv( BLASTER_CONFIG *Config ); int BLASTER_SetCardSettings( BLASTER_CONFIG Config ); int BLASTER_GetCardSettings( BLASTER_CONFIG *Config ); int BLASTER_GetCardInfo( int *MaxSampleBits, int *MaxChannels ); void BLASTER_SetCallBack( void ( *func )( void ) ); void BLASTER_SetupWaveBlaster( void ); void BLASTER_ShutdownWaveBlaster( void ); int BLASTER_Init( void ); void BLASTER_Shutdown( void ); void BLASTER_UnlockMemory( void ); int BLASTER_LockMemory( void ); #endif