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   = ""
   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.