MODULE WinMM ["WINMM.dll"];
(**
	project	= "BlackBox"
	organization	= "www.oberon.ch"
	contributors	= "Oberon microsystems"
	version	= "System/Rsrc/About"
	copyright	= "System/Rsrc/About"
	license	= "Docu/BB-License"
	changes	= "
	- YYYYMMDD, nn, ...
	"
	issues	= "
	- ...
	"

**)

	IMPORT WinApi;

	CONST (* macros *)
		MAXPNAMELEN* = 32;
		MAXERRORLENGTH* = 256;
		MAX_JOYSTICKOEMVXDNAME* = 260;
		TIME_MS* = {0};
		TIME_SAMPLES* = {1};
		TIME_BYTES* = {2};
		TIME_SMPTE* = {3};
		TIME_MIDI* = {4};
		TIME_TICKS* = {5};
		MM_JOY1MOVE* = 928;
		MM_JOY2MOVE* = 929;
		MM_JOY1ZMOVE* = 930;
		MM_JOY2ZMOVE* = 931;
		MM_JOY1BUTTONDOWN* = 949;
		MM_JOY2BUTTONDOWN* = 950;
		MM_JOY1BUTTONUP* = 951;
		MM_JOY2BUTTONUP* = 952;
		MM_MCINOTIFY* = 953;
		MM_WOM_OPEN* = 955;
		MM_WOM_CLOSE* = 956;
		MM_WOM_DONE* = 957;
		MM_WIM_OPEN* = 958;
		MM_WIM_CLOSE* = 959;
		MM_WIM_DATA* = 960;
		MM_MIM_OPEN* = 961;
		MM_MIM_CLOSE* = 962;
		MM_MIM_DATA* = 963;
		MM_MIM_LONGDATA* = 964;
		MM_MIM_ERROR* = 965;
		MM_MIM_LONGERROR* = 966;
		MM_MOM_OPEN* = 967;
		MM_MOM_CLOSE* = 968;
		MM_MOM_DONE* = 969;
		MM_DRVM_OPEN* = 976;
		MM_DRVM_CLOSE* = 977;
		MM_DRVM_DATA* = 978;
		MM_DRVM_ERROR* = 979;
		MM_STREAM_OPEN* = 980;
		MM_STREAM_CLOSE* = 981;
		MM_STREAM_DONE* = 982;
		MM_STREAM_ERROR* = 983;
		MM_MOM_POSITIONCB* = 970;
		MM_MCISIGNAL* = 971;
		MM_MIM_MOREDATA* = 972;
		MM_MIXM_LINE_CHANGE* = 976;
		MM_MIXM_CONTROL_CHANGE* = 977;
		MMSYSERR_BASE* = 0;
		WAVERR_BASE* = 32;
		MIDIERR_BASE* = 64;
		TIMERR_BASE* = 96;
		JOYERR_BASE* = 160;
		MCIERR_BASE* = 256;
		MIXERR_BASE* = 1024;
		MCI_STRING_OFFSET* = 512;
		MCI_VD_OFFSET* = 1024;
		MCI_CD_OFFSET* = 1088;
		MCI_WAVE_OFFSET* = 1152;
		MCI_SEQ_OFFSET* = 1216;
		MMSYSERR_NOERROR* = 0;
		MMSYSERR_ERROR* = 1;
		MMSYSERR_BADDEVICEID* = 2;
		MMSYSERR_NOTENABLED* = 3;
		MMSYSERR_ALLOCATED* = 4;
		MMSYSERR_INVALHANDLE* = 5;
		MMSYSERR_NODRIVER* = 6;
		MMSYSERR_NOMEM* = 7;
		MMSYSERR_NOTSUPPORTED* = 8;
		MMSYSERR_BADERRNUM* = 9;
		MMSYSERR_INVALFLAG* = 10;
		MMSYSERR_INVALPARAM* = 11;
		MMSYSERR_HANDLEBUSY* = 12;
		MMSYSERR_INVALIDALIAS* = 13;
		MMSYSERR_BADDB* = 14;
		MMSYSERR_KEYNOTFOUND* = 15;
		MMSYSERR_READERROR* = 16;
		MMSYSERR_WRITEERROR* = 17;
		MMSYSERR_DELETEERROR* = 18;
		MMSYSERR_VALNOTFOUND* = 19;
		MMSYSERR_NODRIVERCB* = 20;
		MMSYSERR_LASTERROR* = 20;
		DRV_LOAD* = 1;
		DRV_ENABLE* = 2;
		DRV_OPEN* = 3;
		DRV_CLOSE* = 4;
		DRV_DISABLE* = 5;
		DRV_FREE* = 6;
		DRV_CONFIGURE* = 7;
		DRV_QUERYCONFIGURE* = 8;
		DRV_INSTALL* = 9;
		DRV_REMOVE* = 10;
		DRV_EXITSESSION* = 11;
		DRV_POWER* = 15;
		DRV_RESERVED* = 2048;
		DRV_USER* = 16384;
		DRVCNF_CANCEL* = 0;
		DRVCNF_OK* = 1;
		DRVCNF_RESTART* = 2;
		DRV_CANCEL* = 0;
		DRV_OK* = 1;
		DRV_RESTART* = 2;
		DRV_MCI_FIRST* = 2048;
		DRV_MCI_LAST* = 6143;
		CALLBACK_TYPEMASK* = 458752;
		CALLBACK_NULL* = 0;
		CALLBACK_WINDOW* = 65536;
		CALLBACK_TASK* = 131072;
		CALLBACK_FUNCTION* = 196608;
		CALLBACK_THREAD* = 131072;
		CALLBACK_EVENT* = 327680;
		SND_SYNC* = 0;
		SND_ASYNC* = 1;
		SND_NODEFAULT* = 2;
		SND_MEMORY* = 4;
		SND_LOOP* = 8;
		SND_NOSTOP* = 16;
		SND_NOWAIT* = 8192;
		SND_ALIAS* = 65536;
		SND_ALIAS_ID* = 1114112;
		SND_FILENAME* = 131072;
		SND_RESOURCE* = 262148;
		SND_PURGE* = 64;
		SND_APPLICATION* = 128;
		SND_ALIAS_START* = 0;
		SND_ALIAS_SYSTEMASTERISK* = 10835;
		SND_ALIAS_SYSTEMQUESTION* = 16211;
		SND_ALIAS_SYSTEMHAND* = 18515;
		SND_ALIAS_SYSTEMEXIT* = 17747;
		SND_ALIAS_SYSTEMSTART* = 21331;
		SND_ALIAS_SYSTEMWELCOME* = 22355;
		SND_ALIAS_SYSTEMEXCLAMATION* = 8531;
		SND_ALIAS_SYSTEMDEFAULT* = 17491;
		WAVERR_BADFORMAT* = 32;
		WAVERR_STILLPLAYING* = 33;
		WAVERR_UNPREPARED* = 34;
		WAVERR_SYNC* = 35;
		WAVERR_LASTERROR* = 35;
		WOM_OPEN* = 955;
		WOM_CLOSE* = 956;
		WOM_DONE* = 957;
		WIM_OPEN* = 958;
		WIM_CLOSE* = 959;
		WIM_DATA* = 960;
		WAVE_MAPPER* = -1;
		WAVE_FORMAT_QUERY* = 1;
		WAVE_ALLOWSYNC* = 2;
		WAVE_MAPPED* = 4;
		WAVE_FORMAT_DIRECT* = 8;
		WAVE_FORMAT_DIRECT_QUERY* = 9;
		WHDR_DONE* = 1;
		WHDR_PREPARED* = 2;
		WHDR_BEGINLOOP* = 4;
		WHDR_ENDLOOP* = 8;
		WHDR_INQUEUE* = 16;
		WAVECAPS_PITCH* = 1;
		WAVECAPS_PLAYBACKRATE* = 2;
		WAVECAPS_VOLUME* = 4;
		WAVECAPS_LRVOLUME* = 8;
		WAVECAPS_SYNC* = 16;
		WAVECAPS_SAMPLEACCURATE* = 32;
		WAVECAPS_DIRECTSOUND* = 64;
		WAVE_INVALIDFORMAT* = 0;
		WAVE_FORMAT_1M08* = 1;
		WAVE_FORMAT_1S08* = 2;
		WAVE_FORMAT_1M16* = 4;
		WAVE_FORMAT_1S16* = 8;
		WAVE_FORMAT_2M08* = 16;
		WAVE_FORMAT_2S08* = 32;
		WAVE_FORMAT_2M16* = 64;
		WAVE_FORMAT_2S16* = 128;
		WAVE_FORMAT_4M08* = 256;
		WAVE_FORMAT_4S08* = 512;
		WAVE_FORMAT_4M16* = 1024;
		WAVE_FORMAT_4S16* = 2048;
		WAVE_FORMAT_PCM* = 1;
		MIDIERR_UNPREPARED* = 64;
		MIDIERR_STILLPLAYING* = 65;
		MIDIERR_NOMAP* = 66;
		MIDIERR_NOTREADY* = 67;
		MIDIERR_NODEVICE* = 68;
		MIDIERR_INVALIDSETUP* = 69;
		MIDIERR_BADOPENMODE* = 70;
		MIDIERR_DONT_CONTINUE* = 71;
		MIDIERR_LASTERROR* = 71;
		MIDIPATCHSIZE* = 128;
		MIM_OPEN* = 961;
		MIM_CLOSE* = 962;
		MIM_DATA* = 963;
		MIM_LONGDATA* = 964;
		MIM_ERROR* = 965;
		MIM_LONGERROR* = 966;
		MOM_OPEN* = 967;
		MOM_CLOSE* = 968;
		MOM_DONE* = 969;
		MIM_MOREDATA* = 972;
		MOM_POSITIONCB* = 970;
		MIDIMAPPER* = -1;
		MIDI_MAPPER* = -1;
		MIDI_IO_STATUS* = 32;
		MIDI_CACHE_ALL* = 1;
		MIDI_CACHE_BESTFIT* = 2;
		MIDI_CACHE_QUERY* = 3;
		MIDI_UNCACHE* = 4;
		MOD_MIDIPORT* = {0};
		MOD_SYNTH* = {1};
		MOD_SQSYNTH* = {0, 1};
		MOD_FMSYNTH* = {2};
		MOD_MAPPER* = {0, 2};
		MIDICAPS_VOLUME* = 1;
		MIDICAPS_LRVOLUME* = 2;
		MIDICAPS_CACHE* = 4;
		MIDICAPS_STREAM* = 8;
		MHDR_DONE* = 1;
		MHDR_PREPARED* = 2;
		MHDR_INQUEUE* = 4;
		MHDR_ISSTRM* = 8;
		MEVT_F_SHORT* = 0;
		MEVT_F_LONG* = 80000000H;
		MEVT_F_CALLBACK* = 1073741824;
		MEVT_SHORTMSG* = 0;
		MEVT_TEMPO* = 1;
		MEVT_NOP* = 2;
		MEVT_LONGMSG* = 128;
		MEVT_COMMENT* = 130;
		MEVT_VERSION* = 132;
		MIDISTRM_ERROR* = -2;
		MIDIPROP_SET* = 80000000H;
		MIDIPROP_GET* = 1073741824;
		MIDIPROP_TIMEDIV* = 1;
		MIDIPROP_TEMPO* = 2;
		AUX_MAPPER* = -1;
		AUXCAPS_CDAUDIO* = 1;
		AUXCAPS_AUXIN* = 2;
		AUXCAPS_VOLUME* = 1;
		AUXCAPS_LRVOLUME* = 2;
		MIXER_SHORT_NAME_CHARS* = 16;
		MIXER_LONG_NAME_CHARS* = 64;
		MIXERR_INVALLINE* = 1024;
		MIXERR_INVALCONTROL* = 1025;
		MIXERR_INVALVALUE* = 1026;
		MIXERR_LASTERROR* = 1026;
		MIXER_OBJECTF_HANDLE* = 80000000H;
		MIXER_OBJECTF_MIXER* = 0;
		MIXER_OBJECTF_HMIXER* = 80000000H;
		MIXER_OBJECTF_WAVEOUT* = 268435456;
		MIXER_OBJECTF_HWAVEOUT* = -1879048192;
		MIXER_OBJECTF_WAVEIN* = 536870912;
		MIXER_OBJECTF_HWAVEIN* = -1610612736;
		MIXER_OBJECTF_MIDIOUT* = 805306368;
		MIXER_OBJECTF_HMIDIOUT* = -1342177280;
		MIXER_OBJECTF_MIDIIN* = 1073741824;
		MIXER_OBJECTF_HMIDIIN* = -1073741824;
		MIXER_OBJECTF_AUX* = 1342177280;
		MIXERLINE_LINEF_ACTIVE* = 1;
		MIXERLINE_LINEF_DISCONNECTED* = 32768;
		MIXERLINE_LINEF_SOURCE* = 80000000H;
		MIXERLINE_COMPONENTTYPE_DST_FIRST* = 0;
		MIXERLINE_COMPONENTTYPE_DST_UNDEFINED* = 0;
		MIXERLINE_COMPONENTTYPE_DST_DIGITAL* = 1;
		MIXERLINE_COMPONENTTYPE_DST_LINE* = 2;
		MIXERLINE_COMPONENTTYPE_DST_MONITOR* = 3;
		MIXERLINE_COMPONENTTYPE_DST_SPEAKERS* = 4;
		MIXERLINE_COMPONENTTYPE_DST_HEADPHONES* = 5;
		MIXERLINE_COMPONENTTYPE_DST_TELEPHONE* = 6;
		MIXERLINE_COMPONENTTYPE_DST_WAVEIN* = 7;
		MIXERLINE_COMPONENTTYPE_DST_VOICEIN* = 8;
		MIXERLINE_COMPONENTTYPE_DST_LAST* = 8;
		MIXERLINE_COMPONENTTYPE_SRC_FIRST* = 4096;
		MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED* = 4096;
		MIXERLINE_COMPONENTTYPE_SRC_DIGITAL* = 4097;
		MIXERLINE_COMPONENTTYPE_SRC_LINE* = 4098;
		MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE* = 4099;
		MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER* = 4100;
		MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC* = 4101;
		MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE* = 4102;
		MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER* = 4103;
		MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT* = 4104;
		MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY* = 4105;
		MIXERLINE_COMPONENTTYPE_SRC_ANALOG* = 4106;
		MIXERLINE_COMPONENTTYPE_SRC_LAST* = 4106;
		MIXERLINE_TARGETTYPE_UNDEFINED* = 0;
		MIXERLINE_TARGETTYPE_WAVEOUT* = 1;
		MIXERLINE_TARGETTYPE_WAVEIN* = 2;
		MIXERLINE_TARGETTYPE_MIDIOUT* = 3;
		MIXERLINE_TARGETTYPE_MIDIIN* = 4;
		MIXERLINE_TARGETTYPE_AUX* = 5;
		MIXER_GETLINEINFOF_DESTINATION* = 0;
		MIXER_GETLINEINFOF_SOURCE* = 1;
		MIXER_GETLINEINFOF_LINEID* = 2;
		MIXER_GETLINEINFOF_COMPONENTTYPE* = 3;
		MIXER_GETLINEINFOF_TARGETTYPE* = 4;
		MIXER_GETLINEINFOF_QUERYMASK* = 15;
		MIXERCONTROL_CONTROLF_UNIFORM* = 1;
		MIXERCONTROL_CONTROLF_MULTIPLE* = 2;
		MIXERCONTROL_CONTROLF_DISABLED* = 80000000H;
		MIXERCONTROL_CT_CLASS_MASK* = -268435456;
		MIXERCONTROL_CT_CLASS_CUSTOM* = 0;
		MIXERCONTROL_CT_CLASS_METER* = 268435456;
		MIXERCONTROL_CT_CLASS_SWITCH* = 536870912;
		MIXERCONTROL_CT_CLASS_NUMBER* = 805306368;
		MIXERCONTROL_CT_CLASS_SLIDER* = 1073741824;
		MIXERCONTROL_CT_CLASS_FADER* = 1342177280;
		MIXERCONTROL_CT_CLASS_TIME* = 1610612736;
		MIXERCONTROL_CT_CLASS_LIST* = 1879048192;
		MIXERCONTROL_CT_SUBCLASS_MASK* = 251658240;
		MIXERCONTROL_CT_SC_SWITCH_BOOLEAN* = 0;
		MIXERCONTROL_CT_SC_SWITCH_BUTTON* = 16777216;
		MIXERCONTROL_CT_SC_METER_POLLED* = 0;
		MIXERCONTROL_CT_SC_TIME_MICROSECS* = 0;
		MIXERCONTROL_CT_SC_TIME_MILLISECS* = 16777216;
		MIXERCONTROL_CT_SC_LIST_SINGLE* = 0;
		MIXERCONTROL_CT_SC_LIST_MULTIPLE* = 16777216;
		MIXERCONTROL_CT_UNITS_MASK* = 16711680;
		MIXERCONTROL_CT_UNITS_CUSTOM* = 0;
		MIXERCONTROL_CT_UNITS_BOOLEAN* = 65536;
		MIXERCONTROL_CT_UNITS_SIGNED* = 131072;
		MIXERCONTROL_CT_UNITS_UNSIGNED* = 196608;
		MIXERCONTROL_CT_UNITS_DECIBELS* = 262144;
		MIXERCONTROL_CT_UNITS_PERCENT* = 327680;
		MIXERCONTROL_CONTROLTYPE_CUSTOM* = 0;
		MIXERCONTROL_CONTROLTYPE_BOOLEANMETER* = 268500992;
		MIXERCONTROL_CONTROLTYPE_SIGNEDMETER* = 268566528;
		MIXERCONTROL_CONTROLTYPE_PEAKMETER* = 268566529;
		MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER* = 268632064;
		MIXERCONTROL_CONTROLTYPE_BOOLEAN* = 536936448;
		MIXERCONTROL_CONTROLTYPE_ONOFF* = 536936449;
		MIXERCONTROL_CONTROLTYPE_MUTE* = 536936450;
		MIXERCONTROL_CONTROLTYPE_MONO* = 536936451;
		MIXERCONTROL_CONTROLTYPE_LOUDNESS* = 536936452;
		MIXERCONTROL_CONTROLTYPE_STEREOENH* = 536936453;
		MIXERCONTROL_CONTROLTYPE_BUTTON* = 553713664;
		MIXERCONTROL_CONTROLTYPE_DECIBELS* = 805568512;
		MIXERCONTROL_CONTROLTYPE_SIGNED* = 805437440;
		MIXERCONTROL_CONTROLTYPE_UNSIGNED* = 805502976;
		MIXERCONTROL_CONTROLTYPE_PERCENT* = 805634048;
		MIXERCONTROL_CONTROLTYPE_SLIDER* = 1073872896;
		MIXERCONTROL_CONTROLTYPE_PAN* = 1073872897;
		MIXERCONTROL_CONTROLTYPE_QSOUNDPAN* = 1073872898;
		MIXERCONTROL_CONTROLTYPE_FADER* = 1342373888;
		MIXERCONTROL_CONTROLTYPE_VOLUME* = 1342373889;
		MIXERCONTROL_CONTROLTYPE_BASS* = 1342373890;
		MIXERCONTROL_CONTROLTYPE_TREBLE* = 1342373891;
		MIXERCONTROL_CONTROLTYPE_EQUALIZER* = 1342373892;
		MIXERCONTROL_CONTROLTYPE_SINGLESELECT* = 1879113728;
		MIXERCONTROL_CONTROLTYPE_MUX* = 1879113729;
		MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT* = 1895890944;
		MIXERCONTROL_CONTROLTYPE_MIXER* = 1895890945;
		MIXERCONTROL_CONTROLTYPE_MICROTIME* = 1610809344;
		MIXERCONTROL_CONTROLTYPE_MILLITIME* = 1627586560;
		MIXER_GETLINECONTROLSF_ALL* = 0;
		MIXER_GETLINECONTROLSF_ONEBYID* = 1;
		MIXER_GETLINECONTROLSF_ONEBYTYPE* = 2;
		MIXER_GETLINECONTROLSF_QUERYMASK* = 15;
		MIXER_GETCONTROLDETAILSF_VALUE* = 0;
		MIXER_GETCONTROLDETAILSF_LISTTEXT* = 1;
		MIXER_GETCONTROLDETAILSF_QUERYMASK* = 15;
		MIXER_SETCONTROLDETAILSF_VALUE* = 0;
		MIXER_SETCONTROLDETAILSF_CUSTOM* = 1;
		MIXER_SETCONTROLDETAILSF_QUERYMASK* = 15;
		TIMERR_NOERROR* = 0;
		TIMERR_NOCANDO* = 97;
		TIMERR_STRUCT* = 129;
		TIME_ONESHOT* = 0;
		TIME_PERIODIC* = 1;
		TIME_CALLBACK_FUNCTION* = {};
		TIME_CALLBACK_EVENT_SET* = {4};
		TIME_CALLBACK_EVENT_PULSE* = {5};
		JOYERR_NOERROR* = 0;
		JOYERR_PARMS* = 165;
		JOYERR_NOCANDO* = 166;
		JOYERR_UNPLUGGED* = 167;
		JOY_BUTTON1* = 1;
		JOY_BUTTON2* = 2;
		JOY_BUTTON3* = 4;
		JOY_BUTTON4* = 8;
		JOY_BUTTON1CHG* = 256;
		JOY_BUTTON2CHG* = 512;
		JOY_BUTTON3CHG* = 1024;
		JOY_BUTTON4CHG* = 2048;
		JOY_BUTTON5* = 16;
		JOY_BUTTON6* = 32;
		JOY_BUTTON7* = 64;
		JOY_BUTTON8* = 128;
		JOY_BUTTON9* = 256;
		JOY_BUTTON10* = 512;
		JOY_BUTTON11* = 1024;
		JOY_BUTTON12* = 2048;
		JOY_BUTTON13* = 4096;
		JOY_BUTTON14* = 8192;
		JOY_BUTTON15* = 16384;
		JOY_BUTTON16* = 32768;
		JOY_BUTTON17* = 65536;
		JOY_BUTTON18* = 131072;
		JOY_BUTTON19* = 262144;
		JOY_BUTTON20* = 524288;
		JOY_BUTTON21* = 1048576;
		JOY_BUTTON22* = 2097152;
		JOY_BUTTON23* = 4194304;
		JOY_BUTTON24* = 8388608;
		JOY_BUTTON25* = 16777216;
		JOY_BUTTON26* = 33554432;
		JOY_BUTTON27* = 67108864;
		JOY_BUTTON28* = 134217728;
		JOY_BUTTON29* = 268435456;
		JOY_BUTTON30* = 536870912;
		JOY_BUTTON31* = 1073741824;
		JOY_BUTTON32* = 80000000H;
		JOY_POVCENTERED* = -1;
		JOY_POVFORWARD* = 0;
		JOY_POVRIGHT* = 9000;
		JOY_POVBACKWARD* = 18000;
		JOY_POVLEFT* = 27000;
		JOY_RETURNX* = 1;
		JOY_RETURNY* = 2;
		JOY_RETURNZ* = 4;
		JOY_RETURNR* = 8;
		JOY_RETURNU* = 16;
		JOY_RETURNV* = 32;
		JOY_RETURNPOV* = 64;
		JOY_RETURNBUTTONS* = 128;
		JOY_RETURNRAWDATA* = 256;
		JOY_RETURNPOVCTS* = 512;
		JOY_RETURNCENTERED* = 1024;
		JOY_USEDEADZONE* = 2048;
		JOY_RETURNALL* = 255;
		JOY_CAL_READALWAYS* = 65536;
		JOY_CAL_READXYONLY* = 131072;
		JOY_CAL_READ3* = 262144;
		JOY_CAL_READ4* = 524288;
		JOY_CAL_READXONLY* = 1048576;
		JOY_CAL_READYONLY* = 2097152;
		JOY_CAL_READ5* = 4194304;
		JOY_CAL_READ6* = 8388608;
		JOY_CAL_READZONLY* = 16777216;
		JOY_CAL_READRONLY* = 33554432;
		JOY_CAL_READUONLY* = 67108864;
		JOY_CAL_READVONLY* = 134217728;
		JOYSTICKID1* = 0;
		JOYSTICKID2* = 1;
		JOYCAPS_HASZ* = 1;
		JOYCAPS_HASR* = 2;
		JOYCAPS_HASU* = 4;
		JOYCAPS_HASV* = 8;
		JOYCAPS_HASPOV* = 16;
		JOYCAPS_POV4DIR* = 32;
		JOYCAPS_POVCTS* = 64;
		MMIOERR_BASE* = 256;
		MMIOERR_FILENOTFOUND* = 257;
		MMIOERR_OUTOFMEMORY* = 258;
		MMIOERR_CANNOTOPEN* = 259;
		MMIOERR_CANNOTCLOSE* = 260;
		MMIOERR_CANNOTREAD* = 261;
		MMIOERR_CANNOTWRITE* = 262;
		MMIOERR_CANNOTSEEK* = 263;
		MMIOERR_CANNOTEXPAND* = 264;
		MMIOERR_CHUNKNOTFOUND* = 265;
		MMIOERR_UNBUFFERED* = 266;
		MMIOERR_PATHNOTFOUND* = 267;
		MMIOERR_ACCESSDENIED* = 268;
		MMIOERR_SHARINGVIOLATION* = 269;
		MMIOERR_NETWORKERROR* = 270;
		MMIOERR_TOOMANYOPENFILES* = 271;
		MMIOERR_INVALIDFILE* = 272;
		CFSEPCHAR* = 43;
		MMIO_RWMODE* = 3;
		MMIO_SHAREMODE* = 112;
		MMIO_CREATE* = 4096;
		MMIO_PARSE* = 256;
		MMIO_DELETE* = 512;
		MMIO_EXIST* = 16384;
		MMIO_ALLOCBUF* = 65536;
		MMIO_GETTEMP* = 131072;
		MMIO_DIRTY* = 268435456;
		MMIO_READ* = 0;
		MMIO_WRITE* = 1;
		MMIO_READWRITE* = 2;
		MMIO_COMPAT* = 0;
		MMIO_EXCLUSIVE* = 16;
		MMIO_DENYWRITE* = 32;
		MMIO_DENYREAD* = 48;
		MMIO_DENYNONE* = 64;
		MMIO_FHOPEN* = 16;
		MMIO_EMPTYBUF* = 16;
		MMIO_TOUPPER* = 16;
		MMIO_INSTALLPROC* = 65536;
		MMIO_GLOBALPROC* = 268435456;
		MMIO_REMOVEPROC* = 131072;
		MMIO_UNICODEPROC* = 16777216;
		MMIO_FINDPROC* = 262144;
		MMIO_FINDCHUNK* = 16;
		MMIO_FINDRIFF* = 32;
		MMIO_FINDLIST* = 64;
		MMIO_CREATERIFF* = 32;
		MMIO_CREATELIST* = 64;
		MMIOM_READ* = 0;
		MMIOM_WRITE* = 1;
		MMIOM_SEEK* = 2;
		MMIOM_OPEN* = 3;
		MMIOM_CLOSE* = 4;
		MMIOM_WRITEFLUSH* = 5;
		MMIOM_RENAME* = 6;
		MMIOM_USER* = 32768;
		FOURCC_RIFF* = 1179011410;
		FOURCC_LIST* = 1414744396;
		FOURCC_DOS* = 542330692;
		FOURCC_MEM* = 541934925;
		SEEK_SET* = 0;
		SEEK_CUR* = 1;
		SEEK_END* = 2;
		MMIO_DEFAULTBUFFER* = 8192;
		MCIERR_INVALID_DEVICE_ID* = 257;
		MCIERR_UNRECOGNIZED_KEYWORD* = 259;
		MCIERR_UNRECOGNIZED_COMMAND* = 261;
		MCIERR_HARDWARE* = 262;
		MCIERR_INVALID_DEVICE_NAME* = 263;
		MCIERR_OUT_OF_MEMORY* = 264;
		MCIERR_DEVICE_OPEN* = 265;
		MCIERR_CANNOT_LOAD_DRIVER* = 266;
		MCIERR_MISSING_COMMAND_STRING* = 267;
		MCIERR_PARAM_OVERFLOW* = 268;
		MCIERR_MISSING_STRING_ARGUMENT* = 269;
		MCIERR_BAD_INTEGER* = 270;
		MCIERR_PARSER_INTERNAL* = 271;
		MCIERR_DRIVER_INTERNAL* = 272;
		MCIERR_MISSING_PARAMETER* = 273;
		MCIERR_UNSUPPORTED_FUNCTION* = 274;
		MCIERR_FILE_NOT_FOUND* = 275;
		MCIERR_DEVICE_NOT_READY* = 276;
		MCIERR_INTERNAL* = 277;
		MCIERR_DRIVER* = 278;
		MCIERR_CANNOT_USE_ALL* = 279;
		MCIERR_MULTIPLE* = 280;
		MCIERR_EXTENSION_NOT_FOUND* = 281;
		MCIERR_OUTOFRANGE* = 282;
		MCIERR_FLAGS_NOT_COMPATIBLE* = 284;
		MCIERR_FILE_NOT_SAVED* = 286;
		MCIERR_DEVICE_TYPE_REQUIRED* = 287;
		MCIERR_DEVICE_LOCKED* = 288;
		MCIERR_DUPLICATE_ALIAS* = 289;
		MCIERR_BAD_CONSTANT* = 290;
		MCIERR_MUST_USE_SHAREABLE* = 291;
		MCIERR_MISSING_DEVICE_NAME* = 292;
		MCIERR_BAD_TIME_FORMAT* = 293;
		MCIERR_NO_CLOSING_QUOTE* = 294;
		MCIERR_DUPLICATE_FLAGS* = 295;
		MCIERR_INVALID_FILE* = 296;
		MCIERR_NULL_PARAMETER_BLOCK* = 297;
		MCIERR_UNNAMED_RESOURCE* = 298;
		MCIERR_NEW_REQUIRES_ALIAS* = 299;
		MCIERR_NOTIFY_ON_AUTO_OPEN* = 300;
		MCIERR_NO_ELEMENT_ALLOWED* = 301;
		MCIERR_NONAPPLICABLE_FUNCTION* = 302;
		MCIERR_ILLEGAL_FOR_AUTO_OPEN* = 303;
		MCIERR_FILENAME_REQUIRED* = 304;
		MCIERR_EXTRA_CHARACTERS* = 305;
		MCIERR_DEVICE_NOT_INSTALLED* = 306;
		MCIERR_GET_CD* = 307;
		MCIERR_SET_CD* = 308;
		MCIERR_SET_DRIVE* = 309;
		MCIERR_DEVICE_LENGTH* = 310;
		MCIERR_DEVICE_ORD_LENGTH* = 311;
		MCIERR_NO_INTEGER* = 312;
		MCIERR_WAVE_OUTPUTSINUSE* = 320;
		MCIERR_WAVE_SETOUTPUTINUSE* = 321;
		MCIERR_WAVE_INPUTSINUSE* = 322;
		MCIERR_WAVE_SETINPUTINUSE* = 323;
		MCIERR_WAVE_OUTPUTUNSPECIFIED* = 324;
		MCIERR_WAVE_INPUTUNSPECIFIED* = 325;
		MCIERR_WAVE_OUTPUTSUNSUITABLE* = 326;
		MCIERR_WAVE_SETOUTPUTUNSUITABLE* = 327;
		MCIERR_WAVE_INPUTSUNSUITABLE* = 328;
		MCIERR_WAVE_SETINPUTUNSUITABLE* = 329;
		MCIERR_SEQ_DIV_INCOMPATIBLE* = 336;
		MCIERR_SEQ_PORT_INUSE* = 337;
		MCIERR_SEQ_PORT_NONEXISTENT* = 338;
		MCIERR_SEQ_PORT_MAPNODEVICE* = 339;
		MCIERR_SEQ_PORT_MISCERROR* = 340;
		MCIERR_SEQ_TIMER* = 341;
		MCIERR_SEQ_PORTUNSPECIFIED* = 342;
		MCIERR_SEQ_NOMIDIPRESENT* = 343;
		MCIERR_NO_WINDOW* = 346;
		MCIERR_CREATEWINDOW* = 347;
		MCIERR_FILE_READ* = 348;
		MCIERR_FILE_WRITE* = 349;
		MCIERR_NO_IDENTITY* = 350;
		MCIERR_CUSTOM_DRIVER_BASE* = 512;
		MCI_FIRST* = 2048;
		MCI_OPEN* = 2051;
		MCI_CLOSE* = 2052;
		MCI_ESCAPE* = 2053;
		MCI_PLAY* = 2054;
		MCI_SEEK* = 2055;
		MCI_STOP* = 2056;
		MCI_PAUSE* = 2057;
		MCI_INFO* = 2058;
		MCI_GETDEVCAPS* = 2059;
		MCI_SPIN* = 2060;
		MCI_SET* = 2061;
		MCI_STEP* = 2062;
		MCI_RECORD* = 2063;
		MCI_SYSINFO* = 2064;
		MCI_BREAK* = 2065;
		MCI_SAVE* = 2067;
		MCI_STATUS* = 2068;
		MCI_CUE* = 2096;
		MCI_REALIZE* = 2112;
		MCI_WINDOW* = 2113;
		MCI_PUT* = 2114;
		MCI_WHERE* = 2115;
		MCI_FREEZE* = 2116;
		MCI_UNFREEZE* = 2117;
		MCI_LOAD* = 2128;
		MCI_CUT* = 2129;
		MCI_COPY* = 2130;
		MCI_PASTE* = 2131;
		MCI_UPDATE* = 2132;
		MCI_RESUME* = 2133;
		MCI_DELETE* = 2134;
		MCI_USER_MESSAGES* = 3072;
		MCI_LAST* = 4095;
		MCI_DEVTYPE_VCR* = 513;
		MCI_DEVTYPE_VIDEODISC* = 514;
		MCI_DEVTYPE_OVERLAY* = 515;
		MCI_DEVTYPE_CD_AUDIO* = 516;
		MCI_DEVTYPE_DAT* = 517;
		MCI_DEVTYPE_SCANNER* = 518;
		MCI_DEVTYPE_ANIMATION* = 519;
		MCI_DEVTYPE_DIGITAL_VIDEO* = 520;
		MCI_DEVTYPE_OTHER* = 521;
		MCI_DEVTYPE_WAVEFORM_AUDIO* = 522;
		MCI_DEVTYPE_SEQUENCER* = 523;
		MCI_DEVTYPE_FIRST* = 513;
		MCI_DEVTYPE_LAST* = 523;
		MCI_DEVTYPE_FIRST_USER* = 4096;
		MCI_MODE_NOT_READY* = 524;
		MCI_MODE_STOP* = 525;
		MCI_MODE_PLAY* = 526;
		MCI_MODE_RECORD* = 527;
		MCI_MODE_SEEK* = 528;
		MCI_MODE_PAUSE* = 529;
		MCI_MODE_OPEN* = 530;
		MCI_FORMAT_MILLISECONDS* = 0;
		MCI_FORMAT_HMS* = 1;
		MCI_FORMAT_MSF* = 2;
		MCI_FORMAT_FRAMES* = 3;
		MCI_FORMAT_SMPTE_24* = 4;
		MCI_FORMAT_SMPTE_25* = 5;
		MCI_FORMAT_SMPTE_30* = 6;
		MCI_FORMAT_SMPTE_30DROP* = 7;
		MCI_FORMAT_BYTES* = 8;
		MCI_FORMAT_SAMPLES* = 9;
		MCI_FORMAT_TMSF* = 10;
		MCI_NOTIFY_SUCCESSFUL* = 1;
		MCI_NOTIFY_SUPERSEDED* = 2;
		MCI_NOTIFY_ABORTED* = 4;
		MCI_NOTIFY_FAILURE* = 8;
		MCI_NOTIFY* = 1;
		MCI_WAIT* = 2;
		MCI_FROM* = 4;
		MCI_TO* = 8;
		MCI_TRACK* = 16;
		MCI_OPEN_SHAREABLE* = 256;
		MCI_OPEN_ELEMENT* = 512;
		MCI_OPEN_ALIAS* = 1024;
		MCI_OPEN_ELEMENT_ID* = 2048;
		MCI_OPEN_TYPE_ID* = 4096;
		MCI_OPEN_TYPE* = 8192;
		MCI_SEEK_TO_START* = 256;
		MCI_SEEK_TO_END* = 512;
		MCI_STATUS_ITEM* = 256;
		MCI_STATUS_START* = 512;
		MCI_STATUS_LENGTH* = 1;
		MCI_STATUS_POSITION* = 2;
		MCI_STATUS_NUMBER_OF_TRACKS* = 3;
		MCI_STATUS_MODE* = 4;
		MCI_STATUS_MEDIA_PRESENT* = 5;
		MCI_STATUS_TIME_FORMAT* = 6;
		MCI_STATUS_READY* = 7;
		MCI_STATUS_CURRENT_TRACK* = 8;
		MCI_INFO_PRODUCT* = 256;
		MCI_INFO_FILE* = 512;
		MCI_INFO_MEDIA_UPC* = 1024;
		MCI_INFO_MEDIA_IDENTITY* = 2048;
		MCI_INFO_NAME* = 4096;
		MCI_INFO_COPYRIGHT* = 8192;
		MCI_GETDEVCAPS_ITEM* = 256;
		MCI_GETDEVCAPS_CAN_RECORD* = 1;
		MCI_GETDEVCAPS_HAS_AUDIO* = 2;
		MCI_GETDEVCAPS_HAS_VIDEO* = 3;
		MCI_GETDEVCAPS_DEVICE_TYPE* = 4;
		MCI_GETDEVCAPS_USES_FILES* = 5;
		MCI_GETDEVCAPS_COMPOUND_DEVICE* = 6;
		MCI_GETDEVCAPS_CAN_EJECT* = 7;
		MCI_GETDEVCAPS_CAN_PLAY* = 8;
		MCI_GETDEVCAPS_CAN_SAVE* = 9;
		MCI_SYSINFO_QUANTITY* = 256;
		MCI_SYSINFO_OPEN* = 512;
		MCI_SYSINFO_NAME* = 1024;
		MCI_SYSINFO_INSTALLNAME* = 2048;
		MCI_SET_DOOR_OPEN* = 256;
		MCI_SET_DOOR_CLOSED* = 512;
		MCI_SET_TIME_FORMAT* = 1024;
		MCI_SET_AUDIO* = 2048;
		MCI_SET_VIDEO* = 4096;
		MCI_SET_ON* = 8192;
		MCI_SET_OFF* = 16384;
		MCI_SET_AUDIO_ALL* = 0;
		MCI_SET_AUDIO_LEFT* = 1;
		MCI_SET_AUDIO_RIGHT* = 2;
		MCI_BREAK_KEY* = 256;
		MCI_BREAK_HWND* = 512;
		MCI_BREAK_OFF* = 1024;
		MCI_RECORD_INSERT* = 256;
		MCI_RECORD_OVERWRITE* = 512;
		MCI_SAVE_FILE* = 256;
		MCI_LOAD_FILE* = 256;
		MCI_VD_MODE_PARK* = 1025;
		MCI_VD_MEDIA_CLV* = 1026;
		MCI_VD_MEDIA_CAV* = 1027;
		MCI_VD_MEDIA_OTHER* = 1028;
		MCI_VD_FORMAT_TRACK* = 16385;
		MCI_VD_PLAY_REVERSE* = 65536;
		MCI_VD_PLAY_FAST* = 131072;
		MCI_VD_PLAY_SPEED* = 262144;
		MCI_VD_PLAY_SCAN* = 524288;
		MCI_VD_PLAY_SLOW* = 1048576;
		MCI_VD_SEEK_REVERSE* = 65536;
		MCI_VD_STATUS_SPEED* = 16386;
		MCI_VD_STATUS_FORWARD* = 16387;
		MCI_VD_STATUS_MEDIA_TYPE* = 16388;
		MCI_VD_STATUS_SIDE* = 16389;
		MCI_VD_STATUS_DISC_SIZE* = 16390;
		MCI_VD_GETDEVCAPS_CLV* = 65536;
		MCI_VD_GETDEVCAPS_CAV* = 131072;
		MCI_VD_SPIN_UP* = 65536;
		MCI_VD_SPIN_DOWN* = 131072;
		MCI_VD_GETDEVCAPS_CAN_REVERSE* = 16386;
		MCI_VD_GETDEVCAPS_FAST_RATE* = 16387;
		MCI_VD_GETDEVCAPS_SLOW_RATE* = 16388;
		MCI_VD_GETDEVCAPS_NORMAL_RATE* = 16389;
		MCI_VD_STEP_FRAMES* = 65536;
		MCI_VD_STEP_REVERSE* = 131072;
		MCI_VD_ESCAPE_STRING* = 256;
		MCI_CDA_STATUS_TYPE_TRACK* = 16385;
		MCI_CDA_TRACK_AUDIO* = 1088;
		MCI_CDA_TRACK_OTHER* = 1089;
		MCI_WAVE_PCM* = 1152;
		MCI_WAVE_MAPPER* = 1153;
		MCI_WAVE_OPEN_BUFFER* = 65536;
		MCI_WAVE_SET_FORMATTAG* = 65536;
		MCI_WAVE_SET_CHANNELS* = 131072;
		MCI_WAVE_SET_SAMPLESPERSEC* = 262144;
		MCI_WAVE_SET_AVGBYTESPERSEC* = 524288;
		MCI_WAVE_SET_BLOCKALIGN* = 1048576;
		MCI_WAVE_SET_BITSPERSAMPLE* = 2097152;
		MCI_WAVE_INPUT* = 4194304;
		MCI_WAVE_OUTPUT* = 8388608;
		MCI_WAVE_STATUS_FORMATTAG* = 16385;
		MCI_WAVE_STATUS_CHANNELS* = 16386;
		MCI_WAVE_STATUS_SAMPLESPERSEC* = 16387;
		MCI_WAVE_STATUS_AVGBYTESPERSEC* = 16388;
		MCI_WAVE_STATUS_BLOCKALIGN* = 16389;
		MCI_WAVE_STATUS_BITSPERSAMPLE* = 16390;
		MCI_WAVE_STATUS_LEVEL* = 16391;
		MCI_WAVE_SET_ANYINPUT* = 67108864;
		MCI_WAVE_SET_ANYOUTPUT* = 134217728;
		MCI_WAVE_GETDEVCAPS_INPUTS* = 16385;
		MCI_WAVE_GETDEVCAPS_OUTPUTS* = 16386;
		MCI_SEQ_DIV_PPQN* = 1216;
		MCI_SEQ_DIV_SMPTE_24* = 1217;
		MCI_SEQ_DIV_SMPTE_25* = 1218;
		MCI_SEQ_DIV_SMPTE_30DROP* = 1219;
		MCI_SEQ_DIV_SMPTE_30* = 1220;
		MCI_SEQ_FORMAT_SONGPTR* = 16385;
		MCI_SEQ_FILE* = 16386;
		MCI_SEQ_MIDI* = 16387;
		MCI_SEQ_SMPTE* = 16388;
		MCI_SEQ_NONE* = 65533;
		MCI_SEQ_MAPPER* = 65535;
		MCI_SEQ_STATUS_TEMPO* = 16386;
		MCI_SEQ_STATUS_PORT* = 16387;
		MCI_SEQ_STATUS_SLAVE* = 16391;
		MCI_SEQ_STATUS_MASTER* = 16392;
		MCI_SEQ_STATUS_OFFSET* = 16393;
		MCI_SEQ_STATUS_DIVTYPE* = 16394;
		MCI_SEQ_STATUS_NAME* = 16395;
		MCI_SEQ_STATUS_COPYRIGHT* = 16396;
		MCI_SEQ_SET_TEMPO* = 65536;
		MCI_SEQ_SET_PORT* = 131072;
		MCI_SEQ_SET_SLAVE* = 262144;
		MCI_SEQ_SET_MASTER* = 524288;
		MCI_SEQ_SET_OFFSET* = 16777216;
		MCI_ANIM_OPEN_WS* = 65536;
		MCI_ANIM_OPEN_PARENT* = 131072;
		MCI_ANIM_OPEN_NOSTATIC* = 262144;
		MCI_ANIM_PLAY_SPEED* = 65536;
		MCI_ANIM_PLAY_REVERSE* = 131072;
		MCI_ANIM_PLAY_FAST* = 262144;
		MCI_ANIM_PLAY_SLOW* = 524288;
		MCI_ANIM_PLAY_SCAN* = 1048576;
		MCI_ANIM_STEP_REVERSE* = 65536;
		MCI_ANIM_STEP_FRAMES* = 131072;
		MCI_ANIM_STATUS_SPEED* = 16385;
		MCI_ANIM_STATUS_FORWARD* = 16386;
		MCI_ANIM_STATUS_HWND* = 16387;
		MCI_ANIM_STATUS_HPAL* = 16388;
		MCI_ANIM_STATUS_STRETCH* = 16389;
		MCI_ANIM_INFO_TEXT* = 65536;
		MCI_ANIM_GETDEVCAPS_CAN_REVERSE* = 16385;
		MCI_ANIM_GETDEVCAPS_FAST_RATE* = 16386;
		MCI_ANIM_GETDEVCAPS_SLOW_RATE* = 16387;
		MCI_ANIM_GETDEVCAPS_NORMAL_RATE* = 16388;
		MCI_ANIM_GETDEVCAPS_PALETTES* = 16390;
		MCI_ANIM_GETDEVCAPS_CAN_STRETCH* = 16391;
		MCI_ANIM_GETDEVCAPS_MAX_WINDOWS* = 16392;
		MCI_ANIM_REALIZE_NORM* = 65536;
		MCI_ANIM_REALIZE_BKGD* = 131072;
		MCI_ANIM_WINDOW_HWND* = 65536;
		MCI_ANIM_WINDOW_STATE* = 262144;
		MCI_ANIM_WINDOW_TEXT* = 524288;
		MCI_ANIM_WINDOW_ENABLE_STRETCH* = 1048576;
		MCI_ANIM_WINDOW_DISABLE_STRETCH* = 2097152;
		MCI_ANIM_WINDOW_DEFAULT* = 0;
		MCI_ANIM_RECT* = 65536;
		MCI_ANIM_PUT_SOURCE* = 131072;
		MCI_ANIM_PUT_DESTINATION* = 262144;
		MCI_ANIM_WHERE_SOURCE* = 131072;
		MCI_ANIM_WHERE_DESTINATION* = 262144;
		MCI_ANIM_UPDATE_HDC* = 131072;
		MCI_OVLY_OPEN_WS* = 65536;
		MCI_OVLY_OPEN_PARENT* = 131072;
		MCI_OVLY_STATUS_HWND* = 16385;
		MCI_OVLY_STATUS_STRETCH* = 16386;
		MCI_OVLY_INFO_TEXT* = 65536;
		MCI_OVLY_GETDEVCAPS_CAN_STRETCH* = 16385;
		MCI_OVLY_GETDEVCAPS_CAN_FREEZE* = 16386;
		MCI_OVLY_GETDEVCAPS_MAX_WINDOWS* = 16387;
		MCI_OVLY_WINDOW_HWND* = 65536;
		MCI_OVLY_WINDOW_STATE* = 262144;
		MCI_OVLY_WINDOW_TEXT* = 524288;
		MCI_OVLY_WINDOW_ENABLE_STRETCH* = 1048576;
		MCI_OVLY_WINDOW_DISABLE_STRETCH* = 2097152;
		MCI_OVLY_WINDOW_DEFAULT* = 0;
		MCI_OVLY_RECT* = 65536;
		MCI_OVLY_PUT_SOURCE* = 131072;
		MCI_OVLY_PUT_DESTINATION* = 262144;
		MCI_OVLY_PUT_FRAME* = 524288;
		MCI_OVLY_PUT_VIDEO* = 1048576;
		MCI_OVLY_WHERE_SOURCE* = 131072;
		MCI_OVLY_WHERE_DESTINATION* = 262144;
		MCI_OVLY_WHERE_FRAME* = 524288;
		MCI_OVLY_WHERE_VIDEO* = 1048576;
		NEWTRANSPARENT* = 3;
		QUERYROPSUPPORT* = 40;
		SELECTDIB* = 41;

	CONST (* enumerations *)

	TYPE
		MMVERSION* = INTEGER;
		MMRESULT* = INTEGER;
		MMTIME* = RECORD [noalign]
			wType*: INTEGER;
			u*: RECORD [union]
				ms*: INTEGER;
				sample*: INTEGER;
				cb*: INTEGER;
				ticks*: INTEGER;
				smpte*: RECORD [untagged]
					hour*: SHORTCHAR;
					min*: SHORTCHAR;
					sec*: SHORTCHAR;
					frame*: SHORTCHAR;
					fps*: SHORTCHAR;
					dummy*: SHORTCHAR;
					pad*: ARRAY [untagged] 2 OF SHORTCHAR;
				END;
				midi*: RECORD [noalign]
					songptrpos*: INTEGER;
				END;
			END;
		END;
		PtrMMTIME* = POINTER TO MMTIME;
		HDRVR* = WinApi.HANDLE;
		DRVCONFIGINFOEX* = RECORD [noalign]
			dwDCISize*: INTEGER;
			lpszDCISectionName*: WinApi.PtrWSTR;
			lpszDCIAliasName*: WinApi.PtrWSTR;
			dnDevNode*: INTEGER;
		END;
		PtrDRVCONFIGINFOEX* = POINTER TO DRVCONFIGINFOEX;
		DRVCONFIGINFO* = RECORD [noalign]
			dwDCISize*: INTEGER;
			lpszDCISectionName*: WinApi.PtrWSTR;
			lpszDCIAliasName*: WinApi.PtrWSTR;
		END;
		PtrDRVCONFIGINFO* = POINTER TO DRVCONFIGINFO;
		DRIVERPROC* = PROCEDURE (p0: INTEGER; p1: HDRVR; p2: INTEGER; p3: WinApi.LPARAM; p4: WinApi.LPARAM): WinApi.LRESULT;
		DRVCALLBACK* = PROCEDURE(hdrvr: HDRVR; uMsg: INTEGER; dwUser: INTEGER; dw1: INTEGER; dw2: INTEGER);
		HWAVE* = WinApi.HANDLE;
		HWAVEIN* = WinApi.HANDLE;
		HWAVEOUT* = WinApi.HANDLE;
		WAVECALLBACK* = DRVCALLBACK;
		PtrWAVEHDR* = POINTER TO WAVEHDR;
		WAVEHDR* = RECORD [noalign]
			lpData*: WinApi.PtrSTR;
			dwBufferLength*: INTEGER;
			dwBytesRecorded*: INTEGER;
			dwUser*: INTEGER;
			dwFlags*: SET;
			dwLoops*: INTEGER;
			lpNext*: PtrWAVEHDR;
			reserved*: INTEGER;
		END;
		WAVEOUTCAPSA* = RECORD [noalign]
			wMid*: SHORTINT;
			wPid*: SHORTINT;
			vDriverVersion*: MMVERSION;
			szPname*: ARRAY [untagged] 32 OF SHORTCHAR;
			dwFormats*: INTEGER;
			wChannels*: SHORTINT;
			wReserved1*: SHORTINT;
			dwSupport*: INTEGER;
		END;
		PtrWAVEOUTCAPSA* = POINTER TO WAVEOUTCAPSA;
		WAVEOUTCAPSW* = RECORD [noalign]
			wMid*: SHORTINT;
			wPid*: SHORTINT;
			vDriverVersion*: MMVERSION;
			szPname*: ARRAY [untagged] 32 OF CHAR;
			dwFormats*: INTEGER;
			wChannels*: SHORTINT;
			wReserved1*: SHORTINT;
			dwSupport*: INTEGER;
		END;
		PtrWAVEOUTCAPSW* = POINTER TO WAVEOUTCAPSW;
		WAVEOUTCAPS* = WAVEOUTCAPSA;
		PtrWAVEOUTCAPS* = PtrWAVEOUTCAPSA;
		WAVEINCAPSA* = RECORD [noalign]
			wMid*: SHORTINT;
			wPid*: SHORTINT;
			vDriverVersion*: MMVERSION;
			szPname*: ARRAY [untagged] 32 OF SHORTCHAR;
			dwFormats*: INTEGER;
			wChannels*: SHORTINT;
			wReserved1*: SHORTINT;
		END;
		PtrWAVEINCAPSA* = POINTER TO WAVEINCAPSA;
		WAVEINCAPSW* = RECORD [noalign]
			wMid*: SHORTINT;
			wPid*: SHORTINT;
			vDriverVersion*: MMVERSION;
			szPname*: ARRAY [untagged] 32 OF CHAR;
			dwFormats*: INTEGER;
			wChannels*: SHORTINT;
			wReserved1*: SHORTINT;
		END;
		PtrWAVEINCAPSW* = POINTER TO WAVEINCAPSW;
		WAVEINCAPS* = WAVEINCAPSA;
		PtrWAVEINCAPS* = PtrWAVEINCAPSA;
		WAVEFORMAT* = RECORD [noalign]
			wFormatTag*: SHORTINT;
			nChannels*: SHORTINT;
			nSamplesPerSec*: INTEGER;
			nAvgBytesPerSec*: INTEGER;
			nBlockAlign*: SHORTINT;
		END;
		PtrWAVEFORMAT* = POINTER TO WAVEFORMAT;
		PCMWAVEFORMAT* = RECORD [noalign]
			wf*: WAVEFORMAT;
			wBitsPerSample*: SHORTINT;
		END;
		PtrPCMWAVEFORMAT* = POINTER TO PCMWAVEFORMAT;
		WAVEFORMATEX* = RECORD [noalign]
			wFormatTag*: SHORTINT;
			nChannels*: SHORTINT;
			nSamplesPerSec*: INTEGER;
			nAvgBytesPerSec*: INTEGER;
			nBlockAlign*: SHORTINT;
			wBitsPerSample*: SHORTINT;
			cbSize*: SHORTINT;
		END;
		PtrWAVEFORMATEX* = POINTER TO WAVEFORMATEX;
		HMIDI* = WinApi.HANDLE;
		HMIDIIN* = WinApi.HANDLE;
		HMIDIOUT* = WinApi.HANDLE;
		HMIDISTRM* = WinApi.HANDLE;
		MIDICALLBACK* = DRVCALLBACK;
		PATCHARRAY* = ARRAY [untagged] 128 OF SHORTINT;
		KEYARRAY* = ARRAY [untagged] 128 OF SHORTINT;
		MIDIOUTCAPSA* = RECORD [noalign]
			wMid*: SHORTINT;
			wPid*: SHORTINT;
			vDriverVersion*: MMVERSION;
			szPname*: ARRAY [untagged] 32 OF SHORTCHAR;
			wTechnology*: SHORTINT;
			wVoices*: SHORTINT;
			wNotes*: SHORTINT;
			wChannelMask*: SHORTINT;
			dwSupport*: INTEGER;
		END;
		PtrMIDIOUTCAPSA* = POINTER TO MIDIOUTCAPSA;
		MIDIOUTCAPSW* = RECORD [noalign]
			wMid*: SHORTINT;
			wPid*: SHORTINT;
			vDriverVersion*: MMVERSION;
			szPname*: ARRAY [untagged] 32 OF CHAR;
			wTechnology*: SHORTINT;
			wVoices*: SHORTINT;
			wNotes*: SHORTINT;
			wChannelMask*: SHORTINT;
			dwSupport*: INTEGER;
		END;
		PtrMIDIOUTCAPSW* = POINTER TO MIDIOUTCAPSW;
		MIDIOUTCAPS* = MIDIOUTCAPSA;
		PtrMIDIOUTCAPS* = PtrMIDIOUTCAPSA;
		MIDIINCAPSA* = RECORD [noalign]
			wMid*: SHORTINT;
			wPid*: SHORTINT;
			vDriverVersion*: MMVERSION;
			szPname*: ARRAY [untagged] 32 OF SHORTCHAR;
			dwSupport*: INTEGER;
		END;
		PtrMIDIINCAPSA* = POINTER TO MIDIINCAPSA;
		MIDIINCAPSW* = RECORD [noalign]
			wMid*: SHORTINT;
			wPid*: SHORTINT;
			vDriverVersion*: MMVERSION;
			szPname*: ARRAY [untagged] 32 OF CHAR;
			dwSupport*: INTEGER;
		END;
		PtrMIDIINCAPSW* = POINTER TO MIDIINCAPSW;
		MIDIINCAPS* = MIDIINCAPSA;
		PtrMIDIINCAPS* = PtrMIDIINCAPSA;
		PtrMIDIHDR* = POINTER TO MIDIHDR;
		MIDIHDR* = RECORD [noalign]
			lpData*: WinApi.PtrSTR;
			dwBufferLength*: INTEGER;
			dwBytesRecorded*: INTEGER;
			dwUser*: INTEGER;
			dwFlags*: SET;
			lpNext*: PtrMIDIHDR;
			reserved*: INTEGER;
			dwOffset*: INTEGER;
			dwReserved*: ARRAY [untagged] 8 OF INTEGER;
		END;
		MIDIEVENT* = RECORD [noalign]
			dwDeltaTime*: INTEGER;
			dwStreamID*: INTEGER;
			dwEvent*: INTEGER;
			dwParms*: ARRAY [untagged] 1 OF INTEGER;
		END;
		MIDISTRMBUFFVER* = RECORD [noalign]
			dwVersion*: INTEGER;
			dwMid*: INTEGER;
			dwOEMVersion*: INTEGER;
		END;
		MIDIPROPTIMEDIV* = RECORD [noalign]
			cbStruct*: INTEGER;
			dwTimeDiv*: INTEGER;
		END;
		PtrMIDIPROPTIMEDIV* = POINTER TO MIDIPROPTIMEDIV;
		MIDIPROPTEMPO* = RECORD [noalign]
			cbStruct*: INTEGER;
			dwTempo*: INTEGER;
		END;
		PtrMIDIPROPTEMPO* = POINTER TO MIDIPROPTEMPO;
		AUXCAPSA* = RECORD [noalign]
			wMid*: SHORTINT;
			wPid*: SHORTINT;
			vDriverVersion*: MMVERSION;
			szPname*: ARRAY [untagged] 32 OF SHORTCHAR;
			wTechnology*: SHORTINT;
			wReserved1*: SHORTINT;
			dwSupport*: INTEGER;
		END;
		PtrAUXCAPSA* = POINTER TO AUXCAPSA;
		AUXCAPSW* = RECORD [noalign]
			wMid*: SHORTINT;
			wPid*: SHORTINT;
			vDriverVersion*: MMVERSION;
			szPname*: ARRAY [untagged] 32 OF CHAR;
			wTechnology*: SHORTINT;
			wReserved1*: SHORTINT;
			dwSupport*: INTEGER;
		END;
		PtrAUXCAPSW* = POINTER TO AUXCAPSW;
		AUXCAPS* = AUXCAPSA;
		PtrAUXCAPS* = PtrAUXCAPSA;
		HMIXEROBJ* = WinApi.HANDLE;
		HMIXER* = WinApi.HANDLE;
		MIXERCAPSA* = RECORD [noalign]
			wMid*: SHORTINT;
			wPid*: SHORTINT;
			vDriverVersion*: MMVERSION;
			szPname*: ARRAY [untagged] 32 OF SHORTCHAR;
			fdwSupport*: INTEGER;
			cDestinations*: INTEGER;
		END;
		PtrMIXERCAPSA* = POINTER TO MIXERCAPSA;
		MIXERCAPSW* = RECORD [noalign]
			wMid*: SHORTINT;
			wPid*: SHORTINT;
			vDriverVersion*: MMVERSION;
			szPname*: ARRAY [untagged] 32 OF CHAR;
			fdwSupport*: INTEGER;
			cDestinations*: INTEGER;
		END;
		PtrMIXERCAPSW* = POINTER TO MIXERCAPSW;
		MIXERCAPS* = MIXERCAPSA;
		PtrMIXERCAPS* = PtrMIXERCAPSA;
		MIXERLINEA* = RECORD [noalign]
			cbStruct*: INTEGER;
			dwDestination*: INTEGER;
			dwSource*: INTEGER;
			dwLineID*: INTEGER;
			fdwLine*: INTEGER;
			dwUser*: INTEGER;
			dwComponentType*: INTEGER;
			cChannels*: INTEGER;
			cConnections*: INTEGER;
			cControls*: INTEGER;
			szShortName*: ARRAY [untagged] 16 OF SHORTCHAR;
			szName*: ARRAY [untagged] 64 OF SHORTCHAR;
			Target*: RECORD [noalign]
				dwType*: INTEGER;
				dwDeviceID*: INTEGER;
				wMid*: SHORTINT;
				wPid*: SHORTINT;
				vDriverVersion*: MMVERSION;
				szPname*: ARRAY [untagged] 32 OF SHORTCHAR;
			END;
		END;
		PtrMIXERLINEA* = POINTER TO MIXERLINEA;
		MIXERLINEW* = RECORD [noalign]
			cbStruct*: INTEGER;
			dwDestination*: INTEGER;
			dwSource*: INTEGER;
			dwLineID*: INTEGER;
			fdwLine*: INTEGER;
			dwUser*: INTEGER;
			dwComponentType*: INTEGER;
			cChannels*: INTEGER;
			cConnections*: INTEGER;
			cControls*: INTEGER;
			szShortName*: ARRAY [untagged] 16 OF CHAR;
			szName*: ARRAY [untagged] 64 OF CHAR;
			Target*: RECORD [noalign]
				dwType*: INTEGER;
				dwDeviceID*: INTEGER;
				wMid*: SHORTINT;
				wPid*: SHORTINT;
				vDriverVersion*: MMVERSION;
				szPname*: ARRAY [untagged] 32 OF CHAR;
			END;
		END;
		PtrMIXERLINEW* = POINTER TO MIXERLINEW;
		MIXERLINE* = MIXERLINEA;
		PtrMIXERLINE* = PtrMIXERLINEA;
		MIXERCONTROLA* = RECORD [noalign]
			cbStruct*: INTEGER;
			dwControlID*: INTEGER;
			dwControlType*: INTEGER;
			fdwControl*: INTEGER;
			cMultipleItems*: INTEGER;
			szShortName*: ARRAY [untagged] 16 OF SHORTCHAR;
			szName*: ARRAY [untagged] 64 OF SHORTCHAR;
			Bounds*: RECORD [union]
				r*: RECORD [noalign]
					lMinimum*: INTEGER;
					lMaximum*: INTEGER;
				END;
				r1*: RECORD [noalign]
					dwMinimum*: INTEGER;
					dwMaximum*: INTEGER;
				END;
				dwReserved*: ARRAY [untagged] 6 OF INTEGER;
			END;
			Metrics*: RECORD [union]
				cSteps*: INTEGER;
				cbCustomData*: INTEGER;
				dwReserved*: ARRAY [untagged] 6 OF INTEGER;
			END;
		END;
		PtrMIXERCONTROLA* = POINTER TO MIXERCONTROLA;
		MIXERCONTROLW* = RECORD [noalign]
			cbStruct*: INTEGER;
			dwControlID*: INTEGER;
			dwControlType*: INTEGER;
			fdwControl*: INTEGER;
			cMultipleItems*: INTEGER;
			szShortName*: ARRAY [untagged] 16 OF CHAR;
			szName*: ARRAY [untagged] 64 OF CHAR;
			Bounds*: RECORD [union]
				r*: RECORD [noalign]
					lMinimum*: INTEGER;
					lMaximum*: INTEGER;
				END;
				r1*: RECORD [noalign]
					dwMinimum*: INTEGER;
					dwMaximum*: INTEGER;
				END;
				dwReserved*: ARRAY [untagged] 6 OF INTEGER;
			END;
			Metrics*: RECORD [union]
				cSteps*: INTEGER;
				cbCustomData*: INTEGER;
				dwReserved*: ARRAY [untagged] 6 OF INTEGER;
			END;
		END;
		PtrMIXERCONTROLW* = POINTER TO MIXERCONTROLW;
		MIXERCONTROL* = MIXERCONTROLA;
		PtrMIXERCONTROL* = PtrMIXERCONTROLA;
		MIXERLINECONTROLSA* = RECORD [noalign]
			cbStruct*: INTEGER;
			dwLineID*: INTEGER;
			u*: RECORD [union]
				dwControlID*: INTEGER;
				dwControlType*: INTEGER;
			END;
			cControls*: INTEGER;
			cbmxctrl*: INTEGER;
			pamxctrl*: PtrMIXERCONTROLA;
		END;
		PtrMIXERLINECONTROLSA* = POINTER TO MIXERLINECONTROLSA;
		MIXERLINECONTROLSW* = RECORD [noalign]
			cbStruct*: INTEGER;
			dwLineID*: INTEGER;
			u*: RECORD [union]
				dwControlID*: INTEGER;
				dwControlType*: INTEGER;
			END;
			cControls*: INTEGER;
			cbmxctrl*: INTEGER;
			pamxctrl*: PtrMIXERCONTROLW;
		END;
		PtrMIXERLINECONTROLSW* = POINTER TO MIXERLINECONTROLSW;
		MIXERLINECONTROLS* = MIXERLINECONTROLSA;
		PtrMIXERLINECONTROLS* = PtrMIXERLINECONTROLSA;
		MIXERCONTROLDETAILS* = RECORD [noalign]
			cbStruct*: INTEGER;
			dwControlID*: INTEGER;
			cChannels*: INTEGER;
			u*: RECORD [union]
				hwndOwner*: WinApi.HWND;
				cMultipleItems*: INTEGER;
			END;
			cbDetails*: INTEGER;
			paDetails*: WinApi.PtrVoid;
		END;
		PtrMIXERCONTROLDETAILS* = POINTER TO MIXERCONTROLDETAILS;
		MIXERCONTROLDETAILS_LISTTEXTA* = RECORD [noalign]
			dwParam1*: INTEGER;
			dwParam2*: INTEGER;
			szName*: ARRAY [untagged] 64 OF SHORTCHAR;
		END;
		PtrMIXERCONTROLDETAILS_LISTTEXTA* = POINTER TO MIXERCONTROLDETAILS_LISTTEXTA;
		MIXERCONTROLDETAILS_LISTTEXTW* = RECORD [noalign]
			dwParam1*: INTEGER;
			dwParam2*: INTEGER;
			szName*: ARRAY [untagged] 64 OF CHAR;
		END;
		PtrMIXERCONTROLDETAILS_LISTTEXTW* = POINTER TO MIXERCONTROLDETAILS_LISTTEXTW;
		MIXERCONTROLDETAILS_LISTTEXT* = MIXERCONTROLDETAILS_LISTTEXTA;
		PtrMIXERCONTROLDETAILS_LISTTEXT* = PtrMIXERCONTROLDETAILS_LISTTEXTA;
		MIXERCONTROLDETAILS_BOOLEAN* = RECORD [noalign]
			fValue*: INTEGER;
		END;
		PtrMIXERCONTROLDETAILS_BOOLEAN* = POINTER TO MIXERCONTROLDETAILS_BOOLEAN;
		MIXERCONTROLDETAILS_SIGNED* = RECORD [noalign]
			lValue*: INTEGER;
		END;
		PtrMIXERCONTROLDETAILS_SIGNED* = POINTER TO MIXERCONTROLDETAILS_SIGNED;
		MIXERCONTROLDETAILS_UNSIGNED* = RECORD [noalign]
			dwValue*: INTEGER;
		END;
		PtrMIXERCONTROLDETAILS_UNSIGNED* = POINTER TO MIXERCONTROLDETAILS_UNSIGNED;
		TIMECALLBACK* = PROCEDURE(uTimerID: INTEGER; uMsg: INTEGER; dwUser: INTEGER; dw1: INTEGER; dw2: INTEGER);
		TIMECAPS* = RECORD [noalign]
			wPeriodMin*: INTEGER;
			wPeriodMax*: INTEGER;
		END;
		PtrTIMECAPS* = POINTER TO TIMECAPS;
		JOYCAPSA* = RECORD [noalign]
			wMid*: SHORTINT;
			wPid*: SHORTINT;
			szPname*: ARRAY [untagged] 32 OF SHORTCHAR;
			wXmin*: INTEGER;
			wXmax*: INTEGER;
			wYmin*: INTEGER;
			wYmax*: INTEGER;
			wZmin*: INTEGER;
			wZmax*: INTEGER;
			wNumButtons*: INTEGER;
			wPeriodMin*: INTEGER;
			wPeriodMax*: INTEGER;
			wRmin*: INTEGER;
			wRmax*: INTEGER;
			wUmin*: INTEGER;
			wUmax*: INTEGER;
			wVmin*: INTEGER;
			wVmax*: INTEGER;
			wCaps*: INTEGER;
			wMaxAxes*: INTEGER;
			wNumAxes*: INTEGER;
			wMaxButtons*: INTEGER;
			szRegKey*: ARRAY [untagged] 32 OF SHORTCHAR;
			szOEMVxD*: ARRAY [untagged] 260 OF SHORTCHAR;
		END;
		PtrJOYCAPSA* = POINTER TO JOYCAPSA;
		JOYCAPSW* = RECORD [noalign]
			wMid*: SHORTINT;
			wPid*: SHORTINT;
			szPname*: ARRAY [untagged] 32 OF CHAR;
			wXmin*: INTEGER;
			wXmax*: INTEGER;
			wYmin*: INTEGER;
			wYmax*: INTEGER;
			wZmin*: INTEGER;
			wZmax*: INTEGER;
			wNumButtons*: INTEGER;
			wPeriodMin*: INTEGER;
			wPeriodMax*: INTEGER;
			wRmin*: INTEGER;
			wRmax*: INTEGER;
			wUmin*: INTEGER;
			wUmax*: INTEGER;
			wVmin*: INTEGER;
			wVmax*: INTEGER;
			wCaps*: INTEGER;
			wMaxAxes*: INTEGER;
			wNumAxes*: INTEGER;
			wMaxButtons*: INTEGER;
			szRegKey*: ARRAY [untagged] 32 OF CHAR;
			szOEMVxD*: ARRAY [untagged] 260 OF CHAR;
		END;
		PtrJOYCAPSW* = POINTER TO JOYCAPSW;
		JOYCAPS* = JOYCAPSA;
		PtrJOYCAPS* = PtrJOYCAPSA;
		JOYINFO* = RECORD [noalign]
			wXpos*: INTEGER;
			wYpos*: INTEGER;
			wZpos*: INTEGER;
			wButtons*: INTEGER;
		END;
		PtrJOYINFO* = POINTER TO JOYINFO;
		JOYINFOEX* = RECORD [noalign]
			dwSize*: INTEGER;
			dwFlags*: SET;
			dwXpos*: INTEGER;
			dwYpos*: INTEGER;
			dwZpos*: INTEGER;
			dwRpos*: INTEGER;
			dwUpos*: INTEGER;
			dwVpos*: INTEGER;
			dwButtons*: INTEGER;
			dwButtonNumber*: INTEGER;
			dwPOV*: INTEGER;
			dwReserved1*: INTEGER;
			dwReserved2*: INTEGER;
		END;
		PtrJOYINFOEX* = POINTER TO JOYINFOEX;
		FOURCC* = INTEGER;
		HMMIO* = WinApi.HANDLE;
		MMIOPROC* = PROCEDURE(lpmmioinfo: WinApi.PtrSTR; uMsg: INTEGER; lParam1: WinApi.LPARAM; lParam2: WinApi.LPARAM): WinApi.LRESULT;
		MMIOINFO* = RECORD [noalign]
			dwFlags*: SET;
			fccIOProc*: FOURCC;
			pIOProc*: MMIOPROC;
			wErrorRet*: INTEGER;
			htask*: WinApi.HTASK;
			cchBuffer*: INTEGER;
			pchBuffer*: WinApi.PtrSTR;
			pchNext*: WinApi.PtrSTR;
			pchEndRead*: WinApi.PtrSTR;
			pchEndWrite*: WinApi.PtrSTR;
			lBufOffset*: INTEGER;
			lDiskOffset*: INTEGER;
			adwInfo*: ARRAY [untagged] 3 OF INTEGER;
			dwReserved1*: INTEGER;
			dwReserved2*: INTEGER;
			hmmio*: HMMIO;
		END;
		PtrMMIOINFO* = POINTER TO MMIOINFO;
		MMCKINFO* = RECORD [noalign]
			ckid*: FOURCC;
			cksize*: INTEGER;
			fccType*: FOURCC;
			dwDataOffset*: INTEGER;
			dwFlags*: SET;
		END;
		PtrMMCKINFO* = POINTER TO MMCKINFO;
		MCIERROR* = INTEGER;
		MCIDEVICEID* = INTEGER;
		YIELDPROC* = PROCEDURE (mciId: MCIDEVICEID; dwYieldData: INTEGER): INTEGER;
		MCI_GENERIC_PARMS* = RECORD [noalign]
			dwCallback*: INTEGER;
		END;
		PtrMCI_GENERIC_PARMS* = POINTER TO MCI_GENERIC_PARMS;
		MCI_OPEN_PARMSA* = RECORD [noalign]
			dwCallback*: INTEGER;
			wDeviceID*: MCIDEVICEID;
			lpstrDeviceType*: WinApi.PtrSTR;
			lpstrElementName*: WinApi.PtrSTR;
			lpstrAlias*: WinApi.PtrSTR;
		END;
		PtrMCI_OPEN_PARMSA* = POINTER TO MCI_OPEN_PARMSA;
		MCI_OPEN_PARMSW* = RECORD [noalign]
			dwCallback*: INTEGER;
			wDeviceID*: MCIDEVICEID;
			lpstrDeviceType*: WinApi.PtrWSTR;
			lpstrElementName*: WinApi.PtrWSTR;
			lpstrAlias*: WinApi.PtrWSTR;
		END;
		PtrMCI_OPEN_PARMSW* = POINTER TO MCI_OPEN_PARMSW;
		MCI_OPEN_PARMS* = MCI_OPEN_PARMSA;
		PtrMCI_OPEN_PARMS* = PtrMCI_OPEN_PARMSA;
		MCI_PLAY_PARMS* = RECORD [noalign]
			dwCallback*: INTEGER;
			dwFrom*: INTEGER;
			dwTo*: INTEGER;
		END;
		PtrMCI_PLAY_PARMS* = POINTER TO MCI_PLAY_PARMS;
		MCI_SEEK_PARMS* = RECORD [noalign]
			dwCallback*: INTEGER;
			dwTo*: INTEGER;
		END;
		PtrMCI_SEEK_PARMS* = POINTER TO MCI_SEEK_PARMS;
		MCI_STATUS_PARMS* = RECORD [noalign]
			dwCallback*: INTEGER;
			dwReturn*: INTEGER;
			dwItem*: INTEGER;
			dwTrack*: INTEGER;
		END;
		PtrMCI_STATUS_PARMS* = POINTER TO MCI_STATUS_PARMS;
		MCI_INFO_PARMSA* = RECORD [noalign]
			dwCallback*: INTEGER;
			lpstrReturn*: WinApi.PtrSTR;
			dwRetSize*: INTEGER;
		END;
		PtrMCI_INFO_PARMSA* = POINTER TO MCI_INFO_PARMSA;
		MCI_INFO_PARMSW* = RECORD [noalign]
			dwCallback*: INTEGER;
			lpstrReturn*: WinApi.PtrWSTR;
			dwRetSize*: INTEGER;
		END;
		PtrMCI_INFO_PARMSW* = POINTER TO MCI_INFO_PARMSW;
		MCI_INFO_PARMS* = MCI_INFO_PARMSA;
		PtrMCI_INFO_PARMS* = PtrMCI_INFO_PARMSA;
		MCI_GETDEVCAPS_PARMS* = RECORD [noalign]
			dwCallback*: INTEGER;
			dwReturn*: INTEGER;
			dwItem*: INTEGER;
		END;
		PtrMCI_GETDEVCAPS_PARMS* = POINTER TO MCI_GETDEVCAPS_PARMS;
		MCI_SYSINFO_PARMSA* = RECORD [noalign]
			dwCallback*: INTEGER;
			lpstrReturn*: WinApi.PtrSTR;
			dwRetSize*: INTEGER;
			dwNumber*: INTEGER;
			wDeviceType*: INTEGER;
		END;
		PtrMCI_SYSINFO_PARMSA* = POINTER TO MCI_SYSINFO_PARMSA;
		MCI_SYSINFO_PARMSW* = RECORD [noalign]
			dwCallback*: INTEGER;
			lpstrReturn*: WinApi.PtrWSTR;
			dwRetSize*: INTEGER;
			dwNumber*: INTEGER;
			wDeviceType*: INTEGER;
		END;
		PtrMCI_SYSINFO_PARMSW* = POINTER TO MCI_SYSINFO_PARMSW;
		MCI_SYSINFO_PARMS* = MCI_SYSINFO_PARMSA;
		PtrMCI_SYSINFO_PARMS* = PtrMCI_SYSINFO_PARMSA;
		MCI_SET_PARMS* = RECORD [noalign]
			dwCallback*: INTEGER;
			dwTimeFormat*: INTEGER;
			dwAudio*: INTEGER;
		END;
		PtrMCI_SET_PARMS* = POINTER TO MCI_SET_PARMS;
		MCI_BREAK_PARMS* = RECORD [noalign]
			dwCallback*: INTEGER;
			nVirtKey*: INTEGER;
			hwndBreak*: WinApi.HWND;
		END;
		PtrMCI_BREAK_PARMS* = POINTER TO MCI_BREAK_PARMS;
		MCI_SAVE_PARMSA* = RECORD [noalign]
			dwCallback*: INTEGER;
			lpfilename*: WinApi.PtrSTR;
		END;
		PtrMCI_SAVE_PARMSA* = POINTER TO MCI_SAVE_PARMSA;
		MCI_SAVE_PARMSW* = RECORD [noalign]
			dwCallback*: INTEGER;
			lpfilename*: WinApi.PtrWSTR;
		END;
		PtrMCI_SAVE_PARMSW* = POINTER TO MCI_SAVE_PARMSW;
		MCI_SAVE_PARMS* = MCI_SAVE_PARMSA;
		PtrMCI_SAVE_PARMS* = PtrMCI_SAVE_PARMSA;
		MCI_LOAD_PARMSA* = RECORD [noalign]
			dwCallback*: INTEGER;
			lpfilename*: WinApi.PtrSTR;
		END;
		PtrMCI_LOAD_PARMSA* = POINTER TO MCI_LOAD_PARMSA;
		MCI_LOAD_PARMSW* = RECORD [noalign]
			dwCallback*: INTEGER;
			lpfilename*: WinApi.PtrWSTR;
		END;
		PtrMCI_LOAD_PARMSW* = POINTER TO MCI_LOAD_PARMSW;
		MCI_LOAD_PARMS* = MCI_LOAD_PARMSA;
		PtrMCI_LOAD_PARMS* = PtrMCI_LOAD_PARMSA;
		MCI_RECORD_PARMS* = RECORD [noalign]
			dwCallback*: INTEGER;
			dwFrom*: INTEGER;
			dwTo*: INTEGER;
		END;
		PtrMCI_RECORD_PARMS* = POINTER TO MCI_RECORD_PARMS;
		MCI_VD_PLAY_PARMS* = RECORD [noalign]
			dwCallback*: INTEGER;
			dwFrom*: INTEGER;
			dwTo*: INTEGER;
			dwSpeed*: INTEGER;
		END;
		PtrMCI_VD_PLAY_PARMS* = POINTER TO MCI_VD_PLAY_PARMS;
		MCI_VD_STEP_PARMS* = RECORD [noalign]
			dwCallback*: INTEGER;
			dwFrames*: INTEGER;
		END;
		PtrMCI_VD_STEP_PARMS* = POINTER TO MCI_VD_STEP_PARMS;
		MCI_VD_ESCAPE_PARMSA* = RECORD [noalign]
			dwCallback*: INTEGER;
			lpstrCommand*: WinApi.PtrSTR;
		END;
		PtrMCI_VD_ESCAPE_PARMSA* = POINTER TO MCI_VD_ESCAPE_PARMSA;
		MCI_VD_ESCAPE_PARMSW* = RECORD [noalign]
			dwCallback*: INTEGER;
			lpstrCommand*: WinApi.PtrWSTR;
		END;
		PtrMCI_VD_ESCAPE_PARMSW* = POINTER TO MCI_VD_ESCAPE_PARMSW;
		MCI_VD_ESCAPE_PARMS* = MCI_VD_ESCAPE_PARMSA;
		PtrMCI_VD_ESCAPE_PARMS* = PtrMCI_VD_ESCAPE_PARMSA;
		MCI_WAVE_OPEN_PARMSA* = RECORD [noalign]
			dwCallback*: INTEGER;
			wDeviceID*: MCIDEVICEID;
			lpstrDeviceType*: WinApi.PtrSTR;
			lpstrElementName*: WinApi.PtrSTR;
			lpstrAlias*: WinApi.PtrSTR;
			dwBufferSeconds*: INTEGER;
		END;
		PtrMCI_WAVE_OPEN_PARMSA* = POINTER TO MCI_WAVE_OPEN_PARMSA;
		MCI_WAVE_OPEN_PARMSW* = RECORD [noalign]
			dwCallback*: INTEGER;
			wDeviceID*: MCIDEVICEID;
			lpstrDeviceType*: WinApi.PtrWSTR;
			lpstrElementName*: WinApi.PtrWSTR;
			lpstrAlias*: WinApi.PtrWSTR;
			dwBufferSeconds*: INTEGER;
		END;
		PtrMCI_WAVE_OPEN_PARMSW* = POINTER TO MCI_WAVE_OPEN_PARMSW;
		MCI_WAVE_OPEN_PARMS* = MCI_WAVE_OPEN_PARMSA;
		PtrMCI_WAVE_OPEN_PARMS* = PtrMCI_WAVE_OPEN_PARMSA;
		MCI_WAVE_DELETE_PARMS* = RECORD [noalign]
			dwCallback*: INTEGER;
			dwFrom*: INTEGER;
			dwTo*: INTEGER;
		END;
		PtrMCI_WAVE_DELETE_PARMS* = POINTER TO MCI_WAVE_DELETE_PARMS;
		MCI_WAVE_SET_PARMS* = RECORD [noalign]
			dwCallback*: INTEGER;
			dwTimeFormat*: INTEGER;
			dwAudio*: INTEGER;
			wInput*: INTEGER;
			wOutput*: INTEGER;
			wFormatTag*: SHORTINT;
			wReserved2*: SHORTINT;
			nChannels*: SHORTINT;
			wReserved3*: SHORTINT;
			nSamplesPerSec*: INTEGER;
			nAvgBytesPerSec*: INTEGER;
			nBlockAlign*: SHORTINT;
			wReserved4*: SHORTINT;
			wBitsPerSample*: SHORTINT;
			wReserved5*: SHORTINT;
		END;
		PtrMCI_WAVE_SET_PARMS* = POINTER TO MCI_WAVE_SET_PARMS;
		MCI_SEQ_SET_PARMS* = RECORD [noalign]
			dwCallback*: INTEGER;
			dwTimeFormat*: INTEGER;
			dwAudio*: INTEGER;
			dwTempo*: INTEGER;
			dwPort*: INTEGER;
			dwSlave*: INTEGER;
			dwMaster*: INTEGER;
			dwOffset*: INTEGER;
		END;
		PtrMCI_SEQ_SET_PARMS* = POINTER TO MCI_SEQ_SET_PARMS;
		MCI_ANIM_OPEN_PARMSA* = RECORD [noalign]
			dwCallback*: INTEGER;
			wDeviceID*: MCIDEVICEID;
			lpstrDeviceType*: WinApi.PtrSTR;
			lpstrElementName*: WinApi.PtrSTR;
			lpstrAlias*: WinApi.PtrSTR;
			dwStyle*: SET;
			hWndParent*: WinApi.HWND;
		END;
		PtrMCI_ANIM_OPEN_PARMSA* = POINTER TO MCI_ANIM_OPEN_PARMSA;
		MCI_ANIM_OPEN_PARMSW* = RECORD [noalign]
			dwCallback*: INTEGER;
			wDeviceID*: MCIDEVICEID;
			lpstrDeviceType*: WinApi.PtrWSTR;
			lpstrElementName*: WinApi.PtrWSTR;
			lpstrAlias*: WinApi.PtrWSTR;
			dwStyle*: SET;
			hWndParent*: WinApi.HWND;
		END;
		PtrMCI_ANIM_OPEN_PARMSW* = POINTER TO MCI_ANIM_OPEN_PARMSW;
		MCI_ANIM_OPEN_PARMS* = MCI_ANIM_OPEN_PARMSA;
		PtrMCI_ANIM_OPEN_PARMS* = PtrMCI_ANIM_OPEN_PARMSA;
		MCI_ANIM_PLAY_PARMS* = RECORD [noalign]
			dwCallback*: INTEGER;
			dwFrom*: INTEGER;
			dwTo*: INTEGER;
			dwSpeed*: INTEGER;
		END;
		PtrMCI_ANIM_PLAY_PARMS* = POINTER TO MCI_ANIM_PLAY_PARMS;
		MCI_ANIM_STEP_PARMS* = RECORD [noalign]
			dwCallback*: INTEGER;
			dwFrames*: INTEGER;
		END;
		PtrMCI_ANIM_STEP_PARMS* = POINTER TO MCI_ANIM_STEP_PARMS;
		MCI_ANIM_WINDOW_PARMSA* = RECORD [noalign]
			dwCallback*: INTEGER;
			hWnd*: WinApi.HWND;
			nCmdShow*: INTEGER;
			lpstrText*: WinApi.PtrSTR;
		END;
		PtrMCI_ANIM_WINDOW_PARMSA* = POINTER TO MCI_ANIM_WINDOW_PARMSA;
		MCI_ANIM_WINDOW_PARMSW* = RECORD [noalign]
			dwCallback*: INTEGER;
			hWnd*: WinApi.HWND;
			nCmdShow*: INTEGER;
			lpstrText*: WinApi.PtrWSTR;
		END;
		PtrMCI_ANIM_WINDOW_PARMSW* = POINTER TO MCI_ANIM_WINDOW_PARMSW;
		MCI_ANIM_WINDOW_PARMS* = MCI_ANIM_WINDOW_PARMSA;
		PtrMCI_ANIM_WINDOW_PARMS* = PtrMCI_ANIM_WINDOW_PARMSA;
		MCI_ANIM_RECT_PARMS* = RECORD [noalign]
			dwCallback*: INTEGER;
			rc*: WinApi.RECT;
		END;
		PtrMCI_ANIM_RECT_PARMS* = POINTER TO MCI_ANIM_RECT_PARMS;
		MCI_ANIM_UPDATE_PARMS* = RECORD [noalign]
			dwCallback*: INTEGER;
			rc*: WinApi.RECT;
			hDC*: WinApi.HDC;
		END;
		PtrMCI_ANIM_UPDATE_PARMS* = POINTER TO MCI_ANIM_UPDATE_PARMS;
		MCI_OVLY_OPEN_PARMSA* = RECORD [noalign]
			dwCallback*: INTEGER;
			wDeviceID*: MCIDEVICEID;
			lpstrDeviceType*: WinApi.PtrSTR;
			lpstrElementName*: WinApi.PtrSTR;
			lpstrAlias*: WinApi.PtrSTR;
			dwStyle*: SET;
			hWndParent*: WinApi.HWND;
		END;
		PtrMCI_OVLY_OPEN_PARMSA* = POINTER TO MCI_OVLY_OPEN_PARMSA;
		MCI_OVLY_OPEN_PARMSW* = RECORD [noalign]
			dwCallback*: INTEGER;
			wDeviceID*: MCIDEVICEID;
			lpstrDeviceType*: WinApi.PtrWSTR;
			lpstrElementName*: WinApi.PtrWSTR;
			lpstrAlias*: WinApi.PtrWSTR;
			dwStyle*: SET;
			hWndParent*: WinApi.HWND;
		END;
		PtrMCI_OVLY_OPEN_PARMSW* = POINTER TO MCI_OVLY_OPEN_PARMSW;
		MCI_OVLY_OPEN_PARMS* = MCI_OVLY_OPEN_PARMSA;
		PtrMCI_OVLY_OPEN_PARMS* = PtrMCI_OVLY_OPEN_PARMSA;
		MCI_OVLY_WINDOW_PARMSA* = RECORD [noalign]
			dwCallback*: INTEGER;
			hWnd*: WinApi.HWND;
			nCmdShow*: INTEGER;
			lpstrText*: WinApi.PtrSTR;
		END;
		PtrMCI_OVLY_WINDOW_PARMSA* = POINTER TO MCI_OVLY_WINDOW_PARMSA;
		MCI_OVLY_WINDOW_PARMSW* = RECORD [noalign]
			dwCallback*: INTEGER;
			hWnd*: WinApi.HWND;
			nCmdShow*: INTEGER;
			lpstrText*: WinApi.PtrWSTR;
		END;
		PtrMCI_OVLY_WINDOW_PARMSW* = POINTER TO MCI_OVLY_WINDOW_PARMSW;
		MCI_OVLY_WINDOW_PARMS* = MCI_OVLY_WINDOW_PARMSA;
		PtrMCI_OVLY_WINDOW_PARMS* = PtrMCI_OVLY_WINDOW_PARMSA;
		MCI_OVLY_RECT_PARMS* = RECORD [noalign]
			dwCallback*: INTEGER;
			rc*: WinApi.RECT;
		END;
		PtrMCI_OVLY_RECT_PARMS* = POINTER TO MCI_OVLY_RECT_PARMS;
		MCI_OVLY_SAVE_PARMSA* = RECORD [noalign]
			dwCallback*: INTEGER;
			lpfilename*: WinApi.PtrSTR;
			rc*: WinApi.RECT;
		END;
		PtrMCI_OVLY_SAVE_PARMSA* = POINTER TO MCI_OVLY_SAVE_PARMSA;
		MCI_OVLY_SAVE_PARMSW* = RECORD [noalign]
			dwCallback*: INTEGER;
			lpfilename*: WinApi.PtrWSTR;
			rc*: WinApi.RECT;
		END;
		PtrMCI_OVLY_SAVE_PARMSW* = POINTER TO MCI_OVLY_SAVE_PARMSW;
		MCI_OVLY_SAVE_PARMS* = MCI_OVLY_SAVE_PARMSA;
		PtrMCI_OVLY_SAVE_PARMS* = PtrMCI_OVLY_SAVE_PARMSA;
		MCI_OVLY_LOAD_PARMSA* = RECORD [noalign]
			dwCallback*: INTEGER;
			lpfilename*: WinApi.PtrSTR;
			rc*: WinApi.RECT;
		END;
		PtrMCI_OVLY_LOAD_PARMSA* = POINTER TO MCI_OVLY_LOAD_PARMSA;
		MCI_OVLY_LOAD_PARMSW* = RECORD [noalign]
			dwCallback*: INTEGER;
			lpfilename*: WinApi.PtrWSTR;
			rc*: WinApi.RECT;
		END;
		PtrMCI_OVLY_LOAD_PARMSW* = POINTER TO MCI_OVLY_LOAD_PARMSW;
		MCI_OVLY_LOAD_PARMS* = MCI_OVLY_LOAD_PARMSA;
		PtrMCI_OVLY_LOAD_PARMS* = PtrMCI_OVLY_LOAD_PARMSA;

	PROCEDURE CloseDriver* (hDriver: HDRVR; lParam1: INTEGER; lParam2: INTEGER): WinApi.LRESULT;
	(*END CloseDriver;*)

	PROCEDURE OpenDriver* (szDriverName: WinApi.PtrWSTR; szSectionName: WinApi.PtrWSTR; lParam2: INTEGER): HDRVR;
	(*END OpenDriver;*)

	PROCEDURE SendDriverMessage* (hDriver: HDRVR; message: INTEGER; lParam1: INTEGER; lParam2: INTEGER): WinApi.LRESULT;
	(*END SendDriverMessage;*)

	PROCEDURE DrvGetModuleHandle* (hDriver: HDRVR): WinApi.HMODULE;
	(*END DrvGetModuleHandle;*)

	PROCEDURE GetDriverModuleHandle* (hDriver: HDRVR): WinApi.HMODULE;
	(*END GetDriverModuleHandle;*)

	PROCEDURE DefDriverProc* (dwDriverIdentifier: INTEGER; hdrvr: HDRVR; uMsg: INTEGER; lParam1: WinApi.LPARAM; lParam2: WinApi.LPARAM): WinApi.LRESULT;
	(*END DefDriverProc;*)

	PROCEDURE OutputDebugStr* ["KERNEL32.dll", "WinApi.OutputDebugStringA"] (lpOutputString: WinApi.PtrSTR);
	(*END OutputDebugStr;*)

	PROCEDURE sndPlaySoundA* (pszSound: WinApi.PtrSTR; fuSound: INTEGER): WinApi.BOOL;
	(*END sndPlaySoundA;*)

	PROCEDURE sndPlaySoundW* (pszSound: WinApi.PtrWSTR; fuSound: INTEGER): WinApi.BOOL;
	(*END sndPlaySoundW;*)

	PROCEDURE sndPlaySound* ["sndPlaySoundA"] (pszSound: WinApi.PtrSTR; fuSound: INTEGER): WinApi.BOOL;
	(*END sndPlaySound;*)

	PROCEDURE PlaySoundA* (pszSound: WinApi.PtrSTR; hmod: WinApi.HMODULE; fdwSound: INTEGER): WinApi.BOOL;
	(*END PlaySoundA;*)

	PROCEDURE PlaySoundW* (pszSound: WinApi.PtrWSTR; hmod: WinApi.HMODULE; fdwSound: INTEGER): WinApi.BOOL;
	(*END PlaySoundW;*)

	PROCEDURE PlaySound* ["PlaySoundA"] (pszSound: WinApi.PtrSTR; hmod: WinApi.HMODULE; fdwSound: INTEGER): WinApi.BOOL;
	(*END PlaySound;*)

	PROCEDURE waveOutGetNumDevs* (): INTEGER;
	(*END waveOutGetNumDevs;*)

	PROCEDURE waveOutGetDevCapsA* (uDeviceID: INTEGER; VAR [nil] pwoc: WAVEOUTCAPSA; cbwoc: INTEGER): MMRESULT;
	(*END waveOutGetDevCapsA;*)

	PROCEDURE waveOutGetDevCapsW* (uDeviceID: INTEGER; VAR [nil] pwoc: WAVEOUTCAPSW; cbwoc: INTEGER): MMRESULT;
	(*END waveOutGetDevCapsW;*)

	PROCEDURE waveOutGetDevCaps* ["waveOutGetDevCapsA"] (uDeviceID: INTEGER; VAR [nil] pwoc: WAVEOUTCAPSA; cbwoc: INTEGER): MMRESULT;
	(*END waveOutGetDevCaps;*)

	PROCEDURE waveOutGetVolume* (hwo: HWAVEOUT; VAR [nil] pdwVolume: INTEGER): MMRESULT;
	(*END waveOutGetVolume;*)

	PROCEDURE waveOutSetVolume* (hwo: HWAVEOUT; dwVolume: INTEGER): MMRESULT;
	(*END waveOutSetVolume;*)

	PROCEDURE waveOutGetErrorTextA* (mmrError: MMRESULT; pszText: WinApi.PtrSTR; cchText: INTEGER): MMRESULT;
	(*END waveOutGetErrorTextA;*)

	PROCEDURE waveOutGetErrorTextW* (mmrError: MMRESULT; pszText: WinApi.PtrWSTR; cchText: INTEGER): MMRESULT;
	(*END waveOutGetErrorTextW;*)

	PROCEDURE waveOutGetErrorText* ["waveOutGetErrorTextA"] (mmrError: MMRESULT; pszText: WinApi.PtrSTR; cchText: INTEGER): MMRESULT;
	(*END waveOutGetErrorText;*)

	PROCEDURE waveOutOpen* (VAR [nil] phwo: HWAVEOUT; uDeviceID: INTEGER; VAR [nil] pwfx: WAVEFORMATEX; dwCallback: INTEGER; dwInstance: INTEGER; fdwOpen: INTEGER): MMRESULT;
	(*END waveOutOpen;*)

	PROCEDURE waveOutClose* (hwo: HWAVEOUT): MMRESULT;
	(*END waveOutClose;*)

	PROCEDURE waveOutPrepareHeader* (hwo: HWAVEOUT; VAR [nil] pwh: WAVEHDR; cbwh: INTEGER): MMRESULT;
	(*END waveOutPrepareHeader;*)

	PROCEDURE waveOutUnprepareHeader* (hwo: HWAVEOUT; VAR [nil] pwh: WAVEHDR; cbwh: INTEGER): MMRESULT;
	(*END waveOutUnprepareHeader;*)

	PROCEDURE waveOutWrite* (hwo: HWAVEOUT; VAR [nil] pwh: WAVEHDR; cbwh: INTEGER): MMRESULT;
	(*END waveOutWrite;*)

	PROCEDURE waveOutPause* (hwo: HWAVEOUT): MMRESULT;
	(*END waveOutPause;*)

	PROCEDURE waveOutRestart* (hwo: HWAVEOUT): MMRESULT;
	(*END waveOutRestart;*)

	PROCEDURE waveOutReset* (hwo: HWAVEOUT): MMRESULT;
	(*END waveOutReset;*)

	PROCEDURE waveOutBreakLoop* (hwo: HWAVEOUT): MMRESULT;
	(*END waveOutBreakLoop;*)

	PROCEDURE waveOutGetPosition* (hwo: HWAVEOUT; VAR [nil] pmmt: MMTIME; cbmmt: INTEGER): MMRESULT;
	(*END waveOutGetPosition;*)

	PROCEDURE waveOutGetPitch* (hwo: HWAVEOUT; VAR [nil] pdwPitch: INTEGER): MMRESULT;
	(*END waveOutGetPitch;*)

	PROCEDURE waveOutSetPitch* (hwo: HWAVEOUT; dwPitch: INTEGER): MMRESULT;
	(*END waveOutSetPitch;*)

	PROCEDURE waveOutGetPlaybackRate* (hwo: HWAVEOUT; VAR [nil] pdwRate: INTEGER): MMRESULT;
	(*END waveOutGetPlaybackRate;*)

	PROCEDURE waveOutSetPlaybackRate* (hwo: HWAVEOUT; dwRate: INTEGER): MMRESULT;
	(*END waveOutSetPlaybackRate;*)

	PROCEDURE waveOutGetID* (hwo: HWAVEOUT; VAR [nil] puDeviceID: INTEGER): MMRESULT;
	(*END waveOutGetID;*)

	PROCEDURE waveOutMessage* (hwo: HWAVEOUT; uMsg: INTEGER; dw1: INTEGER; dw2: INTEGER): MMRESULT;
	(*END waveOutMessage;*)

	PROCEDURE waveInGetNumDevs* (): INTEGER;
	(*END waveInGetNumDevs;*)

	PROCEDURE waveInGetDevCapsA* (uDeviceID: INTEGER; VAR [nil] pwic: WAVEINCAPSA; cbwic: INTEGER): MMRESULT;
	(*END waveInGetDevCapsA;*)

	PROCEDURE waveInGetDevCapsW* (uDeviceID: INTEGER; VAR [nil] pwic: WAVEINCAPSW; cbwic: INTEGER): MMRESULT;
	(*END waveInGetDevCapsW;*)

	PROCEDURE waveInGetDevCaps* ["waveInGetDevCapsA"] (uDeviceID: INTEGER; VAR [nil] pwic: WAVEINCAPSA; cbwic: INTEGER): MMRESULT;
	(*END waveInGetDevCaps;*)

	PROCEDURE waveInGetErrorTextA* (mmrError: MMRESULT; pszText: WinApi.PtrSTR; cchText: INTEGER): MMRESULT;
	(*END waveInGetErrorTextA;*)

	PROCEDURE waveInGetErrorTextW* (mmrError: MMRESULT; pszText: WinApi.PtrWSTR; cchText: INTEGER): MMRESULT;
	(*END waveInGetErrorTextW;*)

	PROCEDURE waveInGetErrorText* ["waveInGetErrorTextA"] (mmrError: MMRESULT; pszText: WinApi.PtrSTR; cchText: INTEGER): MMRESULT;
	(*END waveInGetErrorText;*)

	PROCEDURE waveInOpen* (VAR [nil] phwi: HWAVEIN; uDeviceID: INTEGER; VAR [nil] pwfx: WAVEFORMATEX; dwCallback: INTEGER; dwInstance: INTEGER; fdwOpen: INTEGER): MMRESULT;
	(*END waveInOpen;*)

	PROCEDURE waveInClose* (hwi: HWAVEIN): MMRESULT;
	(*END waveInClose;*)

	PROCEDURE waveInPrepareHeader* (hwi: HWAVEIN; VAR [nil] pwh: WAVEHDR; cbwh: INTEGER): MMRESULT;
	(*END waveInPrepareHeader;*)

	PROCEDURE waveInUnprepareHeader* (hwi: HWAVEIN; VAR [nil] pwh: WAVEHDR; cbwh: INTEGER): MMRESULT;
	(*END waveInUnprepareHeader;*)

	PROCEDURE waveInAddBuffer* (hwi: HWAVEIN; VAR [nil] pwh: WAVEHDR; cbwh: INTEGER): MMRESULT;
	(*END waveInAddBuffer;*)

	PROCEDURE waveInStart* (hwi: HWAVEIN): MMRESULT;
	(*END waveInStart;*)

	PROCEDURE waveInStop* (hwi: HWAVEIN): MMRESULT;
	(*END waveInStop;*)

	PROCEDURE waveInReset* (hwi: HWAVEIN): MMRESULT;
	(*END waveInReset;*)

	PROCEDURE waveInGetPosition* (hwi: HWAVEIN; VAR [nil] pmmt: MMTIME; cbmmt: INTEGER): MMRESULT;
	(*END waveInGetPosition;*)

	PROCEDURE waveInGetID* (hwi: HWAVEIN; VAR [nil] puDeviceID: INTEGER): MMRESULT;
	(*END waveInGetID;*)

	PROCEDURE waveInMessage* (hwi: HWAVEIN; uMsg: INTEGER; dw1: INTEGER; dw2: INTEGER): MMRESULT;
	(*END waveInMessage;*)

	PROCEDURE midiOutGetNumDevs* (): INTEGER;
	(*END midiOutGetNumDevs;*)

	PROCEDURE midiStreamOpen* (VAR [nil] phms: HMIDISTRM; VAR [nil] puDeviceID: INTEGER; cMidi: INTEGER; dwCallback: INTEGER; dwInstance: INTEGER; fdwOpen: INTEGER): MMRESULT;
	(*END midiStreamOpen;*)

	PROCEDURE midiStreamClose* (hms: HMIDISTRM): MMRESULT;
	(*END midiStreamClose;*)

	PROCEDURE midiStreamProperty* (hms: HMIDISTRM; VAR [nil] lppropdata: SHORTCHAR; dwProperty: INTEGER): MMRESULT;
	(*END midiStreamProperty;*)

	PROCEDURE midiStreamPosition* (hms: HMIDISTRM; VAR [nil] lpmmt: MMTIME; cbmmt: INTEGER): MMRESULT;
	(*END midiStreamPosition;*)

	PROCEDURE midiStreamOut* (hms: HMIDISTRM; VAR [nil] pmh: MIDIHDR; cbmh: INTEGER): MMRESULT;
	(*END midiStreamOut;*)

	PROCEDURE midiStreamPause* (hms: HMIDISTRM): MMRESULT;
	(*END midiStreamPause;*)

	PROCEDURE midiStreamRestart* (hms: HMIDISTRM): MMRESULT;
	(*END midiStreamRestart;*)

	PROCEDURE midiStreamStop* (hms: HMIDISTRM): MMRESULT;
	(*END midiStreamStop;*)

	PROCEDURE midiConnect* (hmi: HMIDI; hmo: HMIDIOUT; pReserved: WinApi.PtrVoid): MMRESULT;
	(*END midiConnect;*)

	PROCEDURE midiDisconnect* (hmi: HMIDI; hmo: HMIDIOUT; pReserved: WinApi.PtrVoid): MMRESULT;
	(*END midiDisconnect;*)

	PROCEDURE midiOutGetDevCapsA* (uDeviceID: INTEGER; VAR [nil] pmoc: MIDIOUTCAPSA; cbmoc: INTEGER): MMRESULT;
	(*END midiOutGetDevCapsA;*)

	PROCEDURE midiOutGetDevCapsW* (uDeviceID: INTEGER; VAR [nil] pmoc: MIDIOUTCAPSW; cbmoc: INTEGER): MMRESULT;
	(*END midiOutGetDevCapsW;*)

	PROCEDURE midiOutGetDevCaps* ["midiOutGetDevCapsA"] (uDeviceID: INTEGER; VAR [nil] pmoc: MIDIOUTCAPSA; cbmoc: INTEGER): MMRESULT;
	(*END midiOutGetDevCaps;*)

	PROCEDURE midiOutGetVolume* (hmo: HMIDIOUT; VAR [nil] pdwVolume: INTEGER): MMRESULT;
	(*END midiOutGetVolume;*)

	PROCEDURE midiOutSetVolume* (hmo: HMIDIOUT; dwVolume: INTEGER): MMRESULT;
	(*END midiOutSetVolume;*)

	PROCEDURE midiOutGetErrorTextA* (mmrError: MMRESULT; pszText: WinApi.PtrSTR; cchText: INTEGER): MMRESULT;
	(*END midiOutGetErrorTextA;*)

	PROCEDURE midiOutGetErrorTextW* (mmrError: MMRESULT; pszText: WinApi.PtrWSTR; cchText: INTEGER): MMRESULT;
	(*END midiOutGetErrorTextW;*)

	PROCEDURE midiOutGetErrorText* ["midiOutGetErrorTextA"] (mmrError: MMRESULT; pszText: WinApi.PtrSTR; cchText: INTEGER): MMRESULT;
	(*END midiOutGetErrorText;*)

	PROCEDURE midiOutOpen* (VAR [nil] phmo: HMIDIOUT; uDeviceID: INTEGER; dwCallback: INTEGER; dwInstance: INTEGER; fdwOpen: INTEGER): MMRESULT;
	(*END midiOutOpen;*)

	PROCEDURE midiOutClose* (hmo: HMIDIOUT): MMRESULT;
	(*END midiOutClose;*)

	PROCEDURE midiOutPrepareHeader* (hmo: HMIDIOUT; VAR [nil] pmh: MIDIHDR; cbmh: INTEGER): MMRESULT;
	(*END midiOutPrepareHeader;*)

	PROCEDURE midiOutUnprepareHeader* (hmo: HMIDIOUT; VAR [nil] pmh: MIDIHDR; cbmh: INTEGER): MMRESULT;
	(*END midiOutUnprepareHeader;*)

	PROCEDURE midiOutShortMsg* (hmo: HMIDIOUT; dwMsg: INTEGER): MMRESULT;
	(*END midiOutShortMsg;*)

	PROCEDURE midiOutLongMsg* (hmo: HMIDIOUT; VAR [nil] pmh: MIDIHDR; cbmh: INTEGER): MMRESULT;
	(*END midiOutLongMsg;*)

	PROCEDURE midiOutReset* (hmo: HMIDIOUT): MMRESULT;
	(*END midiOutReset;*)

	PROCEDURE midiOutCachePatches* (hmo: HMIDIOUT; uBank: INTEGER; VAR [nil] pwpa: SHORTINT; fuCache: INTEGER): MMRESULT;
	(*END midiOutCachePatches;*)

	PROCEDURE midiOutCacheDrumPatches* (hmo: HMIDIOUT; uPatch: INTEGER; VAR [nil] pwkya: SHORTINT; fuCache: INTEGER): MMRESULT;
	(*END midiOutCacheDrumPatches;*)

	PROCEDURE midiOutGetID* (hmo: HMIDIOUT; VAR [nil] puDeviceID: INTEGER): MMRESULT;
	(*END midiOutGetID;*)

	PROCEDURE midiOutMessage* (hmo: HMIDIOUT; uMsg: INTEGER; dw1: INTEGER; dw2: INTEGER): MMRESULT;
	(*END midiOutMessage;*)

	PROCEDURE midiInGetNumDevs* (): INTEGER;
	(*END midiInGetNumDevs;*)

	PROCEDURE midiInGetDevCapsA* (uDeviceID: INTEGER; VAR [nil] pmic: MIDIINCAPSA; cbmic: INTEGER): MMRESULT;
	(*END midiInGetDevCapsA;*)

	PROCEDURE midiInGetDevCapsW* (uDeviceID: INTEGER; VAR [nil] pmic: MIDIINCAPSW; cbmic: INTEGER): MMRESULT;
	(*END midiInGetDevCapsW;*)

	PROCEDURE midiInGetDevCaps* ["midiInGetDevCapsA"] (uDeviceID: INTEGER; VAR [nil] pmic: MIDIINCAPSA; cbmic: INTEGER): MMRESULT;
	(*END midiInGetDevCaps;*)

	PROCEDURE midiInGetErrorTextA* (mmrError: MMRESULT; pszText: WinApi.PtrSTR; cchText: INTEGER): MMRESULT;
	(*END midiInGetErrorTextA;*)

	PROCEDURE midiInGetErrorTextW* (mmrError: MMRESULT; pszText: WinApi.PtrWSTR; cchText: INTEGER): MMRESULT;
	(*END midiInGetErrorTextW;*)

	PROCEDURE midiInGetErrorText* ["midiInGetErrorTextA"] (mmrError: MMRESULT; pszText: WinApi.PtrSTR; cchText: INTEGER): MMRESULT;
	(*END midiInGetErrorText;*)

	PROCEDURE midiInOpen* (VAR [nil] phmi: HMIDIIN; uDeviceID: INTEGER; dwCallback: INTEGER; dwInstance: INTEGER; fdwOpen: INTEGER): MMRESULT;
	(*END midiInOpen;*)

	PROCEDURE midiInClose* (hmi: HMIDIIN): MMRESULT;
	(*END midiInClose;*)

	PROCEDURE midiInPrepareHeader* (hmi: HMIDIIN; VAR [nil] pmh: MIDIHDR; cbmh: INTEGER): MMRESULT;
	(*END midiInPrepareHeader;*)

	PROCEDURE midiInUnprepareHeader* (hmi: HMIDIIN; VAR [nil] pmh: MIDIHDR; cbmh: INTEGER): MMRESULT;
	(*END midiInUnprepareHeader;*)

	PROCEDURE midiInAddBuffer* (hmi: HMIDIIN; VAR [nil] pmh: MIDIHDR; cbmh: INTEGER): MMRESULT;
	(*END midiInAddBuffer;*)

	PROCEDURE midiInStart* (hmi: HMIDIIN): MMRESULT;
	(*END midiInStart;*)

	PROCEDURE midiInStop* (hmi: HMIDIIN): MMRESULT;
	(*END midiInStop;*)

	PROCEDURE midiInReset* (hmi: HMIDIIN): MMRESULT;
	(*END midiInReset;*)

	PROCEDURE midiInGetID* (hmi: HMIDIIN; VAR [nil] puDeviceID: INTEGER): MMRESULT;
	(*END midiInGetID;*)

	PROCEDURE midiInMessage* (hmi: HMIDIIN; uMsg: INTEGER; dw1: INTEGER; dw2: INTEGER): MMRESULT;
	(*END midiInMessage;*)

	PROCEDURE auxGetNumDevs* (): INTEGER;
	(*END auxGetNumDevs;*)

	PROCEDURE auxGetDevCapsA* (uDeviceID: INTEGER; VAR [nil] pac: AUXCAPSA; cbac: INTEGER): MMRESULT;
	(*END auxGetDevCapsA;*)

	PROCEDURE auxGetDevCapsW* (uDeviceID: INTEGER; VAR [nil] pac: AUXCAPSW; cbac: INTEGER): MMRESULT;
	(*END auxGetDevCapsW;*)

	PROCEDURE auxGetDevCaps* ["auxGetDevCapsA"] (uDeviceID: INTEGER; VAR [nil] pac: AUXCAPSA; cbac: INTEGER): MMRESULT;
	(*END auxGetDevCaps;*)

	PROCEDURE auxSetVolume* (uDeviceID: INTEGER; dwVolume: INTEGER): MMRESULT;
	(*END auxSetVolume;*)

	PROCEDURE auxGetVolume* (uDeviceID: INTEGER; VAR [nil] pdwVolume: INTEGER): MMRESULT;
	(*END auxGetVolume;*)

	PROCEDURE auxOutMessage* (uDeviceID: INTEGER; uMsg: INTEGER; dw1: INTEGER; dw2: INTEGER): MMRESULT;
	(*END auxOutMessage;*)

	PROCEDURE mixerGetNumDevs* (): INTEGER;
	(*END mixerGetNumDevs;*)

	PROCEDURE mixerGetDevCapsA* (uMxId: INTEGER; VAR [nil] pmxcaps: MIXERCAPSA; cbmxcaps: INTEGER): MMRESULT;
	(*END mixerGetDevCapsA;*)

	PROCEDURE mixerGetDevCapsW* (uMxId: INTEGER; VAR [nil] pmxcaps: MIXERCAPSW; cbmxcaps: INTEGER): MMRESULT;
	(*END mixerGetDevCapsW;*)

	PROCEDURE mixerGetDevCaps* ["mixerGetDevCapsA"] (uMxId: INTEGER; VAR [nil] pmxcaps: MIXERCAPSA; cbmxcaps: INTEGER): MMRESULT;
	(*END mixerGetDevCaps;*)

	PROCEDURE mixerOpen* (VAR [nil] phmx: HMIXER; uMxId: INTEGER; dwCallback: INTEGER; dwInstance: INTEGER; fdwOpen: INTEGER): MMRESULT;
	(*END mixerOpen;*)

	PROCEDURE mixerClose* (hmx: HMIXER): MMRESULT;
	(*END mixerClose;*)

	PROCEDURE mixerMessage* (hmx: HMIXER; uMsg: INTEGER; dwParam1: INTEGER; dwParam2: INTEGER): INTEGER;
	(*END mixerMessage;*)

	PROCEDURE mixerGetLineInfoA* (hmxobj: HMIXEROBJ; VAR [nil] pmxl: MIXERLINEA; fdwInfo: INTEGER): MMRESULT;
	(*END mixerGetLineInfoA;*)

	PROCEDURE mixerGetLineInfoW* (hmxobj: HMIXEROBJ; VAR [nil] pmxl: MIXERLINEW; fdwInfo: INTEGER): MMRESULT;
	(*END mixerGetLineInfoW;*)

	PROCEDURE mixerGetLineInfo* ["mixerGetLineInfoA"] (hmxobj: HMIXEROBJ; VAR [nil] pmxl: MIXERLINEA; fdwInfo: INTEGER): MMRESULT;
	(*END mixerGetLineInfo;*)

	PROCEDURE mixerGetID* (hmxobj: HMIXEROBJ; VAR [nil] puMxId: INTEGER; fdwId: INTEGER): MMRESULT;
	(*END mixerGetID;*)

	PROCEDURE mixerGetLineControlsA* (hmxobj: HMIXEROBJ; VAR [nil] pmxlc: MIXERLINECONTROLSA; fdwControls: INTEGER): MMRESULT;
	(*END mixerGetLineControlsA;*)

	PROCEDURE mixerGetLineControlsW* (hmxobj: HMIXEROBJ; VAR [nil] pmxlc: MIXERLINECONTROLSW; fdwControls: INTEGER): MMRESULT;
	(*END mixerGetLineControlsW;*)

	PROCEDURE mixerGetLineControls* ["mixerGetLineControlsA"] (hmxobj: HMIXEROBJ; VAR [nil] pmxlc: MIXERLINECONTROLSA; fdwControls: INTEGER): MMRESULT;
	(*END mixerGetLineControls;*)

	PROCEDURE mixerGetControlDetailsA* (hmxobj: HMIXEROBJ; VAR [nil] pmxcd: MIXERCONTROLDETAILS; fdwDetails: INTEGER): MMRESULT;
	(*END mixerGetControlDetailsA;*)

	PROCEDURE mixerGetControlDetailsW* (hmxobj: HMIXEROBJ; VAR [nil] pmxcd: MIXERCONTROLDETAILS; fdwDetails: INTEGER): MMRESULT;
	(*END mixerGetControlDetailsW;*)

	PROCEDURE mixerGetControlDetails* ["mixerGetControlDetailsA"] (hmxobj: HMIXEROBJ; VAR [nil] pmxcd: MIXERCONTROLDETAILS; fdwDetails: INTEGER): MMRESULT;
	(*END mixerGetControlDetails;*)

	PROCEDURE mixerSetControlDetails* (hmxobj: HMIXEROBJ; VAR [nil] pmxcd: MIXERCONTROLDETAILS; fdwDetails: INTEGER): MMRESULT;
	(*END mixerSetControlDetails;*)

	PROCEDURE timeGetSystemTime* (VAR [nil] pmmt: MMTIME; cbmmt: INTEGER): MMRESULT;
	(*END timeGetSystemTime;*)

	PROCEDURE timeGetTime* (): INTEGER;
	(*END timeGetTime;*)

	PROCEDURE timeSetEvent* (uDelay: INTEGER; uResolution: INTEGER; fptc: TIMECALLBACK; dwUser: INTEGER; fuEvent: INTEGER): MMRESULT;
	(*END timeSetEvent;*)

	PROCEDURE timeKillEvent* (uTimerID: INTEGER): MMRESULT;
	(*END timeKillEvent;*)

	PROCEDURE timeGetDevCaps* (VAR [nil] ptc: TIMECAPS; cbtc: INTEGER): MMRESULT;
	(*END timeGetDevCaps;*)

	PROCEDURE timeBeginPeriod* (uPeriod: INTEGER): MMRESULT;
	(*END timeBeginPeriod;*)

	PROCEDURE timeEndPeriod* (uPeriod: INTEGER): MMRESULT;
	(*END timeEndPeriod;*)

	PROCEDURE joyGetNumDevs* (): INTEGER;
	(*END joyGetNumDevs;*)

	PROCEDURE joyGetDevCapsA* (uJoyID: INTEGER; VAR [nil] pjc: JOYCAPSA; cbjc: INTEGER): MMRESULT;
	(*END joyGetDevCapsA;*)

	PROCEDURE joyGetDevCapsW* (uJoyID: INTEGER; VAR [nil] pjc: JOYCAPSW; cbjc: INTEGER): MMRESULT;
	(*END joyGetDevCapsW;*)

	PROCEDURE joyGetDevCaps* ["joyGetDevCapsA"] (uJoyID: INTEGER; VAR [nil] pjc: JOYCAPSA; cbjc: INTEGER): MMRESULT;
	(*END joyGetDevCaps;*)

	PROCEDURE joyGetPos* (uJoyID: INTEGER; VAR [nil] pji: JOYINFO): MMRESULT;
	(*END joyGetPos;*)

	PROCEDURE joyGetPosEx* (uJoyID: INTEGER; VAR [nil] pji: JOYINFOEX): MMRESULT;
	(*END joyGetPosEx;*)

	PROCEDURE joyGetThreshold* (uJoyID: INTEGER; VAR [nil] puThreshold: INTEGER): MMRESULT;
	(*END joyGetThreshold;*)

	PROCEDURE joyReleaseCapture* (uJoyID: INTEGER): MMRESULT;
	(*END joyReleaseCapture;*)

	PROCEDURE joySetCapture* (hwnd: WinApi.HWND; uJoyID: INTEGER; uPeriod: INTEGER; fChanged: WinApi.BOOL): MMRESULT;
	(*END joySetCapture;*)

	PROCEDURE joySetThreshold* (uJoyID: INTEGER; uThreshold: INTEGER): MMRESULT;
	(*END joySetThreshold;*)

	PROCEDURE mmioStringToFOURCCA* (sz: WinApi.PtrSTR; uFlags: SET): FOURCC;
	(*END mmioStringToFOURCCA;*)

	PROCEDURE mmioStringToFOURCCW* (sz: WinApi.PtrWSTR; uFlags: SET): FOURCC;
	(*END mmioStringToFOURCCW;*)

	PROCEDURE mmioStringToFOURCC* ["mmioStringToFOURCCA"] (sz: WinApi.PtrSTR; uFlags: SET): FOURCC;
	(*END mmioStringToFOURCC;*)

	PROCEDURE mmioInstallIOProcA* (fccIOProc: FOURCC; pIOProc: MMIOPROC; dwFlags: SET): MMIOPROC;
	(*END mmioInstallIOProcA;*)

	PROCEDURE mmioInstallIOProcW* (fccIOProc: FOURCC; pIOProc: MMIOPROC; dwFlags: SET): MMIOPROC;
	(*END mmioInstallIOProcW;*)

	PROCEDURE mmioInstallIOProc* ["mmioInstallIOProcA"] (fccIOProc: FOURCC; pIOProc: MMIOPROC; dwFlags: SET): MMIOPROC;
	(*END mmioInstallIOProc;*)

	PROCEDURE mmioOpenA* (pszFileName: WinApi.PtrSTR; VAR [nil] pmmioinfo: MMIOINFO; fdwOpen: INTEGER): HMMIO;
	(*END mmioOpenA;*)

	PROCEDURE mmioOpenW* (pszFileName: WinApi.PtrWSTR; VAR [nil] pmmioinfo: MMIOINFO; fdwOpen: INTEGER): HMMIO;
	(*END mmioOpenW;*)

	PROCEDURE mmioOpen* ["mmioOpenA"] (pszFileName: WinApi.PtrSTR; VAR [nil] pmmioinfo: MMIOINFO; fdwOpen: INTEGER): HMMIO;
	(*END mmioOpen;*)

	PROCEDURE mmioRenameA* (pszFileName: WinApi.PtrSTR; pszNewFileName: WinApi.PtrSTR; VAR [nil] pmmioinfo: MMIOINFO; fdwRename: INTEGER): MMRESULT;
	(*END mmioRenameA;*)

	PROCEDURE mmioRenameW* (pszFileName: WinApi.PtrWSTR; pszNewFileName: WinApi.PtrWSTR; VAR [nil] pmmioinfo: MMIOINFO; fdwRename: INTEGER): MMRESULT;
	(*END mmioRenameW;*)

	PROCEDURE mmioRename* ["mmioRenameA"] (pszFileName: WinApi.PtrSTR; pszNewFileName: WinApi.PtrSTR; VAR [nil] pmmioinfo: MMIOINFO; fdwRename: INTEGER): MMRESULT;
	(*END mmioRename;*)

	PROCEDURE mmioClose* (hmmio: HMMIO; fuClose: INTEGER): MMRESULT;
	(*END mmioClose;*)

	PROCEDURE mmioRead* (hmmio: HMMIO; pch: WinApi.PtrSTR; cch: INTEGER): INTEGER;
	(*END mmioRead;*)

	PROCEDURE mmioWrite* (hmmio: HMMIO; pch: WinApi.PtrSTR; cch: INTEGER): INTEGER;
	(*END mmioWrite;*)

	PROCEDURE mmioSeek* (hmmio: HMMIO; lOffset: INTEGER; iOrigin: INTEGER): INTEGER;
	(*END mmioSeek;*)

	PROCEDURE mmioGetInfo* (hmmio: HMMIO; VAR [nil] pmmioinfo: MMIOINFO; fuInfo: INTEGER): MMRESULT;
	(*END mmioGetInfo;*)

	PROCEDURE mmioSetInfo* (hmmio: HMMIO; VAR [nil] pmmioinfo: MMIOINFO; fuInfo: INTEGER): MMRESULT;
	(*END mmioSetInfo;*)

	PROCEDURE mmioSetBuffer* (hmmio: HMMIO; pchBuffer: WinApi.PtrSTR; cchBuffer: INTEGER; fuBuffer: INTEGER): MMRESULT;
	(*END mmioSetBuffer;*)

	PROCEDURE mmioFlush* (hmmio: HMMIO; fuFlush: INTEGER): MMRESULT;
	(*END mmioFlush;*)

	PROCEDURE mmioAdvance* (hmmio: HMMIO; VAR [nil] pmmioinfo: MMIOINFO; fuAdvance: INTEGER): MMRESULT;
	(*END mmioAdvance;*)

	PROCEDURE mmioSendMessage* (hmmio: HMMIO; uMsg: INTEGER; lParam1: WinApi.LPARAM; lParam2: WinApi.LPARAM): WinApi.LRESULT;
	(*END mmioSendMessage;*)

	PROCEDURE mmioDescend* (hmmio: HMMIO; VAR [nil] pmmcki: MMCKINFO; VAR [nil] pmmckiParent: MMCKINFO; fuDescend: INTEGER): MMRESULT;
	(*END mmioDescend;*)

	PROCEDURE mmioAscend* (hmmio: HMMIO; VAR [nil] pmmcki: MMCKINFO; fuAscend: INTEGER): MMRESULT;
	(*END mmioAscend;*)

	PROCEDURE mmioCreateChunk* (hmmio: HMMIO; VAR [nil] pmmcki: MMCKINFO; fuCreate: INTEGER): MMRESULT;
	(*END mmioCreateChunk;*)

	PROCEDURE mciSendCommandA* (mciId: MCIDEVICEID; uMsg: INTEGER; dwParam1: INTEGER; dwParam2: INTEGER): MCIERROR;
	(*END mciSendCommandA;*)

	PROCEDURE mciSendCommandW* (mciId: MCIDEVICEID; uMsg: INTEGER; dwParam1: INTEGER; dwParam2: INTEGER): MCIERROR;
	(*END mciSendCommandW;*)

	PROCEDURE mciSendCommand* ["mciSendCommandA"] (mciId: MCIDEVICEID; uMsg: INTEGER; dwParam1: INTEGER; dwParam2: INTEGER): MCIERROR;
	(*END mciSendCommand;*)

	PROCEDURE mciSendStringA* (lpstrCommand: WinApi.PtrSTR; lpstrReturnString: WinApi.PtrSTR; uReturnLength: INTEGER; hwndCallback: WinApi.HWND): MCIERROR;
	(*END mciSendStringA;*)

	PROCEDURE mciSendStringW* (lpstrCommand: WinApi.PtrWSTR; lpstrReturnString: WinApi.PtrWSTR; uReturnLength: INTEGER; hwndCallback: WinApi.HWND): MCIERROR;
	(*END mciSendStringW;*)

	PROCEDURE mciSendString* ["mciSendStringA"] (lpstrCommand: WinApi.PtrSTR; lpstrReturnString: WinApi.PtrSTR; uReturnLength: INTEGER; hwndCallback: WinApi.HWND): MCIERROR;
	(*END mciSendString;*)

	PROCEDURE mciGetDeviceIDA* (pszDevice: WinApi.PtrSTR): MCIDEVICEID;
	(*END mciGetDeviceIDA;*)

	PROCEDURE mciGetDeviceIDW* (pszDevice: WinApi.PtrWSTR): MCIDEVICEID;
	(*END mciGetDeviceIDW;*)

	PROCEDURE mciGetDeviceID* ["mciGetDeviceIDA"] (pszDevice: WinApi.PtrSTR): MCIDEVICEID;
	(*END mciGetDeviceID;*)

	PROCEDURE mciGetDeviceIDFromElementIDA* (dwElementID: INTEGER; lpstrType: WinApi.PtrSTR): MCIDEVICEID;
	(*END mciGetDeviceIDFromElementIDA;*)

	PROCEDURE mciGetDeviceIDFromElementIDW* (dwElementID: INTEGER; lpstrType: WinApi.PtrWSTR): MCIDEVICEID;
	(*END mciGetDeviceIDFromElementIDW;*)

	PROCEDURE mciGetDeviceIDFromElementID* ["mciGetDeviceIDFromElementIDA"] (dwElementID: INTEGER; lpstrType: WinApi.PtrSTR): MCIDEVICEID;
	(*END mciGetDeviceIDFromElementID;*)

	PROCEDURE mciGetErrorStringA* (mcierr: MCIERROR; pszText: WinApi.PtrSTR; cchText: INTEGER): WinApi.BOOL;
	(*END mciGetErrorStringA;*)

	PROCEDURE mciGetErrorStringW* (mcierr: MCIERROR; pszText: WinApi.PtrWSTR; cchText: INTEGER): WinApi.BOOL;
	(*END mciGetErrorStringW;*)

	PROCEDURE mciGetErrorString* ["mciGetErrorStringA"] (mcierr: MCIERROR; pszText: WinApi.PtrSTR; cchText: INTEGER): WinApi.BOOL;
	(*END mciGetErrorString;*)

	PROCEDURE mciSetYieldProc* (mciId: MCIDEVICEID; fpYieldProc: YIELDPROC; dwYieldData: INTEGER): WinApi.BOOL;
	(*END mciSetYieldProc;*)

	PROCEDURE mciGetCreatorTask* (mciId: MCIDEVICEID): WinApi.HTASK;
	(*END mciGetCreatorTask;*)

	PROCEDURE mciGetYieldProc* (mciId: MCIDEVICEID; VAR [nil] pdwYieldData: INTEGER): YIELDPROC;
	(*END mciGetYieldProc;*)

END WinMM.
