Usage: musicXmlBulk [OPTIONS] SCRIPT_NAME_VALUE The musicXmlBulk script calls one or more processing scripts on any combination of files, directories of files, score names, and score IDs in one go. In most cases, musicXmlBulk processes the input and formulates calls to the musicXmlProcess script, so many of the rules that apply to musicXmlProcess apply to musicXmlBulk. SCRIPT_NAME_VALUE: a single script name, or script name wildcard. The bulk script will call combinations of the following scripts: db2Ly db2MusicXml db2Pdf ly2Pdf musicXml2Db musicXml2Ly musicXml2Pdf musicXmlCompress musicXmlValidate SCRIPT_NAME_VALUE examples: musicXml2Db: will execute the musicXml2Db script on each XML file in the input file list. musicXml2.*: will execute each of the three musicXml2* scripts on each XML file in the input file list. .* will execute all of the scripts on every eligible value in the input list. Options: /f, --input-file input file /i, --input-directory input directory /o, --output-directory output directory Input options: The input options direct the bulk script which files to process. Input values can be a single directory (option -i), a list of input values in a file (option -f), or both. Input directory option: The script takes a single input directory as an argument. All .xml, .mxl, .musicxml, and .ly files in the directory are added to the input list. Input file option: The input file is a text file that lists input values, one to a line. Input line values can be any combination of the following: An input filename An input directory An input score name A comma-separated input score ID or score ID range Wild cards in input values are not permitted. Input value processing: An input filename is added to the input list if it has an .xml, .mxl, .musicxml, or .ly file extension. If an input line is a directory, all .xml, .mxl, .musicxml, and .ly files in the directory are added to the input list. Score IDs refer to the primary key ID value in the SCORE table in the MusicXML database. Valid score ID input is a comma-separated list of numbers or range of numbers. Example: 2,4,6-10 Any non-numeric item in the file list that does not have a file extension is treated as a score name and is added to the input list. Input for each script: Once input processing is finished, the result is an input list of filenames, score names, and/or score IDs. musicXml* script input: All XML file input (.xml, .mxl, and .musicxml file extensions). musicXmlCompress script input: All uncompressed XML file input (.xml and .musicxml file extensions). db2* script input: All score names and score IDs. Additionally, the filenames of all .xml, .mxl, .musicxml, and .ly files in the input list are truncated by removing the file extension, and the file's basename is treated as a score name. The script then attempts to process any score in the database having that score name. ly2Pdf script input: All LilyPond file input (.ly file extension). Output for each script: The output directory option is required for all scripts except musicXmlValidate and musicXml2Db. Verbose output is used for all scripts except musicXmlCompress and musicXmlValidate. Script output is to stderr and can be redirected by the caller. Output subdirectories: The output directory passed by the output directory option must exist before the call to musicXmlBulk. Script output is to a subdirectory of the passed output directory, one subdirectory for each script called. The subdirectories are: Script db2Ly: subdirectory db2ly Script db2MusicXml: subdirectory db2musicxml Script db2Pdf: subdirectory db2pdf Script ly2Pdf: subdirectory ly2pdf Script musicXml2Ly: subdirectory musicxml2ly Script musicXml2Pdf: subdirectory musicxml2pdf Script musicXmlCompress: subdirectory xmlcompress The directory separation is so that multiple script calls that result in the same file type output don't overwrite each other. Example: Output directory: musicxml/out db2MusicXml script output directory: musicxml/out/db2musicxml Output filenames: All XML script output is an .xml file, except for musicXmlCompress which outputs an .mxl file. The XML file in a compressed MXL file has the same basename as the containing MXL file. The basename of the output file is the basename of the input file. In the case of db2* scripts, the output file's basename is the score name or the score ID, depending upon which is being processed.