/*
 * Copyright 1999 Eric Pouech
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

STRINGTABLE LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
BEGIN

/* MMSYS errors */
MMSYSERR_NOERROR, 		"The specified command was carried out."
MMSYSERR_ERROR, 		"Undefined external error."
MMSYSERR_BADDEVICEID, 		"A device ID has been used that is out of range for your system."
MMSYSERR_NOTENABLED, 		"The driver was not enabled."
MMSYSERR_ALLOCATED, 		"The specified device is already in use. Wait until it is free, and then try again."
MMSYSERR_INVALHANDLE, 		"The specified device handle is invalid."
MMSYSERR_NODRIVER, 		"There is no driver installed on your system !\n"
MMSYSERR_NOMEM, 		"Not enough memory available for this task. Quit one or more applications to increase available memory, and then try again."
MMSYSERR_NOTSUPPORTED, 		"This function is not supported. Use the Capabilities function to determine which functions and messages the driver supports."
MMSYSERR_BADERRNUM, 		"An error number was specified that is not defined in the system."
MMSYSERR_INVALFLAG, 		"An invalid flag was passed to a system function."
MMSYSERR_INVALPARAM, 		"An invalid parameter was passed to a system function."

/* WAVE errors */
WAVERR_BADFORMAT, 		"The specified format is not supported or cannot be translated. Use the Capabilities function to determine the supported formats"
WAVERR_STILLPLAYING, 		"Cannot perform this operation while media data is still playing. Reset the device, or wait until the data is finished playing."
WAVERR_UNPREPARED, 		"The wave header was not prepared. Use the Prepare function to prepare the header, and then try again."
WAVERR_SYNC, 			"Cannot open the device without using the WAVE_ALLOWSYNC flag. Use the flag, and then try again."

/* MIDI errors */
MIDIERR_UNPREPARED, 		"The MIDI header was not prepared. Use the Prepare function to prepare the header, and then try again."
MIDIERR_STILLPLAYING, 		"Cannot perform this operation while media data is still playing. Reset the device, or wait until the data is finished playing."
MIDIERR_NOMAP, 			"A MIDI map was not found. There may be a problem with the driver, or the MIDIMAP.CFG file may be corrupt or missing."
MIDIERR_NOTREADY, 		"The port is transmitting data to the device. Wait until the data has been transmitted, and then try again."
MIDIERR_NODEVICE, 		"The current MIDI Mapper setup refers to a MIDI device that is not installed on the system. Use MIDI Mapper to edit the setup."
MIDIERR_INVALIDSETUP, 		"The current MIDI setup is damaged. Copy the original MIDIMAP.CFG file to the Windows SYSTEM directory, and then try again."

