From 5c6765db2c731cfe539393aeed8c4fe330492c59 Mon Sep 17 00:00:00 2001 From: infojunkie Date: Sat, 5 Oct 2024 22:50:04 -0700 Subject: [PATCH] [musicxml-grooves] Add full drumset to drum instruments, optional to use --- package-lock.json | 244 +-- package.json | 2 +- src/js/musicxml-grooves.js | 10 +- src/xml/drums.xml | 231 +++ test/data/grooves/JazzBasieEndingB.musicxml | 4 +- test/data/grooves/highfiveA.musicxml | 1485 ++++++++++--------- 6 files changed, 1111 insertions(+), 865 deletions(-) diff --git a/package-lock.json b/package-lock.json index a0bd49ba..e1a0d5ea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "musicxml-midi", - "version": "2.8.2", + "version": "2.8.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "musicxml-midi", - "version": "2.8.2", + "version": "2.8.3", "hasInstallScript": true, "license": "GPL-3.0-only", "dependencies": { @@ -56,13 +56,13 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz", + "integrity": "sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/highlight": "^7.24.7", + "@babel/highlight": "^7.25.7", "picocolors": "^1.0.0" }, "engines": { @@ -70,9 +70,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", - "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.7.tgz", + "integrity": "sha512-9ickoLz+hcXCeh7jrcin+/SLWm+GkxE2kTvoYyp38p4WkdFXfQJxDFGWp/YHjiKLPx06z2A7W8XKuqbReXDzsw==", "dev": true, "license": "MIT", "engines": { @@ -80,22 +80,22 @@ } }, "node_modules/@babel/core": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", - "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.7.tgz", + "integrity": "sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-module-transforms": "^7.25.2", - "@babel/helpers": "^7.25.0", - "@babel/parser": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.2", - "@babel/types": "^7.25.2", + "@babel/code-frame": "^7.25.7", + "@babel/generator": "^7.25.7", + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helpers": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/template": "^7.25.7", + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -143,31 +143,31 @@ "license": "MIT" }, "node_modules/@babel/generator": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz", - "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.7.tgz", + "integrity": "sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.25.6", + "@babel/types": "^7.25.7", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", - "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz", + "integrity": "sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.2", - "@babel/helper-validator-option": "^7.24.8", - "browserslist": "^4.23.1", + "@babel/compat-data": "^7.25.7", + "@babel/helper-validator-option": "^7.25.7", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -176,30 +176,30 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", - "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz", + "integrity": "sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", - "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz", + "integrity": "sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "@babel/traverse": "^7.25.2" + "@babel/helper-module-imports": "^7.25.7", + "@babel/helper-simple-access": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", + "@babel/traverse": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -209,9 +209,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", - "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz", + "integrity": "sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==", "dev": true, "license": "MIT", "engines": { @@ -219,23 +219,23 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz", + "integrity": "sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", - "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz", + "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==", "dev": true, "license": "MIT", "engines": { @@ -243,9 +243,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", + "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", "dev": true, "license": "MIT", "engines": { @@ -253,9 +253,9 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", - "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz", + "integrity": "sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==", "dev": true, "license": "MIT", "engines": { @@ -263,27 +263,27 @@ } }, "node_modules/@babel/helpers": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz", - "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.7.tgz", + "integrity": "sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.6" + "@babel/template": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz", + "integrity": "sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", + "@babel/helper-validator-identifier": "^7.25.7", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -371,13 +371,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", - "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.7.tgz", + "integrity": "sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.25.6" + "@babel/types": "^7.25.7" }, "bin": { "parser": "bin/babel-parser.js" @@ -442,13 +442,13 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz", - "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.7.tgz", + "integrity": "sha512-AqVo+dguCgmpi/3mYBdu9lkngOBlQ2w2vnNpa6gfiCxQZLzV4ZbhsXitJ2Yblkoe1VQwtHSaNmIaGll/26YWRw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -594,13 +594,13 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz", - "integrity": "sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.7.tgz", + "integrity": "sha512-rR+5FDjpCHqqZN2bzZm18bVYGaejGq5ZkpVCJLXor/+zlSrSoc4KWcHI0URVWjl/68Dyr1uwZUz/1njycEAv9g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -610,32 +610,32 @@ } }, "node_modules/@babel/template": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", - "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz", + "integrity": "sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.25.0", - "@babel/types": "^7.25.0" + "@babel/code-frame": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz", - "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz", + "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.6", - "@babel/parser": "^7.25.6", - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.6", + "@babel/code-frame": "^7.25.7", + "@babel/generator": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/template": "^7.25.7", + "@babel/types": "^7.25.7", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -669,14 +669,14 @@ "license": "MIT" }, "node_modules/@babel/types": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", - "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.7.tgz", + "integrity": "sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.24.8", - "@babel/helper-validator-identifier": "^7.24.7", + "@babel/helper-string-parser": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -1317,9 +1317,9 @@ } }, "node_modules/@types/node": { - "version": "22.7.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.3.tgz", - "integrity": "sha512-qXKfhXXqGTyBskvWEzJZPUxSslAiLaB6JGP1ic/XTH9ctGgzdgYguuLP1C601aRTSDNlLb0jbKqXjZ48GNraSA==", + "version": "22.7.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.4.tgz", + "integrity": "sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==", "dev": true, "license": "MIT", "dependencies": { @@ -1892,9 +1892,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001664", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001664.tgz", - "integrity": "sha512-AmE7k4dXiNKQipgn7a2xg558IRqPN3jMQY/rOsbxDhrd0tyChwbITBfiwtnqz8bi2M5mIWbxAYBvk7W7QBUS2g==", + "version": "1.0.30001667", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001667.tgz", + "integrity": "sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw==", "dev": true, "funding": [ { @@ -2608,9 +2608,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.29", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.29.tgz", - "integrity": "sha512-PF8n2AlIhCKXQ+gTpiJi0VhcHDb69kYX4MtCiivctc2QD3XuNZ/XIOlbGzt7WAjjEev0TtaH6Cu3arZExm5DOw==", + "version": "1.5.32", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.32.tgz", + "integrity": "sha512-M+7ph0VGBQqqpTT2YrabjNKSQ2fEl9PVx6AK3N558gDH9NO8O6XN9SXXFWRo9u9PbEg/bWq+tjXQr+eXmxubCw==", "dev": true, "license": "ISC" }, @@ -4712,16 +4712,16 @@ "license": "MIT" }, "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "dev": true, "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/json-parse-even-better-errors": { @@ -5362,9 +5362,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.12", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz", - "integrity": "sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==", + "version": "2.2.13", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.13.tgz", + "integrity": "sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==", "dev": true, "license": "MIT" }, @@ -6877,9 +6877,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", "dev": true, "funding": [ { @@ -6897,8 +6897,8 @@ ], "license": "MIT", "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" + "escalade": "^3.2.0", + "picocolors": "^1.1.0" }, "bin": { "update-browserslist-db": "cli.js" diff --git a/package.json b/package.json index db156e50..5da6d27c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "musicxml-midi", - "version": "2.8.2", + "version": "2.8.3", "description": "MusicXML to MIDI converter", "type": "module", "directories": { diff --git a/src/js/musicxml-grooves.js b/src/js/musicxml-grooves.js index e62f01cd..e2d8feee 100755 --- a/src/js/musicxml-grooves.js +++ b/src/js/musicxml-grooves.js @@ -72,6 +72,9 @@ const options = { }, 'tracks': { type: 'string' + }, + 'drumset': { + type: 'boolean' } } const { values: args } = (() => { @@ -86,7 +89,7 @@ const { values: args } = (() => { if ('help' in args) { console.log(` -Usage: musicxml-grooves v${version} [--output|-o /path/to/output] [--grooves|-g comma-separated-grooves] [--tempo|-t beats-per-minute] [--validate] [--version|-v] [--help|-h] +Usage: musicxml-grooves v${version} [--output|-o /path/to/output] [--grooves|-g comma-separated-grooves] [--tempo|-t beats-per-minute] [--grid comma-separated-grid-divisors] [--dashes] [--tracks comma-separated-tracks-to-keep] [--drumset] [--validate] [--version|-v] [--help|-h] Converts MMA grooves to MusicXML. `.trim()) @@ -222,6 +225,10 @@ function createPartList(groove) { // Otherwise, we pick the instrument with the least pitches. const parts = groove.tracks.reduce((parts, track) => { track.candidateInstrumentIds = track.candidateInstrumentIds.sort((a, b) => { + if (!('drumset' in args)) { + if (a === 'drumset') return 1 + if (b === 'drumset') return -1 + } if (partCandidates[b].usage === partCandidates[a].usage) { if (a in parts) return -1 if (b in parts) return 1 @@ -299,7 +306,6 @@ function createPartListEntry(groove, instrumentId, partId) { scoreInstrument: ` ${drum.getElementsByTagName('instrument-name')[0].textContent} - ${drum.getElementsByTagName('instrument-sound')[0].textContent} `.trim(), midiInstrument: ` diff --git a/src/xml/drums.xml b/src/xml/drums.xml index dfe68745..d52e3d36 100644 --- a/src/xml/drums.xml +++ b/src/xml/drums.xml @@ -1,5 +1,236 @@ + + Drumset + D. Set + drum.group.set + 5 + + normal + F + 4 + 2 + Acoustic Bass Drum + drum.bass-drum + down + + + normal + F + 4 + 2 + Bass Drum 1 + drum.bass-drum + down + + + x + C + 5 + 1 + Side Stick + drum.snare-drum + up + + + normal + C + 5 + 1 + Acoustic Snare + drum.snare-drum + up + + + normal + C + 5 + 1 + Electric Snare + drum.snare-drum + up + + + normal + A + 4 + 1 + Low Floor Tom + drum.tom-tom + up + + + x + G + 5 + 3 + Closed Hi-Hat + metal.hi-hat + up + + + normal + A + 4 + 2 + High Floor Tom + drum.tom-tom + down + + + x + D + 4 + 3 + Pedal Hi-Hat + metal.hi-hat + down + + + normal + D + 5 + 1 + Low Tom + drum.tom-tom + up + + + x + E + 5 + 3 + Open Hi-Hat + metal.hi-hat + up + + + normal + E + 5 + 1 + Low-Mid Tom + drum.tom-tom + up + + + normal + F + 5 + 1 + Hi-Mid Tom + drum.tom-tom + up + + + x + A + 5 + 3 + Crash Cymbal 1 + metal.cymbal.crash + up + + + normal + F + 5 + 1 + High Tom + drum.tom-tom + up + + + x + F + 5 + 3 + Ride Cymbal 1 + metal.cymbal.ride + up + + + x + B + 5 + 3 + Chinese Cymbal + metal.cymbal.chinese + up + + + diamond + F + 5 + 3 + Ride Bell + metal.cymbal.ride + up + + + diamond + D + 5 + 4 + Tambourine + drum.tambourine + up + + + x + B + 5 + 3 + Splash Cymbal + metal.cymbal.splash + up + + + inverted-triangle + E + 5 + 4 + Cowbell + metal.bells.cowbell + up + + + x + B + 5 + 3 + Crash Cymbal 2 + metal.cymbal.crash + up + + + x + D + 5 + 3 + Ride Cymbal 2 + metal.cymbal.ride + up + + + x + B + 4 + 4 + Open Hi Conga + drum.conga + up + + + x + G + 4 + 4 + Low Conga + drum.conga + up + + High Q Hi. Q diff --git a/test/data/grooves/JazzBasieEndingB.musicxml b/test/data/grooves/JazzBasieEndingB.musicxml index df9ecfde..731a92d0 100644 --- a/test/data/grooves/JazzBasieEndingB.musicxml +++ b/test/data/grooves/JazzBasieEndingB.musicxml @@ -8,8 +8,8 @@ - musicxml-grooves 2.8.1 - 2024-09-27 + musicxml-grooves 2.8.2 + 2024-10-06 diff --git a/test/data/grooves/highfiveA.musicxml b/test/data/grooves/highfiveA.musicxml index 1bf5a8f0..fa03c640 100644 --- a/test/data/grooves/highfiveA.musicxml +++ b/test/data/grooves/highfiveA.musicxml @@ -8,8 +8,8 @@ - musicxml-grooves 2.8.1 - 2024-09-27 + musicxml-grooves 2.8.2 + 2024-10-06 @@ -19,24 +19,95 @@ - Snare Drum - Sn. Dr. - - Snare Drum 1 - drum.snare-drum + Drumset + D. Set + + Acoustic Bass Drum - - Snare Drum 2 - drum.snare-drum + + Bass Drum 1 Side Stick - drum.snare-drum - - Rim Shot - drum.snare-drum + + Acoustic Snare + + + Electric Snare + + + Low Floor Tom + + + Closed Hi-Hat + + + High Floor Tom + + + Pedal Hi-Hat + + + Low Tom + + + Open Hi-Hat + + + Low-Mid Tom + + + Hi-Mid Tom + + + Crash Cymbal 1 + + + High Tom + + + Ride Cymbal 1 + + + Chinese Cymbal + + + Ride Bell + + + Tambourine + + + Splash Cymbal + + + Cowbell + + + Crash Cymbal 2 + + + Ride Cymbal 2 + + + Open Hi Conga + + + Low Conga + + 10 + 36 + + + 10 + 37 + + + 10 + 38 + 10 39 @@ -45,125 +116,85 @@ 10 41 - + 10 - 38 + 42 - + 10 - 92 + 43 - - - Bass Drum - B. Dr. - - Kick Drum 2 - drum.bass-drum - - - Kick Drum 1 - drum.bass-drum - - - Pedal Hi-Hat - metal.hi-hat - - + 10 - 36 + 44 - + 10 - 37 + 45 - + 10 - 45 + 46 - - - Cymbals - Cym. - - Ride Cymbal 2 - metal.cymbal.ride - - - Cowbell - metal.bells.cowbell - - - Ride Cymbal 1 - metal.cymbal.ride - - - Ride Bell - metal.cymbal.ride - - - Open Hi-Hat - metal.hi-hat - - - Closed Hi-Hat - metal.hi-hat - - - Crash Cymbal 1 - metal.cymbal.crash - - - Crash Cymbal 2 - metal.cymbal.crash - - - Splash Cymbal - metal.cymbal.splash - - - Chinese Cymbal - metal.cymbal.chinese - - + 10 - 60 + 47 - + 10 - 57 + 48 + + + 10 + 49 + + + 10 + 50 + + + 10 + 51 - + 10 52 - + + 10 + 53 + + 10 54 - + 10 - 47 + 55 - + 10 - 43 + 56 - + 10 - 50 + 57 - + 10 58 - + 10 - 56 + 60 - + 10 - 53 + 64 + + + 10 + 65 @@ -179,7 +210,7 @@ percussion - 1 + 5 @@ -201,8 +232,8 @@ - E - 4 + C + 5 768 @@ -223,8 +254,8 @@ - E - 4 + C + 5 256 @@ -252,8 +283,8 @@ - E - 4 + C + 5 256 @@ -283,480 +314,448 @@ - - + + 3072 + + + + F + 4 + + 576 + + 2 + eighth + + down + normal + + + + + + F + 4 + + 192 + + 2 + 16th + down + normal + + + 768 - 1 + 2 quarter - E + F 4 - 256 - - 1 + 576 + + 2 eighth - - 3 - 2 - quarter - - up + + down normal - - - 3 - eighth - - - 2 - quarter - - - E + F 4 - 512 - - 1 - quarter - - 3 - 2 - quarter - - up + 192 + + 2 + 16th + down normal - 768 - 1 + 2 quarter + + 3072 + - E - 4 + G + 5 - 256 - - 1 - eighth + 192 + + 3 + 16th + up + x + + + + + + G + 5 + + 192 + + 3 + 16th + up + x + + + + + + 128 + 3 + 16th 3 2 - eighth + 16th - up - normal 3 - eighth + 16th 2 - eighth + 16th - E - 4 + G + 5 - 256 - - 1 - eighth + 128 + + 3 + 16th 3 2 - eighth + 16th up - normal + x - - - 256 - 1 - eighth + + + G + 5 + + 128 + + 3 + 16th 3 2 - eighth + 16th + up + x - - - - - 768 - 1 - quarter - + + + G + 5 + + 192 + + 3 + 16th + up + x + - E - 4 + G + 5 - 768 - - 1 - quarter + 192 + + 3 + 16th up - normal + x - 768 - 1 - quarter - - - - - - E - 4 - - 256 - - 1 - eighth + 128 + 3 + 16th 3 2 - eighth + 16th - up - normal 3 - eighth + 16th 2 - eighth + 16th - E - 4 + G + 5 - 256 - - 1 - eighth + 128 + + 3 + 16th 3 2 - eighth + 16th up - normal + x - - - 256 - 1 - eighth + + + G + 5 + + 128 + + 3 + 16th 3 2 - eighth + 16th + up + x - - - - - 768 - 1 - quarter - - - - E - 4 + G + 5 - 256 - - 1 - eighth - - 3 - 2 - quarter - + 192 + + 3 + 16th up - normal + x - - - 3 - eighth - - - 2 - quarter - - - E - 4 + G + 5 - 512 - - 1 - quarter - - 3 - 2 - quarter - + 192 + + 3 + 16th up - normal + x - - 768 - 1 - quarter - - - - - - E - 4 - - 256 - - 1 - eighth + 128 + 3 + 16th 3 2 - eighth + 16th - up - normal 3 - eighth + 16th 2 - eighth + 16th - E - 4 + G + 5 - 256 - - 1 - eighth + 128 + + 3 + 16th 3 2 - eighth + 16th up - normal + x - - - 256 - 1 - eighth + + + G + 5 + + 128 + + 3 + 16th 3 2 - eighth + 16th + up + x - - - - - - 768 - - - percussion - - - 5 - - - - - F - 4 - - 576 - - 1 - eighth - - down - normal - - - - F - 4 + G + 5 192 - - 1 + + 3 16th - down - normal - - - - - - 768 - 1 - quarter + up + x - F - 4 + G + 5 - 576 - - 1 - eighth - - down - normal + 192 + + 3 + 16th + up + x - F - 4 + G + 5 - 192 - - 1 + 128 + + 3 16th - down - normal + + 3 + 2 + 16th + + up + x + + + 3 + 16th + + + 2 + 16th + + - 768 - 1 - quarter - - - - - - - - F - 4 - - 576 - - 1 - eighth - - down - normal + 128 + 3 + 16th + + 3 + 2 + 16th + - F - 4 + G + 5 - 192 - - 1 + 128 + + 3 16th - down - normal + + 3 + 2 + 16th + + up + x + + + 768 @@ -767,31 +766,51 @@ - F - 4 + C + 5 - 576 - + 256 + 1 eighth - - down + + 3 + 2 + quarter + + up normal + + + 3 + eighth + + + 2 + quarter + + - F - 4 + C + 5 - 192 - + 512 + 1 - 16th - down + quarter + + 3 + 2 + quarter + + up normal + @@ -802,53 +821,79 @@ - - - F - 4 + C + 5 - 576 - + 256 + 1 eighth - - down + + 3 + 2 + eighth + + up normal + + + 3 + eighth + + + 2 + eighth + + - F - 4 + C + 5 - 192 - + 256 + 1 - 16th - down + eighth + + 3 + 2 + eighth + + up normal - 768 + 256 1 - quarter + eighth + + 3 + 2 + eighth + + + + 3072 + F 4 576 - - 1 + + 2 eighth down @@ -862,8 +907,8 @@ 4 192 - - 1 + + 2 16th down normal @@ -873,21 +918,19 @@ 768 - 1 + 2 quarter - - F 4 576 - - 1 + + 2 eighth down @@ -901,8 +944,8 @@ 4 192 - - 1 + + 2 16th down normal @@ -912,57 +955,21 @@ 768 - 1 - quarter - - - - - - F - 4 - - 768 - - 1 - quarter - down - normal - - - - - - 768 - 1 + 2 quarter - - - - - - 768 - - - percussion - - - 5 - - + + 3072 + G 5 192 - + 3 16th up @@ -976,7 +983,7 @@ 5 192 - + 3 16th up @@ -1013,7 +1020,7 @@ 5 128 - + 3 16th @@ -1032,7 +1039,7 @@ 5 128 - + 3 16th @@ -1052,7 +1059,7 @@ 5 192 - + 3 16th up @@ -1066,7 +1073,7 @@ 5 192 - + 3 16th up @@ -1103,7 +1110,7 @@ 5 128 - + 3 16th @@ -1122,7 +1129,7 @@ 5 128 - + 3 16th @@ -1142,7 +1149,7 @@ 5 192 - + 3 16th up @@ -1156,7 +1163,7 @@ 5 192 - + 3 16th up @@ -1193,7 +1200,7 @@ 5 128 - + 3 16th @@ -1212,7 +1219,7 @@ 5 128 - + 3 16th @@ -1232,7 +1239,7 @@ 5 192 - + 3 16th up @@ -1246,7 +1253,7 @@ 5 192 - + 3 16th up @@ -1260,7 +1267,7 @@ 5 128 - + 3 16th @@ -1302,7 +1309,7 @@ 5 128 - + 3 16th @@ -1317,194 +1324,186 @@ - - - - G - 5 - - 192 - - 3 - 16th - up - x + + + + 768 + 1 + quarter - G + C 5 - 192 - - 3 - 16th + 768 + + 1 + quarter up - x + normal - 128 - 3 - 16th + 768 + 1 + quarter + + + + + + C + 5 + + 256 + + 1 + eighth 3 2 - 16th + eighth + up + normal 3 - 16th + eighth 2 - 16th + eighth - G + C 5 - 128 - - 3 - 16th + 256 + + 1 + eighth 3 2 - 16th + eighth up - x + normal - - - G - 5 - - 128 - - 3 - 16th + + + 256 + 1 + eighth 3 2 - 16th + eighth - up - x + + 3072 + - G - 5 + F + 4 - 192 - - 3 - 16th - up - x + 576 + + 2 + eighth + + down + normal - G - 5 + F + 4 192 - - 3 + + 2 16th - up - x + down + normal - 128 - 3 - 16th - - 3 - 2 - 16th - + 768 + 2 + quarter - - - 3 - 16th - - - 2 - 16th - - - G - 5 + F + 4 - 128 - - 3 - 16th - - 3 - 2 - 16th - - up - x + 576 + + 2 + eighth + + down + normal - G - 5 + F + 4 - 128 - - 3 + 192 + + 2 16th - - 3 - 2 - 16th - - up - x + down + normal + + + + + + 768 + 2 + quarter - + + 3072 + G 5 192 - + 3 16th up @@ -1518,7 +1517,7 @@ 5 192 - + 3 16th up @@ -1555,7 +1554,7 @@ 5 128 - + 3 16th @@ -1574,7 +1573,7 @@ 5 128 - + 3 16th @@ -1594,7 +1593,7 @@ 5 192 - + 3 16th up @@ -1608,7 +1607,7 @@ 5 192 - + 3 16th up @@ -1616,13 +1615,9 @@ - - - G - 5 - + + 128 - 3 16th @@ -1630,8 +1625,6 @@ 2 16th - up - x @@ -1645,9 +1638,13 @@ - - + + + G + 5 + 128 + 3 16th @@ -1655,6 +1652,8 @@ 2 16th + up + x @@ -1664,7 +1663,7 @@ 5 128 - + 3 16th @@ -1678,15 +1677,13 @@ - - G 5 192 - + 3 16th up @@ -1700,7 +1697,7 @@ 5 192 - + 3 16th up @@ -1737,7 +1734,7 @@ 5 128 - + 3 16th @@ -1756,7 +1753,7 @@ 5 128 - + 3 16th @@ -1776,7 +1773,7 @@ 5 192 - + 3 16th up @@ -1790,7 +1787,7 @@ 5 192 - + 3 16th up @@ -1798,9 +1795,13 @@ - - + + + G + 5 + 128 + 3 16th @@ -1808,6 +1809,8 @@ 2 16th + up + x @@ -1821,13 +1824,9 @@ - - - G - 5 - + + 128 - 3 16th @@ -1835,8 +1834,6 @@ 2 16th - up - x @@ -1846,7 +1843,7 @@ 5 128 - + 3 16th @@ -1860,195 +1857,207 @@ - - - G - 5 - - 192 - - 3 - 16th - up - x + + + + + 768 + 1 + quarter - G + C 5 - 192 - - 3 - 16th - up - x - - - - - - 128 - 3 - 16th + 256 + + 1 + eighth 3 2 - 16th + quarter + up + normal 3 - 16th + eighth 2 - 16th + quarter - G + C 5 - 128 - - 3 - 16th + 512 + + 1 + quarter 3 2 - 16th + quarter up - x + normal + + + + + + + 768 + 1 + quarter - G + C 5 - 128 - - 3 - 16th + 256 + + 1 + eighth 3 2 - 16th + eighth up - x + normal - + + + 3 + eighth + + + 2 + eighth + + - G + C 5 - 192 - - 3 - 16th + 256 + + 1 + eighth + + 3 + 2 + eighth + up - x + normal + + + + + + 256 + 1 + eighth + + 3 + 2 + eighth + + + + 3072 + - G - 5 + F + 4 - 192 - - 3 - 16th - up - x + 576 + + 2 + eighth + + down + normal - G - 5 + F + 4 - 128 - - 3 + 192 + + 2 16th - - 3 - 2 - 16th - - up - x + down + normal - - - 3 - 16th - - - 2 - 16th - - - 128 - 3 - 16th - - 3 - 2 - 16th - + 768 + 2 + quarter - G - 5 + F + 4 - 128 - - 3 - 16th - - 3 - 2 - 16th - - up - x + 768 + + 2 + quarter + down + normal - - - + + + 768 + 2 + quarter + + + + + 3072 + G 5 192 - + 3 16th up @@ -2062,7 +2071,7 @@ 5 192 - + 3 16th up @@ -2099,7 +2108,7 @@ 5 128 - + 3 16th @@ -2118,7 +2127,7 @@ 5 128 - + 3 16th @@ -2138,7 +2147,7 @@ 5 192 - + 3 16th up @@ -2152,7 +2161,7 @@ 5 192 - + 3 16th up @@ -2189,7 +2198,7 @@ 5 128 - + 3 16th @@ -2208,7 +2217,7 @@ 5 128 - + 3 16th @@ -2228,7 +2237,7 @@ 5 192 - + 3 16th up @@ -2242,7 +2251,7 @@ 5 192 - + 3 16th up @@ -2279,7 +2288,7 @@ 5 128 - + 3 16th @@ -2298,7 +2307,7 @@ 5 128 - + 3 16th @@ -2318,7 +2327,7 @@ 5 192 - + 3 16th up @@ -2332,7 +2341,7 @@ 5 192 - + 3 16th up @@ -2346,7 +2355,7 @@ 5 128 - + 3 16th @@ -2388,7 +2397,7 @@ 5 128 - + 3 16th