289 lines
12 KiB
QBasic
289 lines
12 KiB
QBasic
Attribute VB_Name = "Audio"
|
|
'
|
|
' $Id: audio.h 1.17 1996/09/25 17:13:02 chasan released $
|
|
'
|
|
' SEAL Synthetic Audio Library API Interface
|
|
'
|
|
' Copyright (C) 1995, 1996, 1997, 1998, 1999 Carlos Hasan
|
|
'
|
|
' This program is free software; you can redistribute it and/or modify
|
|
' it under the terms of the GNU Lesser General Public License as published
|
|
' by the Free Software Foundation; either version 2 of the License, or
|
|
' (at your option) any later version.
|
|
'
|
|
' MICROSOFT VISUAL BASIC INTERFACE FOR WINDOWS 95/NT
|
|
'
|
|
|
|
Option Explicit
|
|
|
|
' audio system version number
|
|
Public Const AUDIO_SYSTEM_VERSION = &H101
|
|
|
|
' audio capabilities bit fields definitions
|
|
Public Const AUDIO_FORMAT_1M08 = &H1
|
|
Public Const AUDIO_FORMAT_1S08 = &H2
|
|
Public Const AUDIO_FORMAT_1M16 = &H4
|
|
Public Const AUDIO_FORMAT_1S16 = &H8
|
|
Public Const AUDIO_FORMAT_2M08 = &H10
|
|
Public Const AUDIO_FORMAT_2S08 = &H20
|
|
Public Const AUDIO_FORMAT_2M16 = &H40
|
|
Public Const AUDIO_FORMAT_2S16 = &H80
|
|
Public Const AUDIO_FORMAT_4M08 = &H100
|
|
Public Const AUDIO_FORMAT_4S08 = &H200
|
|
Public Const AUDIO_FORMAT_4M16 = &H400
|
|
Public Const AUDIO_FORMAT_4S16 = &H800
|
|
|
|
' audio format bit fields defines for devices and waveforms
|
|
Public Const AUDIO_FORMAT_8BITS = &H0
|
|
Public Const AUDIO_FORMAT_16BITS = &H1
|
|
Public Const AUDIO_FORMAT_LOOP = &H10
|
|
Public Const AUDIO_FORMAT_BIDILOOP = &H20
|
|
Public Const AUDIO_FORMAT_REVERSE = &H80
|
|
Public Const AUDIO_FORMAT_MONO = &H0
|
|
Public Const AUDIO_FORMAT_STEREO = &H100
|
|
Public Const AUDIO_FORMAT_FILTER = &H8000
|
|
|
|
' audio resource limits defines
|
|
Public Const AUDIO_MAX_VOICES = 32
|
|
Public Const AUDIO_MAX_SAMPLES = 16
|
|
Public Const AUDIO_MAX_PATCHES = 128
|
|
Public Const AUDIO_MAX_PATTERNS = 256
|
|
Public Const AUDIO_MAX_ORDERS = 256
|
|
Public Const AUDIO_MAX_NOTES = 96
|
|
Public Const AUDIO_MAX_POINTS = 12
|
|
Public Const AUDIO_MIN_PERIOD = 1
|
|
Public Const AUDIO_MAX_PERIOD = 31999
|
|
Public Const AUDIO_MIN_VOLUME = 0
|
|
Public Const AUDIO_MAX_VOLUME = 64
|
|
Public Const AUDIO_MIN_PANNING = 0
|
|
Public Const AUDIO_MAX_PANNING = 255
|
|
Public Const AUDIO_MIN_POSITION = 0
|
|
Public Const AUDIO_MAX_POSITION = 1048576
|
|
Public Const AUDIO_MIN_FREQUENCY = 512
|
|
Public Const AUDIO_MAX_FREQUENCY = 524288
|
|
|
|
' audio error code defines
|
|
Public Const AUDIO_ERROR_NONE = 0
|
|
Public Const AUDIO_ERROR_INVALHANDLE = 1
|
|
Public Const AUDIO_ERROR_INVALPARAM = 2
|
|
Public Const AUDIO_ERROR_NOTSUPPORTED = 3
|
|
Public Const AUDIO_ERROR_BADDEVICEID = 4
|
|
Public Const AUDIO_ERROR_NODEVICE = 5
|
|
Public Const AUDIO_ERROR_DEVICEBUSY = 6
|
|
Public Const AUDIO_ERROR_BADFORMAT = 7
|
|
Public Const AUDIO_ERROR_NOMEMORY = 8
|
|
Public Const AUDIO_ERROR_NODRAMMEMORY = 9
|
|
Public Const AUDIO_ERROR_FILENOTFOUND = 10
|
|
Public Const AUDIO_ERROR_BADFILEFORMAT = 11
|
|
Public Const AUDIO_LAST_ERROR = 11
|
|
|
|
' audio device identifiers
|
|
Public Const AUDIO_DEVICE_NONE = 0
|
|
Public Const AUDIO_DEVICE_MAPPER = 65535
|
|
|
|
' audio product identifiers
|
|
Public Const AUDIO_PRODUCT_NONE = 0
|
|
Public Const AUDIO_PRODUCT_SB = 1
|
|
Public Const AUDIO_PRODUCT_SB15 = 2
|
|
Public Const AUDIO_PRODUCT_SB20 = 3
|
|
Public Const AUDIO_PRODUCT_SBPRO = 4
|
|
Public Const AUDIO_PRODUCT_SB16 = 5
|
|
Public Const AUDIO_PRODUCT_AWE32 = 6
|
|
Public Const AUDIO_PRODUCT_WSS = 7
|
|
Public Const AUDIO_PRODUCT_ESS = 8
|
|
Public Const AUDIO_PRODUCT_GUS = 9
|
|
Public Const AUDIO_PRODUCT_GUSDB = 10
|
|
Public Const AUDIO_PRODUCT_GUSMAX = 11
|
|
Public Const AUDIO_PRODUCT_IWAVE = 12
|
|
Public Const AUDIO_PRODUCT_PAS = 13
|
|
Public Const AUDIO_PRODUCT_PAS16 = 14
|
|
Public Const AUDIO_PRODUCT_ARIA = 15
|
|
Public Const AUDIO_PRODUCT_WINDOWS = 256
|
|
Public Const AUDIO_PRODUCT_LINUX = 257
|
|
Public Const AUDIO_PRODUCT_SPARC = 258
|
|
Public Const AUDIO_PRODUCT_SGI = 259
|
|
Public Const AUDIO_PRODUCT_DSOUND = 260
|
|
|
|
' audio envelope bit fields
|
|
Public Const AUDIO_ENVELOPE_ON = &H1
|
|
Public Const AUDIO_ENVELOPE_SUSTAIN = &H2
|
|
Public Const AUDIO_ENVELOPE_LOOP = &H4
|
|
|
|
' audio pattern bit fields
|
|
Public Const AUDIO_PATTERN_PACKED = &H80
|
|
Public Const AUDIO_PATTERN_NOTE = &H1
|
|
Public Const AUDIO_PATTERN_SAMPLE = &H2
|
|
Public Const AUDIO_PATTERN_VOLUME = &H4
|
|
Public Const AUDIO_PATTERN_COMMAND = &H8
|
|
Public Const AUDIO_PATTERN_PARAMS = &H10
|
|
|
|
' audio module bit fields
|
|
Public Const AUDIO_MODULE_AMIGA = &H0
|
|
Public Const AUDIO_MODULE_LINEAR = &H1
|
|
Public Const AUDIO_MODULE_PANNING = &H8000
|
|
|
|
' FIXME: structures should be byte aligned
|
|
|
|
' audio capabilities structure
|
|
Public Type AudioCaps
|
|
wProductId As Integer ' product identifier
|
|
szProductName As String * 30 ' product name
|
|
dwFormats As Long ' formats supported
|
|
End Type
|
|
|
|
|
|
' audio format structure
|
|
Public Type AudioInfo
|
|
nDeviceId As Long ' device identifier
|
|
wFormat As Integer ' playback format
|
|
nSampleRate As Integer ' sampling frequency
|
|
End Type
|
|
|
|
' audio waveform structure
|
|
Public Type AudioWave
|
|
lpData As Long ' data pointer
|
|
dwHandle As Long ' waveform handle
|
|
dwLength As Long ' waveform length
|
|
dwLoopStart As Long ' loop start point
|
|
dwLoopEnd As Long ' loop end point
|
|
nSampleRate As Integer ' sampling rate
|
|
wFormat As Integer ' format bits
|
|
End Type
|
|
|
|
|
|
' audio envelope point structure
|
|
Public Type AudioPoint
|
|
nFrame As Integer ' envelope frame
|
|
nValue As Integer ' envelope value
|
|
End Type
|
|
|
|
' audio envelope structure
|
|
Public Type AudioEnvelope
|
|
aEnvelope(0 To 11) As AudioPoint ' envelope points
|
|
nPoints As Byte ' number of points
|
|
nSustain As Byte ' sustain point
|
|
nLoopStart As Byte ' loop start point
|
|
nLoopEnd As Byte ' loop end point
|
|
wFlags As Integer ' envelope flags
|
|
nSpeed As Integer ' envelope speed
|
|
End Type
|
|
|
|
' audio sample structure
|
|
Public Type AudioSample
|
|
szSampleName As String * 32 ' sample name
|
|
nVolume As Byte ' default volume
|
|
nPanning As Byte ' default panning
|
|
nRelativeNote As Byte ' relative note
|
|
nFinetune As Byte ' finetune
|
|
Wave As AudioWave ' waveform handle
|
|
End Type
|
|
|
|
' audio patch structure
|
|
Public Type AudioPatch
|
|
szPatchName As String * 32 ' patch name
|
|
aSampleNumber(0 To 95) As Byte ' multi-sample table
|
|
nSamples As Integer ' number of samples
|
|
nVibratoType As Byte ' vibrato type
|
|
nVibratoSweep As Byte ' vibrato sweep
|
|
nVibratoDepth As Byte ' vibrato depth
|
|
nVibratoRate As Byte ' vibrato rate
|
|
nVolumeFadeout As Integer ' volume fadeout
|
|
Volume As AudioEnvelope ' volume envelope
|
|
Panning As AudioEnvelope ' panning envelope
|
|
aSampleTable As Long ' sample table (pointer)
|
|
End Type
|
|
|
|
' audio pattern structure
|
|
Public Type AudioPattern
|
|
nPacking As Integer ' packing type
|
|
nTracks As Integer ' number of tracks
|
|
nRows As Integer ' number of rows
|
|
nSize As Integer ' data size
|
|
lpData As Long ' data pointer
|
|
End Type
|
|
|
|
' audio module structure
|
|
Public Type AudioModule
|
|
szModuleName As String * 32 ' module name
|
|
wFlags As Integer ' module flags
|
|
nOrders As Integer ' number of orders
|
|
nRestart As Integer ' restart position
|
|
nTracks As Integer ' number of tracks
|
|
nPatterns As Integer ' number of patterns
|
|
nPatches As Integer ' number of patches
|
|
nTempo As Integer ' initial tempo
|
|
nBPM As Integer ' initial BPM
|
|
aOrderTable(0 To 255) As Byte ' order table
|
|
aPanningTable(0 To 31) As Byte ' panning table
|
|
aPatternTable As Long ' pattern table (pointer)
|
|
aPatchTable As Long ' patch table (pointer)
|
|
End Type
|
|
|
|
' FIXME: how do I define callback functions?
|
|
'typedef VOID (AIAPI* LPFNAUDIOWAVE)(LPBYTE, UINT);
|
|
'typedef VOID (AIAPI* LPFNAUDIOTIMER)(VOID);
|
|
'typedef VOID (AIAPI* LPFNAUDIOCALLBACK)(BYTE, UINT, UINT);
|
|
|
|
' audio interface API prototypes
|
|
Public Declare Function AInitialize Lib "AudioW32" () As Long
|
|
Public Declare Function AGetVersion Lib "AudioW32" () As Long
|
|
Public Declare Function AGetAudioNumDevs Lib "AudioW32" () As Long
|
|
Public Declare Function AGetAudioDevCaps Lib "AudioW32" (ByVal nDeviceId As Long, ByRef lpCaps As AudioCaps) As Long
|
|
Public Declare Function AGetErrorText Lib "AudioW32" (ByVal nErrorCode As Long, ByVal lpszText As String, ByVal nSize As Long) As Long
|
|
|
|
Public Declare Function APingAudio Lib "AudioW32" (ByRef lpnDeviceId As Long) As Long
|
|
Public Declare Function AOpenAudio Lib "AudioW32" (ByRef lpInfo As AudioInfo) As Long
|
|
Public Declare Function ACloseAudio Lib "AudioW32" () As Long
|
|
Public Declare Function AUpdateAudio Lib "AudioW32" () As Long
|
|
|
|
Public Declare Function AOpenVoices Lib "AudioW32" (ByVal nVoices As Long) As Long
|
|
Public Declare Function ACloseVoices Lib "AudioW32" () As Long
|
|
|
|
Public Declare Function ASetAudioCallback Lib "AudioW32" (ByVal lpfnAudioWave As Long) As Long
|
|
Public Declare Function ASetAudioTimerProc Lib "AudioW32" (ByVal lpfnAudioTimer As Long) As Long
|
|
Public Declare Function ASetAudioTimerRate Lib "AudioW32" (ByVal nTimerRate As Long) As Long
|
|
|
|
Public Declare Function AGetAudioDataAvail Lib "AudioW32" () As Long
|
|
Public Declare Function ACreateAudioData Lib "AudioW32" (ByRef lpWave As AudioWave) As Long
|
|
Public Declare Function ADestroyAudioData Lib "AudioW32" (ByRef lpWave As AudioWave) As Long
|
|
Public Declare Function AWriteAudioData Lib "AudioW32" (ByRef lpWave As AudioWave, ByVal dwOffset As Long, ByVal nCount As Long) As Long
|
|
|
|
Public Declare Function ACreateAudioVoice Lib "AudioW32" (ByRef lphVoice As Long) As Long
|
|
Public Declare Function ADestroyAudioVoice Lib "AudioW32" (ByVal hVoice As Long) As Long
|
|
|
|
Public Declare Function APlayVoice Lib "AudioW32" (ByVal hVoice As Long, ByVal lpWave As Long) As Long
|
|
Public Declare Function APrimeVoice Lib "AudioW32" (ByVal hVoice As Long, ByVal lpWave As Long) As Long
|
|
Public Declare Function AStartVoice Lib "AudioW32" (ByVal hVoice As Long) As Long
|
|
Public Declare Function AStopVoice Lib "AudioW32" (ByVal hVoice As Long) As Long
|
|
|
|
Public Declare Function ASetVoicePosition Lib "AudioW32" (ByVal hVoice As Long, ByVal dwPosition As Long) As Long
|
|
Public Declare Function ASetVoiceFrequency Lib "AudioW32" (ByVal hVoice As Long, ByVal dwFrequency As Long) As Long
|
|
Public Declare Function ASetVoiceVolume Lib "AudioW32" (ByVal hVoice As Long, ByVal nVolume As Long) As Long
|
|
Public Declare Function ASetVoicePanning Lib "AudioW32" (ByVal hVoice As Long, ByVal nPanning As Long) As Long
|
|
|
|
Public Declare Function AGetVoicePosition Lib "AudioW32" (ByVal hVoice As Long, ByRef lpdwPosition As Long) As Long
|
|
Public Declare Function AGetVoiceFrequency Lib "AudioW32" (ByVal hVoice As Long, ByRef lpdwFrequency As Long) As Long
|
|
Public Declare Function AGetVoiceVolume Lib "AudioW32" (ByVal hVoice As Long, ByRef lpnVolume As Long) As Long
|
|
Public Declare Function AGetVoicePanning Lib "AudioW32" (ByVal hVoice As Long, ByRef lpnPanning As Long) As Long
|
|
Public Declare Function AGetVoiceStatus Lib "AudioW32" (ByVal hVoice As Long, ByRef lpnStatus As Long) As Long
|
|
|
|
Public Declare Function APlayModule Lib "AudioW32" (ByVal lpModule As Long) As Long
|
|
Public Declare Function AStopModule Lib "AudioW32" () As Long
|
|
Public Declare Function APauseModule Lib "AudioW32" () As Long
|
|
Public Declare Function AResumeModule Lib "AudioW32" () As Long
|
|
Public Declare Function ASetModuleVolume Lib "AudioW32" (ByVal nVolume As Long) As Long
|
|
Public Declare Function ASetModulePosition Lib "AudioW32" (ByVal nOrder As Long, ByVal nRow As Long) As Long
|
|
Public Declare Function AGetModuleVolume Lib "AudioW32" (ByVal lpnVolume As Long) As Long
|
|
Public Declare Function AGetModulePosition Lib "AudioW32" (ByRef pnOrder As Long, ByRef lpnRow As Long) As Long
|
|
Public Declare Function AGetModuleStatus Lib "AudioW32" (ByRef lpnStatus As Long) As Long
|
|
Public Declare Function ASetModuleCallback Lib "AudioW32" (ByVal lpfnAudioCallback As Long) As Long
|
|
|
|
' FIXME: how do I define pointers to AudioModule and AudioWave?
|
|
|
|
Public Declare Function ALoadModuleFile Lib "AudioW32" (ByVal lpszFileName As String, ByRef lplpModule As Long, ByVal dwFileOffset As Long) As Long
|
|
Public Declare Function AFreeModuleFile Lib "AudioW32" (ByVal lpModule As Long) As Long
|
|
|
|
Public Declare Function ALoadWaveFile Lib "AudioW32" (ByVal lpszFileName As String, ByRef lplpWave As Long, ByVal dwFileOffset As Long) As Long
|
|
Public Declare Function AFreeWaveFile Lib "AudioW32" (ByVal lpWave As Long) As Long
|
|
|