Переглянути джерело

+ Initial import of mmsystem by Pavel Ozerski

michael 24 роки тому
батько
коміт
954345c6fb
3 змінених файлів з 3860 додано та 0 видалено
  1. 996 0
      packages/mmsystem/Makefile
  2. 17 0
      packages/mmsystem/Makefile.fpc
  3. 2847 0
      packages/mmsystem/mmsystem.pp

+ 996 - 0
packages/mmsystem/Makefile

@@ -0,0 +1,996 @@
+#
+# Don't edit, this file is generated by FPCMake Version 1.1 [2001/09/20]
+#
+default: all
+override PATH:=$(subst \,/,$(PATH))
+ifeq ($(findstring ;,$(PATH)),)
+inUnix=1
+SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
+else
+SEARCHPATH:=$(subst ;, ,$(PATH))
+endif
+PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
+ifeq ($(PWD),)
+PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
+ifeq ($(PWD),)
+nopwd:
+	@echo You need the GNU utils package to use this Makefile!
+	@echo Get ftp://ftp.freepascal.org/pub/fpc/dist/go32v2/utilgo32.zip
+	@exit
+else
+PWD:=$(firstword $(PWD))
+SRCEXEEXT=
+endif
+else
+PWD:=$(firstword $(PWD))
+SRCEXEEXT=.exe
+endif
+ifndef inUnix
+ifeq ($(OS),Windows_NT)
+inWinNT=1
+else
+ifdef OS2_SHELL
+inOS2=1
+endif
+endif
+else
+ifneq ($(findstring cygwin,$(MACHTYPE)),)
+inCygWin=1
+endif
+endif
+ifdef inUnix
+BATCHEXT=.sh
+else
+ifdef inOS2
+BATCHEXT=.cmd
+else
+BATCHEXT=.bat
+endif
+endif
+ifdef inUnix
+PATHSEP=/
+else
+PATHSEP:=$(subst /,\,/)
+endif
+ifdef PWD
+BASEDIR:=$(subst \,/,$(shell $(PWD)))
+ifdef inCygWin
+ifneq ($(findstring /cygdrive/,$(BASEDIR)),)
+BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))
+BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR)))
+BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))
+endif
+endif
+else
+BASEDIR=.
+endif
+ifndef FPC
+ifdef PP
+FPC=$(PP)
+else
+ifdef inUnix
+CPU_SOURCE=$(shell uname -m)
+ifeq (m68k,$(CPU_SOURCE))
+FPC=ppc68k
+else
+FPC=ppc386
+endif
+else
+FPC=ppc386
+endif
+endif
+endif
+override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
+override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
+ifndef OS_TARGET
+OS_TARGET:=$(shell $(FPC) -iTO)
+endif
+ifndef OS_SOURCE
+OS_SOURCE:=$(shell $(FPC) -iSO)
+endif
+ifndef CPU_TARGET
+CPU_TARGET:=$(shell $(FPC) -iTP)
+endif
+ifndef CPU_SOURCE
+CPU_SOURCE:=$(shell $(FPC) -iSP)
+endif
+ifndef FPC_VERSION
+FPC_VERSION:=$(shell $(FPC) -iV)
+endif
+export FPC OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FPC_VERSION
+ifdef FPCDIR
+override FPCDIR:=$(subst \,/,$(FPCDIR))
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=wrong
+endif
+else
+override FPCDIR=wrong
+endif
+ifeq ($(FPCDIR),wrong)
+override FPCDIR=../..
+ifeq ($(wildcard $(FPCDIR)/rtl),)
+ifeq ($(wildcard $(FPCDIR)/units),)
+override FPCDIR=wrong
+endif
+endif
+endif
+ifeq ($(FPCDIR),wrong)
+ifdef inUnix
+override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
+ifeq ($(wildcard $(FPCDIR)/units),)
+override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
+endif
+else
+override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
+override FPCDIR:=$(FPCDIR)/..
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR:=$(FPCDIR)/..
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=c:/pp
+endif
+endif
+endif
+endif
+UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
+PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages)
+override PACKAGE_NAME=mmsystem
+override PACKAGE_VERSION=1.0.5
+override TARGET_UNITS+=mmsystem
+override INSTALL_FPCPACKAGE=y
+ifndef ECHO
+ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO=
+else
+ECHO:=$(firstword $(ECHO))
+endif
+else
+ECHO:=$(firstword $(ECHO))
+endif
+endif
+export ECHO
+ifndef DATE
+DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(DATE),)
+DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(DATE),)
+DATE=
+else
+DATE:=$(firstword $(DATE))
+endif
+else
+DATE:=$(firstword $(DATE))
+endif
+endif
+export DATE
+ifndef GINSTALL
+GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(GINSTALL),)
+GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(GINSTALL),)
+GINSTALL=
+else
+GINSTALL:=$(firstword $(GINSTALL))
+endif
+else
+GINSTALL:=$(firstword $(GINSTALL))
+endif
+endif
+export GINSTALL
+ifndef CPPROG
+CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(CPPROG),)
+CPPROG=
+else
+CPPROG:=$(firstword $(CPPROG))
+endif
+endif
+export CPPROG
+ifndef RMPROG
+RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(RMPROG),)
+RMPROG=
+else
+RMPROG:=$(firstword $(RMPROG))
+endif
+endif
+export RMPROG
+ifndef MVPROG
+MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MVPROG),)
+MVPROG=
+else
+MVPROG:=$(firstword $(MVPROG))
+endif
+endif
+export MVPROG
+ifndef ECHOREDIR
+ECHOREDIR:=$(subst /,$(PATHSEP),$(ECHO))
+endif
+ifndef COPY
+COPY:=$(CPPROG) -fp
+endif
+ifndef COPYTREE
+COPYTREE:=$(CPPROG) -rfp
+endif
+ifndef MOVE
+MOVE:=$(MVPROG) -f
+endif
+ifndef DEL
+DEL:=$(RMPROG) -f
+endif
+ifndef DELTREE
+DELTREE:=$(RMPROG) -rf
+endif
+ifndef INSTALL
+ifdef inUnix
+INSTALL:=$(GINSTALL) -c -m 644
+else
+INSTALL:=$(COPY)
+endif
+endif
+ifndef INSTALLEXE
+ifdef inUnix
+INSTALLEXE:=$(GINSTALL) -c -m 755
+else
+INSTALLEXE:=$(COPY)
+endif
+endif
+ifndef MKDIR
+MKDIR:=$(GINSTALL) -m 755 -d
+endif
+export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
+ifndef PPUMOVE
+PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUMOVE),)
+PPUMOVE=
+else
+PPUMOVE:=$(firstword $(PPUMOVE))
+endif
+endif
+export PPUMOVE
+ifndef FPCMAKE
+FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(FPCMAKE),)
+FPCMAKE=
+else
+FPCMAKE:=$(firstword $(FPCMAKE))
+endif
+endif
+export FPCMAKE
+ifndef ZIPPROG
+ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ZIPPROG),)
+ZIPPROG=
+else
+ZIPPROG:=$(firstword $(ZIPPROG))
+endif
+endif
+export ZIPPROG
+ifndef TARPROG
+TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(TARPROG),)
+TARPROG=
+else
+TARPROG:=$(firstword $(TARPROG))
+endif
+endif
+export TARPROG
+ifndef AS
+AS=as
+endif
+ifndef LD
+LD=ld
+endif
+ifndef RC
+RC=rc
+endif
+PPAS=ppas$(BATCHEXT)
+ifdef inUnix
+LDCONFIG=ldconfig
+else
+LDCONFIG=
+endif
+ifdef DATE
+DATESTR:=$(shell $(DATE) +%Y%m%d)
+else
+DATESTR=
+endif
+ifndef UPXPROG
+ifeq ($(OS_TARGET),go32v2)
+UPXPROG:=1
+endif
+ifeq ($(OS_TARGET),win32)
+UPXPROG:=1
+endif
+ifdef UPXPROG
+UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(UPXPROG),)
+UPXPROG=
+else
+UPXPROG:=$(firstword $(UPXPROG))
+endif
+else
+UPXPROG=
+endif
+endif
+export UPXPROG
+ZIPOPT=-9
+ZIPEXT=.zip
+ifeq ($(USETAR),bz2)
+TAROPT=vI
+TAREXT=.tar.bz2
+else
+TAROPT=vz
+TAREXT=.tar.gz
+endif
+LOADEREXT=.as
+EXEEXT=.exe
+PPLEXT=.ppl
+PPUEXT=.ppu
+OEXT=.o
+ASMEXT=.s
+SMARTEXT=.sl
+STATICLIBEXT=.a
+SHAREDLIBEXT=.so
+STATICLIBPREFIX=libp
+RSTEXT=.rst
+FPCMADE=fpcmade
+ifeq ($(OS_TARGET),go32v1)
+PPUEXT=.pp1
+OEXT=.o1
+ASMEXT=.s1
+SMARTEXT=.sl1
+STATICLIBEXT=.a1
+SHAREDLIBEXT=.so1
+STATICLIBPREFIX=
+FPCMADE=fpcmade.v1
+PACKAGESUFFIX=v1
+endif
+ifeq ($(OS_TARGET),go32v2)
+STATICLIBPREFIX=
+FPCMADE=fpcmade.dos
+ZIPSUFFIX=go32
+endif
+ifeq ($(OS_TARGET),linux)
+EXEEXT=
+HASSHAREDLIB=1
+FPCMADE=fpcmade.lnx
+ZIPSUFFIX=linux
+endif
+ifeq ($(OS_TARGET),freebsd)
+EXEEXT=
+HASSHAREDLIB=1
+FPCMADE=fpcmade.freebsd
+ZIPSUFFIX=freebsd
+endif
+ifeq ($(OS_TARGET),netbsd)
+EXEEXT=
+HASSHAREDLIB=1
+FPCMADE=fpcmade.netbsd
+ZIPSUFFIX=netbsd
+endif
+ifeq ($(OS_TARGET),win32)
+PPUEXT=.ppw
+OEXT=.ow
+ASMEXT=.sw
+SMARTEXT=.slw
+STATICLIBEXT=.aw
+SHAREDLIBEXT=.dll
+FPCMADE=fpcmade.w32
+ZIPSUFFIX=w32
+endif
+ifeq ($(OS_TARGET),os2)
+PPUEXT=.ppo
+ASMEXT=.so2
+OEXT=.oo2
+AOUTEXT=.out
+SMARTEXT=.so
+STATICLIBEXT=.ao2
+SHAREDLIBEXT=.dll
+FPCMADE=fpcmade.os2
+ZIPSUFFIX=emx
+endif
+ifeq ($(OS_TARGET),amiga)
+EXEEXT=
+PPUEXT=.ppa
+ASMEXT=.asm
+OEXT=.o
+SMARTEXT=.sl
+STATICLIBEXT=.a
+SHAREDLIBEXT=.library
+FPCMADE=fpcmade.amg
+endif
+ifeq ($(OS_TARGET),atari)
+PPUEXT=.ppt
+ASMEXT=.s
+OEXT=.o
+SMARTEXT=.sl
+STATICLIBEXT=.a
+EXEEXT=.ttp
+FPCMADE=fpcmade.ata
+endif
+ifdef REQUIRE_UNITSDIR
+override UNITSDIR+=$(REQUIRE_UNITSDIR)
+endif
+ifdef REQUIRE_PACKAGESDIR
+override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
+endif
+ifdef ZIPINSTALL
+ifeq ($(OS_TARGET),linux)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_TARGET),freebsd)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_TARGET),netbsd)
+UNIXINSTALLDIR=1
+endif
+else
+ifeq ($(OS_SOURCE),linux)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_SOURCE),freebsd)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_SOURCE),netbsd)
+UNIXINSTALLDIR=1
+endif
+endif
+ifndef INSTALL_PREFIX
+ifdef UNIXINSTALLDIR
+INSTALL_PREFIX=/usr/local
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_BASEDIR:=/pp
+else
+INSTALL_BASEDIR:=/$(PACKAGE_NAME)
+endif
+endif
+endif
+export INSTALL_PREFIX
+ifndef DIST_DESTDIR
+DIST_DESTDIR:=$(BASEDIR)
+endif
+export DIST_DESTDIR
+ifndef INSTALL_BASEDIR
+ifdef UNIXINSTALLDIR
+ifdef INSTALL_FPCPACKAGE
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
+else
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)
+endif
+else
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)
+endif
+endif
+ifndef INSTALL_BINDIR
+ifdef UNIXINSTALLDIR
+INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
+else
+INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
+ifdef INSTALL_FPCPACKAGE
+INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(OS_TARGET)
+endif
+endif
+endif
+ifndef INSTALL_UNITDIR
+INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(OS_TARGET)
+ifdef INSTALL_FPCPACKAGE
+ifdef PACKAGE_NAME
+INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
+endif
+endif
+endif
+ifndef INSTALL_LIBDIR
+ifdef UNIXINSTALLDIR
+INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
+else
+INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
+endif
+endif
+ifndef INSTALL_SOURCEDIR
+ifdef UNIXINSTALLDIR
+ifdef INSTALL_FPCPACKAGE
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/src/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+else
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/src/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)
+else
+INSTALL_SOURCEDIRL:=$(INSTALL_BASEDIR)/source
+endif
+endif
+endif
+ifndef INSTALL_DOCDIR
+ifdef UNIXINSTALLDIR
+ifdef INSTALL_FPCPACKAGE
+INSTALL_DOCDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+else
+INSTALL_DOCDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)
+else
+INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc
+endif
+endif
+endif
+ifndef INSTALL_EXAMPLEDIR
+ifdef UNIXINSTALLDIR
+ifdef INSTALL_FPCPACKAGE
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples
+endif
+endif
+endif
+ifndef INSTALL_DATADIR
+INSTALL_DATADIR=$(INSTALL_BASEDIR)
+endif
+ifeq ($(OS_TARGET),win32)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifdef REQUIRE_PACKAGES_RTL
+PACKAGEDIR_RTL:=$(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR)))))
+ifneq ($(PACKAGEDIR_RTL),)
+PACKAGEDIR_RTL:=$(firstword $(PACKAGEDIR_RTL))
+ifeq ($(wildcard $(PACKAGEDIR_RTL)/$(FPCMADE)),)
+override COMPILEPACKAGES+=package_rtl
+package_rtl:
+	$(MAKE) -C $(PACKAGEDIR_RTL) all
+endif
+ifneq ($(wildcard $(PACKAGEDIR_RTL)/$(OS_TARGET)),)
+UNITDIR_RTL=$(PACKAGEDIR_RTL)/$(OS_TARGET)
+else
+UNITDIR_RTL=$(PACKAGEDIR_RTL)
+endif
+else
+PACKAGEDIR_RTL=
+UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_RTL),)
+UNITDIR_RTL:=$(firstword $(UNITDIR_RTL))
+else
+UNITDIR_RTL=
+endif
+endif
+ifdef UNITDIR_RTL
+override COMPILER_UNITDIR+=$(UNITDIR_RTL)
+endif
+endif
+.PHONY: package_rtl
+override FPCOPTDEF=$(CPU_TARGET)
+ifneq ($(OS_TARGET),$(OS_SOURCE))
+override FPCOPT+=-T$(OS_TARGET)
+endif
+ifdef UNITDIR
+override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
+endif
+ifdef LIBDIR
+override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
+endif
+ifdef OBJDIR
+override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
+endif
+ifdef INCDIR
+override FPCOPT+=$(addprefix -Fi,$(INCDIR))
+endif
+ifdef LINKSMART
+override FPCOPT+=-XX
+endif
+ifdef CREATESMART
+override FPCOPT+=-CX
+endif
+ifdef DEBUG
+override FPCOPT+=-gl
+override FPCOPTDEF+=DEBUG
+endif
+ifdef RELEASE
+ifeq ($(CPU_TARGET),i386)
+FPCCPUOPT:=-OG2p3
+else
+FPCCPUOPT:=
+endif
+override FPCOPT+=-Xs $(FPCCPUOPT) -n
+override FPCOPTDEF+=RELEASE
+endif
+ifdef STRIP
+override FPCOPT+=-Xs
+endif
+ifdef OPTIMIZE
+ifeq ($(CPU_TARGET),i386)
+override FPCOPT+=-OG2p3
+endif
+endif
+ifdef VERBOSE
+override FPCOPT+=-vwni
+endif
+ifdef COMPILER_OPTIONS
+override FPCOPT+=$(COMPILER_OPTIONS)
+endif
+ifdef COMPILER_UNITDIR
+override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
+endif
+ifdef COMPILER_LIBRARYDIR
+override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
+endif
+ifdef COMPILER_OBJECTDIR
+override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
+endif
+ifdef COMPILER_INCLUDEDIR
+override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
+endif
+ifdef COMPILER_TARGETDIR
+override FPCOPT+=-FE$(COMPILER_TARGETDIR)
+ifeq ($(COMPILER_TARGETDIR),.)
+override TARGETDIRPREFIX=
+else
+override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
+endif
+endif
+ifdef COMPILER_UNITTARGETDIR
+override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
+ifeq ($(COMPILER_UNITTARGETDIR),.)
+override UNITTARGETDIRPREFIX=
+else
+override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/
+endif
+else
+ifdef COMPILER_TARGETDIR
+override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
+override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
+endif
+endif
+ifdef OPT
+override FPCOPT+=$(OPT)
+endif
+ifdef FPCOPTDEF
+override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
+endif
+ifdef CFGFILE
+override FPCOPT+=@$(CFGFILE)
+endif
+ifdef USEENV
+override FPCEXTCMD:=$(FPCOPT)
+override FPCOPT:=!FPCEXTCMD
+export FPCEXTCMD
+endif
+override COMPILER:=$(FPC) $(FPCOPT)
+ifeq (,$(findstring -s ,$(COMPILER)))
+EXECPPAS=
+else
+ifeq ($(OS_SOURCE),$(OS_TARGET))
+EXECPPAS:=@$(PPAS)
+endif
+endif
+.PHONY: fpc_units
+ifdef TARGET_UNITS
+override ALLTARGET+=fpc_units
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_UNITS))
+override INSTALLPPUFILES+=$(UNITPPUFILES)
+override CLEANPPUFILES+=$(UNITPPUFILES)
+endif
+fpc_units: $(UNITPPUFILES)
+ifdef TARGET_RSTS
+override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
+override CLEANRSTFILES+=$(RSTFILES)
+endif
+.PHONY: fpc_packages fpc_all fpc_smart fpc_debug
+$(FPCMADE): $(ALLTARGET)
+	@$(ECHOREDIR) Compiled > $(FPCMADE)
+fpc_packages: $(COMPILEPACKAGES)
+fpc_all: fpc_packages $(FPCMADE)
+fpc_smart:
+	$(MAKE) all LINKSMART=1 CREATESMART=1
+fpc_debug:
+	$(MAKE) all DEBUG=1
+.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
+%$(PPUEXT): %.pp
+	$(COMPILER) $<
+	$(EXECPPAS)
+%$(PPUEXT): %.pas
+	$(COMPILER) $<
+	$(EXECPPAS)
+%$(EXEEXT): %.pp
+	$(COMPILER) $<
+	$(EXECPPAS)
+%$(EXEEXT): %.pas
+	$(COMPILER) $<
+	$(EXECPPAS)
+vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
+vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
+vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
+.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
+ifdef INSTALL_UNITS
+override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
+endif
+ifdef INSTALLPPUFILES
+override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
+override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPUFILES))
+override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPULINKFILES)))
+override INSTALL_CREATEPACKAGEFPC=1
+endif
+ifdef INSTALLEXEFILES
+override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(INSTALLEXEFILES))
+endif
+fpc_install: all $(INSTALLTARGET)
+ifdef INSTALLEXEFILES
+	$(MKDIR) $(INSTALL_BINDIR)
+ifdef UPXPROG
+	-$(UPXPROG) $(INSTALLEXEFILES)
+endif
+	$(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)
+endif
+ifdef INSTALL_CREATEPACKAGEFPC
+ifdef FPCMAKE
+ifdef PACKAGE_VERSION
+ifneq ($(wildcard Makefile.fpc),)
+	$(FPCMAKE) -p -T$(OS_TARGET) Makefile.fpc
+	$(MKDIR) $(INSTALL_UNITDIR)
+	$(INSTALL) Package.fpc $(INSTALL_UNITDIR)
+endif
+endif
+endif
+endif
+ifdef INSTALLPPUFILES
+	$(MKDIR) $(INSTALL_UNITDIR)
+	$(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)
+ifneq ($(INSTALLPPULINKFILES),)
+	$(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)
+endif
+ifneq ($(wildcard $(LIB_FULLNAME)),)
+	$(MKDIR) $(INSTALL_LIBDIR)
+	$(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)
+ifdef inUnix
+	ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)
+endif
+endif
+endif
+ifdef INSTALL_FILES
+	$(MKDIR) $(INSTALL_DATADIR)
+	$(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)
+endif
+fpc_sourceinstall: distclean
+	$(MKDIR) $(INSTALL_SOURCEDIR)
+	$(COPYTREE) $(BASEDIR) $(INSTALL_SOURCEDIR)
+fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))
+ifdef HASEXAMPLES
+	$(MKDIR) $(INSTALL_EXAMPLEDIR)
+endif
+ifdef EXAMPLESOURCEFILES
+	$(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)
+endif
+ifdef TARGET_EXAMPLEDIRS
+	$(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR)
+endif
+.PHONY: fpc_distinstall
+fpc_distinstall: install exampleinstall
+.PHONY: fpc_zipinstall fpc_zipsourceinstall fpc_zipexampleinstall
+ifndef PACKDIR
+ifndef inUnix
+PACKDIR=$(BASEDIR)/../fpc-pack
+else
+PACKDIR=/tmp/fpc-pack
+endif
+endif
+ifndef ZIPNAME
+ifdef DIST_ZIPNAME
+ZIPNAME=$(DIST_ZIPNAME)
+else
+ZIPNAME=$(ZIPPREFIX)$(PACKAGE_NAME)$(ZIPSUFFIX)
+endif
+endif
+ifndef ZIPTARGET
+ifdef DIST_ZIPTARGET
+ZIPTARGET=DIST_ZIPTARGET
+else
+ZIPTARGET=install
+endif
+endif
+ifndef USEZIP
+ifdef inUnix
+USETAR=1
+endif
+endif
+ifndef inUnix
+USEZIPWRAPPER=1
+endif
+ifdef USEZIPWRAPPER
+ZIPPATHSEP=$(PATHSEP)
+ZIPWRAPPER=$(subst /,$(PATHSEP),$(DIST_DESTDIR)/fpczip$(BATCHEXT))
+else
+ZIPPATHSEP=/
+endif
+ZIPCMD_CDPACK:=cd $(subst /,$(ZIPPATHSEP),$(PACKDIR))
+ZIPCMD_CDBASE:=cd $(subst /,$(ZIPPATHSEP),$(BASEDIR))
+ifdef USETAR
+ZIPDESTFILE:=$(DIST_DESTDIR)/$(ZIPNAME)$(TAREXT)
+ZIPCMD_ZIP:=$(TARPROG) cf$(TAROPT) $(ZIPDESTFILE) *
+else
+ZIPDESTFILE:=$(DIST_DESTDIR)/$(ZIPNAME)$(ZIPEXT)
+ZIPCMD_ZIP:=$(subst /,$(ZIPPATHSEP),$(ZIPPROG)) -Dr $(ZIPOPT) $(ZIPDESTFILE) *
+endif
+fpc_zipinstall:
+	$(MAKE) $(ZIPTARGET) INSTALL_PREFIX=$(PACKDIR) ZIPINSTALL=1
+	$(MKDIR) $(DIST_DESTDIR)
+	$(DEL) $(ZIPDESTFILE)
+ifdef USEZIPWRAPPER
+ifneq ($(ECHOREDIR),echo)
+	$(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDPACK))" > $(ZIPWRAPPER)
+	$(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_ZIP))" >> $(ZIPWRAPPER)
+	$(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDBASE))" >> $(ZIPWRAPPER)
+else
+	echo $(ZIPCMD_CDPACK) > $(ZIPWRAPPER)
+	echo $(ZIPCMD_ZIP) >> $(ZIPWRAPPER)
+	echo $(ZIPCMD_CDBASE) >> $(ZIPWRAPPER)
+endif
+ifdef inUnix
+	/bin/sh $(ZIPWRAPPER)
+else
+	$(ZIPWRAPPER)
+endif
+	$(DEL) $(ZIPWRAPPER)
+else
+	$(ZIPCMD_CDPACK) ; $(ZIPCMD_ZIP) ; $(ZIPCMD_CDBASE)
+endif
+	$(DELTREE) $(PACKDIR)
+fpc_zipsourceinstall:
+	$(MAKE) fpc_zipinstall ZIPTARGET=sourceinstall ZIPSUFFIX=src
+fpc_zipexampleinstall:
+ifdef HASEXAMPLES
+	$(MAKE) fpc_zipinstall ZIPTARGET=exampleinstall ZIPSUFFIX=exm
+endif
+fpc_zipdistinstall:
+	$(MAKE) fpc_zipinstall ZIPTARGET=distinstall
+.PHONY: fpc_clean fpc_cleanall fpc_distclean
+ifdef EXEFILES
+override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
+endif
+ifdef CLEAN_UNITS
+override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
+endif
+ifdef CLEANPPUFILES
+override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
+override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
+override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
+endif
+fpc_clean: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+ifdef CLEANPPUFILES
+	-$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
+endif
+ifdef CLEANRSTFILES
+	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
+endif
+ifdef CLEAN_FILES
+	-$(DEL) $(CLEAN_FILES)
+endif
+ifdef LIB_NAME
+	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
+endif
+	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
+fpc_distclean: clean
+ifdef COMPILER_UNITTARGETDIR
+TARGETDIRCLEAN=fpc_clean
+endif
+fpc_cleanall: $(CLEANTARGET) $(TARGETDIRCLEAN)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+	-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
+	-$(DELTREE) *$(SMARTEXT)
+	-$(DEL) $(FPCMADE) $(PPAS) link.res $(FPCEXTFILE) $(REDIRFILE)
+ifdef AOUTEXT
+	-$(DEL) *$(AOUTEXT)
+endif
+.PHONY: fpc_info
+fpc_info:
+	@$(ECHO)
+	@$(ECHO)  == Package info ==
+	@$(ECHO)  Package Name..... $(PACKAGE_NAME)
+	@$(ECHO)  Package Version.. $(PACKAGE_VERSION)
+	@$(ECHO)
+	@$(ECHO)  == Configuration info ==
+	@$(ECHO)
+	@$(ECHO)  FPC.......... $(FPC)
+	@$(ECHO)  FPC Version.. $(FPC_VERSION)
+	@$(ECHO)  Source CPU... $(CPU_SOURCE)
+	@$(ECHO)  Target CPU... $(CPU_TARGET)
+	@$(ECHO)  Source OS.... $(OS_SOURCE)
+	@$(ECHO)  Target OS.... $(OS_TARGET)
+	@$(ECHO)
+	@$(ECHO)  == Directory info ==
+	@$(ECHO)
+	@$(ECHO)  Basedir......... $(BASEDIR)
+	@$(ECHO)  FPCDir.......... $(FPCDIR)
+	@$(ECHO)  UnitsDir........ $(UNITSDIR)
+	@$(ECHO)  PackagesDir..... $(PACKAGESDIR)
+	@$(ECHO)
+	@$(ECHO)  GCC library..... $(GCCLIBDIR)
+	@$(ECHO)  Other library... $(OTHERLIBDIR)
+	@$(ECHO)
+	@$(ECHO)  == Tools info ==
+	@$(ECHO)
+	@$(ECHO)  Pwd....... $(PWD)
+	@$(ECHO)  Mv........ $(MVPROG)
+	@$(ECHO)  Cp........ $(CPPROG)
+	@$(ECHO)  Rm........ $(RMPROG)
+	@$(ECHO)  GInstall.. $(GINSTALL)
+	@$(ECHO)  Echo...... $(ECHO)
+	@$(ECHO)  Date...... $(DATE)
+	@$(ECHO)  FPCMake... $(FPCMAKE)
+	@$(ECHO)  PPUMove... $(PPUMOVE)
+	@$(ECHO)  Upx....... $(UPXPROG)
+	@$(ECHO)  Zip....... $(ZIPPROG)
+	@$(ECHO)
+	@$(ECHO)  == Object info ==
+	@$(ECHO)
+	@$(ECHO)  Target Loaders...... $(TARGET_LOADERS)
+	@$(ECHO)  Target Units........ $(TARGET_UNITS)
+	@$(ECHO)  Target Programs..... $(TARGET_PROGRAMS)
+	@$(ECHO)  Target Dirs......... $(TARGET_DIRS)
+	@$(ECHO)  Target Examples..... $(TARGET_EXAMPLES)
+	@$(ECHO)  Target ExampleDirs.. $(TARGET_EXAMPLEDIRS)
+	@$(ECHO)
+	@$(ECHO)  Clean Units......... $(CLEAN_UNITS)
+	@$(ECHO)  Clean Files......... $(CLEAN_FILES)
+	@$(ECHO)
+	@$(ECHO)  Install Units....... $(INSTALL_UNITS)
+	@$(ECHO)  Install Files....... $(INSTALL_FILES)
+	@$(ECHO)
+	@$(ECHO)  == Install info ==
+	@$(ECHO)
+	@$(ECHO)  DateStr.............. $(DATESTR)
+	@$(ECHO)  ZipPrefix............ $(ZIPPREFIX)
+	@$(ECHO)  ZipSuffix............ $(ZIPSUFFIX)
+	@$(ECHO)  Install FPC Package.. $(INSTALL_FPCPACKAGE)
+	@$(ECHO)
+	@$(ECHO)  Install base dir..... $(INSTALL_BASEDIR)
+	@$(ECHO)  Install binary dir... $(INSTALL_BINDIR)
+	@$(ECHO)  Install library dir.. $(INSTALL_LIBDIR)
+	@$(ECHO)  Install units dir.... $(INSTALL_UNITDIR)
+	@$(ECHO)  Install source dir... $(INSTALL_SOURCEDIR)
+	@$(ECHO)  Install doc dir...... $(INSTALL_DOCDIR)
+	@$(ECHO)  Install example dir.. $(INSTALL_EXAMPLEDIR)
+	@$(ECHO)  Install data dir..... $(INSTALL_DATADIR)
+	@$(ECHO)
+	@$(ECHO)  Dist destination dir. $(DIST_DESTDIR)
+	@$(ECHO)  Dist zip name........ $(DIST_ZIPNAME)
+	@$(ECHO)
+all: fpc_all
+debug: fpc_debug
+smart: fpc_smart
+examples:
+shared:
+install: fpc_install
+sourceinstall: fpc_sourceinstall
+exampleinstall: fpc_exampleinstall
+distinstall: fpc_distinstall
+zipinstall: fpc_zipinstall
+zipsourceinstall: fpc_zipsourceinstall
+zipexampleinstall: fpc_zipexampleinstall
+zipdistinstall: fpc_zipdistinstall
+clean: fpc_clean
+distclean: fpc_distclean
+cleanall: fpc_cleanall
+info: fpc_info
+.PHONY: all debug smart examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info
+ifneq ($(wildcard fpcmake.loc),)
+include fpcmake.loc
+endif