/* MCI errors */
MCIERR_INVALID_DEVICE_ID, 	"Invalid MCI device ID. Use the ID returned when opening the MCI device."
MCIERR_UNRECOGNIZED_KEYWORD, 	"The driver cannot recognize the specified command parameter."
MCIERR_UNRECOGNIZED_COMMAND,	"The driver cannot recognize the specified command."
MCIERR_HARDWARE, 		"There is a problem with your media device. Make sure it is working correctly or contact the device manufacturer."
MCIERR_INVALID_DEVICE_NAME, 	"The specified device is not open or is not recognized by MCI."
MCIERR_OUT_OF_MEMORY, 		"Not enough memory available for this task. \nQuit one or more applications to increase available memory, and then try again."
MCIERR_DEVICE_OPEN, 		"The device name is already being used as an alias by this application. Use a unique alias."
MCIERR_CANNOT_LOAD_DRIVER, 	"There is an undetectable problem in loading the specified device driver."
MCIERR_MISSING_COMMAND_STRING, 	"No command was specified."
MCIERR_PARAM_OVERFLOW, 		"The output string was too large to fit in the return buffer. Increase the size of the buffer."
MCIERR_MISSING_STRING_ARGUMENT, "The specified command requires a character-string parameter. Please provide one."
MCIERR_BAD_INTEGER, 		"The specified integer is invalid for this command."
MCIERR_PARSER_INTERNAL, 	"The device driver returned an invalid return type. Check with the device manufacturer about obtaining a new driver."
MCIERR_DRIVER_INTERNAL, 	"There is a problem with the device driver. Check with the device manufacturer about obtaining a new driver."
MCIERR_MISSING_PARAMETER, 	"The specified command requires a parameter. Please supply one."
MCIERR_UNSUPPORTED_FUNCTION, 	"The MCI device you are using does not support the specified command."
MCIERR_FILE_NOT_FOUND, 		"Cannot find the specified file. Make sure the path and filename are correct."
MCIERR_DEVICE_NOT_READY, 	"The device driver is not ready."
MCIERR_INTERNAL, 		"A problem occurred in initializing MCI. Try restarting Windows."
MCIERR_DRIVER, 			"There is a problem with the device driver. The driver has closed. Cannot access error."
MCIERR_CANNOT_USE_ALL, 		"Cannot use 'all' as the device name with the specified command."
MCIERR_MULTIPLE, 		"Errors occurred in more than one device. Specify each command and device separately to determine which devices caused the error"
MCIERR_EXTENSION_NOT_FOUND, 	"Cannot determine the device type from the given filename extension."
MCIERR_OUTOFRANGE, 		"The specified parameter is out of range for the specified command."
MCIERR_FLAGS_NOT_COMPATIBLE, 	"The specified parameters cannot be used together."
MCIERR_FILE_NOT_SAVED, 		"Cannot save the specified file. Make sure you have enough disk space or are still connected to the network."
MCIERR_DEVICE_TYPE_REQUIRED, 	"Cannot find the specified device. Make sure it is installed or that the device name is spelled correctly."
MCIERR_DEVICE_LOCKED, 		"The specified device is now being closed. Wait a few seconds, and then try again."
MCIERR_DUPLICATE_ALIAS, 	"The specified alias is already being used in this application. Use a unique alias."
MCIERR_BAD_CONSTANT, 		"The specified parameter is invalid for this command."
MCIERR_MUST_USE_SHAREABLE, 	"The device driver is already in use. To share it, use the 'shareable' parameter with each 'open' command."
MCIERR_MISSING_DEVICE_NAME, 	"The specified command requires an alias, file, driver, or device name. Please supply one."
MCIERR_BAD_TIME_FORMAT, 	"The specified value for the time format is invalid. Refer to the MCI documentation for valid formats."
MCIERR_NO_CLOSING_QUOTE, 	"A closing double-quotation mark is missing from the parameter value. Please supply one."
MCIERR_DUPLICATE_FLAGS, 	"A parameter or value was specified twice. Only specify it once."
MCIERR_INVALID_FILE, 		"The specified file cannot be played on the specified MCI device. The file may be corrupt, or not in the correct format."
MCIERR_NULL_PARAMETER_BLOCK, 	"A null parameter block was passed to MCI."
MCIERR_UNNAMED_RESOURCE, 	"Cannot save an unnamed file. Supply a filename."
MCIERR_NEW_REQUIRES_ALIAS, 	"You must specify an alias when using the 'new' parameter."
MCIERR_NOTIFY_ON_AUTO_OPEN, 	"Cannot use the 'notify' flag with auto-opened devices."
MCIERR_NO_ELEMENT_ALLOWED, 	"Cannot use a filename with the specified device."
MCIERR_NONAPPLICABLE_FUNCTION, 	"Cannot carry out the commands in the order specified. Correct the command sequence, and then try again."
MCIERR_ILLEGAL_FOR_AUTO_OPEN, 	"Cannot carry out the specified command on an auto-opened device. Wait until the device is closed, and then try again."
MCIERR_FILENAME_REQUIRED, 	"The filename is invalid. Make sure the filename is not longer than 8 characters, followed by a period and an extension."
MCIERR_EXTRA_CHARACTERS, 	"Cannot specify extra characters after a string enclosed in quotation marks."
MCIERR_DEVICE_NOT_INSTALLED, 	"The specified device is not installed on the system. Use the Drivers option in Control Panel to install the device."
MCIERR_GET_CD, 			"Cannot access the specified file or MCI device. Try changing directories or restarting your computer."
MCIERR_SET_CD, 			"Cannot access the specified file or MCI device because the application cannot change directories."
MCIERR_SET_DRIVE, 		"Cannot access specified file or MCI device because the application cannot change drives."
MCIERR_DEVICE_LENGTH, 		"Specify a device or driver name that is less than 79 characters."
MCIERR_DEVICE_ORD_LENGTH, 	"Specify a device or driver name that is less than 69 characters."
MCIERR_NO_INTEGER, 		"The specified command requires an integer parameter. Please provide one."
MCIERR_WAVE_OUTPUTSINUSE, 	"All wave devices that can play files in the current format are in use. Wait until a wave device is free, and then try again."
MCIERR_WAVE_SETOUTPUTINUSE, 	"Cannot set the current wave device for play back because it is in use. Wait until the device is free, and then try again."
MCIERR_WAVE_INPUTSINUSE, 	"All wave devices that can record files in the current format are in use. Wait until a wave device is free, and then try again."
MCIERR_WAVE_SETINPUTINUSE, 	"Cannot set the current wave device for recording because it is in use. Wait until the device is free, and then try again."
MCIERR_WAVE_OUTPUTUNSPECIFIED,	"Any compatible waveform playback device may be used."
MCIERR_WAVE_INPUTUNSPECIFIED, 	"Any compatible waveform recording device may be used."
MCIERR_WAVE_OUTPUTSUNSUITABLE, 	"No wave device that can play files in the current format is installed. Use the Drivers option to install the wave device."
MCIERR_WAVE_SETOUTPUTUNSUITABLE,"The device you are trying to play to cannot recognize the current file format."
MCIERR_WAVE_INPUTSUNSUITABLE, 	"No wave device that can record files in the current format is installed. Use the Drivers option to install the wave device."
MCIERR_WAVE_SETINPUTUNSUITABLE, "The device you are trying to record from cannot recognize the current file format."
MCIERR_NO_WINDOW, 		"There is no display window."
MCIERR_CREATEWINDOW, 		"Could not create or use window."
MCIERR_FILE_READ, 		"Cannot read the specified file. Make sure the file is still present, or check your disk or network connection."
MCIERR_FILE_WRITE, 		"Cannot write to the specified file. Make sure you have enough disk space or are still connected to the network."
MCIERR_SEQ_DIV_INCOMPATIBLE, 	"The time formats of the ""song pointer"" and SMPTE are mutually exclusive. You can't use them together."
MCIERR_SEQ_NOMIDIPRESENT, 	"The system has no installed MIDI devices. Use the Drivers option from the Control Panel to install a MIDI driver."
MCIERR_SEQ_PORT_INUSE, 		"The specified MIDI port is already in use. Wait until it is free; the try again."
MCIERR_SEQ_PORT_MAPNODEVICE, 	"The current MIDI Mapper setup refers to a MIDI device that is not installed on the system. Use the MIDI Mapper option from the Control Panel to edit the setup."
MCIERR_SEQ_PORT_MISCERROR, 	"An error occurred with the specified port."
MCIERR_SEQ_PORT_NONEXISTENT, 	"The specified MIDI device is not installed on the system. Use the Drivers option from the Control Panel to install a MIDI device."
MCIERR_SEQ_PORTUNSPECIFIED, 	"The system doesn't have a current MIDI port specified."
MCIERR_SEQ_TIMER, 		"All multimedia timers are being used by other applications. Quit one of these applications; then, try again."

END
