Interrups | Categories | Contents |
AX = 4F13h BX = 0002h CX = handle DX = query 0001h return length of GeneralDeviceClass 0002h return copy of GeneralDeviceClass (see #00112) 0003h return length of Volume Info Structure 0004h return copy of Volume Info Structure (see #00122) 0005h return length of Volume Services Structure 0006h return copy of Volume Services Structure (see #00124) 0007h-000Fh reserved 0010h-FFFFh device-specific SI:DI -> buffer (functions 0002h,0004h,0006h)
Return:
AL = 4Fh if function supported AH = status 00h successful SI:DI = length (functions 1,3,5) SI:DI buffer filled (functions 2,4,6) 01h failed
Note: Functions 0003h to 0006h are only supported for the Volume device
Format of GeneralDeviceClass structure: Offset Size Description (Table 00112) 00h 4 BYTEs name of the structure ("GENI") 04h DWORD structure length 08h WORD type of device (1=Wave, 2=MIDI) 0Ah WORD version of VESA driver support (0100h for 1.00) 10h var for CX=handle for Wave device: Wave Info structure (see #00113) some bytes ??? for CX=handle for MIDI device: MIDI Info Structure (see #00118) first 8 bytes of MIDI Service Structure ???
See Also: #00122 - #00124
Format of WAVE Info Structure: Offset Size Description (Table 00113) 00h 4 BYTEs name of the structure ("WAVI") 04h DWORD structure length [0000007Eh] 08h DWORD driver software version [00000003h] 0Ch 32 BYTEs vendor name, etc. (ASCIZ string) 2Ch 32 BYTEs vendor product name 4Ch 32 BYTEs vendor chip/hardware description 6Ch BYTE installed board number 6Dh 3 BYTEs unused data 70h DWORD feature bits (see #00114) 74h WORD user determined preference field 76h WORD memory required for driver use [0200h] 78h WORD number of timer tick callbacks per second [0000h]
7Ah WORD channels:
1 = mono, 2 = stereo stereo is assumed to be interleaved data 7Ch WORD bitfield of max sample sizes (see #00115)
See Also: #00118
Bitfields for Wave feature bits: Bit(s) Description (Table 00114) 0 8000hz Mono Playback 1 8000hz Mono Record 2 8000hz Stereo Record 3 8000hz Stereo Playback 4 8000hz Full Duplex Play/Record 5 11025hz Mono Playback 6 11025hz Mono Record 7 11025hz Stereo Record 8 11025hz Stereo Playback 9 11025hz Full Duplex Play/Record 10 22050hz Mono Playback 11 22050hz Mono Record 12 22050hz Stereo Record 13 22050hz Stereo Playback 14 22050hz Full Duplex Play/Record 15 44100hz Mono Playback 16 44100hz Mono Record 17 44100hz Stereo Record 18 44100hz Stereo Playback 19 44100hz Full Duplex Play/Record 20-26 reserved (0) 27 driver must pre-handle the data 28 Variable Sample mono playback 29 Variable Sample stereo playback 30 Variable Sample mono record 31 Variable Sample stereo record
(Table 00115) Values for Sample data size: 01h 8bit play 02h 16bit play 10h 8bit record 20h 16bit record
Format of WAVE Audio Services structure: Offset Size Description (Table 00116) 00h 4 BYTEs name of the structure 04h DWORD structure length 08h 16 BYTEs for future expansion ---entry points (details???)--- 18h DWORD DeviceCheck 11h compression (see also #00117) 12h driver state 13h get current pos 14h sample rate 15h set preference 16h get DMA,IRQ 17h get IO address 18h get mem address 19h get mem free 1Ah full duplex 1Bh get block size 1Ch get PCM format 1Dh enable PCM format 80h-.. vendors can add DevChks above 0x80 1Ch DWORD PCMInfo 20h DWORD PlayBlock 24h DWORD PlayCont 28h DWORD RecordBlock 2Ch DWORD RecordCont 30h DWORD PauseIO 34h DWORD ResumeIO 38h DWORD StopIO 3Ch DWORD WavePrepare 40h DWORD WaveRegister 44h DWORD GetLastError 01h unsupported feature/function 02h bad sample rate 03h bad block length 04h bad block address 05h app. missed an IRQ 06h don't understand the PCM size/format 80h-.. vendors specific errors 48h DWORD TimerTick
4Ch DWORD ApplPSyncCB:
CallBack: play filled in by the app50h DWORD ApplRSyncCB:
CallBack: rec filled in by the app
See Also: #00120 - #00124
(Table 00117) Values for type of compression: 01h IMA play 02h ALAW play 03h ULAW play 11h IMA record 12h ALAW record 13h ULAW record
Format of MIDI Info Structure: Offset Size Description (Table 00118) 00h 4 BYTEs name of the structure ("MIDI") 04h DWORD structure length 08h DWORD driver software version [00000003h] 0Ch 32 BYTEs vendor name, etc. (ASCIZ string) 2Ch 32 BYTEs vendor product name 4Ch 32 BYTEs vendor chip/hardware description 6Ch BYTE installed board number 6Dh 3 BYTEs unused data 70h 14 BYTEs the patch library file name [OPL2.BNK 00..] 7Eh DWORD feature bits (see #00119) 80h WORD user determined preference field 82h WORD memory required for driver use 84h WORD # of timer tick callbacks per second 86h WORD max # of tones (voices, partials)
See Also: #00112 - #00120 - #00122
Bitfields for MIDI feature bits: Bit(s) Description (Table 00119) 0-3 reserved for GM extensions 4 Transmitter/Receiver only 5 Patches preloaded 6 MIDI receive has time stamp 8 MIDI interrupt driven input supported 9 MIDI polled input supported 10 MIDI remote patches supported
Format of MIDI Service structure: Offset Size Description (Table 00120) 00h 4 BYTEs name of the structure ("MIDS") 04h DWORD structure length 08h 16 WORDs patches loaded table bit field 28h 16 BYTEs for future expansion ---entry points (details???)--- 38h DWORD device check 11h return available tones 12h return TRUE/FALSE if patch is understood 13h set preference 14h allow/disallow voice stealing 15h get FIFO sizes 16h get DMA,IRQ 17h get IO address 18h get mem address 19h get mem free 80h-.. vendors can add DevChks above 0x80 3Ch DWORD global reset 40h DWORD MIDI msg 44h DWORD poll MIDI 48h DWORD preload patch 4Ch DWORD unload patch 50h DWORD timer tick 54h DWORD get last error 01h unsupported feature/function 02h unknown patch type (see #00121) 03h all tones are used 04h messages are out of sync 05h an incoming patch was incomplete 06h an incoming patch couldn't be stored 07h had to drop an incoming byte 08h driver is failing a patch download 80h-.. vendors specific errors 58h DWORD Patch Block free callback 5Ch DWORD MIDI byte avail. callback
See Also: #00116 - #00124
(Table 00121) Values for MIDI Registered Patch Types: 10h OPL2 11h OPL3
Format of Volume Info Structure: Offset Size Description (Table 00122) 00h 4 BYTEs name of the structure ("VOLI") 04h DWORD structure length (00000092h) 08h DWORD driver software version [00000001h] 0Ch 32 BYTEs vendor name, etc. (ASCIZ string) 2Ch 32 BYTEs vendor product name 4Ch 32 BYTEs vendor chip/hardware description 6Ch BYTE installed board number (0 for 1st/only board) 6Dh 3 BYTEs unused data (0) 70h 24 BYTEs text name of the mixer channel 88h DWORD features bits (see #00123) 8Ch WORD minimum volume setting 8Eh WORD maximum volume setting 90h WORD attenuation/gain crossover
See Also: #00112 - #00124
Bitfields for Volume feature bits: Bit(s) Description (Table 00123) 0 Stereo Volume control available 2 Low Pass Filter is available 3 High Pass Filter is available 4 Parametric Tone Control is available 5 selectable output paths 8 Azimuth Field positioning supported 9 Phi Field positioning supported 10-30 unused??? 31 Master Volume device
Format of Volume Services Structure: Offset Size Description (Table 00124) 00h 4 BYTEs name of the structure ("VOLS") 04h DWORD structure length (00000038h) 08h 16 BYTEs 16 bytes for future expansion (0) ---entry points (details???)--- 18h DWORD device check 0011h filter range 0012h filter setting 0013h filter current 0014h tone range 0015h tone setting 0016h tone current 0017h path 0018h get IO address 0080h-.. vendors can add DevChks above 0x80 1Ch DWORD set vol to an absolute setting 01h User master volume setting 02h application master volume setting 20h DWORD set 3D volume 24h DWORD tone control 28h DWORD filter control 2Ch DWORD output path 30h DWORD reset channel 34h DWORD get last error 01h unsupported feature/function 02h out of range parameter value 80h+ vendor-specific errors
See Also: #00116 - #00120
Category: Sound/Speech - Int 10h - V
Interrups | Categories | Contents |