+ 17 - 0
packages/mmsystem/Makefile.fpc

@@ -0,0 +1,17 @@
+#
+#   Makefile.fpc for CGI Units
+#
+
+[package]
+name=mmsystem
+version=1.0.5
+
+[target]
+units=mmsystem
+
+[install]
+fpcpackage=y
+
+[default]
+fpcdir=../..
+

+ 2847 - 0
packages/mmsystem/mmsystem.pp

@@ -0,0 +1,2847 @@
+{*********************************} (*********************************)
+{ Generated by c2pas32  v0.9b     } (*     Fixed by P.V.Ozerski      *)
+{ (c) 2001 Oleg Bulychov          } (*     Original C header file    *)
+{ Gladiators Software             } (*     (created at Dec-03-1998)  *)
+{ http://www.astonshell.com/      } (*   from LCC-win32 is used      *)
+{*********************************} (*   LCC-win32 (c) Jacob Navia   *)
+                                    (*********************************)
+unit mmsystem;
+{$smartlink on}
+interface
+uses
+ windows;
+
+type
+MMRESULT = UINT; 
+MMVERSION = UINT; 
+HWAVEOUT = THandle; 
+LPHWAVEOUT = ^HWAVEOUT; 
+HWAVEIN = THandle; 
+LPHWAVEIN = ^HWAVEOUT; 
+HWAVE = THandle; 
+LPHWAVE = ^THandle; 
+LPUINT = ^UINT; 
+(*//////////////////////////////////////////////////////////*)
+(* Definitions*)
+(*//////////////////////////////////////////////////////////*)
+const
+MAXPNAMELEN = 32; 
+MAXERRORLENGTH = 256; 
+MAX_JOYSTICKOEMVXDNAME = 260; 
+MM_MIDI_MAPPER = 1; 
+MM_WAVE_MAPPER = 2; 
+MM_SNDBLST_MIDIOUT = 3; 
+MM_SNDBLST_MIDIIN = 4; 
+MM_SNDBLST_SYNTH = 5; 
+MM_SNDBLST_WAVEOUT = 6; 
+MM_SNDBLST_WAVEIN = 7; 
+MM_ADLIB = 9; 
+MM_MPU401_MIDIOUT = 10; 
+MM_MPU401_MIDIIN = 11; 
+MM_PC_JOYSTICK = 12; 
+TIME_MS = 1; 
+TIME_SAMPLES = 2; 
+TIME_BYTES = 4; 
+TIME_SMPTE = 8; 
+TIME_MIDI = 16; 
+TIME_TICKS = 32; 
+
+MM_MCINOTIFY = $3B9; 
+MM_WOM_OPEN = $3BB; 
+MM_WOM_CLOSE = $3BC; 
+MM_WOM_DONE = $3BD; 
+MM_WIM_OPEN = $3BE; 
+MM_WIM_CLOSE = $3BF; 
+MM_WIM_DATA = $3C0; 
+MM_MIM_OPEN = $3C1; 
+MM_MIM_CLOSE = $3C2; 
+MM_MIM_DATA = $3C3; 
+MM_MIM_LONGDATA = $3C4; 
+MM_MIM_ERROR = $3C5; 
+MM_MIM_LONGERROR = $3C6; 
+MM_MOM_OPEN = $3C7; 
+MM_MOM_CLOSE = $3C8; 
+MM_MOM_DONE = $3C9; 
+MM_DRVM_OPEN = $3D0; 
+MM_DRVM_CLOSE = $3D1; 
+MM_DRVM_DATA = $3D2; 
+MM_DRVM_ERROR = $3D3; 
+MM_STREAM_OPEN = $3D4; 
+MM_STREAM_CLOSE = $3D5; 
+MM_STREAM_DONE = $3D6; 
+MM_STREAM_ERROR = $3D7; 
+MM_MOM_POSITIONCB = $3CA; 
+MM_MCISIGNAL = $3CB; 
+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 = $400; 
+WAVE_FORMAT_4S16 = $800; 
+MM_MIM_MOREDATA = $3CC; 
+MM_MIXM_LINE_CHANGE = $3D0; 
+MM_MIXM_CONTROL_CHANGE = $3D1; 
+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 = (MMSYSERR_BASE+1); 
+MMSYSERR_BADDEVICEID = (MMSYSERR_BASE+2); 
+MMSYSERR_NOTENABLED = (MMSYSERR_BASE+3); 
+MMSYSERR_ALLOCATED = (MMSYSERR_BASE+4); 
+MMSYSERR_INVALHANDLE = (MMSYSERR_BASE+5); 
+MMSYSERR_NODRIVER = (MMSYSERR_BASE+6); 
+MMSYSERR_NOMEM = (MMSYSERR_BASE+7); 
+MMSYSERR_NOTSUPPORTED = (MMSYSERR_BASE+8); 
+MMSYSERR_BADERRNUM = (MMSYSERR_BASE+9); 
+MMSYSERR_INVALFLAG = (MMSYSERR_BASE+10); 
+MMSYSERR_INVALPARAM = (MMSYSERR_BASE+11); 
+MMSYSERR_HANDLEBUSY = (MMSYSERR_BASE+12); 
+MMSYSERR_INVALIDALIAS = (MMSYSERR_BASE+13); 
+MMSYSERR_BADDB = (MMSYSERR_BASE+14); 
+MMSYSERR_KEYNOTFOUND = (MMSYSERR_BASE+15); 
+MMSYSERR_READERROR = (MMSYSERR_BASE+16); 
+MMSYSERR_WRITEERROR = (MMSYSERR_BASE+17); 
+MMSYSERR_DELETEERROR = (MMSYSERR_BASE+18); 
+MMSYSERR_VALNOTFOUND = (MMSYSERR_BASE+19); 
+MMSYSERR_NODRIVERCB = (MMSYSERR_BASE+20); 
+MMSYSERR_LASTERROR = (MMSYSERR_BASE+20); 
+MM_JOY1MOVE = $3A0; 
+MM_JOY2MOVE = $3A1; 
+MM_JOY1ZMOVE = $3A2; 
+MM_JOY2ZMOVE = $3A3; 
+MM_JOY1BUTTONDOWN = $3B5; 
+MM_JOY2BUTTONDOWN = $3B6; 
+MM_JOY1BUTTONUP = $3B7; 
+MM_JOY2BUTTONUP = $3B8; 
+CALLBACK_TYPEMASK = $70000; 
+CALLBACK_NULL = 0; 
+CALLBACK_EVENT = $50000; 
+CALLBACK_WINDOW = $10000; 
+CALLBACK_TASK = $20000; 
+CALLBACK_THREAD = CALLBACK_TASK;
+CALLBACK_FUNCTION = $30000; 
+type
+HDRVR = THandle; 
+const
+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 = $A; 
+DRV_EXITSESSION = $B; 
+DRV_POWER = $F; 
+DRV_RESERVED = $800; 
+DRV_USER = $4000; 
+DRVCNF_CANCEL = 0; 
+DRVCNF_OK = 1; 
+DRVCNF_RESTART = 2; 
+DRV_CANCEL = DRVCNF_CANCEL; 
+DRV_OK = DRVCNF_OK; 
+DRV_RESTART = DRVCNF_RESTART; 
+DRV_MCI_FIRST = DRV_RESERVED; 
+DRV_MCI_LAST = (DRV_RESERVED+$FFF); 
+type
+PDRVCALLBACK = procedure(hdrvr: tHandle; uMsg: UINT; dwUser, dw1, dw2: DWORD); stdcall;
+
+function sndPlaySoundA(Name: LPCSTR; flags: UINT): BOOL; stdcall;
+ external 'winmm.dll' name 'sndPlaySoundA';
+function sndPlaySoundW(Name: LPCWSTR; flags: UINT): BOOL; stdcall;
+ external 'winmm.dll' name 'sndPlaySoundW';
+function sndPlaySound(Name: PChar; flags: UINT): BOOL; stdcall;
+ external 'winmm.dll' name
+ {$ifdef UNICODE}'sndPlaySoundW'
+ {$else}'sndPlaySoundA'
+ {$endif};
+
+const
+SND_NODEFAULT = 2; 
+SND_MEMORY = 4; 
+SND_LOOP = 8; 
+SND_NOSTOP = 16; 
+SND_SYNC = 0; 
+SND_ASYNC = 1; 
+SND_PURGE = 64; 
+SND_APPLICATION = 128; 
+SND_ALIAS_START = 0; 
+SND_ALIAS_SYSTEMHAND = 18515;
+SND_ALIAS_SYSTEMEXCLAMATION = 8531;
+SND_ALIAS_SYSTEMASTERISK = 10835;
+SND_ALIAS_SYSTEMQUESTION = 16211;
+SND_ALIAS_SYSTEMDEFAULT = 17491;
+SND_ALIAS_SYSTEMEXIT = 17747;
+SND_ALIAS_SYSTEMSTART = 21331;
+SND_ALIAS_SYSTEMWELCOME = 22355;
+SND_NOWAIT = $2000; 
+SND_ALIAS = $10000; 
+SND_ALIAS_ID = $110000; 
+SND_FILENAME = $20000; 
+SND_RESOURCE = $40004; 
+WAVERR_BADFORMAT = (WAVERR_BASE+0); 
+WAVERR_STILLPLAYING = (WAVERR_BASE+1); 
+WAVERR_UNPREPARED = (WAVERR_BASE+2); 
+WAVERR_SYNC = (WAVERR_BASE+3); 
+WAVERR_LASTERROR = (WAVERR_BASE+3); 
+WOM_OPEN = MM_WOM_OPEN; 
+WOM_CLOSE = MM_WOM_CLOSE; 
+WOM_DONE = MM_WOM_DONE; 
+WIM_OPEN = MM_WIM_OPEN; 
+WIM_CLOSE = MM_WIM_CLOSE; 
+WIM_DATA = MM_WIM_DATA; 
+WAVE_MAPPER = UINT(-1); 
+WAVE_FORMAT_QUERY = 1; 
+WAVE_ALLOWSYNC = 2; 
+WAVE_MAPPED = 4; 
+WAVE_FORMAT_DIRECT = 8; 
+WAVE_FORMAT_DIRECT_QUERY = (WAVE_FORMAT_QUERY or WAVE_FORMAT_DIRECT); 
+MIM_OPEN = MM_MIM_OPEN; 
+MIM_CLOSE = MM_MIM_CLOSE; 
+MIM_DATA = MM_MIM_DATA; 
+MIM_LONGDATA = MM_MIM_LONGDATA; 
+MIM_ERROR = MM_MIM_ERROR; 
+MIM_LONGERROR = MM_MIM_LONGERROR; 
+MOM_OPEN = MM_MOM_OPEN; 
+MOM_CLOSE = MM_MOM_CLOSE; 
+MOM_DONE = MM_MOM_DONE; 
+MIM_MOREDATA = MM_MIM_MOREDATA; 
+MOM_POSITIONCB = MM_MOM_POSITIONCB; 
+MIDIMAPPER = UINT(-1); 
+MIDI_MAPPER = UINT(-1); 
+MIDI_IO_STATUS = 32; 
+MIDI_CACHE_ALL = 1; 
+MIDI_CACHE_BESTFIT = 2; 
+MIDI_CACHE_QUERY = 3; 
+MIDI_UNCACHE = 4; 
+WHDR_DONE = 1; 
+WHDR_PREPARED = 2; 
+WHDR_BEGINLOOP = $4; 
+WHDR_ENDLOOP = $8; 
+WHDR_INQUEUE = $10; 
+MOD_MIDIPORT = 1; 
+MOD_SYNTH = 2; 
+MOD_SQSYNTH = 3; 
+MOD_FMSYNTH = 4; 
+MOD_MAPPER = 5; 
+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 = $80000000; 
+MEVT_F_CALLBACK = $40000000; 
+function MEVT_EVENTTYPE(x: byte): byte;
+function MEVT_EVENTPARM(x: DWORD): DWORD;
+const
+MEVT_SHORTMSG = 0; 
+MEVT_TEMPO = $1; 
+MEVT_NOP = $2; 
+MEVT_LONGMSG = $80; 
+MEVT_COMMENT = $82; 
+MEVT_VERSION = $84; 
+MIDISTRM_ERROR = -2; 
+MIDIPROP_SET = $80000000; 
+MIDIPROP_GET = $40000000; 
+MIDIPROP_TIMEDIV = 1; 
+MIDIPROP_TEMPO = 2; 
+MIXERLINE_LINEF_ACTIVE = 1; 
+MIXERLINE_LINEF_DISCONNECTED = $8000; 
+MIXERLINE_LINEF_SOURCE = $80000000; 
+MIXERLINE_COMPONENTTYPE_DST_FIRST = 0; 
+MIXERLINE_COMPONENTTYPE_DST_UNDEFINED = (MIXERLINE_COMPONENTTYPE_DST_FIRST); 
+MIXERLINE_COMPONENTTYPE_DST_DIGITAL = (MIXERLINE_COMPONENTTYPE_DST_FIRST+1); 
+MIXERLINE_COMPONENTTYPE_DST_LINE = (MIXERLINE_COMPONENTTYPE_DST_FIRST+2); 
+MIXERLINE_COMPONENTTYPE_DST_MONITOR = (MIXERLINE_COMPONENTTYPE_DST_FIRST+3); 
+MIXERLINE_COMPONENTTYPE_DST_SPEAKERS = (MIXERLINE_COMPONENTTYPE_DST_FIRST+4); 
+MIXERLINE_COMPONENTTYPE_DST_HEADPHONES = (MIXERLINE_COMPONENTTYPE_DST_FIRST+5); 
+MIXERLINE_COMPONENTTYPE_DST_TELEPHONE = (MIXERLINE_COMPONENTTYPE_DST_FIRST+6); 
+MIXERLINE_COMPONENTTYPE_DST_WAVEIN = (MIXERLINE_COMPONENTTYPE_DST_FIRST+7); 
+MIXERLINE_COMPONENTTYPE_DST_VOICEIN = (MIXERLINE_COMPONENTTYPE_DST_FIRST+8); 
+MIXERLINE_COMPONENTTYPE_DST_LAST = (MIXERLINE_COMPONENTTYPE_DST_FIRST+8); 
+MIXERLINE_COMPONENTTYPE_SRC_FIRST = $1000; 
+MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED = (MIXERLINE_COMPONENTTYPE_SRC_FIRST+0); 
+MIXERLINE_COMPONENTTYPE_SRC_DIGITAL = (MIXERLINE_COMPONENTTYPE_SRC_FIRST+1); 
+MIXERLINE_COMPONENTTYPE_SRC_LINE = (MIXERLINE_COMPONENTTYPE_SRC_FIRST+2); 
+MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE = (MIXERLINE_COMPONENTTYPE_SRC_FIRST+3); 
+MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER = (MIXERLINE_COMPONENTTYPE_SRC_FIRST+4); 
+MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC = (MIXERLINE_COMPONENTTYPE_SRC_FIRST+5); 
+MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE = (MIXERLINE_COMPONENTTYPE_SRC_FIRST+6); 
+MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER = (MIXERLINE_COMPONENTTYPE_SRC_FIRST+7); 
+MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT = (MIXERLINE_COMPONENTTYPE_SRC_FIRST+8); 
+MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY = (MIXERLINE_COMPONENTTYPE_SRC_FIRST+9); 
+MIXERLINE_COMPONENTTYPE_SRC_ANALOG = (MIXERLINE_COMPONENTTYPE_SRC_FIRST+10); 
+MIXERLINE_COMPONENTTYPE_SRC_LAST = (MIXERLINE_COMPONENTTYPE_SRC_FIRST+10); 
+MIXERLINE_TARGETTYPE_UNDEFINED = 0; 
+MIXERLINE_TARGETTYPE_WAVEOUT = 1; 
+MIXERLINE_TARGETTYPE_WAVEIN = 2; 
+MIXERLINE_TARGETTYPE_MIDIOUT = 3; 
+MIXERLINE_TARGETTYPE_MIDIIN = 4; 
+MIXERLINE_TARGETTYPE_AUX = 5; 
+MIDIERR_UNPREPARED = (MIDIERR_BASE+0); 
+MIDIERR_STILLPLAYING = (MIDIERR_BASE+1); 
+MIDIERR_NOMAP = (MIDIERR_BASE+2); 
+MIDIERR_NOTREADY = (MIDIERR_BASE+3); 
+MIDIERR_NODEVICE = (MIDIERR_BASE+4); 
+MIDIERR_INVALIDSETUP = (MIDIERR_BASE+5); 
+MIDIERR_BADOPENMODE = (MIDIERR_BASE+6); 
+MIDIERR_DONT_CONTINUE = (MIDIERR_BASE+7); 
+MIDIERR_LASTERROR = (MIDIERR_BASE+7); 
+MIXERCONTROL_CONTROLF_UNIFORM = 1; 
+MIXERCONTROL_CONTROLF_MULTIPLE = 2; 
+MIXERCONTROL_CONTROLF_DISABLED = $80000000; 
+MIXERCONTROL_CT_CLASS_MASK = $F0000000; 
+MIXERCONTROL_CT_CLASS_CUSTOM = 0; 
+MIXERCONTROL_CT_CLASS_METER = $10000000; 
+MIXERCONTROL_CT_CLASS_SWITCH = $20000000; 
+MIXERCONTROL_CT_CLASS_NUMBER = $30000000; 
+MIXERCONTROL_CT_CLASS_SLIDER = $40000000; 
+MIXERCONTROL_CT_CLASS_FADER = $50000000; 
+MIXERCONTROL_CT_CLASS_TIME = $60000000; 
+MIXERCONTROL_CT_CLASS_LIST = $70000000; 
+MIXERCONTROL_CT_SUBCLASS_MASK = $0F000000; 
+MIXERCONTROL_CT_SC_SWITCH_BOOLEAN = 0; 
+MIXERCONTROL_CT_SC_SWITCH_BUTTON = $1000000; 
+MIXERCONTROL_CT_SC_METER_POLLED = 0; 
+MIXERCONTROL_CT_SC_TIME_MICROSECS = 0; 
+MIXERCONTROL_CT_SC_TIME_MILLISECS = $1000000; 
+MIXERCONTROL_CT_SC_LIST_SINGLE = 0; 
+MIXERCONTROL_CT_SC_LIST_MULTIPLE = $1000000; 
+MIXERCONTROL_CT_UNITS_MASK = $0FF0000; 
+MIXERCONTROL_CT_UNITS_CUSTOM = 0; 
+MIXERCONTROL_CT_UNITS_BOOLEAN = $10000; 
+MIXERCONTROL_CT_UNITS_SIGNED = $20000; 
+MIXERCONTROL_CT_UNITS_UNSIGNED = $30000; 
+MIXERCONTROL_CT_UNITS_DECIBELS = $40000; 
+MIXERCONTROL_CT_UNITS_PERCENT = $50000; 
+MIXERCONTROL_CONTROLTYPE_CUSTOM = (MIXERCONTROL_CT_CLASS_CUSTOM or MIXERCONTROL_CT_UNITS_CUSTOM); 
+MIXERCONTROL_CONTROLTYPE_BOOLEANMETER = (MIXERCONTROL_CT_CLASS_METER or MIXERCONTROL_CT_SC_METER_POLLED or MIXERCONTROL_CT_UNITS_BOOLEAN); 
+MIXERCONTROL_CONTROLTYPE_SIGNEDMETER = (MIXERCONTROL_CT_CLASS_METER or MIXERCONTROL_CT_SC_METER_POLLED or MIXERCONTROL_CT_UNITS_SIGNED); 
+MIXERCONTROL_CONTROLTYPE_PEAKMETER = (MIXERCONTROL_CONTROLTYPE_SIGNEDMETER+1); 
+MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER = (MIXERCONTROL_CT_CLASS_METER or MIXERCONTROL_CT_SC_METER_POLLED or MIXERCONTROL_CT_UNITS_UNSIGNED); 
+MIXERCONTROL_CONTROLTYPE_BOOLEAN = (MIXERCONTROL_CT_CLASS_SWITCH or MIXERCONTROL_CT_SC_SWITCH_BOOLEAN or MIXERCONTROL_CT_UNITS_BOOLEAN); 
+MIXERCONTROL_CONTROLTYPE_ONOFF = (MIXERCONTROL_CONTROLTYPE_BOOLEAN+1); 
+MIXERCONTROL_CONTROLTYPE_MUTE = (MIXERCONTROL_CONTROLTYPE_BOOLEAN+2); 
+MIXERCONTROL_CONTROLTYPE_MONO = (MIXERCONTROL_CONTROLTYPE_BOOLEAN+3); 
+MIXERCONTROL_CONTROLTYPE_LOUDNESS = (MIXERCONTROL_CONTROLTYPE_BOOLEAN+4); 
+MIXERCONTROL_CONTROLTYPE_STEREOENH = (MIXERCONTROL_CONTROLTYPE_BOOLEAN+5); 
+MIXERCONTROL_CONTROLTYPE_BUTTON = (MIXERCONTROL_CT_CLASS_SWITCH or MIXERCONTROL_CT_SC_SWITCH_BUTTON or MIXERCONTROL_CT_UNITS_BOOLEAN); 
+MIXERCONTROL_CONTROLTYPE_DECIBELS = (MIXERCONTROL_CT_CLASS_NUMBER or MIXERCONTROL_CT_UNITS_DECIBELS); 
+MIXERCONTROL_CONTROLTYPE_SIGNED = (MIXERCONTROL_CT_CLASS_NUMBER or MIXERCONTROL_CT_UNITS_SIGNED); 
+MIXERCONTROL_CONTROLTYPE_UNSIGNED = (MIXERCONTROL_CT_CLASS_NUMBER or MIXERCONTROL_CT_UNITS_UNSIGNED); 
+MIXERCONTROL_CONTROLTYPE_PERCENT = (MIXERCONTROL_CT_CLASS_NUMBER or MIXERCONTROL_CT_UNITS_PERCENT); 
+MIXERCONTROL_CONTROLTYPE_SLIDER = (MIXERCONTROL_CT_CLASS_SLIDER or MIXERCONTROL_CT_UNITS_SIGNED); 
+MIXERCONTROL_CONTROLTYPE_PAN = (MIXERCONTROL_CONTROLTYPE_SLIDER+1); 
+MIXERCONTROL_CONTROLTYPE_QSOUNDPAN = (MIXERCONTROL_CONTROLTYPE_SLIDER+2); 
+MIXERCONTROL_CONTROLTYPE_FADER = (MIXERCONTROL_CT_CLASS_FADER or MIXERCONTROL_CT_UNITS_UNSIGNED); 
+MIXERCONTROL_CONTROLTYPE_VOLUME = (MIXERCONTROL_CONTROLTYPE_FADER+1); 
+MIXERCONTROL_CONTROLTYPE_BASS = (MIXERCONTROL_CONTROLTYPE_FADER+2); 
+MIXERCONTROL_CONTROLTYPE_TREBLE = (MIXERCONTROL_CONTROLTYPE_FADER+3); 
+MIXERCONTROL_CONTROLTYPE_EQUALIZER = (MIXERCONTROL_CONTROLTYPE_FADER+4); 
+MIXERCONTROL_CONTROLTYPE_SINGLESELECT = (MIXERCONTROL_CT_CLASS_LIST or MIXERCONTROL_CT_SC_LIST_SINGLE or MIXERCONTROL_CT_UNITS_BOOLEAN); 
+MIXERCONTROL_CONTROLTYPE_MUX = (MIXERCONTROL_CONTROLTYPE_SINGLESELECT+1); 
+MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT = (MIXERCONTROL_CT_CLASS_LIST or MIXERCONTROL_CT_SC_LIST_MULTIPLE or MIXERCONTROL_CT_UNITS_BOOLEAN); 
+MIXERCONTROL_CONTROLTYPE_MIXER = (MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT+1); 
+MIXERCONTROL_CONTROLTYPE_MICROTIME = (MIXERCONTROL_CT_CLASS_TIME or MIXERCONTROL_CT_SC_TIME_MICROSECS or MIXERCONTROL_CT_UNITS_UNSIGNED); 
+MIXERCONTROL_CONTROLTYPE_MILLITIME = (MIXERCONTROL_CT_CLASS_TIME or MIXERCONTROL_CT_SC_TIME_MILLISECS or MIXERCONTROL_CT_UNITS_UNSIGNED); 
+MIXER_SHORT_NAME_CHARS = 16; 
+MIXER_LONG_NAME_CHARS = 64; 
+MIXERR_INVALLINE = (MIXERR_BASE+0); 
+MIXERR_INVALCONTROL = (MIXERR_BASE+1); 
+MIXERR_INVALVALUE = (MIXERR_BASE+2); 
+MIXERR_LASTERROR = (MIXERR_BASE+2); 
+MIXER_OBJECTF_HANDLE = $80000000; 
+MIXER_OBJECTF_MIXER = 0; 
+MIXER_OBJECTF_HMIXER = (MIXER_OBJECTF_HANDLE or MIXER_OBJECTF_MIXER); 
+MIXER_OBJECTF_WAVEOUT = $10000000; 
+MIXER_OBJECTF_HWAVEOUT = (MIXER_OBJECTF_HANDLE or MIXER_OBJECTF_WAVEOUT); 
+MIXER_OBJECTF_WAVEIN = $20000000; 
+MIXER_OBJECTF_HWAVEIN = (MIXER_OBJECTF_HANDLE or MIXER_OBJECTF_WAVEIN); 
+MIXER_OBJECTF_MIDIOUT = $30000000; 
+MIXER_OBJECTF_HMIDIOUT = (MIXER_OBJECTF_HANDLE or MIXER_OBJECTF_MIDIOUT); 
+MIXER_OBJECTF_MIDIIN = $40000000; 
+MIXER_OBJECTF_HMIDIIN = (MIXER_OBJECTF_HANDLE or MIXER_OBJECTF_MIDIIN); 
+MIXER_OBJECTF_AUX = $50000000; 
+MIXER_GETCONTROLDETAILSF_VALUE = 0; 
+MIXER_GETCONTROLDETAILSF_LISTTEXT = 1; 
+MIXER_GETCONTROLDETAILSF_QUERYMASK = $F; 
+MIXER_SETCONTROLDETAILSF_VALUE = 0; 
+MIXER_SETCONTROLDETAILSF_CUSTOM = 1; 
+MIXER_SETCONTROLDETAILSF_QUERYMASK = $F; 
+JOYERR_NOERROR = (0); 
+JOYERR_PARMS = (JOYERR_BASE+5); 
+JOYERR_NOCANDO = (JOYERR_BASE+6); 
+JOYERR_UNPLUGGED = (JOYERR_BASE+7); 
+JOY_BUTTON1 = 1; 
+JOY_BUTTON2 = 2; 
+JOY_BUTTON3 = 4; 
+JOY_BUTTON4 = 8; 
+JOY_BUTTON1CHG = 256; 
+JOY_BUTTON2CHG = 512; 
+JOY_BUTTON3CHG = $400; 
+JOY_BUTTON4CHG = $800; 
+JOY_BUTTON5 = 16; 
+JOY_BUTTON6 = 32; 
+JOY_BUTTON7 = 64; 
+JOY_BUTTON8 = 128; 
+JOY_BUTTON9 = 256; 
+JOY_BUTTON10 = 512; 
+JOY_BUTTON11 = $400; 
+JOY_BUTTON12 = $800; 
+JOY_BUTTON13 = $1000; 
+JOY_BUTTON14 = $2000; 
+JOY_BUTTON15 = $4000; 
+JOY_BUTTON16 = $8000; 
+JOY_BUTTON17 = $10000; 
+JOY_BUTTON18 = $20000; 
+JOY_BUTTON19 = $40000; 
+JOY_BUTTON20 = $80000; 
+JOY_BUTTON21 = $100000; 
+JOY_BUTTON22 = $200000; 
+JOY_BUTTON23 = $400000; 
+JOY_BUTTON24 = $800000; 
+JOY_BUTTON25 = $1000000; 
+JOY_BUTTON26 = $2000000; 
+JOY_BUTTON27 = $4000000; 
+JOY_BUTTON28 = $8000000; 
+JOY_BUTTON29 = $10000000; 
+JOY_BUTTON30 = $20000000; 
+JOY_BUTTON31 = $40000000; 
+JOY_BUTTON32 = $80000000; 
+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 = $400; 
+JOY_USEDEADZONE = $800; 
+JOY_RETURNALL = (JOY_RETURNX or JOY_RETURNY or JOY_RETURNZ or JOY_RETURNR or JOY_RETURNU or JOY_RETURNV or JOY_RETURNPOV or JOY_RETURNBUTTONS); 
+JOY_CAL_READALWAYS = $10000; 
+JOY_CAL_READXYONLY = $20000; 
+JOY_CAL_READ3 = $40000; 
+JOY_CAL_READ4 = $80000; 
+JOY_CAL_READXONLY = $100000; 
+JOY_CAL_READYONLY = $200000; 
+JOY_CAL_READ5 = $400000; 
+JOY_CAL_READ6 = $800000; 
+JOY_CAL_READZONLY = $1000000; 
+JOY_CAL_READRONLY = $2000000; 
+JOY_CAL_READUONLY = $4000000; 
+JOY_CAL_READVONLY = $8000000; 
+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 = (MMIOERR_BASE+1); 
+MMIOERR_OUTOFMEMORY = (MMIOERR_BASE+2); 
+MMIOERR_CANNOTOPEN = (MMIOERR_BASE+3); 
+MMIOERR_CANNOTCLOSE = (MMIOERR_BASE+4); 
+MMIOERR_CANNOTREAD = (MMIOERR_BASE+5); 
+MMIOERR_CANNOTWRITE = (MMIOERR_BASE+6); 
+MMIOERR_CANNOTSEEK = (MMIOERR_BASE+7); 
+MMIOERR_CANNOTEXPAND = (MMIOERR_BASE+8); 
+MMIOERR_CHUNKNOTFOUND = (MMIOERR_BASE+9); 
+MMIOERR_UNBUFFERED = (MMIOERR_BASE+10); 
+MMIOERR_PATHNOTFOUND = (MMIOERR_BASE+11); 
+MMIOERR_ACCESSDENIED = (MMIOERR_BASE+12); 
+MMIOERR_SHARINGVIOLATION = (MMIOERR_BASE+13); 
+MMIOERR_NETWORKERROR = (MMIOERR_BASE+14); 
+MMIOERR_TOOMANYOPENFILES = (MMIOERR_BASE+15); 
+MMIOERR_INVALIDFILE = (MMIOERR_BASE+16); 
+CFSEPCHAR = '+'; 
+WAVECAPS_PITCH = 1; 
+WAVECAPS_PLAYBACKRATE = 2; 
+WAVECAPS_VOLUME = 4; 
+WAVECAPS_LRVOLUME = 8; 
+WAVECAPS_SYNC = 16; 
+WAVECAPS_SAMPLEACCURATE = 32; 
+WAVECAPS_DIRECTSOUND = 64; 
+MIXER_GETLINEINFOF_DESTINATION = 0; 
+MIXER_GETLINEINFOF_SOURCE = 1; 
+MIXER_GETLINEINFOF_LINEID = 2; 
+MIXER_GETLINEINFOF_COMPONENTTYPE = 3; 
+MIXER_GETLINEINFOF_TARGETTYPE = 4; 
+MIXER_GETLINEINFOF_QUERYMASK = $F; 
+MMIO_RWMODE = 3; 
+MMIO_SHAREMODE = $70; 
+MMIO_CREATE = $1000; 
+MMIO_PARSE = 256; 
+MMIO_DELETE = 512; 
+MMIO_EXIST = $4000; 
+MMIO_ALLOCBUF = $10000; 
+MMIO_GETTEMP = $20000; 
+MMIO_DIRTY = $10000000; 
+MMIO_READ = 0; 
+MMIO_WRITE = 1; 
+MMIO_READWRITE = 2; 
+MMIO_COMPAT = 0; 
+MMIO_EXCLUSIVE = 16; 
+MMIO_DENYWRITE = 32; 
+MMIO_DENYREAD = $30; 
+MMIO_DENYNONE = 64; 
+MMIO_FHOPEN = 16; 
+MMIO_EMPTYBUF = 16; 
+MMIO_TOUPPER = 16; 
+MMIO_INSTALLPROC = $10000; 
+MMIO_GLOBALPROC = $10000000; 
+MMIO_REMOVEPROC = $20000; 
+MMIO_UNICODEPROC = $1000000; 
+MMIO_FINDPROC = $40000; 
+MMIO_FINDCHUNK = 16; 
+MMIO_FINDRIFF = 32; 
+MMIO_FINDLIST = 64; 
+MMIO_CREATERIFF = 32; 
+MMIO_CREATELIST = 64; 
+MMIOM_READ = MMIO_READ; 
+MMIOM_WRITE = MMIO_WRITE; 
+MMIOM_SEEK = 2; 
+MMIOM_OPEN = 3; 
+MMIOM_CLOSE = 4; 
+MMIOM_WRITEFLUSH = 5; 
+MMIOM_RENAME = 6; 
+MMIOM_USER = $8000; 
+FOURCC_RIFF = $46464952; {'R','I','F','F'}
+FOURCC_LIST = $5453494C; {'L','I','S','T'} 
+FOURCC_DOS  = $20532F44; {'D','O','S',' '}
+FOURCC_MEM  = $204D454D; {'M','E','M',' '}
+SEEK_SET = 0; 
+SEEK_CUR = 1; 
+SEEK_END = 2; 
+MMIO_DEFAULTBUFFER = 8192; 
+MCIERR_INVALID_DEVICE_ID = (MCIERR_BASE+1); 
+MCIERR_UNRECOGNIZED_KEYWORD = (MCIERR_BASE+3); 
+MCIERR_UNRECOGNIZED_COMMAND = (MCIERR_BASE+5); 
+MCIERR_HARDWARE = (MCIERR_BASE+6); 
+MCIERR_INVALID_DEVICE_NAME = (MCIERR_BASE+7); 
+MCIERR_OUT_OF_MEMORY = (MCIERR_BASE+8); 
+MCIERR_DEVICE_OPEN = (MCIERR_BASE+9); 
+MCIERR_CANNOT_LOAD_DRIVER = (MCIERR_BASE+10); 
+MCIERR_MISSING_COMMAND_STRING = (MCIERR_BASE+11); 
+MCIERR_PARAM_OVERFLOW = (MCIERR_BASE+12); 
+MCIERR_MISSING_STRING_ARGUMENT = (MCIERR_BASE+13); 
+MCIERR_BAD_INTEGER = (MCIERR_BASE+14); 
+MCIERR_PARSER_INTERNAL = (MCIERR_BASE+15); 
+MCIERR_DRIVER_INTERNAL = (MCIERR_BASE+16); 
+MCIERR_MISSING_PARAMETER = (MCIERR_BASE+17); 
+MCIERR_UNSUPPORTED_FUNCTION = (MCIERR_BASE+18); 
+MCIERR_FILE_NOT_FOUND = (MCIERR_BASE+19); 
+MCIERR_DEVICE_NOT_READY = (MCIERR_BASE+20); 
+MCIERR_INTERNAL = (MCIERR_BASE+21); 
+MCIERR_DRIVER = (MCIERR_BASE+22); 
+MCIERR_CANNOT_USE_ALL = (MCIERR_BASE+23); 
+MCIERR_MULTIPLE = (MCIERR_BASE+24); 
+MCIERR_EXTENSION_NOT_FOUND = (MCIERR_BASE+25); 
+MCIERR_OUTOFRANGE = (MCIERR_BASE+26); 
+MCIERR_FLAGS_NOT_COMPATIBLE = (MCIERR_BASE+28); 
+MCIERR_FILE_NOT_SAVED = (MCIERR_BASE+30); 
+MCIERR_DEVICE_TYPE_REQUIRED = (MCIERR_BASE+31); 
+MCIERR_DEVICE_LOCKED = (MCIERR_BASE+32); 
+MCIERR_DUPLICATE_ALIAS = (MCIERR_BASE+33); 
+MCIERR_BAD_CONSTANT = (MCIERR_BASE+34); 
+MCIERR_MUST_USE_SHAREABLE = (MCIERR_BASE+35); 
+MCIERR_MISSING_DEVICE_NAME = (MCIERR_BASE+36); 
+MCIERR_BAD_TIME_FORMAT = (MCIERR_BASE+37); 
+MCIERR_NO_CLOSING_QUOTE = (MCIERR_BASE+38); 
+MCIERR_DUPLICATE_FLAGS = (MCIERR_BASE+39); 
+MCIERR_INVALID_FILE = (MCIERR_BASE+40); 
+MCIERR_NULL_PARAMETER_BLOCK = (MCIERR_BASE+41); 
+MCIERR_UNNAMED_RESOURCE = (MCIERR_BASE+42); 
+MCIERR_NEW_REQUIRES_ALIAS = (MCIERR_BASE+43); 
+MCIERR_NOTIFY_ON_AUTO_OPEN = (MCIERR_BASE+44); 
+MCIERR_NO_ELEMENT_ALLOWED = (MCIERR_BASE+45); 
+MCIERR_NONAPPLICABLE_FUNCTION = (MCIERR_BASE+46); 
+MCIERR_ILLEGAL_FOR_AUTO_OPEN = (MCIERR_BASE+47); 
+MCIERR_FILENAME_REQUIRED = (MCIERR_BASE+48); 
+MCIERR_EXTRA_CHARACTERS = (MCIERR_BASE+49); 
+MCIERR_DEVICE_NOT_INSTALLED = (MCIERR_BASE+50); 
+MCIERR_GET_CD = (MCIERR_BASE+51); 
+MCIERR_SET_CD = (MCIERR_BASE+52); 
+MCIERR_SET_DRIVE = (MCIERR_BASE+53); 
+MCIERR_DEVICE_LENGTH = (MCIERR_BASE+54); 
+MCIERR_DEVICE_ORD_LENGTH = (MCIERR_BASE+55); 
+MCIERR_NO_INTEGER = (MCIERR_BASE+56); 
+MCIERR_WAVE_OUTPUTSINUSE = (MCIERR_BASE+64); 
+MCIERR_WAVE_SETOUTPUTINUSE = (MCIERR_BASE+65); 
+MCIERR_WAVE_INPUTSINUSE = (MCIERR_BASE+66); 
+MCIERR_WAVE_SETINPUTINUSE = (MCIERR_BASE+67); 
+MCIERR_WAVE_OUTPUTUNSPECIFIED = (MCIERR_BASE+68); 
+MCIERR_WAVE_INPUTUNSPECIFIED = (MCIERR_BASE+69); 
+MCIERR_WAVE_OUTPUTSUNSUITABLE = (MCIERR_BASE+70); 
+MCIERR_WAVE_SETOUTPUTUNSUITABLE = (MCIERR_BASE+71); 
+MCIERR_WAVE_INPUTSUNSUITABLE = (MCIERR_BASE+72); 
+MCIERR_WAVE_SETINPUTUNSUITABLE = (MCIERR_BASE+73); 
+MCIERR_SEQ_DIV_INCOMPATIBLE = (MCIERR_BASE+80); 
+MCIERR_SEQ_PORT_INUSE = (MCIERR_BASE+81); 
+MCIERR_SEQ_PORT_NONEXISTENT = (MCIERR_BASE+82); 
+MCIERR_SEQ_PORT_MAPNODEVICE = (MCIERR_BASE+83); 
+MCIERR_SEQ_PORT_MISCERROR = (MCIERR_BASE+84); 
+MCIERR_SEQ_TIMER = (MCIERR_BASE+85); 
+MCIERR_SEQ_PORTUNSPECIFIED = (MCIERR_BASE+86); 
+MCIERR_SEQ_NOMIDIPRESENT = (MCIERR_BASE+87); 
+MCIERR_NO_WINDOW = (MCIERR_BASE+90); 
+MCIERR_CREATEWINDOW = (MCIERR_BASE+91); 
+MCIERR_FILE_READ = (MCIERR_BASE+92); 
+MCIERR_FILE_WRITE = (MCIERR_BASE+93); 
+MCIERR_NO_IDENTITY = (MCIERR_BASE+94); 
+MCIERR_CUSTOM_DRIVER_BASE = (MCIERR_BASE+256); 
+MCI_FIRST = DRV_MCI_FIRST; 
+MCI_ESCAPE = $805; 
+MCI_PLAY = $806; 
+MCI_SEEK = $807; 
+MCI_STOP = $808; 
+MCI_PAUSE = $809; 
+MCI_INFO = $80A; 
+MCI_GETDEVCAPS = $80B; 
+MCI_BREAK = $811; 
+MCI_WHERE = $843; 
+MCI_FREEZE = $844; 
+MCI_UNFREEZE = $845; 
+MCI_LOAD = $850; 
+MCI_CUT = $851; 
+MCI_COPY = $852; 
+MCI_PASTE = $853; 
+MCI_UPDATE = $854; 
+MCI_RESUME = $855; 
+MCI_DELETE = $856; 
+MCI_SET = $80D; 
+MCI_STEP = $80E; 
+MCI_SAVE = $813; 
+MCI_SPIN = $80C; 
+MCI_STATUS = $814; 
+MCI_CUE = $830; 
+MCI_REALIZE = $840; 
+MCI_WINDOW = $841; 
+MCI_PUT = $842; 
+MCI_RECORD = $80F; 
+MCI_SYSINFO = $810; 
+MCI_OPEN = $803; 
+MCI_CLOSE = $804; 
+MCI_USER_MESSAGES = (DRV_MCI_FIRST+$400); 
+MCI_LAST = $0FFF; 
+MCI_ALL_DEVICE_ID = -1; 
+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 = MCI_DEVTYPE_VCR; 
+MCI_DEVTYPE_LAST = MCI_DEVTYPE_SEQUENCER; 
+MCI_DEVTYPE_FIRST_USER = $1000; 
+MCI_MODE_NOT_READY = (MCI_STRING_OFFSET+12); 
+MCI_MODE_STOP = (MCI_STRING_OFFSET+13); 
+MCI_MODE_PLAY = (MCI_STRING_OFFSET+14); 
+MCI_MODE_RECORD = (MCI_STRING_OFFSET+15); 
+MCI_MODE_SEEK = (MCI_STRING_OFFSET+16); 
+MCI_MODE_PAUSE = (MCI_STRING_OFFSET+17); 
+MCI_MODE_OPEN = (MCI_STRING_OFFSET+18); 
+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; 
+
+function MCI_MSF_MINUTE(msf: longint): byte;
+function MCI_MSF_SECOND(msf: longint): byte;
+function MCI_MSF_FRAME(msf: longint): byte;
+function MCI_MAKE_MSF(m, s, f: byte): longint;
+
+const
+MCI_SET_DOOR_OPEN = 256; 
+MCI_SET_DOOR_CLOSED = 512; 
+MCI_SET_TIME_FORMAT = $400; 
+MCI_SET_AUDIO = $800; 
+MCI_SET_VIDEO = $1000; 
+MCI_SET_ON = $2000; 
+MCI_SET_OFF = $4000; 
+MCI_SET_AUDIO_ALL = 0; 
+MCI_SET_AUDIO_LEFT = 1; 
+MCI_SET_AUDIO_RIGHT = 2; 
+
+function MCI_TMSF_TRACK(tmsf: longint): byte;
+function MCI_TMSF_MINUTE(tmsf: longint): byte;
+function MCI_TMSF_SECOND(tmsf: longint): byte;
+function MCI_TMSF_FRAME(tmsf: longint): byte;
+function MCI_HMS_HOUR(h: longint): byte;
+function MCI_HMS_MINUTE(h: longint): byte;
+function MCI_HMS_SECOND(h: longint): byte;
+function MCI_MAKE_HMS(h, m, s: byte): longint;
+
+const
+MCI_INFO_PRODUCT = 256; 
+MCI_INFO_FILE = 512; 
+MCI_INFO_MEDIA_UPC = $400; 
+MCI_INFO_MEDIA_IDENTITY = $800; 
+MCI_INFO_NAME = $1000; 
+MCI_INFO_COPYRIGHT = $2000; 
+
+function MCI_MAKE_TMSF(t, m, s, f: byte): longint;
+
+const
+MCI_WAIT = 2; 
+MCI_FROM = 4; 
+MCI_TO = 8; 
+MCI_TRACK = 16; 
+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_OPEN_SHAREABLE = 256; 
+MCI_OPEN_ELEMENT = 512; 
+MCI_OPEN_ALIAS = $400; 
+MCI_OPEN_ELEMENT_ID = $800; 
+MCI_OPEN_TYPE_ID = $1000; 
+MCI_OPEN_TYPE = $2000; 
+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 = $400; 
+MCI_SYSINFO_INSTALLNAME = $800; 
+MCI_NOTIFY_SUCCESSFUL = 1; 
+MCI_NOTIFY_SUPERSEDED = 2; 
+MCI_NOTIFY_ABORTED = 4; 
+MCI_NOTIFY_FAILURE = 8; 
+MCI_NOTIFY = 1; 
+MCI_BREAK_KEY = 256; 
+MCI_BREAK_HWND = 512; 
+MCI_BREAK_OFF = $400; 
+MCI_RECORD_INSERT = 256; 
+MCI_RECORD_OVERWRITE = 512; 
+MCI_SAVE_FILE = 256; 
+MCI_LOAD_FILE = 256; 
+MCI_VD_GETDEVCAPS_FAST_RATE = $4003; 
+MCI_VD_GETDEVCAPS_SLOW_RATE = $4004; 
+MCI_VD_GETDEVCAPS_NORMAL_RATE = $4005; 
+MCI_VD_STEP_FRAMES = $10000; 
+MCI_VD_STEP_REVERSE = $20000; 
+MCI_VD_ESCAPE_STRING = 256; 
+MCI_VD_FORMAT_TRACK = $4001; 
+MCI_VD_PLAY_REVERSE = $10000; 
+MCI_VD_PLAY_FAST = $20000; 
+MCI_VD_MODE_PARK = (MCI_VD_OFFSET+1); 
+MCI_VD_GETDEVCAPS_CAV = $20000; 
+MCI_VD_SPIN_UP = $10000; 
+MCI_VD_SPIN_DOWN = $20000; 
+MCI_VD_SEEK_REVERSE = $10000; 
+MCI_VD_STATUS_SPEED = $4002; 
+MCI_VD_STATUS_FORWARD = $4003; 
+MCI_VD_STATUS_MEDIA_TYPE = $4004; 
+MCI_VD_STATUS_SIDE = $4005; 
+MCI_VD_GETDEVCAPS_CAN_REVERSE = $4002; 
+MCI_VD_MEDIA_CLV = (MCI_VD_OFFSET+2); 
+MCI_VD_MEDIA_CAV = (MCI_VD_OFFSET+3); 
+MCI_VD_MEDIA_OTHER = (MCI_VD_OFFSET+4); 
+MCI_VD_STATUS_DISC_SIZE = $4006; 
+MCI_VD_GETDEVCAPS_CLV = $10000; 
+MCI_VD_PLAY_SPEED = $40000; 
+MCI_VD_PLAY_SCAN = $80000; 
+MCI_VD_PLAY_SLOW = $100000; 
+MCI_WAVE_STATUS_CHANNELS = $4002; 
+MCI_WAVE_STATUS_SAMPLESPERSEC = $4003; 
+MCI_WAVE_PCM = MCI_WAVE_OFFSET; 
+MCI_WAVE_MAPPER = (MCI_WAVE_OFFSET+1); 
+MCI_WAVE_OPEN_BUFFER = $10000; 
+MCI_WAVE_STATUS_BITSPERSAMPLE = $4006; 
+MCI_WAVE_STATUS_LEVEL = $4007; 
+MCI_WAVE_SET_FORMATTAG = $10000; 
+MCI_WAVE_SET_CHANNELS = $20000; 
+MCI_WAVE_SET_SAMPLESPERSEC = $40000; 
+MCI_WAVE_SET_AVGBYTESPERSEC = $80000; 
+MCI_WAVE_SET_BLOCKALIGN = $100000; 
+MCI_WAVE_SET_BITSPERSAMPLE = $200000; 
+MCI_WAVE_INPUT = $400000; 
+MCI_WAVE_OUTPUT = $800000; 
+MCI_WAVE_STATUS_FORMATTAG = $4001; 
+MCI_WAVE_SET_ANYINPUT = $4000000; 
+MCI_WAVE_SET_ANYOUTPUT = $8000000; 
+MCI_WAVE_GETDEVCAPS_INPUTS = $4001; 
+MCI_WAVE_GETDEVCAPS_OUTPUTS = $4002; 
+MCI_WAVE_STATUS_AVGBYTESPERSEC = $4004; 
+MCI_WAVE_STATUS_BLOCKALIGN = $4005; 
+MCI_CDA_STATUS_TYPE_TRACK = $4001; 
+MCI_CDA_TRACK_AUDIO = (MCI_CD_OFFSET); 
+MCI_CDA_TRACK_OTHER = (MCI_CD_OFFSET+1); 
+MCI_SEQ_DIV_PPQN = (MCI_SEQ_OFFSET); 
+MCI_SEQ_DIV_SMPTE_24 = (MCI_SEQ_OFFSET+1); 
+MCI_SEQ_DIV_SMPTE_25 = (MCI_SEQ_OFFSET+2); 
+MCI_SEQ_DIV_SMPTE_30DROP = (MCI_SEQ_OFFSET+3); 
+MCI_SEQ_DIV_SMPTE_30 = (MCI_SEQ_OFFSET+4); 
+MCI_SEQ_FORMAT_SONGPTR = $4001; 
+MCI_SEQ_FILE = $4002; 
+MCI_SEQ_MIDI = $4003; 
+MCI_SEQ_SMPTE = $4004; 
+MCI_SEQ_NONE = 65533; 
+MCI_SEQ_MAPPER = 65535; 
+MCI_SEQ_STATUS_TEMPO = $4002; 
+MCI_SEQ_STATUS_PORT = $4003; 
+MCI_SEQ_STATUS_SLAVE = $4007; 
+MCI_SEQ_STATUS_MASTER = $4008; 
+MCI_SEQ_STATUS_OFFSET = $4009; 
+MCI_SEQ_STATUS_DIVTYPE = $400A; 
+MCI_SEQ_STATUS_NAME = $400B; 
+MCI_SEQ_STATUS_COPYRIGHT = $400C; 
+MCI_SEQ_SET_TEMPO = $10000; 
+MCI_SEQ_SET_PORT = $20000; 
+MCI_SEQ_SET_SLAVE = $40000; 
+MCI_SEQ_SET_MASTER = $80000; 
+MCI_SEQ_SET_OFFSET = $1000000; 
+MCI_ANIM_PLAY_SLOW = $80000; 
+MCI_ANIM_PLAY_SCAN = $100000; 
+MCI_ANIM_GETDEVCAPS_SLOW_RATE = $4003; 
+MCI_ANIM_GETDEVCAPS_NORMAL_RATE = $4004; 
+MCI_ANIM_STEP_REVERSE = $10000; 
+MCI_ANIM_STEP_FRAMES = $20000; 
+MCI_ANIM_STATUS_SPEED = $4001; 
+MCI_ANIM_GETDEVCAPS_PALETTES = $4006; 
+MCI_ANIM_OPEN_WS = $10000; 
+MCI_ANIM_OPEN_PARENT = $20000; 
+MCI_ANIM_OPEN_NOSTATIC = $40000; 
+MCI_ANIM_GETDEVCAPS_FAST_RATE = $4002; 
+MCI_ANIM_PLAY_SPEED = $10000; 
+MCI_ANIM_PLAY_REVERSE = $20000; 
+MCI_ANIM_PLAY_FAST = $40000; 
+MCI_ANIM_STATUS_FORWARD = $4002; 
+MCI_ANIM_STATUS_HWND = $4003; 
+MCI_ANIM_STATUS_HPAL = $4004; 
+MCI_ANIM_STATUS_STRETCH = $4005; 
+MCI_ANIM_INFO_TEXT = $10000; 
+MCI_ANIM_GETDEVCAPS_CAN_REVERSE = $4001; 
+MCI_ANIM_WINDOW_TEXT = $80000; 
+MCI_ANIM_WINDOW_ENABLE_STRETCH = $100000; 
+MCI_ANIM_WINDOW_DISABLE_STRETCH = $200000; 
+MCI_ANIM_WINDOW_DEFAULT = 0; 
+MCI_ANIM_RECT = $10000; 
+MCI_ANIM_PUT_SOURCE = $20000; 
+MCI_ANIM_PUT_DESTINATION = $40000; 
+MCI_ANIM_WHERE_SOURCE = $20000; 
+MCI_ANIM_WHERE_DESTINATION = $40000; 
+MCI_ANIM_UPDATE_HDC = $20000; 
+MCI_ANIM_GETDEVCAPS_CAN_STRETCH = $4007; 
+MCI_ANIM_GETDEVCAPS_MAX_WINDOWS = $4008; 
+MCI_ANIM_REALIZE_NORM = $10000; 
+MCI_ANIM_REALIZE_BKGD = $20000; 
+MCI_ANIM_WINDOW_HWND = $10000; 
+MCI_ANIM_WINDOW_STATE = $40000; 
+TIMERR_NOERROR = 0; 
+TIMERR_NOCANDO = (TIMERR_BASE+1); 
+TIMERR_STRUCT = (TIMERR_BASE+33); 
+TIME_ONESHOT = 0; 
+TIME_PERIODIC = 1; 
+TIME_CALLBACK_FUNCTION = 0; 
+TIME_CALLBACK_EVENT_SET = 16; 
+TIME_CALLBACK_EVENT_PULSE = 32; 
+MCI_OVLY_OPEN_WS = $10000; 
+MCI_OVLY_OPEN_PARENT = $20000; 
+MCI_OVLY_STATUS_HWND = $4001; 
+MCI_OVLY_STATUS_STRETCH = $4002; 
+MCI_OVLY_INFO_TEXT = $10000; 
+MCI_OVLY_GETDEVCAPS_CAN_STRETCH = $4001; 
+MCI_OVLY_GETDEVCAPS_CAN_FREEZE = $4002; 
+MCI_OVLY_GETDEVCAPS_MAX_WINDOWS = $4003; 
+MCI_OVLY_WINDOW_HWND = $10000; 
+MCI_OVLY_WINDOW_STATE = $40000; 
+MCI_OVLY_WINDOW_TEXT = $80000; 
+MCI_OVLY_WINDOW_ENABLE_STRETCH = $100000; 
+MCI_OVLY_WINDOW_DISABLE_STRETCH = $200000; 
+MCI_OVLY_WINDOW_DEFAULT = 0; 
+MCI_OVLY_RECT = $10000; 
+MCI_OVLY_PUT_SOURCE = $20000; 
+MCI_OVLY_PUT_DESTINATION = $40000; 
+MCI_OVLY_PUT_FRAME = $80000; 
+MCI_OVLY_PUT_VIDEO = $100000; 
+MCI_OVLY_WHERE_SOURCE = $20000; 
+MCI_OVLY_WHERE_DESTINATION = $40000; 
+MCI_OVLY_WHERE_FRAME = $80000; 
+MCI_OVLY_WHERE_VIDEO = $100000; 
+AUX_MAPPER = -1; 
+MIXER_GETLINECONTROLSF_ONEBYID = 1; 
+MIXER_GETLINECONTROLSF_ONEBYTYPE = 2; 
+MIXER_GETLINECONTROLSF_ALL = 0; 
+MIXER_GETLINECONTROLSF_QUERYMASK = $F; 
+NEWTRANSPARENT = 3; 
+QUERYROPSUPPORT = 40; 
+SELECTDIB = 41; 
+
+function DIBINDEX(n: longint): longint;
+
+const
+SC_SCREENSAVE = $F140; 
+AUXCAPS_CDAUDIO = 1; 
+AUXCAPS_AUXIN = 2; 
+AUXCAPS_VOLUME = 1; 
+AUXCAPS_LRVOLUME = 2; 
+
+(*/////////////////////////////////////////////////////////*)
+(* Structures and typedefs*)
+(*/////////////////////////////////////////////////////////*)
+type
+_mmtime = packed record
+ wType: UINT;
+ case integer of
+ 0:(ms: DWORD);
+ 1:(sample: DWORD);
+ 2:(cb: DWORD);
+ 3:(ticks: DWORD);
+ 4:(smpte: packed record
+    hour, min, sec, frame, fps, dummy: byte;
+    pad: array[0..1] of byte
+    end);
+ 5:(songptrpos: DWORD);
+end;
+MMTIME = _mmtime; 
+PMMTIME = ^_mmtime; 
+NPMMTIME = ^_mmtime; 
+LPMMTIME = ^_mmtime; 
+PWAVEHDR = ^_wavehdr;
+_wavehdr = packed record
+lpData: PChar; 
+dwBufferLength: DWORD; 
+dwBytesRecorded: DWORD; 
+dwUser: DWORD; 
+dwFlags: DWORD; 
+dwLoops: DWORD; 
+lpNext: PWAVEHDR; 
+reserved: DWORD; 
+end;
+WAVEHDR = _wavehdr; 
+NPWAVEHDR = ^_wavehdr; 
+LPWAVEHDR = ^_wavehdr; 
+_WAVEOUTCAPSA = packed record
+wMid: WORD; 
+wPid: WORD; 
+vDriverVersion: MMVERSION; 
+szPname: array [0..Pred(MAXPNAMELEN)] of CHAR; 
+dwFormats: DWORD; 
+wChannels: WORD; 
+wReserved1: WORD; 
+dwSupport: DWORD; 
+end;
+WAVEOUTCAPSA = _WAVEOUTCAPSA; 
+PWAVEOUTCAPSA = ^_WAVEOUTCAPSA; 
+NPWAVEOUTCAPSA = ^_WAVEOUTCAPSA; 
+LPWAVEOUTCAPSA = ^_WAVEOUTCAPSA; 
+_WAVEOUTCAPSW = packed record
+wMid: WORD; 
+wPid: WORD; 
+vDriverVersion: MMVERSION; 
+szPname: array [0..Pred(MAXPNAMELEN)] of WCHAR; 
+dwFormats: DWORD; 
+wChannels: WORD; 
+wReserved1: WORD; 
+dwSupport: DWORD; 
+end;
+WAVEOUTCAPSW = _WAVEOUTCAPSW; 
+PWAVEOUTCAPSW = ^_WAVEOUTCAPSW; 
+NPWAVEOUTCAPSW = ^_WAVEOUTCAPSW; 
+LPWAVEOUTCAPSW = ^_WAVEOUTCAPSW; 
+{$ifdef UNICODE}
+WAVEOUTCAPS = WAVEOUTCAPSW; 
+PWAVEOUTCAPS = PWAVEOUTCAPSW; 
+NPWAVEOUTCAPS = NPWAVEOUTCAPSW; 
+LPWAVEOUTCAPS = LPWAVEOUTCAPSW; 
+{$else}
+WAVEOUTCAPS = WAVEOUTCAPSA; 
+PWAVEOUTCAPS = PWAVEOUTCAPSA; 
+NPWAVEOUTCAPS = NPWAVEOUTCAPSA; 
+LPWAVEOUTCAPS = LPWAVEOUTCAPSA; 
+{$endif}
+_WAVEINCAPSA = packed record
+wMid: WORD; 
+wPid: WORD; 
+vDriverVersion: MMVERSION; 
+szPname: array [0..Pred(MAXPNAMELEN)] of CHAR; 
+dwFormats: DWORD; 
+wChannels: WORD; 
+wReserved1: WORD; 
+end;
+WAVEINCAPSA = _WAVEINCAPSA; 
+PWAVEINCAPSA = ^_WAVEINCAPSA; 
+NPWAVEINCAPSA = ^_WAVEINCAPSA; 
+LPWAVEINCAPSA = ^_WAVEINCAPSA; 
+_WAVEINCAPSW = packed record
+wMid: WORD; 
+wPid: WORD; 
+vDriverVersion: MMVERSION; 
+szPname: array [0..Pred(MAXPNAMELEN)] of WCHAR; 
+dwFormats: DWORD; 
+wChannels: WORD; 
+wReserved1: WORD; 
+end;
+WAVEINCAPSW = _WAVEINCAPSW; 
+PWAVEINCAPSW = ^_WAVEINCAPSW; 
+NPWAVEINCAPSW = ^_WAVEINCAPSW; 
+LPWAVEINCAPSW = ^_WAVEINCAPSW; 
+{$ifdef UNICODE}
+WAVEINCAPS = WAVEINCAPSW; 
+PWAVEINCAPS = PWAVEINCAPSW; 
+NPWAVEINCAPS = NPWAVEINCAPSW; 
+LPWAVEINCAPS = LPWAVEINCAPSW; 
+{$else}
+WAVEINCAPS = WAVEINCAPSA; 
+PWAVEINCAPS = PWAVEINCAPSA; 
+NPWAVEINCAPS = NPWAVEINCAPSA; 
+LPWAVEINCAPS = LPWAVEINCAPSA; 
+{$endif}
+_waveformat = packed record
+wFormatTag: WORD; 
+nChannels: WORD; 
+nSamplesPerSec: DWORD; 
+nAvgBytesPerSec: DWORD; 
+nBlockAlign: WORD; 
+end;
+WAVEFORMAT = _waveformat; 
+PWAVEFORMAT = ^_waveformat; 
+NPWAVEFORMAT = ^_waveformat; 
+LPWAVEFORMAT = ^_waveformat; 
+const
+WAVE_FORMAT_PCM = 1; 
+type
+_pcmwaveformat = packed record
+wf: WAVEFORMAT; 
+wBitsPerSample: WORD; 
+end;
+PCMWAVEFORMAT = _pcmwaveformat; 
+PPCMWAVEFORMAT = ^_pcmwaveformat; 
+NPPCMWAVEFORMAT = ^_pcmwaveformat; 
+LPPCMWAVEFORMAT = ^_pcmwaveformat; 
+_WAVEFORMATEX = packed record
+wFormatTag: WORD; 
+nChannels: WORD; 
+nSamplesPerSec: DWORD; 
+nAvgBytesPerSec: DWORD; 
+nBlockAlign: WORD; 
+wBitsPerSample: WORD; 
+cbSize: WORD; 
+end;
+WAVEFORMATEX = _WAVEFORMATEX; 
+PWAVEFORMATEX = ^_WAVEFORMATEX; 
+NPWAVEFORMATEX = ^_WAVEFORMATEX; 
+LPWAVEFORMATEX = ^_WAVEFORMATEX; 
+LPCWAVEFORMATEX = ^WAVEFORMATEX; 
+HMIDI = THandle; 
+HMIDIIN = THandle; 
+HMIDIOUT = THandle; 
+HMIDISTRM = THandle; 
+LPHMIDI = ^HMIDI; 
+LPHMIDIIN = ^HMIDIIN; 
+LPHMIDIOUT = ^HMIDIOUT; 
+LPHMIDISTRM = ^HMIDISTRM; 
+LPMIDICALLBACK = PDRVCALLBACK; 
+const
+MIDIPATCHSIZE = 128; 
+type
+PATCHARRAY = array [0..Pred(MIDIPATCHSIZE)] of WORD; 
+LPPATCHARRAY = ^WORD; 
+KEYARRAY = array [0..Pred(MIDIPATCHSIZE)] of WORD; 
+LPKEYARRAY = ^WORD; 
+_MIDIOUTCAPSA = packed record
+wMid: WORD; 
+wPid: WORD; 
+vDriverVersion: MMVERSION; 
+szPname: array [0..Pred(MAXPNAMELEN)] of CHAR; 
+wTechnology: WORD; 
+wVoices: WORD; 
+wNotes: WORD; 
+wChannelMask: WORD; 
+dwSupport: DWORD; 
+end;
+MIDIOUTCAPSA = _MIDIOUTCAPSA; 
+PMIDIOUTCAPSA = ^_MIDIOUTCAPSA; 
+NPMIDIOUTCAPSA = ^_MIDIOUTCAPSA; 
+LPMIDIOUTCAPSA = ^_MIDIOUTCAPSA; 
+_MIDIOUTCAPSW = packed record
+wMid: WORD; 
+wPid: WORD; 
+vDriverVersion: MMVERSION; 
+szPname: array [0..Pred(MAXPNAMELEN)] of WCHAR; 
+wTechnology: WORD; 
+wVoices: WORD; 
+wNotes: WORD; 
+wChannelMask: WORD; 
+dwSupport: DWORD; 
+end;
+MIDIOUTCAPSW = _MIDIOUTCAPSW; 
+PMIDIOUTCAPSW = ^_MIDIOUTCAPSW; 
+NPMIDIOUTCAPSW = ^_MIDIOUTCAPSW; 
+LPMIDIOUTCAPSW = ^_MIDIOUTCAPSW; 
+_MIDIINCAPSA = packed record
+wMid: WORD; 
+wPid: WORD; 
+vDriverVersion: MMVERSION; 
+szPname: array [0..Pred(MAXPNAMELEN)] of CHAR; 
+dwSupport: DWORD; 
+end;
+MIDIINCAPSA = _MIDIINCAPSA; 
+PMIDIINCAPSA = ^_MIDIINCAPSA; 
+NPMIDIINCAPSA = ^_MIDIINCAPSA; 
+LPMIDIINCAPSA = ^_MIDIINCAPSA; 
+_MIDIINCAPSW = packed record
+wMid: WORD; 
+wPid: WORD; 
+vDriverVersion: MMVERSION; 
+szPname: array [0..Pred(MAXPNAMELEN)] of WCHAR; 
+dwSupport: DWORD; 
+end;
+MIDIINCAPSW = _MIDIINCAPSW; 
+PMIDIINCAPSW = ^_MIDIINCAPSW; 
+NPMIDIINCAPSW = ^_MIDIINCAPSW; 
+LPMIDIINCAPSW = ^_MIDIINCAPSW; 
+{$ifdef UNICODE}
+MIDIINCAPS = MIDIINCAPSW; 
+PMIDIINCAPS = PMIDIINCAPSW; 
+NPMIDIINCAPS = NPMIDIINCAPSW; 
+LPMIDIINCAPS = LPMIDIINCAPSW; 
+MIDIOUTCAPS = MIDIOUTCAPSW; 
+PMIDIOUTCAPS = PMIDIOUTCAPSW; 
+NPMIDIOUTCAPS = NPMIDIOUTCAPSW; 
+LPMIDIOUTCAPS = LPMIDIOUTCAPSW; 
+{$else}
+MIDIOUTCAPS = MIDIOUTCAPSA; 
+PMIDIOUTCAPS = PMIDIOUTCAPSA; 
+NPMIDIOUTCAPS = NPMIDIOUTCAPSA; 
+LPMIDIOUTCAPS = LPMIDIOUTCAPSA; 
+MIDIINCAPS = MIDIINCAPSA; 
+PMIDIINCAPS = PMIDIINCAPSA; 
+NPMIDIINCAPS = NPMIDIINCAPSA; 
+LPMIDIINCAPS = LPMIDIINCAPSA; 
+{$endif}
+PMIDIHDR = ^_midihdr;
+_midihdr = packed record
+lpData: PChar; 
+dwBufferLength: DWORD; 
+dwBytesRecorded: DWORD; 
+dwUser: DWORD; 
+dwFlags: DWORD; 
+lpNext: PMIDIHDR; 
+reserved: DWORD; 
+dwOffset: DWORD; 
+dwReserved: array [0..Pred(8)] of DWORD; 
+end;
+MIDIHDR = _midihdr; 
+NPMIDIHDR = ^_midihdr; 
+LPMIDIHDR = ^_midihdr; 
+_midievent = packed record
+dwDeltaTime: DWORD; 
+dwStreamID: DWORD; 
+dwEvent: DWORD; 
+dwParms: array [0..Pred(1)] of DWORD; 
+end;
+MIDIEVENT = _midievent; 
+
+_midistrmbuffver = packed record
+dwVersion: DWORD; 
+dwMid: DWORD; 
+dwOEMVersion: DWORD; 
+end;
+MIDISTRMBUFFVER = _midistrmbuffver; 
+_midiproptimediv = packed record
+cbStruct: DWORD; 
+dwTimeDiv: DWORD; 
+end;
+MIDIPROPTIMEDIV = _midiproptimediv; 
+LPMIDIPROPTIMEDIV = ^_midiproptimediv; 
+_midiproptempo = packed record
+cbStruct: DWORD; 
+dwTempo: DWORD; 
+end;
+MIDIPROPTEMPO = _midiproptempo; 
+LPMIDIPROPTEMPO = ^_midiproptempo; 
+_AUXCAPSA = packed record
+wMid: WORD; 
+wPid: WORD; 
+vDriverVersion: MMVERSION; 
+szPname: array [0..Pred(MAXPNAMELEN)] of CHAR; 
+wTechnology: WORD; 
+wReserved1: WORD; 
+dwSupport: DWORD; 
+end;
+AUXCAPSA = _AUXCAPSA; 
+PAUXCAPSA = ^_AUXCAPSA; 
+NPAUXCAPSA = ^_AUXCAPSA; 
+LPAUXCAPSA = ^_AUXCAPSA; 
+_AUXCAPSW = packed record
+wMid: WORD; 
+wPid: WORD; 
+vDriverVersion: MMVERSION; 
+szPname: array [0..Pred(MAXPNAMELEN)] of WCHAR; 
+wTechnology: WORD; 
+wReserved1: WORD; 
+dwSupport: DWORD; 
+end;
+AUXCAPSW = _AUXCAPSW; 
+PAUXCAPSW = ^_AUXCAPSW; 
+NPAUXCAPSW = ^_AUXCAPSW; 
+LPAUXCAPSW = ^_AUXCAPSW; 
+{$ifdef UNICODE}
+AUXCAPS = AUXCAPSW; 
+PAUXCAPS = PAUXCAPSW; 
+NPAUXCAPS = NPAUXCAPSW; 
+LPAUXCAPS = LPAUXCAPSW; 
+{$else}
+AUXCAPS = AUXCAPSA; 
+PAUXCAPS = PAUXCAPSA; 
+NPAUXCAPS = NPAUXCAPSA; 
+LPAUXCAPS = LPAUXCAPSA; 
+{$endif}
+HMIXEROBJ = THandle; 
+LPHMIXEROBJ = ^HMIXEROBJ; 
+HMIXER = THandle; 
+LPHMIXER = ^HMIXER; 
+
+function mixerGetNumDevs: UINT; stdcall;
+ external 'winmm.dll' name 'mixerGetNumDevs';
+
+type
+_MIXERCAPSA = packed record
+wMid: WORD; 
+wPid: WORD; 
+vDriverVersion: MMVERSION; 
+szPname: array [0..Pred(MAXPNAMELEN)] of CHAR; 
+fdwSupport: DWORD; 
+cDestinations: DWORD; 
+end;
+MIXERCAPSA = _MIXERCAPSA; 
+PMIXERCAPSA = ^_MIXERCAPSA; 
+LPMIXERCAPSA = ^_MIXERCAPSA; 
+_MIXERCAPSW = packed record
+wMid: WORD; 
+wPid: WORD; 
+vDriverVersion: MMVERSION; 
+szPname: array [0..Pred(MAXPNAMELEN)] of WCHAR; 
+fdwSupport: DWORD; 
+cDestinations: DWORD; 
+end;
+MIXERCAPSW = _MIXERCAPSW; 
+PMIXERCAPSW = ^_MIXERCAPSW; 
+LPMIXERCAPSW = ^_MIXERCAPSW; 
+{$ifdef UNICODE}
+MIXERCAPS = MIXERCAPSW; 
+PMIXERCAPS = PMIXERCAPSW; 
+LPMIXERCAPS = LPMIXERCAPSW; 
+{$else}
+MIXERCAPS = MIXERCAPSA; 
+PMIXERCAPS = PMIXERCAPSA; 
+LPMIXERCAPS = LPMIXERCAPSA; 
+{$endif}
+_MIXERLINEA = packed record
+cbStruct: DWORD; 
+dwDestination: DWORD; 
+dwSource: DWORD; 
+dwLineID: DWORD; 
+fdwLine: DWORD; 
+dwUser: DWORD; 
+dwComponentType: DWORD; 
+cChannels: DWORD; 
+cConnections: DWORD; 
+cControls: DWORD; 
+szShortName: array [0..Pred(MIXER_SHORT_NAME_CHARS)] of CHAR; 
+szName: array [0..Pred(MIXER_LONG_NAME_CHARS)] of CHAR;
+Target: packed record
+ dwType,dwDeviceID: DWORD;
+ wMid,wPid: WORD;
+ vDriverVersion:MMVERSION;
+ szPname: array[0..pred(MAXPNAMELEN)] of Char;
+end;
+end;
+MIXERLINEA = _MIXERLINEA; 
+PMIXERLINEA = ^_MIXERLINEA; 
+LPMIXERLINEA = ^_MIXERLINEA; 
+_MIXERLINEW = packed record
+cbStruct: DWORD; 
+dwDestination: DWORD; 
+dwSource: DWORD; 
+dwLineID: DWORD; 
+fdwLine: DWORD; 
+dwUser: DWORD; 
+dwComponentType: DWORD; 
+cChannels: DWORD; 
+cConnections: DWORD; 
+cControls: DWORD; 
+szShortName: array [0..Pred(MIXER_SHORT_NAME_CHARS)] of WCHAR; 
+szName: array [0..Pred(MIXER_LONG_NAME_CHARS)] of WCHAR;
+Target: packed record
+ dwType,dwDeviceID: DWORD;
+ wMid,wPid: WORD;
+ vDriverVersion:MMVERSION;
+ szPname: array[0..pred(MAXPNAMELEN)] of WChar;
+end;
+end;
+MIXERLINEW = _MIXERLINEW; 
+PMIXERLINEW = ^_MIXERLINEW; 
+LPMIXERLINEW = ^_MIXERLINEW; 
+{$ifdef UNICODE}
+MIXERLINE = MIXERLINEW; 
+PMIXERLINE = PMIXERLINEW; 
+LPMIXERLINE = LPMIXERLINEW; 
+{$else}
+MIXERLINE = MIXERLINEA; 
+PMIXERLINE = PMIXERLINEA; 
+LPMIXERLINE = LPMIXERLINEA; 
+{$endif}
+_MIXERCONTROLA = packed record
+cbStruct: DWORD; 
+dwControlID: DWORD; 
+dwControlType: DWORD; 
+fdwControl: DWORD; 
+cMultipleItems: DWORD; 
+szShortName: array [0..Pred(MIXER_SHORT_NAME_CHARS)] of CHAR; 
+szName: array [0..Pred(MIXER_LONG_NAME_CHARS)] of CHAR;
+Bounds: packed record
+case integer of
+ 0: (lMinimum, lMaximum: longint);
+ 1: (dwMinimum, dwMaximum: DWORD);
+ 2: (dwReserved: array[0..5] of DWORD);
+end;
+Metrics: packed record
+case Integer of
+ 0: (cSteps: DWORD);
+ 1: (cbCustomData: DWORD);
+ 2: (dwReserved: array[0..5] of DWORD);
+end;
+end;
+MIXERCONTROLA = _MIXERCONTROLA; 
+PMIXERCONTROLA = ^_MIXERCONTROLA; 
+LPMIXERCONTROLA = ^_MIXERCONTROLA; 
+_MIXERCONTROLW = packed record
+cbStruct: DWORD; 
+dwControlID: DWORD; 
+dwControlType: DWORD; 
+fdwControl: DWORD; 
+cMultipleItems: DWORD; 
+szShortName: array [0..Pred(MIXER_SHORT_NAME_CHARS)] of WCHAR; 
+szName: array [0..Pred(MIXER_LONG_NAME_CHARS)] of WCHAR;
+Bounds: packed record
+case integer of
+ 0: (lMinimum, lMaximum: longint);
+ 1: (dwMinimum, dwMaximum: DWORD);
+ 2: (dwReserved: array[0..5] of DWORD);
+end;
+Metrics: packed record
+case Integer of
+ 0: (cSteps: DWORD);
+ 1: (cbCustomData: DWORD);
+ 2: (dwReserved: array[0..5] of DWORD);
+end;
+end;
+MIXERCONTROLW = _MIXERCONTROLW; 
+PMIXERCONTROLW = ^_MIXERCONTROLW; 
+LPMIXERCONTROLW = ^_MIXERCONTROLW; 
+{$ifdef UNICODE}
+MIXERCONTROL = MIXERCONTROLW; 
+PMIXERCONTROL = PMIXERCONTROLW; 
+LPMIXERCONTROL = LPMIXERCONTROLW; 
+{$else}
+MIXERCONTROL = MIXERCONTROLA; 
+PMIXERCONTROL = PMIXERCONTROLA; 
+LPMIXERCONTROL = LPMIXERCONTROLA; 
+{$endif}
+_MIXERLINECONTROLSA = packed record
+cbStruct: DWORD; 
+dwLineID: DWORD;
+case Integer of
+ 0: (dwControlID: DWORD);
+ 1: (dwControlType, cControls, cbmxctrl: DWORD; pamxctrl: PMIXERCONTROLA);
+end;
+MIXERLINECONTROLSA = _MIXERLINECONTROLSA; 
+PMIXERLINECONTROLSA = ^_MIXERLINECONTROLSA; 
+LPMIXERLINECONTROLSA = ^_MIXERLINECONTROLSA; 
+_MIXERLINECONTROLSW = packed record
+cbStruct: DWORD; 
+dwLineID: DWORD;
+case Integer of
+ 0: (dwControlID: DWORD);
+ 1: (dwControlType, cControls, cbmxctrl: DWORD; pamxctrl: PMIXERCONTROLW);
+end;
+MIXERLINECONTROLSW = _MIXERLINECONTROLSW; 
+PMIXERLINECONTROLSW = ^_MIXERLINECONTROLSW; 
+LPMIXERLINECONTROLSW = ^_MIXERLINECONTROLSW; 
+{$ifdef UNICODE}
+MIXERLINECONTROLS = MIXERLINECONTROLSW; 
+PMIXERLINECONTROLS = PMIXERLINECONTROLSW; 
+LPMIXERLINECONTROLS = LPMIXERLINECONTROLSW; 
+{$else}
+MIXERLINECONTROLS = MIXERLINECONTROLSA; 
+PMIXERLINECONTROLS = PMIXERLINECONTROLSA; 
+LPMIXERLINECONTROLS = LPMIXERLINECONTROLSA; 
+{$endif}
+tMIXERCONTROLDETAILS = packed record
+cbStruct: DWORD; 
+dwControlID: DWORD; 
+cChannels: DWORD;
+case Integer of
+ 0: (hwndOwner: tHandle);
+ 1: (cMultipleItems, cbDetails: DWORD;
+     paDetails: Pointer);
+end;
+MIXERCONTROLDETAILS = tMIXERCONTROLDETAILS; 
+PMIXERCONTROLDETAILS = ^tMIXERCONTROLDETAILS; 
+LPMIXERCONTROLDETAILS = ^tMIXERCONTROLDETAILS; 
+_MIXERCONTROLDETAILS_LISTTEXTA = packed record
+dwParam1: DWORD; 
+dwParam2: DWORD; 
+szName: array [0..Pred(MIXER_LONG_NAME_CHARS)] of CHAR; 
+end;
+MIXERCONTROLDETAILS_LISTTEXTA = _MIXERCONTROLDETAILS_LISTTEXTA; 
+PMIXERCONTROLDETAILS_LISTTEXTA = ^_MIXERCONTROLDETAILS_LISTTEXTA; 
+LPMIXERCONTROLDETAILS_LISTTEXTA = ^_MIXERCONTROLDETAILS_LISTTEXTA; 
+_MIXERCONTROLDETAILS_LISTTEXTW = packed record
+dwParam1: DWORD; 
+dwParam2: DWORD; 
+szName: array [0..Pred(MIXER_LONG_NAME_CHARS)] of WCHAR; 
+end;
+MIXERCONTROLDETAILS_LISTTEXTW = _MIXERCONTROLDETAILS_LISTTEXTW; 
+PMIXERCONTROLDETAILS_LISTTEXTW = ^_MIXERCONTROLDETAILS_LISTTEXTW; 
+LPMIXERCONTROLDETAILS_LISTTEXTW = ^_MIXERCONTROLDETAILS_LISTTEXTW; 
+{$ifdef UNICODE}
+MIXERCONTROLDETAILS_LISTTEXT = MIXERCONTROLDETAILS_LISTTEXTW; 
+PMIXERCONTROLDETAILS_LISTTEXT = PMIXERCONTROLDETAILS_LISTTEXTW; 
+LPMIXERCONTROLDETAILS_LISTTEXT = LPMIXERCONTROLDETAILS_LISTTEXTW; 
+{$else}
+MIXERCONTROLDETAILS_LISTTEXT = MIXERCONTROLDETAILS_LISTTEXTA; 
+PMIXERCONTROLDETAILS_LISTTEXT = PMIXERCONTROLDETAILS_LISTTEXTA; 
+LPMIXERCONTROLDETAILS_LISTTEXT = LPMIXERCONTROLDETAILS_LISTTEXTA; 
+{$endif}
+_MIXERCONTROLDETAILS_BOOLEAN = packed record
+fValue: longint; 
+end;
+MIXERCONTROLDETAILS_BOOLEAN = _MIXERCONTROLDETAILS_BOOLEAN; 
+PMIXERCONTROLDETAILS_BOOLEAN = ^_MIXERCONTROLDETAILS_BOOLEAN; 
+LPMIXERCONTROLDETAILS_BOOLEAN = ^_MIXERCONTROLDETAILS_BOOLEAN; 
+_MIXERCONTROLDETAILS_SIGNED = packed record
+lValue: longint; 
+end;
+MIXERCONTROLDETAILS_SIGNED = _MIXERCONTROLDETAILS_SIGNED; 
+PMIXERCONTROLDETAILS_SIGNED = ^_MIXERCONTROLDETAILS_SIGNED; 
+LPMIXERCONTROLDETAILS_SIGNED = ^_MIXERCONTROLDETAILS_SIGNED; 
+
+_MIXERCONTROLDETAILS_UNSIGNED = packed record
+dwValue: DWORD; 
+end;
+MIXERCONTROLDETAILS_UNSIGNED = _MIXERCONTROLDETAILS_UNSIGNED; 
+PMIXERCONTROLDETAILS_UNSIGNED = ^_MIXERCONTROLDETAILS_UNSIGNED; 
+LPMIXERCONTROLDETAILS_UNSIGNED = ^_MIXERCONTROLDETAILS_UNSIGNED; 
+LPTIMECALLBACK = procedure(uTimerID, uMsg: UINT; dwUser, dw1, dw2: DWORD); stdcall;
+_timecaps = packed record
+wPeriodMin: UINT; 
+wPeriodMax: UINT; 
+end;
+TIMECAPS = _timecaps; 
+PTIMECAPS = ^_timecaps; 
+NPTIMECAPS = ^_timecaps; 
+LPTIMECAPS = ^_timecaps; 
+_JOYCAPSA = packed record
+wMid: WORD; 
+wPid: WORD; 
+szPname: array [0..Pred(MAXPNAMELEN)] of CHAR; 
+wXmin: UINT; 
+wXmax: UINT; 
+wYmin: UINT; 
+wYmax: UINT; 
+wZmin: UINT; 
+wZmax: UINT; 
+wNumButtons: UINT; 
+wPeriodMin: UINT; 
+wPeriodMax: UINT; 
+wRmin: UINT; 
+wRmax: UINT; 
+wUmin: UINT; 
+wUmax: UINT; 
+wVmin: UINT; 
+wVmax: UINT; 
+wCaps: UINT; 
+wMaxAxes: UINT; 
+wNumAxes: UINT; 
+wMaxButtons: UINT; 
+szRegKey: array [0..Pred(MAXPNAMELEN)] of CHAR; 
+szOEMVxD: array [0..Pred(MAX_JOYSTICKOEMVXDNAME)] of CHAR; 
+end;
+JOYCAPSA = _JOYCAPSA; 
+PJOYCAPSA = ^_JOYCAPSA; 
+NPJOYCAPSA = ^_JOYCAPSA; 
+LPJOYCAPSA = ^_JOYCAPSA; 
+_JOYCAPSW = packed record
+wMid: WORD; 
+wPid: WORD; 
+szPname: array [0..Pred(MAXPNAMELEN)] of WCHAR; 
+wXmin: UINT; 
+wXmax: UINT; 
+wYmin: UINT; 
+wYmax: UINT; 
+wZmin: UINT; 
+wZmax: UINT; 
+wNumButtons: UINT; 
+wPeriodMin: UINT; 
+wPeriodMax: UINT; 
+wRmin: UINT; 
+wRmax: UINT; 
+wUmin: UINT; 
+wUmax: UINT; 
+wVmin: UINT; 
+wVmax: UINT; 
+wCaps: UINT; 
+wMaxAxes: UINT; 
+wNumAxes: UINT; 
+wMaxButtons: UINT; 
+szRegKey: array [0..Pred(MAXPNAMELEN)] of WCHAR; 
+szOEMVxD: array [0..Pred(MAX_JOYSTICKOEMVXDNAME)] of WCHAR; 
+end;
+JOYCAPSW = _JOYCAPSW; 
+PJOYCAPSW = ^_JOYCAPSW; 
+NPJOYCAPSW = ^_JOYCAPSW; 
+LPJOYCAPSW = ^_JOYCAPSW; 
+{$ifdef UNICODE}
+JOYCAPS = JOYCAPSW; 
+PJOYCAPS = PJOYCAPSW; 
+NPJOYCAPS = NPJOYCAPSW; 
+LPJOYCAPS = LPJOYCAPSW; 
+{$else}
+JOYCAPS = JOYCAPSA; 
+PJOYCAPS = PJOYCAPSA; 
+NPJOYCAPS = NPJOYCAPSA; 
+LPJOYCAPS = LPJOYCAPSA; 
+{$endif}
+_joyinfo = packed record
+wXpos: UINT; 
+wYpos: UINT; 
+wZpos: UINT; 
+wButtons: UINT; 
+end;
+JOYINFO = _joyinfo; 
+PJOYINFO = ^_joyinfo; 
+NPJOYINFO = ^_joyinfo; 
+LPJOYINFO = ^_joyinfo; 
+_joyinfoex = packed record
+dwSize: DWORD; 
+dwFlags: DWORD; 
+dwXpos: DWORD; 
+dwYpos: DWORD; 
+dwZpos: DWORD; 
+dwRpos: DWORD; 
+dwUpos: DWORD; 
+dwVpos: DWORD; 
+dwButtons: DWORD; 
+dwButtonNumber: DWORD; 
+dwPOV: DWORD; 
+dwReserved1: DWORD; 
+dwReserved2: DWORD; 
+end;
+JOYINFOEX = _joyinfoex; 
+PJOYINFOEX = ^_joyinfoex; 
+NPJOYINFOEX = ^_joyinfoex; 
+LPJOYINFOEX = ^_joyinfoex; 
+FOURCC = DWORD; 
+HPSTR = ^char; 
+HMMIO = THandle; 
+LPMMIOPROC = function(x1: LPSTR; x2: UINT; x3, x4: LPARAM): LRESULT; stdcall;
+_MMIOINFO = packed record
+dwFlags: DWORD; 
+fccIOProc: FOURCC; 
+pIOProc: LPMMIOPROC; 
+wErrorRet: UINT; 
+htask: HTASK; 
+cchBuffer: longint; 
+pchBuffer: HPSTR; 
+pchNext: HPSTR; 
+pchEndRead: HPSTR; 
+pchEndWrite: HPSTR; 
+lBufOffset: longint; 
+lDiskOffset: longint; 
+adwInfo: array [0..Pred(3)] of DWORD; 
+dwReserved1: DWORD; 
+dwReserved2: DWORD; 
+hmmio: HMMIO; 
+end;
+MMIOINFO = _MMIOINFO; 
+PMMIOINFO = ^_MMIOINFO; 
+NPMMIOINFO = ^_MMIOINFO; 
+LPMMIOINFO = ^_MMIOINFO; 
+LPCMMIOINFO = ^MMIOINFO; 
+_MMCKINFO = packed record
+ckid: FOURCC; 
+cksize: DWORD; 
+fccType: FOURCC; 
+dwDataOffset: DWORD; 
+dwFlags: DWORD; 
+end;
+MMCKINFO = _MMCKINFO; 
+PMMCKINFO = ^_MMCKINFO; 
+NPMMCKINFO = ^_MMCKINFO; 
+LPMMCKINFO = ^_MMCKINFO; 
+LPCMMCKINFO = ^MMCKINFO; 
+MCIERROR = DWORD; 
+MCIDEVICEID = UINT; 
+YIELDPROC = function(mciId: MCIDEVICEID;  dwYieldData: DWORD): UINT; stdcall;
+_MCI_GENERIC_PARMS = packed record
+dwCallback: DWORD; 
+end;
+MCI_GENERIC_PARMS = _MCI_GENERIC_PARMS; 
+PMCI_GENERIC_PARMS = ^_MCI_GENERIC_PARMS; 
+LPMCI_GENERIC_PARMS = ^_MCI_GENERIC_PARMS; 
+_MCI_OPEN_PARMSA = packed record
+dwCallback: DWORD; 
+wDeviceID: MCIDEVICEID; 
+lpstrDeviceType: LPCSTR; 
+lpstrElementName: LPCSTR; 
+lpstrAlias: LPCSTR; 
+end;
+MCI_OPEN_PARMSA = _MCI_OPEN_PARMSA; 
+PMCI_OPEN_PARMSA = ^_MCI_OPEN_PARMSA; 
+LPMCI_OPEN_PARMSA = ^_MCI_OPEN_PARMSA; 
+_MCI_OPEN_PARMSW = packed record
+dwCallback: DWORD; 
+wDeviceID: MCIDEVICEID; 
+lpstrDeviceType: LPCWSTR; 
+lpstrElementName: LPCWSTR; 
+lpstrAlias: LPCWSTR; 
+end;
+MCI_OPEN_PARMSW = _MCI_OPEN_PARMSW; 
+PMCI_OPEN_PARMSW = ^_MCI_OPEN_PARMSW; 
+LPMCI_OPEN_PARMSW = ^_MCI_OPEN_PARMSW; 
+{$ifdef UNICODE}
+MCI_OPEN_PARMS = MCI_OPEN_PARMSW; 
+PMCI_OPEN_PARMS = PMCI_OPEN_PARMSW; 
+LPMCI_OPEN_PARMS = LPMCI_OPEN_PARMSW; 
+{$else}
+MCI_OPEN_PARMS = MCI_OPEN_PARMSA; 
+PMCI_OPEN_PARMS = PMCI_OPEN_PARMSA; 
+LPMCI_OPEN_PARMS = LPMCI_OPEN_PARMSA; 
+{$endif}
+_MCI_PLAY_PARMS = packed record
+dwCallback: DWORD; 
+dwFrom: DWORD; 
+dwTo: DWORD; 
+end;
+MCI_PLAY_PARMS = _MCI_PLAY_PARMS; 
+PMCI_PLAY_PARMS = ^_MCI_PLAY_PARMS; 
+LPMCI_PLAY_PARMS = ^_MCI_PLAY_PARMS; 
+_MCI_SEEK_PARMS = packed record
+dwCallback: DWORD; 
+dwTo: DWORD; 
+end;
+MCI_SEEK_PARMS = _MCI_SEEK_PARMS; 
+PMCI_SEEK_PARMS = ^_MCI_SEEK_PARMS; 
+LPMCI_SEEK_PARMS = ^_MCI_SEEK_PARMS; 
+_MCI_STATUS_PARMS = packed record
+dwCallback: DWORD; 
+dwReturn: DWORD; 
+dwItem: DWORD; 
+dwTrack: DWORD; 
+end;
+MCI_STATUS_PARMS = _MCI_STATUS_PARMS; 
+PMCI_STATUS_PARMS = ^_MCI_STATUS_PARMS; 
+LPMCI_STATUS_PARMS = ^_MCI_STATUS_PARMS; 
+_MCI_INFO_PARMSA = packed record
+dwCallback: DWORD; 
+lpstrReturn: PChar; 
+dwRetSize: DWORD; 
+end;
+MCI_INFO_PARMSA = _MCI_INFO_PARMSA; 
+LPMCI_INFO_PARMSA = ^_MCI_INFO_PARMSA; 
+_MCI_INFO_PARMSW = packed record
+dwCallback: DWORD; 
+lpstrReturn: LPWSTR; 
+dwRetSize: DWORD; 
+end;
+MCI_INFO_PARMSW = _MCI_INFO_PARMSW; 
+LPMCI_INFO_PARMSW = ^_MCI_INFO_PARMSW; 
+{$ifdef UNICODE}
+MCI_INFO_PARMS = MCI_INFO_PARMSW; 
+LPMCI_INFO_PARMS = LPMCI_INFO_PARMSW; 
+{$else}
+MCI_INFO_PARMS = MCI_INFO_PARMSA; 
+LPMCI_INFO_PARMS = LPMCI_INFO_PARMSA; 
+{$endif}
+_MCI_GETDEVCAPS_PARMS = packed record
+dwCallback: DWORD; 
+dwReturn: DWORD; 
+dwItem: DWORD; 
+end;
+MCI_GETDEVCAPS_PARMS = _MCI_GETDEVCAPS_PARMS; 
+PMCI_GETDEVCAPS_PARMS = ^_MCI_GETDEVCAPS_PARMS; 
+LPMCI_GETDEVCAPS_PARMS = ^_MCI_GETDEVCAPS_PARMS; 
+_MCI_SYSINFO_PARMSA = packed record
+dwCallback: DWORD; 
+lpstrReturn: PChar; 
+dwRetSize: DWORD; 
+dwNumber: DWORD; 
+wDeviceType: UINT; 
+end;
+MCI_SYSINFO_PARMSA = _MCI_SYSINFO_PARMSA; 
+PMCI_SYSINFO_PARMSA = ^_MCI_SYSINFO_PARMSA; 
+LPMCI_SYSINFO_PARMSA = ^_MCI_SYSINFO_PARMSA; 
+_MCI_SYSINFO_PARMSW = packed record
+dwCallback: DWORD; 
+lpstrReturn: LPWSTR; 
+dwRetSize: DWORD; 
+dwNumber: DWORD; 
+wDeviceType: UINT; 
+end;
+MCI_SYSINFO_PARMSW = _MCI_SYSINFO_PARMSW; 
+PMCI_SYSINFO_PARMSW = ^_MCI_SYSINFO_PARMSW; 
+LPMCI_SYSINFO_PARMSW = ^_MCI_SYSINFO_PARMSW; 
+{$ifdef UNICODE}
+MCI_SYSINFO_PARMS = MCI_SYSINFO_PARMSW; 
+PMCI_SYSINFO_PARMS = PMCI_SYSINFO_PARMSW; 
+LPMCI_SYSINFO_PARMS = LPMCI_SYSINFO_PARMSW; 
+{$else}
+MCI_SYSINFO_PARMS = MCI_SYSINFO_PARMSA; 
+PMCI_SYSINFO_PARMS = PMCI_SYSINFO_PARMSA; 
+LPMCI_SYSINFO_PARMS = LPMCI_SYSINFO_PARMSA; 
+{$endif}
+_MCI_SET_PARMS = packed record
+dwCallback: DWORD; 
+dwTimeFormat: DWORD; 
+dwAudio: DWORD; 
+end;
+MCI_SET_PARMS = _MCI_SET_PARMS; 
+PMCI_SET_PARMS = ^_MCI_SET_PARMS; 
+LPMCI_SET_PARMS = ^_MCI_SET_PARMS; 
+_MCI_BREAK_PARMS = packed record
+dwCallback: DWORD; 
+nVirtKey: longint; 
+hwndBreak: HWND; 
+end;
+MCI_BREAK_PARMS = _MCI_BREAK_PARMS; 
+PMCI_BREAK_PARMS = ^_MCI_BREAK_PARMS; 
+LPMCI_BREAK_PARMS = ^_MCI_BREAK_PARMS; 
+_MCI_SAVE_PARMSA = packed record
+dwCallback: DWORD; 
+lpfilename: LPCSTR; 
+end;
+MCI_SAVE_PARMSA = _MCI_SAVE_PARMSA; 
+PMCI_SAVE_PARMSA = ^_MCI_SAVE_PARMSA; 
+LPMCI_SAVE_PARMSA = ^_MCI_SAVE_PARMSA; 
+_MCI_SAVE_PARMSW = packed record
+dwCallback: DWORD; 
+lpfilename: LPCWSTR; 
+end;
+MCI_SAVE_PARMSW = _MCI_SAVE_PARMSW; 
+PMCI_SAVE_PARMSW = ^_MCI_SAVE_PARMSW; 
+LPMCI_SAVE_PARMSW = ^_MCI_SAVE_PARMSW; 
+{$ifdef UNICODE}
+MCI_SAVE_PARMS = MCI_SAVE_PARMSW; 
+PMCI_SAVE_PARMS = PMCI_SAVE_PARMSW; 
+LPMCI_SAVE_PARMS = LPMCI_SAVE_PARMSW; 
+{$else}
+MCI_SAVE_PARMS = MCI_SAVE_PARMSA; 
+PMCI_SAVE_PARMS = PMCI_SAVE_PARMSA; 
+LPMCI_SAVE_PARMS = LPMCI_SAVE_PARMSA; 
+{$endif}
+_MCI_LOAD_PARMSA = packed record
+dwCallback: DWORD; 
+lpfilename: LPCSTR; 
+end;
+MCI_LOAD_PARMSA = _MCI_LOAD_PARMSA; 
+PMCI_LOAD_PARMSA = ^_MCI_LOAD_PARMSA; 
+LPMCI_LOAD_PARMSA = ^_MCI_LOAD_PARMSA; 
+_MCI_LOAD_PARMSW = packed record
+dwCallback: DWORD; 
+lpfilename: LPCWSTR; 
+end;
+MCI_LOAD_PARMSW = _MCI_LOAD_PARMSW; 
+PMCI_LOAD_PARMSW = ^_MCI_LOAD_PARMSW; 
+LPMCI_LOAD_PARMSW = ^_MCI_LOAD_PARMSW; 
+{$ifdef UNICODE}
+MCI_LOAD_PARMS = MCI_LOAD_PARMSW; 
+PMCI_LOAD_PARMS = PMCI_LOAD_PARMSW; 
+LPMCI_LOAD_PARMS = LPMCI_LOAD_PARMSW; 
+{$else}
+MCI_LOAD_PARMS = MCI_LOAD_PARMSA; 
+PMCI_LOAD_PARMS = PMCI_LOAD_PARMSA; 
+LPMCI_LOAD_PARMS = LPMCI_LOAD_PARMSA; 
+{$endif}
+_MCI_RECORD_PARMS = packed record
+dwCallback: DWORD; 
+dwFrom: DWORD; 
+dwTo: DWORD; 
+end;
+MCI_RECORD_PARMS = _MCI_RECORD_PARMS; 
+LPMCI_RECORD_PARMS = ^_MCI_RECORD_PARMS; 
+_MCI_VD_PLAY_PARMS = packed record
+dwCallback: DWORD; 
+dwFrom: DWORD; 
+dwTo: DWORD; 
+dwSpeed: DWORD; 
+end;
+MCI_VD_PLAY_PARMS = _MCI_VD_PLAY_PARMS; 
+PMCI_VD_PLAY_PARMS = ^_MCI_VD_PLAY_PARMS; 
+LPMCI_VD_PLAY_PARMS = ^_MCI_VD_PLAY_PARMS; 
+_MCI_VD_STEP_PARMS = packed record
+dwCallback: DWORD; 
+dwFrames: DWORD; 
+end;
+MCI_VD_STEP_PARMS = _MCI_VD_STEP_PARMS; 
+PMCI_VD_STEP_PARMS = ^_MCI_VD_STEP_PARMS; 
+LPMCI_VD_STEP_PARMS = ^_MCI_VD_STEP_PARMS; 
+_MCI_VD_ESCAPE_PARMSA = packed record
+dwCallback: DWORD; 
+lpstrCommand: LPCSTR; 
+end;
+MCI_VD_ESCAPE_PARMSA = _MCI_VD_ESCAPE_PARMSA; 
+PMCI_VD_ESCAPE_PARMSA = ^_MCI_VD_ESCAPE_PARMSA; 
+LPMCI_VD_ESCAPE_PARMSA = ^_MCI_VD_ESCAPE_PARMSA; 
+_MCI_VD_ESCAPE_PARMSW = packed record
+dwCallback: DWORD; 
+lpstrCommand: LPCWSTR; 
+end;
+MCI_VD_ESCAPE_PARMSW = _MCI_VD_ESCAPE_PARMSW; 
+PMCI_VD_ESCAPE_PARMSW = ^_MCI_VD_ESCAPE_PARMSW; 
+LPMCI_VD_ESCAPE_PARMSW = ^_MCI_VD_ESCAPE_PARMSW; 
+{$ifdef UNICODE}
+MCI_VD_ESCAPE_PARMS = MCI_VD_ESCAPE_PARMSW; 
+PMCI_VD_ESCAPE_PARMS = PMCI_VD_ESCAPE_PARMSW; 
+LPMCI_VD_ESCAPE_PARMS = LPMCI_VD_ESCAPE_PARMSW; 
+{$else}
+MCI_VD_ESCAPE_PARMS = MCI_VD_ESCAPE_PARMSA; 
+PMCI_VD_ESCAPE_PARMS = PMCI_VD_ESCAPE_PARMSA; 
+LPMCI_VD_ESCAPE_PARMS = LPMCI_VD_ESCAPE_PARMSA; 
+{$endif}
+_MCI_WAVE_OPEN_PARMSA = packed record
+dwCallback: DWORD; 
+wDeviceID: MCIDEVICEID; 
+lpstrDeviceType: LPCSTR; 
+lpstrElementName: LPCSTR; 
+lpstrAlias: LPCSTR; 
+dwBufferSeconds: DWORD; 
+end;
+MCI_WAVE_OPEN_PARMSA = _MCI_WAVE_OPEN_PARMSA; 
+PMCI_WAVE_OPEN_PARMSA = ^_MCI_WAVE_OPEN_PARMSA; 
+LPMCI_WAVE_OPEN_PARMSA = ^_MCI_WAVE_OPEN_PARMSA; 
+_MCI_WAVE_OPEN_PARMSW = packed record
+dwCallback: DWORD; 
+wDeviceID: MCIDEVICEID; 
+lpstrDeviceType: LPCWSTR; 
+lpstrElementName: LPCWSTR; 
+lpstrAlias: LPCWSTR; 
+dwBufferSeconds: DWORD; 
+end;
+MCI_WAVE_OPEN_PARMSW = _MCI_WAVE_OPEN_PARMSW; 
+PMCI_WAVE_OPEN_PARMSW = ^_MCI_WAVE_OPEN_PARMSW; 
+LPMCI_WAVE_OPEN_PARMSW = ^_MCI_WAVE_OPEN_PARMSW; 
+{$ifdef UNICODE}
+MCI_WAVE_OPEN_PARMS = MCI_WAVE_OPEN_PARMSW; 
+PMCI_WAVE_OPEN_PARMS = PMCI_WAVE_OPEN_PARMSW; 
+LPMCI_WAVE_OPEN_PARMS = LPMCI_WAVE_OPEN_PARMSW; 
+{$else}
+MCI_WAVE_OPEN_PARMS = MCI_WAVE_OPEN_PARMSA; 
+PMCI_WAVE_OPEN_PARMS = PMCI_WAVE_OPEN_PARMSA; 
+LPMCI_WAVE_OPEN_PARMS = LPMCI_WAVE_OPEN_PARMSA; 
+{$endif}
+_MCI_WAVE_DELETE_PARMS = packed record
+dwCallback: DWORD; 
+dwFrom: DWORD; 
+dwTo: DWORD; 
+end;
+MCI_WAVE_DELETE_PARMS = _MCI_WAVE_DELETE_PARMS; 
+PMCI_WAVE_DELETE_PARMS = ^_MCI_WAVE_DELETE_PARMS; 
+LPMCI_WAVE_DELETE_PARMS = ^_MCI_WAVE_DELETE_PARMS; 
+_MCI_WAVE_SET_PARMS = packed record
+dwCallback: DWORD; 
+dwTimeFormat: DWORD; 
+dwAudio: DWORD; 
+wInput: UINT; 
+wOutput: UINT; 
+wFormatTag: WORD; 
+wReserved2: WORD; 
+nChannels: WORD; 
+wReserved3: WORD; 
+nSamplesPerSec: DWORD; 
+nAvgBytesPerSec: DWORD; 
+nBlockAlign: WORD; 
+wReserved4: WORD; 
+wBitsPerSample: WORD; 
+wReserved5: WORD; 
+end;
+MCI_WAVE_SET_PARMS = _MCI_WAVE_SET_PARMS; 
+PMCI_WAVE_SET_PARMS = ^_MCI_WAVE_SET_PARMS; 
+LPMCI_WAVE_SET_PARMS = ^_MCI_WAVE_SET_PARMS; 
+_MCI_SEQ_SET_PARMS = packed record
+dwCallback: DWORD; 
+dwTimeFormat: DWORD; 
+dwAudio: DWORD; 
+dwTempo: DWORD; 
+dwPort: DWORD; 
+dwSlave: DWORD; 
+dwMaster: DWORD; 
+dwOffset: DWORD; 
+end;
+MCI_SEQ_SET_PARMS = _MCI_SEQ_SET_PARMS; 
+PMCI_SEQ_SET_PARMS = ^_MCI_SEQ_SET_PARMS; 
+LPMCI_SEQ_SET_PARMS = ^_MCI_SEQ_SET_PARMS; 
+_MCI_ANIM_OPEN_PARMSA = packed record
+dwCallback: DWORD; 
+wDeviceID: MCIDEVICEID; 
+lpstrDeviceType: LPCSTR; 
+lpstrElementName: LPCSTR; 
+lpstrAlias: LPCSTR; 
+dwStyle: DWORD; 
+hWndParent: HWND; 
+end;
+MCI_ANIM_OPEN_PARMSA = _MCI_ANIM_OPEN_PARMSA; 
+PMCI_ANIM_OPEN_PARMSA = ^_MCI_ANIM_OPEN_PARMSA; 
+LPMCI_ANIM_OPEN_PARMSA = ^_MCI_ANIM_OPEN_PARMSA; 
+_MCI_ANIM_OPEN_PARMSW = packed record
+dwCallback: DWORD; 
+wDeviceID: MCIDEVICEID; 
+lpstrDeviceType: LPCWSTR; 
+lpstrElementName: LPCWSTR; 
+lpstrAlias: LPCWSTR; 
+dwStyle: DWORD; 
+hWndParent: HWND; 
+end;
+MCI_ANIM_OPEN_PARMSW = _MCI_ANIM_OPEN_PARMSW; 
+PMCI_ANIM_OPEN_PARMSW = ^_MCI_ANIM_OPEN_PARMSW; 
+LPMCI_ANIM_OPEN_PARMSW = ^_MCI_ANIM_OPEN_PARMSW; 
+{$ifdef UNICODE}
+MCI_ANIM_OPEN_PARMS = MCI_ANIM_OPEN_PARMSW; 
+PMCI_ANIM_OPEN_PARMS = PMCI_ANIM_OPEN_PARMSW; 
+LPMCI_ANIM_OPEN_PARMS = LPMCI_ANIM_OPEN_PARMSW; 
+{$else}
+MCI_ANIM_OPEN_PARMS = MCI_ANIM_OPEN_PARMSA; 
+PMCI_ANIM_OPEN_PARMS = PMCI_ANIM_OPEN_PARMSA; 
+LPMCI_ANIM_OPEN_PARMS = LPMCI_ANIM_OPEN_PARMSA; 
+{$endif}
+_MCI_ANIM_WINDOW_PARMSW = packed record
+dwCallback: DWORD; 
+hWnd: HWND; 
+nCmdShow: UINT; 
+lpstrText: LPCWSTR; 
+end;
+MCI_ANIM_WINDOW_PARMSW = _MCI_ANIM_WINDOW_PARMSW; 
+PMCI_ANIM_WINDOW_PARMSW = ^_MCI_ANIM_WINDOW_PARMSW; 
+LPMCI_ANIM_WINDOW_PARMSW = ^_MCI_ANIM_WINDOW_PARMSW; 
+_MCI_ANIM_STEP_PARMS = packed record
+dwCallback: DWORD; 
+dwFrames: DWORD; 
+end;
+MCI_ANIM_STEP_PARMS = _MCI_ANIM_STEP_PARMS; 
+PMCI_ANIM_STEP_PARMS = ^_MCI_ANIM_STEP_PARMS; 
+LPMCI_ANIM_STEP_PARMS = ^_MCI_ANIM_STEP_PARMS; 
+_MCI_ANIM_WINDOW_PARMSA = packed record
+dwCallback: DWORD; 
+hWnd: HWND; 
+nCmdShow: UINT; 
+lpstrText: LPCSTR; 
+end;
+MCI_ANIM_WINDOW_PARMSA = _MCI_ANIM_WINDOW_PARMSA; 
+PMCI_ANIM_WINDOW_PARMSA = ^_MCI_ANIM_WINDOW_PARMSA; 
+LPMCI_ANIM_WINDOW_PARMSA = ^_MCI_ANIM_WINDOW_PARMSA; 
+_MCI_ANIM_PLAY_PARMS = packed record
+dwCallback: DWORD; 
+dwFrom: DWORD; 
+dwTo: DWORD; 
+dwSpeed: DWORD; 
+end;
+MCI_ANIM_PLAY_PARMS = _MCI_ANIM_PLAY_PARMS; 
+PMCI_ANIM_PLAY_PARMS = ^_MCI_ANIM_PLAY_PARMS; 
+LPMCI_ANIM_PLAY_PARMS = ^_MCI_ANIM_PLAY_PARMS; 
+{$ifdef UNICODE}
+MCI_ANIM_WINDOW_PARMS = MCI_ANIM_WINDOW_PARMSW; 
+PMCI_ANIM_WINDOW_PARMS = PMCI_ANIM_WINDOW_PARMSW; 
+LPMCI_ANIM_WINDOW_PARMS = LPMCI_ANIM_WINDOW_PARMSW; 
+{$else}
+MCI_ANIM_WINDOW_PARMS = MCI_ANIM_WINDOW_PARMSA; 
+PMCI_ANIM_WINDOW_PARMS = PMCI_ANIM_WINDOW_PARMSA; 
+LPMCI_ANIM_WINDOW_PARMS = LPMCI_ANIM_WINDOW_PARMSA; 
+{$endif}
+_MCI_ANIM_RECT_PARMS = packed record
+dwCallback: DWORD; 
+rc: TRECT; 
+end;
+MCI_ANIM_RECT_PARMS = _MCI_ANIM_RECT_PARMS; 
+PMCI_ANIM_RECT_PARMS = ^MCI_ANIM_RECT_PARMS; 
+LPMCI_ANIM_RECT_PARMS = ^MCI_ANIM_RECT_PARMS; 
+_MCI_ANIM_UPDATE_PARMS = packed record
+dwCallback: DWORD; 
+rc: TRECT; 
+hDC: HDC; 
+end;
+MCI_ANIM_UPDATE_PARMS = _MCI_ANIM_UPDATE_PARMS; 
+PMCI_ANIM_UPDATE_PARMS = ^_MCI_ANIM_UPDATE_PARMS; 
+LPMCI_ANIM_UPDATE_PARMS = ^_MCI_ANIM_UPDATE_PARMS; 
+_MCI_OVLY_OPEN_PARMSA = packed record
+dwCallback: DWORD; 
+wDeviceID: MCIDEVICEID; 
+lpstrDeviceType: LPCSTR; 
+lpstrElementName: LPCSTR; 
+lpstrAlias: LPCSTR; 
+dwStyle: DWORD; 
+hWndParent: HWND; 
+end;
+MCI_OVLY_OPEN_PARMSA = _MCI_OVLY_OPEN_PARMSA; 
+PMCI_OVLY_OPEN_PARMSA = ^_MCI_OVLY_OPEN_PARMSA; 
+LPMCI_OVLY_OPEN_PARMSA = ^_MCI_OVLY_OPEN_PARMSA; 
+_MCI_OVLY_OPEN_PARMSW = packed record
+dwCallback: DWORD; 
+wDeviceID: MCIDEVICEID; 
+lpstrDeviceType: LPCWSTR; 
+lpstrElementName: LPCWSTR; 
+lpstrAlias: LPCWSTR; 
+dwStyle: DWORD; 
+hWndParent: HWND; 
+end;
+MCI_OVLY_OPEN_PARMSW = _MCI_OVLY_OPEN_PARMSW; 
+PMCI_OVLY_OPEN_PARMSW = ^_MCI_OVLY_OPEN_PARMSW; 
+LPMCI_OVLY_OPEN_PARMSW = ^_MCI_OVLY_OPEN_PARMSW; 
+{$ifdef UNICODE}
+MCI_OVLY_OPEN_PARMS = MCI_OVLY_OPEN_PARMSW; 
+PMCI_OVLY_OPEN_PARMS = PMCI_OVLY_OPEN_PARMSW; 
+LPMCI_OVLY_OPEN_PARMS = LPMCI_OVLY_OPEN_PARMSW; 
+{$else}
+MCI_OVLY_OPEN_PARMS = MCI_OVLY_OPEN_PARMSA; 
+PMCI_OVLY_OPEN_PARMS = PMCI_OVLY_OPEN_PARMSA; 
+LPMCI_OVLY_OPEN_PARMS = LPMCI_OVLY_OPEN_PARMSA; 
+{$endif}
+_MCI_OVLY_WINDOW_PARMSA = packed record
+dwCallback: DWORD; 
+hWnd: HWND; 
+nCmdShow: UINT; 
+lpstrText: LPCSTR; 
+end;
+MCI_OVLY_WINDOW_PARMSA = _MCI_OVLY_WINDOW_PARMSA; 
+PMCI_OVLY_WINDOW_PARMSA = ^_MCI_OVLY_WINDOW_PARMSA; 
+LPMCI_OVLY_WINDOW_PARMSA = ^_MCI_OVLY_WINDOW_PARMSA; 
+_MCI_OVLY_WINDOW_PARMSW = packed record
+dwCallback: DWORD; 
+hWnd: HWND; 
+nCmdShow: UINT; 
+lpstrText: LPCWSTR; 
+end;
+MCI_OVLY_WINDOW_PARMSW = _MCI_OVLY_WINDOW_PARMSW; 
+PMCI_OVLY_WINDOW_PARMSW = ^_MCI_OVLY_WINDOW_PARMSW; 
+LPMCI_OVLY_WINDOW_PARMSW = ^_MCI_OVLY_WINDOW_PARMSW; 
+{$ifdef UNICODE}
+MCI_OVLY_WINDOW_PARMS = MCI_OVLY_WINDOW_PARMSW; 
+PMCI_OVLY_WINDOW_PARMS = PMCI_OVLY_WINDOW_PARMSW; 
+LPMCI_OVLY_WINDOW_PARMS = LPMCI_OVLY_WINDOW_PARMSW; 
+{$else}
+MCI_OVLY_WINDOW_PARMS = MCI_OVLY_WINDOW_PARMSA; 
+PMCI_OVLY_WINDOW_PARMS = PMCI_OVLY_WINDOW_PARMSA; 
+LPMCI_OVLY_WINDOW_PARMS = LPMCI_OVLY_WINDOW_PARMSA; 
+{$endif}
+_MCI_OVLY_RECT_PARMS = packed record
+dwCallback: DWORD; 
+rc: TRECT; 
+end;
+MCI_OVLY_RECT_PARMS = _MCI_OVLY_RECT_PARMS; 
+PMCI_OVLY_RECT_PARMS = ^_MCI_OVLY_RECT_PARMS; 
+LPMCI_OVLY_RECT_PARMS = ^_MCI_OVLY_RECT_PARMS; 
+_MCI_OVLY_SAVE_PARMSA = packed record
+dwCallback: DWORD; 
+lpfilename: LPCSTR; 
+rc: TRECT; 
+end;
+MCI_OVLY_SAVE_PARMSA = _MCI_OVLY_SAVE_PARMSA; 
+PMCI_OVLY_SAVE_PARMSA = ^_MCI_OVLY_SAVE_PARMSA; 
+LPMCI_OVLY_SAVE_PARMSA = ^_MCI_OVLY_SAVE_PARMSA; 
+_MCI_OVLY_SAVE_PARMSW = packed record
+dwCallback: DWORD; 
+lpfilename: LPCWSTR; 
+rc: TRECT; 
+end;
+MCI_OVLY_SAVE_PARMSW = _MCI_OVLY_SAVE_PARMSW; 
+PMCI_OVLY_SAVE_PARMSW = ^_MCI_OVLY_SAVE_PARMSW; 
+LPMCI_OVLY_SAVE_PARMSW = ^_MCI_OVLY_SAVE_PARMSW; 
+{$ifdef UNICODE}
+MCI_OVLY_SAVE_PARMS = MCI_OVLY_SAVE_PARMSW; 
+PMCI_OVLY_SAVE_PARMS = PMCI_OVLY_SAVE_PARMSW; 
+LPMCI_OVLY_SAVE_PARMS = LPMCI_OVLY_SAVE_PARMSW; 
+{$else}
+MCI_OVLY_SAVE_PARMS = MCI_OVLY_SAVE_PARMSA; 
+PMCI_OVLY_SAVE_PARMS = PMCI_OVLY_SAVE_PARMSA; 
+LPMCI_OVLY_SAVE_PARMS = LPMCI_OVLY_SAVE_PARMSA; 
+{$endif}
+_MCI_OVLY_LOAD_PARMSA = packed record
+dwCallback: DWORD; 
+lpfilename: LPCSTR; 
+rc: TRECT; 
+end;
+MCI_OVLY_LOAD_PARMSA = _MCI_OVLY_LOAD_PARMSA; 
+PMCI_OVLY_LOAD_PARMSA = ^_MCI_OVLY_LOAD_PARMSA; 
+LPMCI_OVLY_LOAD_PARMSA = ^_MCI_OVLY_LOAD_PARMSA; 
+_MCI_OVLY_LOAD_PARMSW = packed record
+dwCallback: DWORD; 
+lpfilename: LPCWSTR; 
+rc: TRECT; 
+end;
+MCI_OVLY_LOAD_PARMSW = _MCI_OVLY_LOAD_PARMSW; 
+PMCI_OVLY_LOAD_PARMSW = ^_MCI_OVLY_LOAD_PARMSW; 
+LPMCI_OVLY_LOAD_PARMSW = ^_MCI_OVLY_LOAD_PARMSW; 
+{$ifdef UNICODE}
+MCI_OVLY_LOAD_PARMS = MCI_OVLY_LOAD_PARMSW; 
+PMCI_OVLY_LOAD_PARMS = PMCI_OVLY_LOAD_PARMSW; 
+LPMCI_OVLY_LOAD_PARMS = LPMCI_OVLY_LOAD_PARMSW; 
+{$else}
+MCI_OVLY_LOAD_PARMS = MCI_OVLY_LOAD_PARMSA; 
+PMCI_OVLY_LOAD_PARMS = PMCI_OVLY_LOAD_PARMSA; 
+LPMCI_OVLY_LOAD_PARMS = LPMCI_OVLY_LOAD_PARMSA; 
+{$endif}
+(*////////////////////////////////////////////////////////*)
+(* Function prototypes*)
+(*////////////////////////////////////////////////////////*)
+
+function mmioStringToFOURCCA(x1: LPCSTR; x2: UINT): FOURCC; stdcall;
+ external 'winmm.dll' name 'mmioStringToFOURCCA';
+
+function mmioStringToFOURCCW(x1: LPCWSTR; x2: UINT): FOURCC; stdcall;
+ external 'winmm.dll' name 'mmioStringToFOURCCW';
+
+function mmioStringToFOURCC(x1: PChar; x2: UINT): FOURCC; stdcall;
+ external 'winmm.dll' name
+ {$ifdef UNICODE}'mmioStringToFOURCCW'
+ {$else}'mmioStringToFOURCCA'
+ {$endif};
+
+function mmioInstallIOProcA(x1: FOURCC; x2: LPMMIOPROC; x3: DWORD): LPMMIOPROC; stdcall;
+ external 'winmm.dll' name 'mmioInstallIOProcA';
+
+function mmioInstallIOProcW(x1: FOURCC; x2: LPMMIOPROC; x3: DWORD): LPMMIOPROC; stdcall;
+ external 'winmm.dll' name 'mmioInstallIOProcW';
+
+function mmioInstallIOProc(x1: FOURCC; x2: LPMMIOPROC; x3: DWORD): LPMMIOPROC; stdcall;
+ external 'winmm.dll' name
+ {$ifdef UNICODE}'mmioInstallIOProcW'
+ {$else}'mmioInstallIOProcA'
+ {$endif};
+
+function mmioOpenA(x1: LPSTR; x2: LPMMIOINFO; x3: DWORD): HMMIO; stdcall;
+ external 'winmm.dll' name 'mmioOpenA';
+
+function mmioOpenW(x1: LPWSTR; x2: LPMMIOINFO; x3: DWORD): HMMIO; stdcall;
+ external 'winmm.dll' name 'mmioOpenW';
+
+function mmioOpen(x1: PChar; x2: LPMMIOINFO; x3: DWORD): HMMIO; stdcall;
+ external 'winmm.dll' name 
+ {$ifdef UNICODE}'mmioOpenW'
+ {$else}'mmioOpenA'
+ {$endif};
+
+function mmioRenameA(x1: LPCSTR; x2: LPCSTR; x3: LPCMMIOINFO; x4: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'mmioRenameA';
+
+function mmioRenameW(x1: LPCWSTR; x2: LPCWSTR; x3: LPCMMIOINFO; x4: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'mmioRenameW';
+
+function mmioRename(x1: PChar; x2: PChar; x3: LPCMMIOINFO; x4: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 
+ {$ifdef UNICODE}'mmioRenameW'
+ {$else}'mmioRenameA'
+ {$endif};
+
+function mmioClose(x1: HMMIO; x2: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'mmioClose';
+
+function mmioRead(x1: HMMIO; x2: HPSTR; x3: LONG): LONG; stdcall;
+ external 'winmm.dll' name 'mmioRead';
+
+function mmioWrite(x1: HMMIO; x2: pchar; x3: LONG): LONG; stdcall;
+ external 'winmm.dll' name 'mmioWrite';
+
+function mmioSeek(x1: HMMIO; x2: LONG; x3: int): LONG; stdcall;
+ external 'winmm.dll' name 'mmioSeek';
+
+function mmioGetInfo(x1: HMMIO; x2: LPMMIOINFO; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'mmioGetInfo';
+
+function mmioSetInfo(x1: HMMIO; x2: LPCMMIOINFO; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'mmioSetInfo';
+
+function mmioSetBuffer(x1: HMMIO; x2: LPSTR; x3: LONG; x4: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'mmioSetBuffer';
+
+function mmioFlush(x1: HMMIO; x2: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'mmioFlush';
+
+function mmioAdvance(x1: HMMIO; x2: LPMMIOINFO; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'mmioAdvance';
+
+function mmioSendMessage(x1: HMMIO; x2: UINT; x3: LPARAM; x4: LPARAM): LRESULT; stdcall;
+ external 'winmm.dll' name 'mmioSendMessage';
+
+function mmioDescend(x1: HMMIO; x2: LPMMCKINFO; x3: PMMCKINFO; x4: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'mmioDescend';
+
+function mmioAscend(x1: HMMIO; x2: LPMMCKINFO; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'mmioAscend';
+
+function mmioCreateChunk(x1: HMMIO; x2: LPMMCKINFO; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'mmioCreateChunk';
+
+function mciSendCommandA(x1: MCIDEVICEID; x2: UINT; x3: DWORD; x4: DWORD): MCIERROR; stdcall;
+ external 'winmm.dll' name 'mciSendCommandA';
+
+function mciSendCommandW(x1: MCIDEVICEID; x2: UINT; x3: DWORD; x4: DWORD): MCIERROR; stdcall;
+ external 'winmm.dll' name 'mciSendCommandW';
+
+function mciSendCommand(x1: MCIDEVICEID; x2: UINT; x3: DWORD; x4: DWORD): MCIERROR; stdcall;
+ external 'winmm.dll' name 
+ {$ifdef UNICODE}'mciSendCommandW'
+ {$else}'mciSendCommandA'
+ {$endif};
+
+function mciSendStringA(x1: LPCSTR; x2: LPSTR; x3: UINT; x4: HWND): MCIERROR; stdcall;
+ external 'winmm.dll' name 'mciSendStringA';
+
+function mciSendStringW(x1: LPCWSTR; x2: LPWSTR; x3: UINT; x4: HWND): MCIERROR; stdcall;
+ external 'winmm.dll' name 'mciSendStringW';
+
+function mciSendString(x1: PChar; x2: PChar; x3: UINT; x4: HWND): MCIERROR; stdcall;
+ external 'winmm.dll' name
+ {$ifdef UNICODE}'mciSendStringW'
+ {$else}'mciSendStringA'
+ {$endif};
+
+function mciGetDeviceIDA(x1: LPCSTR): MCIDEVICEID; stdcall;
+ external 'winmm.dll' name 'mciGetDeviceIDA';
+
+function mciGetDeviceIDW(x1: LPCWSTR): MCIDEVICEID; stdcall;
+ external 'winmm.dll' name 'mciGetDeviceIDW';
+
+function mciGetDeviceID(x1: PChar): MCIDEVICEID; stdcall;
+ external 'winmm.dll' name
+ {$ifdef UNICODE}'mciGetDeviceIDW'
+ {$else}'mciGetDeviceIDA'
+ {$endif};
+
+function mciGetDeviceIDFromElementIDA(x1: DWORD; x2: LPCSTR): MCIDEVICEID; stdcall;
+ external 'winmm.dll' name 'mciGetDeviceIDFromElementIDA';
+
+function mciGetDeviceIDFromElementIDW(x1: DWORD; x2: LPCWSTR): MCIDEVICEID; stdcall;
+ external 'winmm.dll' name 'mciGetDeviceIDFromElementIDW';
+
+function mciGetDeviceIDFromElementID(x1: DWORD; x2: PChar): MCIDEVICEID; stdcall;
+ external 'winmm.dll' name
+ {$ifdef UNICODE}'mciGetDeviceIDFromElementIDW'
+ {$else}'mciGetDeviceIDFromElementIDA'
+ {$endif};
+
+function mciGetErrorStringA(x1: MCIERROR; x2: LPSTR; x3: UINT): BOOL; stdcall;
+ external 'winmm.dll' name 'mciGetErrorStringA';
+
+function mciGetErrorStringW(x1: MCIERROR; x2: LPWSTR; x3: UINT): BOOL; stdcall;
+ external 'winmm.dll' name 'mciGetErrorStringW';
+
+function mciGetErrorString(x1: MCIERROR; x2: PChar; x3: UINT): BOOL; stdcall;
+ external 'winmm.dll' name
+ {$ifdef UNICODE}'mciGetErrorStringW'
+ {$else}'mciGetErrorStringA'
+ {$endif};
+
+function mciSetYieldProc(x1: MCIDEVICEID; x2: YIELDPROC; x3: DWORD): BOOL; stdcall;
+ external 'winmm.dll' name 'mciSetYieldProc';
+
+function mciGetCreatorTask(x1: MCIDEVICEID): HTASK; stdcall;
+ external 'winmm.dll' name 'mciGetCreatorTask';
+
+function mciGetYieldProc(x1: MCIDEVICEID; x2: LPDWORD): YIELDPROC; stdcall;
+ external 'winmm.dll' name 'mciGetYieldProc';
+
+function mciExecute(x1: LPCSTR): BOOL; stdcall;
+ external 'winmm.dll' name 'mciExecute';
+
+function joyGetPos(x1: UINT; x2: LPJOYINFO): MMRESULT; stdcall;
+ external 'winmm.dll' name 'joyGetPos';
+
+function joyGetPosEx(x1: UINT; x2: LPJOYINFOEX): MMRESULT; stdcall;
+ external 'winmm.dll' name 'joyGetPosEx';
+
+function joyGetThreshold(x1: UINT; x2: LPUINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'joyGetThreshold';
+
+function joyReleaseCapture(x1: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'joyReleaseCapture';
+
+function joySetCapture(x1: HWND; x2: UINT; x3: UINT; x4: BOOL): MMRESULT; stdcall;
+ external 'winmm.dll' name 'joySetCapture';
+
+function joySetThreshold(x1: UINT; x2: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'joySetThreshold';
+
+function waveOutGetNumDevs: UINT; stdcall;
+ external 'winmm.dll' name 'waveOutGetNumDevs';
+
+function waveOutGetDevCapsA(x1: UINT; x2: LPWAVEOUTCAPSA; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveOutGetDevCapsA';
+
+function waveOutGetDevCapsW(x1: UINT; x2: LPWAVEOUTCAPSW; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveOutGetDevCapsW';
+
+function waveOutGetDevCaps(x1: UINT; x2: LPWAVEOUTCAPS; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name
+ {$ifdef UNICODE}'waveOutGetDevCapsW'
+ {$else}'waveOutGetDevCapsA'
+ {$endif};
+
+function waveOutGetVolume(x1: HWAVEOUT; x2: LPDWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveOutGetVolume';
+
+function waveOutSetVolume(x1: HWAVEOUT; x2: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveOutSetVolume';
+
+function waveOutGetErrorTextA(x1: MMRESULT; x2: LPSTR; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveOutGetErrorTextA';
+
+function waveOutGetErrorTextW(x1: MMRESULT; x2: LPWSTR; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveOutGetErrorTextW';
+
+function waveOutGetErrorText(x1: MMRESULT; x2: PChar; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name
+ {$ifdef UNICODE}'waveOutGetErrorTextW'
+ {$else}'waveOutGetErrorTextA'
+ {$endif};
+
+function waveOutOpen(x1: LPHWAVEOUT; x2: UINT; x3: LPCWAVEFORMATEX; x4: DWORD; x5: DWORD; x6: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveOutOpen';
+
+function waveOutClose(x1: HWAVEOUT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveOutClose';
+
+function waveOutPrepareHeader(x1: HWAVEOUT; x2: LPWAVEHDR; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveOutPrepareHeader';
+
+function waveOutUnprepareHeader(x1: HWAVEOUT; x2: LPWAVEHDR; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveOutUnprepareHeader';
+
+function waveOutWrite(x1: HWAVEOUT; x2: LPWAVEHDR; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveOutWrite';
+
+function waveOutPause(x1: HWAVEOUT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveOutPause';
+
+function waveOutRestart(x1: HWAVEOUT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveOutRestart';
+
+function waveOutReset(x1: HWAVEOUT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveOutReset';
+
+function waveOutBreakLoop(x1: HWAVEOUT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveOutBreakLoop';
+
+function waveOutGetPosition(x1: HWAVEOUT; x2: LPMMTIME; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveOutGetPosition';
+
+function waveOutGetPitch(x1: HWAVEOUT; x2: LPDWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveOutGetPitch';
+
+function waveOutSetPitch(x1: HWAVEOUT; x2: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveOutSetPitch';
+
+function waveOutGetPlaybackRate(x1: HWAVEOUT; x2: LPDWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveOutGetPlaybackRate';
+
+function waveOutSetPlaybackRate(x1: HWAVEOUT; x2: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveOutSetPlaybackRate';
+
+function waveOutGetID(x1: HWAVEOUT; x2: LPUINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveOutGetID';
+
+function waveOutMessage(x1: HWAVEOUT; x2: UINT; x3: DWORD; x4: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveOutMessage';
+
+function waveInGetNumDevs: UINT; stdcall;
+ external 'winmm.dll' name 'waveInGetNumDevs';
+
+function waveInGetDevCapsA(x1: UINT; x2: LPWAVEINCAPSA; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveInGetDevCapsA';
+
+function waveInGetDevCapsW(x1: UINT; x2: LPWAVEINCAPSW; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveInGetDevCapsW';
+
+function waveInGetDevCaps(x1: UINT; x2: LPWAVEINCAPS; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name
+ {$ifdef UNICODE}'waveInGetDevCapsW'
+ {$else}'waveInGetDevCapsA'
+ {$endif};
+
+function waveInGetErrorTextA(x1: MMRESULT; x2: LPSTR; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveInGetErrorTextA';
+
+function waveInGetErrorTextW(x1: MMRESULT; x2: LPWSTR; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveInGetErrorTextW';
+
+function waveInGetErrorText(x1: MMRESULT; x2: PChar; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name
+ {$ifdef UNICODE}'waveInGetErrorTextW'
+ {$else}'waveInGetErrorTextA'
+ {$endif};
+
+function waveInOpen(x1: LPHWAVEIN; x2: UINT; x3: LPCWAVEFORMATEX; x4: DWORD; x5: DWORD; x6: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveInOpen';
+
+function waveInClose(x1: HWAVEIN): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveInClose';
+
+function waveInPrepareHeader(x1: HWAVEIN; x2: LPWAVEHDR; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveInPrepareHeader';
+
+function waveInUnprepareHeader(x1: HWAVEIN; x2: LPWAVEHDR; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveInUnprepareHeader';
+
+function waveInAddBuffer(x1: HWAVEIN; x2: LPWAVEHDR; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveInAddBuffer';
+
+function waveInStart(x1: HWAVEIN): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveInStart';
+
+function waveInStop(x1: HWAVEIN): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveInStop';
+
+function waveInReset(x1: HWAVEIN): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveInReset';
+
+function waveInGetPosition(x1: HWAVEIN; x2: LPMMTIME; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveInGetPosition';
+
+function waveInGetID(x1: HWAVEIN; x2: LPUINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveInGetID';
+
+function waveInMessage(x1: HWAVEIN; x2: UINT; x3: DWORD; x4: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'waveInMessage';
+
+function mixerGetLineControlsA(x1: HMIXEROBJ; x2: LPMIXERLINECONTROLSA; x3: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'mixerGetLineControlsA';
+
+function mixerGetLineControlsW(x1: HMIXEROBJ; x2: LPMIXERLINECONTROLSW; x3: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'mixerGetLineControlsW';
+
+function mixerGetLineControls(x1: HMIXEROBJ; x2: LPMIXERLINECONTROLS; x3: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name
+ {$ifdef UNICODE}'mixerGetLineControlsW'
+ {$else}'mixerGetLineControlsA'
+ {$endif};
+
+function joyGetNumDevs: UINT; stdcall;
+ external 'winmm.dll' name 'joyGetNumDevs';
+
+function joyGetDevCapsA(x1: UINT; x2: LPJOYCAPSA; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'joyGetDevCapsA';
+
+function joyGetDevCapsW(x1: UINT; x2: LPJOYCAPSW; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'joyGetDevCapsW';
+
+function joyGetDevCaps(x1: UINT; x2: LPJOYCAPS; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name
+ {$ifdef UNICODE}'joyGetDevCapsW'
+ {$else}'joyGetDevCapsA'
+ {$endif};
+
+function mixerGetControlDetailsA(x1: HMIXEROBJ; x2: LPMIXERCONTROLDETAILS; x3: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'mixerGetControlDetailsA';
+
+function mixerGetControlDetailsW(x1: HMIXEROBJ; x2: LPMIXERCONTROLDETAILS; x3: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'mixerGetControlDetailsW';
+
+function mixerGetControlDetails(x1: HMIXEROBJ; x2: LPMIXERCONTROLDETAILS; x3: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name
+ {$ifdef UNICODE}'mixerGetControlDetailsW'
+ {$else}'mixerGetControlDetailsA'
+ {$endif};
+
+function timeGetSystemTime(x1: LPMMTIME; x2: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'timeGetSystemTime';
+
+function timeGetTime: DWORD; stdcall;
+ external 'winmm.dll' name 'timeGetTime';
+
+function timeSetEvent(x1: UINT; x2: UINT; x3: LPTIMECALLBACK; x4: DWORD; x5: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'timeSetEvent';
+
+function timeKillEvent(x1: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'timeKillEvent';
+
+function timeGetDevCaps(x1: LPTIMECAPS; x2: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'timeGetDevCaps';
+
+function timeBeginPeriod(x1: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'timeBeginPeriod';
+
+function timeEndPeriod(x1: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'timeEndPeriod';
+
+function mixerGetDevCapsA(x1: UINT; x2: LPMIXERCAPSA; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'mixerGetDevCapsA';
+
+function mixerGetDevCapsW(x1: UINT; x2: LPMIXERCAPSW; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'mixerGetDevCapsW';
+
+function mixerGetDevCaps(x1: UINT; x2: LPMIXERCAPS; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name
+ {$ifdef UNICODE}'mixerGetDevCapsW'
+ {$else}'mixerGetDevCapsA'
+ {$endif};
+
+function mixerOpen(x1: LPHMIXER; x2: UINT; x3: DWORD; x4: DWORD; x5: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'mixerOpen';
+
+function mixerClose(x1: HMIXER): MMRESULT; stdcall;
+ external 'winmm.dll' name 'mixerClose';
+
+function mixerMessage(x1: HMIXER; x2: UINT; x3: DWORD; x4: DWORD): DWORD; stdcall;
+ external 'winmm.dll' name 'mixerMessage';
+
+function auxGetNumDevs: UINT; stdcall;
+ external 'winmm.dll' name 'auxGetNumDevs';
+
+function auxGetDevCapsA(x1: UINT; x2: LPAUXCAPSA ; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'auxGetDevCapsA';
+
+function auxGetDevCapsW(x1: UINT; x2: LPAUXCAPSW ; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'auxGetDevCapsW';
+
+function auxGetDevCaps(x1: UINT; x2: LPAUXCAPS ; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name
+ {$ifdef UNICODE}'auxGetDevCapsW'
+ {$else}'auxGetDevCapsA'
+ {$endif};
+
+function auxSetVolume(x1: UINT; x2: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'auxSetVolume';
+
+function auxGetVolume(x1: UINT; x2: LPDWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'auxGetVolume';
+
+function auxOutMessage(x1: UINT; x2: UINT; x3: DWORD; x4: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'auxOutMessage';
+
+function midiOutGetNumDevs: UINT; stdcall;
+ external 'winmm.dll' name 'midiOutGetNumDevs';
+
+function midiStreamOpen(x1: LPHMIDISTRM; x2: LPUINT; x3: DWORD; x4: DWORD; x5: DWORD; x6: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiStreamOpen';
+
+function midiStreamClose(x1: HMIDISTRM): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiStreamClose';
+
+function midiStreamProperty(x1: HMIDISTRM; x2: LPBYTE; x3: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiStreamProperty';
+
+function midiStreamPosition(x1: HMIDISTRM; x2: LPMMTIME; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiStreamPosition';
+
+function midiStreamOut(x1: HMIDISTRM; x2: LPMIDIHDR; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiStreamOut';
+
+function midiStreamPause(x1: HMIDISTRM): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiStreamPause';
+
+function midiStreamRestart(x1: HMIDISTRM): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiStreamRestart';
+
+function midiStreamStop(x1: HMIDISTRM): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiStreamStop';
+
+function midiConnect(x1: HMIDI; x2: HMIDIOUT; x3: pointer): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiConnect';
+
+function midiDisconnect(x1: HMIDI; x2: HMIDIOUT; x3: pointer): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiDisconnect';
+
+function midiOutGetDevCapsA(x1: UINT; x2: LPMIDIOUTCAPSA; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiOutGetDevCapsA';
+
+function midiOutGetDevCapsW(x1: UINT; x2: LPMIDIOUTCAPSW; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiOutGetDevCapsW';
+
+function midiOutGetDevCaps(x1: UINT; x2: LPMIDIOUTCAPS; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name
+ {$ifdef UNICODE}'midiOutGetDevCapsW'
+ {$else}'midiOutGetDevCapsA'
+ {$endif};
+
+function midiOutGetVolume(x1: HMIDIOUT; x2: LPDWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiOutGetVolume';
+
+function midiOutSetVolume(x1: HMIDIOUT; x2: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiOutSetVolume';
+
+function midiOutGetErrorTextA(x1: MMRESULT; x2: LPSTR; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiOutGetErrorTextA';
+
+function midiOutGetErrorTextW(x1: MMRESULT; x2: LPWSTR; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiOutGetErrorTextW';
+
+function midiOutGetErrorText(x1: MMRESULT; x2: PChar; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name
+ {$ifdef UNICODE}'midiOutGetErrorTextW'
+ {$else}'midiOutGetErrorTextA'
+ {$endif};
+
+function midiOutOpen(x1: LPHMIDIOUT; x2: UINT; x3: DWORD; x4: DWORD; x5: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiOutOpen';
+
+function midiOutClose(x1: HMIDIOUT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiOutClose';
+
+function midiOutPrepareHeader(x1: HMIDIOUT; x2: LPMIDIHDR; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiOutPrepareHeader';
+
+function midiOutUnprepareHeader(x1: HMIDIOUT; x2: LPMIDIHDR; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiOutUnprepareHeader';
+
+function midiOutShortMsg(x1: HMIDIOUT; x2: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiOutShortMsg';
+
+function midiOutLongMsg(x1: HMIDIOUT; x2: LPMIDIHDR; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiOutLongMsg';
+
+function midiOutReset(x1: HMIDIOUT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiOutReset';
+
+function midiOutCachePatches(x1: HMIDIOUT; x2: UINT; x3: LPWORD; x4: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiOutCachePatches';
+
+function midiOutCacheDrumPatches(x1: HMIDIOUT; x2: UINT; x3: LPWORD; x4: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiOutCacheDrumPatches';
+
+function midiOutGetID(x1: HMIDIOUT; x2: LPUINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiOutGetID';
+
+function midiOutMessage(x1: HMIDIOUT; x2: UINT; x3: DWORD; x4: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiOutMessage';
+
+function midiInGetNumDevs: UINT; stdcall;
+ external 'winmm.dll' name 'midiInGetNumDevs';
+
+function midiInGetDevCapsA(x1: UINT; x2: LPMIDIINCAPSA; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiInGetDevCapsA';
+
+function midiInGetDevCapsW(x1: UINT; x2: LPMIDIINCAPSW; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiInGetDevCapsW';
+
+function midiInGetDevCaps(x1: UINT; x2: LPMIDIINCAPS; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name
+ {$ifdef UNICODE}'midiInGetDevCapsW'
+ {$else}'midiInGetDevCapsA'
+ {$endif};
+
+function midiInGetErrorTextA(x1: MMRESULT; x2: LPSTR; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiInGetErrorTextA';
+
+function midiInGetErrorTextW(x1: MMRESULT; x2: LPWSTR; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiInGetErrorTextW';
+
+function midiInGetErrorText(x1: MMRESULT; x2: PChar; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name
+ {$ifdef UNICODE}'midiInGetErrorTextW'
+ {$else}'midiInGetErrorTextA'
+ {$endif};
+
+function midiInOpen(x1: LPHMIDIIN; x2: UINT; x3: DWORD; x4: DWORD; x5: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiInOpen';
+
+function midiInClose(x1: HMIDIIN): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiInClose';
+
+function midiInPrepareHeader(x1: HMIDIIN; x2: LPMIDIHDR; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiInPrepareHeader';
+
+function midiInUnprepareHeader(x1: HMIDIIN; x2: LPMIDIHDR; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiInUnprepareHeader';
+
+function midiInAddBuffer(x1: HMIDIIN; x2: LPMIDIHDR; x3: UINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiInAddBuffer';
+
+function midiInStart(x1: HMIDIIN): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiInStart';
+
+function midiInStop(x1: HMIDIIN): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiInStop';
+
+function midiInReset(x1: HMIDIIN): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiInReset';
+
+function midiInGetID(x1: HMIDIIN; x2: LPUINT): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiInGetID';
+
+function midiInMessage(x1: HMIDIIN; x2: UINT; x3: DWORD; x4: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'midiInMessage';
+
+function mixerGetLineInfoA(x1: HMIXEROBJ; x2: LPMIXERLINEA; x3: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'mixerGetLineInfoA';
+
+function mixerGetLineInfoW(x1: HMIXEROBJ; x2: LPMIXERLINEW; x3: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'mixerGetLineInfoW';
+
+function mixerGetLineInfo(x1: HMIXEROBJ; x2: LPMIXERLINE; x3: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name
+ {$ifdef UNICODE}'mixerGetLineInfoW'
+ {$else}'mixerGetLineInfoA'
+ {$endif};
+
+function mixerGetID(x1: HMIXEROBJ; var x2: UINT; x3: DWORD): MMRESULT; stdcall;
+ external 'winmm.dll' name 'mixerGetID';
+
+function PlaySoundA(x1: LPCSTR; x2: HMODULE; x3: DWORD): BOOL; stdcall;
+ external 'winmm.dll' name 'PlaySoundA';
+
+function PlaySoundW(x1: LPCWSTR; x2: HMODULE; x3: DWORD): BOOL; stdcall;
+ external 'winmm.dll' name 'PlaySoundW';
+
+function PlaySound(x1: PChar; x2: HMODULE; x3: DWORD): BOOL; stdcall;
+ external 'winmm.dll' name
+ {$ifdef UNICODE}'PlaySoundW'
+ {$else}'PlaySoundA'
+ {$endif};
+
+implementation
+
+function MEVT_EVENTTYPE(x: byte): byte;
+ begin
+  MEVT_EVENTTYPE := (x shr 24) and $FF;
+ end;
+
+function MEVT_EVENTPARM(x: DWORD): DWORD;
+ begin
+  MEVT_EVENTPARM := x and $00FFFFFF;
+ end;
+
+function MCI_MSF_MINUTE(msf: longint): byte;
+ [public, alias: 'Mci_msf_minute'];
+ var
+  b:byte absolute msf;
+ begin
+  MCI_MSF_MINUTE := b;
+ end;
+
+function MCI_TMSF_TRACK(tmsf: longint): byte;
+ external name 'Mci_msf_minute';
+
+function MCI_HMS_HOUR(h: longint): byte;
+ external name 'Mci_msf_minute';
+
+function MCI_MSF_SECOND(msf: longint): byte;
+ [public, alias: 'Mci_msf_second'];
+ var
+  b: array[0..1]of byte absolute msf;
+ begin
+  MCI_MSF_SECOND := b[1];
+ end;
+
+function MCI_TMSF_MINUTE(tmsf: longint): byte;
+ external name 'Mci_msf_second';
+
+function MCI_HMS_MINUTE(h: longint): byte;
+ external name 'Mci_msf_second';
+
+function MCI_MSF_FRAME(msf: longint): byte;
+ [public, alias: 'Mci_msf_frame'];
+ var
+  b: array[0..2]of byte absolute msf;
+ begin
+  MCI_MSF_FRAME := b[2];
+ end;
+
+function MCI_TMSF_SECOND(tmsf: longint): byte;
+ external name 'Mci_msf_frame';
+
+function MCI_HMS_SECOND(h: longint): byte;
+ external name 'Mci_msf_frame';
+
+function MCI_MAKE_MSF(m, s, f: byte): longint;
+ [public, alias: 'Mci_make_msf'];
+ const
+  b: array[0..3]of byte=(0,0,0,0);
+ var
+  l: longint absolute b;
+ begin
+  b[0] := m;
+  b[1] := s;
+  b[2] := f;
+  MCI_MAKE_MSF := l;
+ end;
+
+function MCI_MAKE_HMS(h, m, s: byte): longint;
+ external name 'Mci_make_msf';
+
+function MCI_TMSF_FRAME(tmsf: longint): byte;
+ var
+  b: array[0..3]of byte absolute tmsf;
+ begin
+  MCI_TMSF_FRAME := b[3];
+ end;
+
+function mci_Make_TMSF(t, m, s, f: Byte): Longint;
+ var
+  b: array[0..3]of byte;
+  l: longint absolute b;
+ begin
+  b[0] := t;
+  b[1] := m;
+  b[2] := s;
+  b[3] := f;
+  mci_Make_TMSF := l;
+ end;
+
+function DIBINDEX(n: longint): longint;
+ begin
+  DIBINDEX := n or $10FF shl 16;
+ end;
+
+end.