{"_id":"temperament","_rev":"29-f4c8c3fb8f42f21739b9052850296af3","name":"temperament","dist-tags":{"latest":"4.0.7","beta":"4.0.0-beta.2"},"versions":{"1.0.0-alpha.0":{"name":"temperament","version":"1.0.0-alpha.0","description":"A library for working with musical temperaments.","main":"lib/index.js","module":"lib/index.mjs","files":["lib","src"],"scripts":{"prepare":"rollup -c","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/ianprime0509/temperament.git"},"author":{"name":"Ian Johnson","email":"ianprime0509@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ianprime0509/temperament/issues"},"homepage":"https://github.com/ianprime0509/temperament","devDependencies":{"babel-core":"6","babel-plugin-external-helpers":"^6.22.0","babel-preset-env":"^1.6.1","eslint":"^4.18.1","jest":"^22.4.2","prettier":"^1.10.2","rollup":"^0.56.3","rollup-plugin-babel":"^3.0.3","rollup-plugin-json":"^2.3.0"},"dependencies":{"ajv":"^6.2.0"},"licenseText":"Copyright 2018 Ian Johnson\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"temperament@1.0.0-alpha.0","dist":{"shasum":"0fc15758ee4d903bf9d5ff177be44c0bceff8cdb","tarball":"https://registry.npmjs.org/temperament/-/temperament-1.0.0-alpha.0.tgz","fileCount":11,"unpackedSize":48823,"integrity":"sha512-TI3WAERJ6eLu7iZkDd9iU2dj3S0R7Un4sPr7rl2sTaisDMQ3N4m25XQk+AlBILGWIcvmEvE6WCZTgjirRNBljw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnYbHxdh3ClqyU+iNv9Bib62XReUoN9Em6OzK17pFT7gIgPz9fuuDaY3RfMObgDhJWPFMn70fx3BJiat8bCQy0WGU="}]},"maintainers":[{"name":"ianprime0509","email":"ianprime0509@gmail.com"}],"_npmUser":{"name":"ianprime0509","email":"ianprime0509@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/temperament_1.0.0-alpha.0_1519694820102_0.4283421700693799"},"_hasShrinkwrap":false},"1.0.0-alpha.1":{"name":"temperament","version":"1.0.0-alpha.1","description":"A library for working with musical temperaments.","main":"lib/index.js","module":"lib/index.mjs","files":["lib","src"],"scripts":{"eslint":"eslint src","prepare":"rollup -c","test-only":"jest","test":"run-p eslint test-only"},"repository":{"type":"git","url":"git+https://github.com/ianprime0509/temperament.git"},"keywords":["temperament","music","theory","pitch"],"author":{"name":"Ian Johnson","email":"ianprime0509@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ianprime0509/temperament/issues"},"homepage":"https://github.com/ianprime0509/temperament","jest":{"testEnvironment":"node"},"dependencies":{"ajv":"^6.2.0"},"devDependencies":{"babel-core":"6","babel-plugin-external-helpers":"^6.22.0","babel-preset-env":"^1.6.1","eslint":"^4.18.1","eslint-config-prettier":"^2.9.0","eslint-plugin-prettier":"^2.6.0","jest":"^22.4.2","npm-run-all":"^4.1.2","prettier":"^1.10.2","rollup":"^0.56.3","rollup-plugin-babel":"^3.0.3","rollup-plugin-json":"^2.3.0"},"licenseText":"Copyright 2018 Ian Johnson\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"temperament@1.0.0-alpha.1","dist":{"shasum":"2076d70dc4b256115b8712a479f5041bf261d3f2","tarball":"https://registry.npmjs.org/temperament/-/temperament-1.0.0-alpha.1.tgz","fileCount":12,"unpackedSize":59984,"integrity":"sha512-bK3ZU8lz7g+++n0y9+hvly7WRVKatkMS2BA6ytUj37npx9zZt0Kfv3r/7kqJHwNw6aiVbFcKhhzfuPteyrNp6A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH1JvMF5NZnTw77oqMpnGLBE4+ox8AAEJbwqBnlLekPxAiEA3kVnS8WEhqub7b58i9Otvuznhw+/L3ADz+pR9jzM0iM="}]},"maintainers":[{"name":"ianprime0509","email":"ianprime0509@gmail.com"}],"_npmUser":{"name":"ianprime0509","email":"ianprime0509@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/temperament_1.0.0-alpha.1_1519755744413_0.9445507429151183"},"_hasShrinkwrap":false},"1.0.0":{"name":"temperament","version":"1.0.0","description":"A library for working with musical temperaments.","main":"lib/index.js","module":"lib/index.mjs","files":["lib","src"],"scripts":{"build":"rollup -c","eslint":"eslint src","jsdoc":"jsdoc2md -f src/index.js > API.md","prepare":"run-p build jsdoc","test-only":"jest","test":"run-p eslint test-only"},"repository":{"type":"git","url":"git+https://github.com/ianprime0509/temperament.git"},"keywords":["temperament","music","theory","pitch"],"author":{"name":"Ian Johnson","email":"ianprime0509@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ianprime0509/temperament/issues"},"homepage":"https://github.com/ianprime0509/temperament","jest":{"testEnvironment":"node"},"dependencies":{"ajv":"^6.2.0"},"devDependencies":{"babel-core":"6","babel-plugin-external-helpers":"^6.22.0","babel-preset-env":"^1.6.1","eslint":"^4.18.1","eslint-config-prettier":"^2.9.0","eslint-plugin-prettier":"^2.6.0","jest":"^22.4.2","jsdoc-to-markdown":"^4.0.1","npm-run-all":"^4.1.2","prettier":"^1.10.2","rollup":"^0.56.3","rollup-plugin-babel":"^3.0.3","rollup-plugin-json":"^2.3.0"},"licenseText":"Copyright 2018 Ian Johnson\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"temperament@1.0.0","dist":{"shasum":"8fa1faad681e077db35d5dca4d210eab853f1865","tarball":"https://registry.npmjs.org/temperament/-/temperament-1.0.0.tgz","fileCount":12,"unpackedSize":67818,"integrity":"sha512-TE1J2lp8XbQYaMqNz/MLhLOoVLYnLK9h5mBZLfKE6UQtgUONs3rIG2yfITJbX+6ds0oR34qTvB4F79gnoZ4VzQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFgV4Ltdd8IfR4IKMJrle9WIETGprLpE16Gvz9vDdTGZAiEAse8qpgEUq+7T2c3cfOL9cG/0okgPe3Ji2tVXXve+azU="}]},"maintainers":[{"name":"ianprime0509","email":"ianprime0509@gmail.com"}],"_npmUser":{"name":"ianprime0509","email":"ianprime0509@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/temperament_1.0.0_1520011552733_0.1834047257681417"},"_hasShrinkwrap":false},"1.1.0":{"name":"temperament","version":"1.1.0","description":"A library for working with musical temperaments.","main":"lib/index.js","module":"lib/index.mjs","scripts":{"build":"rollup -c","eslint":"eslint src","jsdoc":"jsdoc2md -f src/index.js > API.md","prepare":"run-p build jsdoc","test-only":"jest","test":"run-p eslint test-only"},"repository":{"type":"git","url":"git+https://github.com/ianprime0509/temperament.git"},"keywords":["temperament","music","theory","pitch"],"author":{"name":"Ian Johnson","email":"ianprime0509@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ianprime0509/temperament/issues"},"homepage":"https://github.com/ianprime0509/temperament","jest":{"testEnvironment":"node"},"dependencies":{"@babel/polyfill":"^7.8.7","ajv":"^6.12.0"},"devDependencies":{"@babel/cli":"^7.8.4","@babel/core":"^7.8.7","@babel/preset-env":"^7.8.7","@rollup/plugin-json":"^4.0.2","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-prettier":"^3.1.2","jest":"^25.1.0","jsdoc-to-markdown":"^5.0.3","npm-run-all":"^4.1.5","prettier":"^1.19.1","rollup":"^2.0.3","rollup-plugin-babel":"^4.4.0"},"gitHead":"1273b9cdc416bfcaea84dbb489037eb0e15b75a3","_id":"temperament@1.1.0","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-sGobi/TRA7rWQ/Qfhr7iaOx/Xaih2iKpePvCb+YCttQwmzmYETR/Bw7gv2icbElhn0gsIGWnz4yCiVXzQ/2/aA==","shasum":"91311739132b3844dcd42362f9538dd46abcb8e6","tarball":"https://registry.npmjs.org/temperament/-/temperament-1.1.0.tgz","fileCount":9,"unpackedSize":69452,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaDUhCRA9TVsSAnZWagAAJVkP/1oTRoW47WBlUQtg2vRO\nIew5vwEjPpepd9Vb0GH7E+WUs+hWqD3ZKKng6NohSFrN3GfBWexAFyodgApR\n+JInm4F+vUu42KHOdsFKGe0qTc4bdHW2ClrFmu0Px48Yr1Jl25jhp1XGoU5B\nyqXaZ27C54pd5uQT6sYogmmuHjWIxFlqqB/yiu3D0BBE5KvvtVOrhpCuoIvd\nXgQyoSRac/UR2KT27vb6pmeTppBHPdpie7iulTqp/N2nOEbH21LMq9uP6LQx\naHKP1mcbgh3gSTFaWU0JfjuIPZjWFNUDI/hsDiodIePioosJv8Ivn9ZGVyFe\nsYi1gZn7SJJ/P/qRmZe/EEoJZL63CkdekWEgtx10wuotsKuAK82c1mGqv7g0\nKFZuIY31WA3zQX0/rFDpwZ//23I1Cc/AYU7Zo8RZ5TBSMAnV7/gI+TwlELHC\n38f4zYtdqB91M6LG9g8B2As63gG/ualXn/PzKo7zHupnjycN2E6eBTA6zbMl\ncNXWGx1LKE2wmz0/ojyHsdZYTgNN1HnjRkGSSPJY7Hpb4ki52m3nqNlc/XVX\n1H9LJ99ja/fwqGWed8NCQKTfMBztud2Kt2EM2LWmcuY3f6OGYAIHTWPBME3x\nqEh33nP0p/4yZTlklrqJsr71qT00yECDd3nzqobmYLHRPsr0TcM/66QKj/sc\n8O68\r\n=ZbIa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDfyecANrErce2X47+HOSb3hJqAgTU1lkEWt1G89/lHxAIhAKPOVB94I+nAsYwb6yVd0xPYuwvHAekyu202gwt5K0lw"}]},"maintainers":[{"name":"ianprime0509","email":"ianprime0509@gmail.com"}],"_npmUser":{"name":"ianprime0509","email":"ianprime0509@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/temperament_1.1.0_1583887648640_0.1736260461277923"},"_hasShrinkwrap":false},"1.1.1":{"name":"temperament","version":"1.1.1","description":"A library for working with musical temperaments.","main":"lib/index.js","module":"lib/index.mjs","scripts":{"build":"rollup -c","eslint":"eslint src","jsdoc":"jsdoc2md -f src/index.js > API.md","prepare":"run-p build jsdoc","test-only":"jest","test":"run-p eslint test-only"},"repository":{"type":"git","url":"git+https://github.com/ianprime0509/temperament.git"},"keywords":["temperament","music","theory","pitch"],"author":{"name":"Ian Johnson","email":"ianprime0509@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ianprime0509/temperament/issues"},"homepage":"https://github.com/ianprime0509/temperament","jest":{"testEnvironment":"node"},"dependencies":{"ajv":"^6.12.0"},"devDependencies":{"@babel/cli":"^7.8.4","@babel/core":"^7.8.7","@babel/preset-env":"^7.8.7","@rollup/plugin-json":"^4.0.2","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-prettier":"^3.1.2","jest":"^25.1.0","jsdoc-to-markdown":"^5.0.3","npm-run-all":"^4.1.5","prettier":"^1.19.1","rollup":"^2.0.3","rollup-plugin-babel":"^4.4.0"},"gitHead":"72b7c4acb296c132f3233d1f5f02af8e1c48fbde","_id":"temperament@1.1.1","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-N2X98GSU4z5Bp2k4VWxpY9Cmb/qEOGz93dy5iIb2ZVxG/cDPqGqP/W6caGHVGU2MagghLIs3fm7pgoYg7y3yWQ==","shasum":"f7bd3db96401fab5ea289f13616d28e651e8335a","tarball":"https://registry.npmjs.org/temperament/-/temperament-1.1.1.tgz","fileCount":9,"unpackedSize":69504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaE/JCRA9TVsSAnZWagAA09sP/i62iDFinUqhp7NsOl5l\n8elZoJREY+k3PY+4iat5rNYdK3yBpsD8dXzA7LpVMeOZTVQug4diFyFuzeat\n+5s15pyX7z5Htjj1cRYfYEg8IV1Yas2aQ0uuQuemUa7Z4eqlKyx6DPFyqzbe\nYhNqfiWrA2bQ+G7oFzb1pO6+bkGcjSuIP1DbqSMeN6xxeTk5eXoVwJLIAQSF\ngzoZYSouWPneShixd/FiNasshR7igxN9+MPa0uWduwcU/TDdAzTDQLmkr41d\ntH2Vxm6ILztfCaW2I+U5iRPHgxubIFmKIlbxDsxSrDY7a6sthEcmWTL4D1QJ\nzH1ZCaVq4KFyH14ku5F2Z6nLgLCXtrMgcyQfFgLo0pKei95/QERNwYsIM4BW\nL9V1HH8g6w7LoMXLchzLI+p4ljctRZ8ZyogPPsOOkjLZTZRnk8vu3+gW57nS\nj/Mr9pYMlaGx1WP73nuZwrwO4IsMB7i3lvk8t3KlCbIqh46pf/f+7CYIn5I/\nGpUxB+vl3Nmz7TKMaxGWqXfdw60ctvx0UC2dGqZrIRiLSRtdZOXpU2O7oPaK\nusoxrgOaxar+bgxGCwdX0owLomns17FAev1Uj4PIAxR14E4e/xZgUQ3TFr9u\nu4HhzSSCuIcETosGV+3FxC/p+vu6jH0Y19Omi202TUVfLI9fy5Oip+tXXweB\nXW6b\r\n=+fmJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgtsSblh7fjnVXLKshRrbVkUBnvl/XKGIPsLCyPE3vqQIhAI3F/Y/dpcSLa5swYrBw+KBrcwqNQo3d6HisSlMHUKLR"}]},"maintainers":[{"name":"ianprime0509","email":"ianprime0509@gmail.com"}],"_npmUser":{"name":"ianprime0509","email":"ianprime0509@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/temperament_1.1.1_1583894472594_0.06189529996942156"},"_hasShrinkwrap":false},"2.0.0-alpha.0":{"name":"temperament","version":"2.0.0-alpha.0","description":"A library for working with musical temperaments.","main":"lib/index.js","module":"lib/index.mjs","scripts":{"build":"run-s gen-schema-type compile","check-types":"tsc -p tsconfig.check.json","compile":"rollup -c","eslint":"eslint --ext .ts,.js src","gen-declarations":"tsc -p tsconfig.declarations.json","gen-schema-type":"json2ts src/schema.json src/schema.d.ts","prepare":"run-p build gen-declarations","test-only":"jest","test":"run-p check-types eslint test-only"},"repository":{"type":"git","url":"git+https://github.com/ianprime0509/temperament.git"},"keywords":["temperament","music","theory","pitch"],"author":{"name":"Ian Johnson","email":"ianprime0509@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ianprime0509/temperament/issues"},"homepage":"https://github.com/ianprime0509/temperament","jest":{"testEnvironment":"node"},"dependencies":{"ajv":"^6.12.0"},"devDependencies":{"@babel/cli":"^7.8.4","@babel/plugin-proposal-class-properties":"^7.8.3","@babel/plugin-proposal-object-rest-spread":"^7.9.5","@babel/preset-env":"^7.9.5","@babel/preset-typescript":"^7.9.0","@rollup/plugin-json":"^4.0.2","@types/jest":"^25.2.1","@typescript-eslint/eslint-plugin":"^2.28.0","@typescript-eslint/parser":"^2.28.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.1","eslint-plugin-prettier":"^3.1.3","eslint-plugin-tsdoc":"^0.2.4","jest":"^25.3.0","json-schema-to-typescript":"^8.2.0","npm-run-all":"^4.1.5","prettier":"2.0.4","rollup":"^2.6.1","rollup-plugin-babel":"^4.4.0","typescript":"^3.8.3"},"gitHead":"6060525b7ca1fbfbb4b3827c0ac34f57ba9f7cd0","_id":"temperament@2.0.0-alpha.0","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-MCUn/jHICPXHE/zDHMtPlly1/mDUl/+pGxTN9kNR4uuE4cwb5YzQGuDR4QoCxyLAdV/vEgDJ1eD0c/SNMysY1Q==","shasum":"3226580a47577a81122d486c26eed22c2812209c","tarball":"https://registry.npmjs.org/temperament/-/temperament-2.0.0-alpha.0.tgz","fileCount":11,"unpackedSize":80341,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenG8/CRA9TVsSAnZWagAAcjoP/2+F52k6eV449FfP+H1q\niuGKzFSDwWHkkNi6uOMasXpA19ROtkm1q+cCDPhxosV0K+UDKk8KDP5EMpif\npeN5NESoxtPIrsDGpjv5PhsIhE1w1lekuQOeher+kU7ebDnEloB/bHW/QY1R\nOZbTrLCnkDy+n++A5zm81WlCud5aUg0WoM9v7JMRkKDFKJv+CR+M/NlBNqoW\nZQDMV/VdBqkTKtatAAhqeYpzneKmeVtyHaV6SmNIAm6/3Nr45lK7UTMsGkCF\ng1Tbn+AsW01U2hfcaUtvCky15wRUEh4IdcumaK2+kPThTGddBGuKptrGM6pB\nwFgXE2JAMoxJY8DR0GZwbyOd/J1UatKG/AmVMmBBR9SQDsS6ze/7pYqIbXx7\n8/gMshn2eKlU59UX3krfo4mklj1il8Or+oQqi4iJQ1AEYMIor6ejbBR5SpVp\nunMlcku1lbtMl/zq5AdQ+aN+7Pgt+hWabv5vzbuUAl1jM49ngzuL7dXUpPUm\nPYKraeqshBmatNyiNm0yvPpLH8bF/Gna62WZBwRReLjO3PBr304Gh84lY89G\nFwm7vlpdqOLtqD7i7k9UFJ7RZE2R0b67HDmZbAXn6ZlEa4R6jRVF4wOE7aO9\nUKA6D0dgW3MwhXzzbFVINukUoJpnZZ64NOpHlX9sMkQ05h90L0g44BwsfdEj\nx9Tu\r\n=dkN7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEFPaJLqa4l+zEJ88nWCmttQDT3pnh50ElT+Tcy3ExpEAiEAp344/N8WN1um/d/qNPSthAvxpRLiCNNYS0UMVamf7x4="}]},"maintainers":[{"name":"ianprime0509","email":"ianprime0509@gmail.com"}],"_npmUser":{"name":"ianprime0509","email":"ianprime0509@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/temperament_2.0.0-alpha.0_1587310398743_0.9839367260689862"},"_hasShrinkwrap":false},"2.0.0-alpha.1":{"name":"temperament","version":"2.0.0-alpha.1","description":"A library for working with musical temperaments.","main":"lib/index.js","module":"lib/index.mjs","types":"lib/index.d.ts","scripts":{"build":"run-s gen-schema-type compile","check-types":"tsc -p tsconfig.check.json","compile":"rollup -c","eslint":"eslint --ext .ts,.js src","gen-declarations":"tsc -p tsconfig.declarations.json","gen-schema-type":"json2ts src/schema.json src/schema.d.ts","prepare":"run-p build gen-declarations","test-only":"jest","test":"run-p check-types eslint test-only"},"repository":{"type":"git","url":"git+https://github.com/ianprime0509/temperament.git"},"keywords":["temperament","music","theory","pitch"],"author":{"name":"Ian Johnson","email":"ianprime0509@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ianprime0509/temperament/issues"},"homepage":"https://github.com/ianprime0509/temperament","jest":{"testEnvironment":"node"},"dependencies":{"ajv":"^6.12.0"},"devDependencies":{"@babel/cli":"^7.8.4","@babel/plugin-proposal-class-properties":"^7.8.3","@babel/plugin-proposal-object-rest-spread":"^7.9.5","@babel/preset-env":"^7.9.5","@babel/preset-typescript":"^7.9.0","@rollup/plugin-json":"^4.0.2","@types/jest":"^25.2.1","@typescript-eslint/eslint-plugin":"^2.28.0","@typescript-eslint/parser":"^2.28.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.1","eslint-plugin-prettier":"^3.1.3","eslint-plugin-tsdoc":"^0.2.4","jest":"^25.3.0","json-schema-to-typescript":"^8.2.0","npm-run-all":"^4.1.5","prettier":"2.0.4","rollup":"^2.6.1","rollup-plugin-babel":"^4.4.0","typescript":"^3.8.3"},"gitHead":"af71ca97868829f4dea00f926a2cdb5d6833fde1","_id":"temperament@2.0.0-alpha.1","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-R5i6xak2zMSax3ThPnhritveqe0hwlnxhlIn4Qlgu/QpNgxL9mjmlbUsCQcpm0/pToMFmRFNzj7ZZD1nmTsKAw==","shasum":"a8ff828c32d0308b37778d3f1559a673df1ad207","tarball":"https://registry.npmjs.org/temperament/-/temperament-2.0.0-alpha.1.tgz","fileCount":11,"unpackedSize":80487,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenIXACRA9TVsSAnZWagAASowP/j6rxhWLSVQ4UZ//1QpH\nT2+POi+iglpzpTBAyMnukzBd8mNFuJkCpEHSn8M1VsUTujzLROiRkcS0R9jx\ntMazXMH1ree3GkijFp4Lo9VcNqYxtqJV8gWBrNG081vDRfFPQ0xkjVmi74sg\nD9M0x/X3WI/BTcHo9brmKrJ2lIwUdn42eg71LSk4Vxj+gwNoV6a1Y93DxeFf\nL/65vlT2NI2+EyQaxyhJqi/W16pdnBxQbzXOb5QrtIV0VXkrRcpZB/X2WucT\nMCGhKC+Kwy1DMI2Q5uiuBjcZDBu6FTmPwxboV7mtvoeQ7mbJw38TFZAKX5Sy\nrBSgeiaNByFFzORp3S+/1SyNruJcndKtI/kvsW67lOXghq/TRQ9sFZec9L6w\nfE9Wn1NZPCQa/UWT7N80wV6JSvCWV6BVP+1/5BVG6hYs4dSps34mffZ+S+ma\n5Ih6J6S48ijzQsehHbzZcX1jPD5bNyRGIqBgTuF6Yiw41SX6oBJBd+5rlHUI\ndHTfNFSi5NKsD84EdUHSUzbPt8U4yBWrOwRyM41UOqV00i/jqwn0iSMgWNRv\nsVrtTAGmVqaWxVmw72yM7eerfhDoT0/04fc4MHTSThjUXOrWjwh7LOP1bkVW\nBrXhihaXaFBDRjKLlTiXZOPIm4D8eASLPx7BiT+65VF9t55RxjEoWiLUcASY\nlEw0\r\n=m08b\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBZr6/drfr5wTh3gZ+7AX6fjrgsFHECI+1sDyqL165TpAiEAq1ZvOtFLkmU7aXrStGbyWQLL6HIP748Vq8/qSc5ei4k="}]},"maintainers":[{"name":"ianprime0509","email":"ianprime0509@gmail.com"}],"_npmUser":{"name":"ianprime0509","email":"ianprime0509@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/temperament_2.0.0-alpha.1_1587316159881_0.1965031857449917"},"_hasShrinkwrap":false},"2.0.0":{"name":"temperament","version":"2.0.0","description":"A library for working with musical temperaments.","main":"lib/index.js","module":"lib/index.mjs","types":"lib/index.d.ts","scripts":{"build":"run-p compile gen-declarations","check-types":"tsc -p tsconfig.check.json","compile":"rollup -c","eslint":"eslint --ext .ts,.js src","gen-declarations":"tsc -p tsconfig.declarations.json","gen-schema-type":"json2ts src/schema.json src/schema.d.ts","prepare":"run-s gen-schema-type build","test-only":"jest","test":"run-p check-types eslint test-only"},"repository":{"type":"git","url":"git+https://github.com/ianprime0509/temperament.git"},"keywords":["temperament","music","theory","pitch"],"author":{"name":"Ian Johnson","email":"ianprime0509@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ianprime0509/temperament/issues"},"homepage":"https://github.com/ianprime0509/temperament","jest":{"testEnvironment":"node"},"dependencies":{"ajv":"^6.12.2"},"devDependencies":{"@babel/cli":"^7.8.4","@babel/plugin-proposal-class-properties":"^7.8.3","@babel/plugin-proposal-object-rest-spread":"^7.9.6","@babel/preset-env":"^7.9.6","@babel/preset-typescript":"^7.9.0","@rollup/plugin-json":"^4.0.3","@types/jest":"^25.2.3","@typescript-eslint/eslint-plugin":"^3.0.0","@typescript-eslint/parser":"^3.0.0","eslint":"^7.1.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","eslint-plugin-tsdoc":"^0.2.5","jest":"^26.0.1","json-schema-to-typescript":"^9.1.0","npm-run-all":"^4.1.5","prettier":"2.0.5","rollup":"^2.10.8","rollup-plugin-babel":"^4.4.0","typescript":"^3.9.3"},"gitHead":"7987b87a455480eb601bbd99ecba1626fa25c8a7","_id":"temperament@2.0.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-lxvOz2RbfvuFlB5eAMnr1oD0jT2nJ51ljcGV3rMretl8YPSNr3901th7phwT77WZz+zGF0RNMhmNLpCgVKQ4kg==","shasum":"53c63436a50c3a1373cfabcd7e8c49fd0a1035ad","tarball":"https://registry.npmjs.org/temperament/-/temperament-2.0.0.tgz","fileCount":11,"unpackedSize":78618,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeyXvCCRA9TVsSAnZWagAA+roP/AvEBdgn0y19kczhGrmd\n9N0VZ5xp+lA+CWUTAhdDEOMC/6Lg69s5O2iUPKfEOuf7k5Fp+m9OJKlOyPUh\nLmy1rdO1+m6V2aZ5ETrtm5qv+y//8lv7b7b9TcB6odfbjd9D/v3Xia1IfGn2\nCGg+s2XUMasZNiU8GCZYaJ0batSQD1s6778RqezCLxQgZ++wZdHkP/+1Rzgq\nnb+mc0dL04ufRiH7N7MgWSEi86A0Ie2v+2t3iywme9mhrXgOq01voGlaaORk\nQfGPu0GgQ1WBRdr2cSTpEIM2EMnQPFrwiDR6iZNTjp5QXtK06c8B3F8r3PVT\ndpaDxXcnJz9tyPgsN6Ak+Rn0aElsdF+5ct3Ow7SFeF177KVIZmvB28eZsv3Z\nXre/nCqBqZQMIbkuiksDM21dZ92FAkEGdcN/s7IiNcPQNtMtZvnhzbD8oVfJ\nVzpmvS4XOC/o4ckbsjsonRN1VbzyPUG1d560+UzhmcH7iPckRY8wt3fvbuAK\n0mS9jQlRDyk9ht8/Kyfs5UN2O8M/T4pw8n2ADMsiNPT2uVLyHX6ifTgC/g/J\n72R7DF9trCD9UL5k2MF3sNyk97hyZFXvPncDe0542fdctkCsb2hch4HaTXl5\nJC4Ehx6hiu1Ot70frrzpVVfHVqN0kWY0om0EPlwYlN8/lg0UzzKXAhRGUwii\nojM+\r\n=ukHa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCFMnBOl2BGUWLZl0r+Sizu3ZHmy32WPpo7/Fdqo5c8wAIhAJw0EYIE+Dzx/kGOLk2uPIKnRnwltU3exorGemwMLNz4"}]},"maintainers":[{"name":"ianprime0509","email":"ianprime0509@gmail.com"}],"_npmUser":{"name":"ianprime0509","email":"ianprime0509@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/temperament_2.0.0_1590262722511_0.6686083623095087"},"_hasShrinkwrap":false},"2.0.1":{"name":"temperament","version":"2.0.1","description":"A library for working with musical temperaments.","main":"lib/index.js","module":"lib/index.mjs","types":"lib/index.d.ts","scripts":{"build":"run-p compile gen-declarations","check-types":"tsc -p tsconfig.check.json","compile":"rollup -c","eslint":"eslint --ext .ts,.js src","gen-declarations":"tsc -p tsconfig.declarations.json","gen-schema-type":"json2ts src/schema.json src/schema.d.ts","prepare":"run-s gen-schema-type build","test-only":"jest","test":"run-p check-types eslint test-only"},"repository":{"type":"git","url":"git+https://github.com/ianprime0509/temperament.git"},"keywords":["temperament","music","theory","pitch"],"author":{"name":"Ian Johnson","email":"ianprime0509@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ianprime0509/temperament/issues"},"homepage":"https://github.com/ianprime0509/temperament","jest":{"testEnvironment":"node"},"dependencies":{"ajv":"^6.12.4"},"devDependencies":{"@babel/cli":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-object-rest-spread":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@rollup/plugin-json":"^4.1.0","@types/jest":"^26.0.13","@typescript-eslint/eslint-plugin":"^4.1.0","@typescript-eslint/parser":"^4.1.0","eslint":"^7.8.1","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","eslint-plugin-tsdoc":"^0.2.7","jest":"^26.4.2","json-schema-to-typescript":"^9.1.1","npm-run-all":"^4.1.5","prettier":"2.1.1","rollup":"^2.26.11","rollup-plugin-babel":"^4.4.0","typescript":"^4.0.2"},"gitHead":"3ef423752aff0771b4b3b1b7f959e2b0f791fe49","_id":"temperament@2.0.1","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-zG4tK9OfvTLwj7mC7ei7Ye2yiiK731xGMNB4XonfgXjhrKha/pen+McZKtztfkqPaK7eIPPvceDgybr32g6B8g==","shasum":"e723ad2b5dbf106b1b22ac7be530020a8db5f909","tarball":"https://registry.npmjs.org/temperament/-/temperament-2.0.1.tgz","fileCount":11,"unpackedSize":78751,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXMQjCRA9TVsSAnZWagAAF2MP/3x/CwjpTVzrRUIuVZoB\nbBZaboOB8Zy4YXp4t8oCJVJKO4xgfY4Av/Dug4w2l9x7vcgJdSTt9UofmOU5\n5IlnItbhX3lu2EB7KQj1ysX/Py03nD/ePshrvQuYoq7yQkTsZt54Xf+0NhQB\nIl5d6zFDHK0rkpEyNt+yUGbfJaWMRl64w/DeLLrEeHa2vWzVu8+cU2213N0B\nKuEPLTtsHpQenuVuWLMGjy9Bn3V9wcxprbeRDSQRhDd+8sIA2NxGqPyCvB2Z\nTX6fuFErGTRQKamaoqn8Q5rRpRoyzgIFj/QX/D8sHMlxHP8wKxj6vyeB2vZf\n1JcPAEhJy6WRW+XSDk7JCctlCbTA+c9k+ZdXNVQkT17dnHI3CAEptYiNY8cU\n/Yxw4tKe0/BYZrVth7Q2Wy2tY7aYvgbQBqBo2pFMX/vDvMKV5Ztn327crz/X\n+XIy3oOETD1ts+bXltgwkqkBaYcnUwnbrZf8zlljFPmjjqufPnL7JuCJorLV\nrUbp0p3a0QBuxJCP2VcFmV3fasmWeX66EuHs4zvf/vN3IYLL1nP9mrULoSlF\nmzbuiOUZtIH97ZeDWQQun1A4b0oU+mPxnK7x97S4FMJg20mXyykNM6XMqpBK\nwX4fPKyvw75Y2NgfgHLITYzvxB/AI76migWglwbD2VZN248X9q1Zxy1mcqmv\nVRLK\r\n=Gjz4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCbEUec+/VeKzAU3LGAI+Q1d2zzQd9+BKvy2iiryL1cIwIhALjekC6gDYn4ltFmC6ew7CwtQPGBXEp2vKIxHa2/mhRm"}]},"maintainers":[{"name":"ianprime0509","email":"ianprime0509@gmail.com"}],"_npmUser":{"name":"ianprime0509","email":"ianprime0509@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/temperament_2.0.1_1599915042622_0.6692041334779657"},"_hasShrinkwrap":false},"2.1.0":{"name":"temperament","version":"2.1.0","description":"A library for working with musical temperaments.","main":"lib/index.js","module":"lib/index.mjs","types":"lib/index.d.ts","scripts":{"build":"run-p compile gen-declarations","check-types":"tsc -p tsconfig.check.json","compile":"rollup -c","eslint":"eslint --ext .ts,.js src","gen-declarations":"tsc -p tsconfig.declarations.json","gen-schema-type":"json2ts src/schema.json src/schema.d.ts","prepare":"run-s gen-schema-type build","test-only":"jest","test":"run-p check-types eslint test-only"},"repository":{"type":"git","url":"git+https://github.com/ianprime0509/temperament.git"},"keywords":["temperament","music","theory","pitch"],"author":{"name":"Ian Johnson","email":"ian@ianjohnson.dev"},"license":"MIT","bugs":{"url":"https://github.com/ianprime0509/temperament/issues"},"homepage":"https://github.com/ianprime0509/temperament","jest":{"testEnvironment":"node"},"dependencies":{"ajv":"^8.8.2"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/plugin-proposal-class-properties":"^7.16.0","@babel/plugin-proposal-object-rest-spread":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@rollup/plugin-json":"^4.1.0","@types/jest":"^27.0.3","@typescript-eslint/eslint-plugin":"^5.6.0","@typescript-eslint/parser":"^5.6.0","eslint":"^8.4.1","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","eslint-plugin-tsdoc":"^0.2.14","jest":"^27.4.4","json-schema-to-typescript":"^10.1.5","npm-run-all":"^4.1.5","prettier":"2.5.1","rollup":"^2.61.1","rollup-plugin-babel":"^4.4.0","rollup-plugin-copy":"^3.4.0","typescript":"^4.5.3"},"gitHead":"7322f6d197adcf056d6f5aa2c1ef2bc15f9f8c2a","_id":"temperament@2.1.0","_nodeVersion":"16.13.0","_npmVersion":"8.1.0","dist":{"integrity":"sha512-VujXl2mqxFBIvWLbDFkZC2AL6qa5co78etjHSEkVEgHKRPgevJDt0Znuwq++PsCxCFw5dRf53TJdpF3yGnZOVg==","shasum":"af5d3661b9cb053c999cce748f626dc674b48b56","tarball":"https://registry.npmjs.org/temperament/-/temperament-2.1.0.tgz","fileCount":11,"unpackedSize":82376,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhtOoUCRA9TVsSAnZWagAALBQP/ildtOXCh5NMjDciJ1D7\n/8Oap1vO4RlP3whiAVdTEt3SY2GnqyepnGgoeZRIJ/lX+0jvsOFjcQuQ/Cck\n7nzvdw8xMPfx7f11Gjmvx4f0s3E/Ha6628lphyzn+AjKwXwTTBVoqptCbBGT\nn1hqafX/607JXza5xN3DMKpnzI+cPvFnjck48t+a557oLX+h6vfcQy436iuy\nBcqvzEqSIxSePAARkYX3WmUwOQOGSAiGhmUJ3dltKT8e+NTepNYF0Fxr0xTL\nwO4mEs+9X3leFO1TdyCcq07sGTBYeVwN+8tmVz6NUlqMLIdUw9dvUSJWvRoA\nVn2Vrts0J+26J80KlI0lL4OrYGHXQ48J7x3Q7BoXF285vVEWV8GlpXQYWOlz\npGLqSJGH6+DMi/I0rhT5WQ5LdOv9gTKE4PWmtoDGGhMNNHAqYKJwQSnBfyqd\n1145qPkAz95hrz3M0mTYxB6XfSopI/lIsT2kEV3zrYAllOj9+P6Y3Gd+Ybgv\nv5c5Oka1pXQ8TYblTLbQZCZe0drUL+q9LwXztskILwucQgaw/hxxjZ184RPi\n4InxjkzzHvv8ZtMdyp+1zB6PCB+kTJNMHooJp2Lbe8Scnh6mSEO0mhxQ1tY/\njNzvRzsHc6+e39sBBrPNOgqk0fyJYhE6jyyljQs6ATlow91OnQvz9BbpDSoG\naOf3\r\n=lEvn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDD16LZ2tgPATn3/rBnZab7YAATfFO82wKTrPqLxb0r0gIhAKrrX1wz1bvmxcT0rLlygxSCJXzz04hEIahqItEpj4FA"}]},"_npmUser":{"name":"ianprime0509","email":"ian@ianjohnson.dev"},"directories":{},"maintainers":[{"name":"ianprime0509","email":"ian@ianjohnson.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/temperament_2.1.0_1639246355716_0.6720129832255479"},"_hasShrinkwrap":false},"2.2.0":{"name":"temperament","version":"2.2.0","description":"A library for working with musical temperaments.","main":"lib/index.js","module":"lib/index.mjs","types":"lib/index.d.ts","scripts":{"build":"run-p compile gen-declarations","check-types":"tsc -p tsconfig.check.json","compile":"rollup -c","eslint":"eslint --ext .ts,.js src","gen-declarations":"tsc -p tsconfig.declarations.json","gen-schema-type":"json2ts src/schema.json src/schema.d.ts","prepare":"run-s gen-schema-type build","test-only":"jest","test":"run-p check-types eslint test-only"},"repository":{"type":"git","url":"git+https://github.com/ianprime0509/temperament.git"},"keywords":["temperament","music","theory","pitch"],"author":{"name":"Ian Johnson","email":"ian@ianjohnson.dev"},"license":"MIT","bugs":{"url":"https://github.com/ianprime0509/temperament/issues"},"homepage":"https://github.com/ianprime0509/temperament","jest":{"testEnvironment":"node"},"dependencies":{"ajv":"^8.8.2"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/plugin-proposal-class-properties":"^7.16.0","@babel/plugin-proposal-object-rest-spread":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@rollup/plugin-json":"^4.1.0","@types/jest":"^27.0.3","@typescript-eslint/eslint-plugin":"^5.6.0","@typescript-eslint/parser":"^5.6.0","eslint":"^8.4.1","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","eslint-plugin-tsdoc":"^0.2.14","jest":"^27.4.4","json-schema-to-typescript":"^10.1.5","npm-run-all":"^4.1.5","prettier":"2.5.1","rollup":"^2.61.1","rollup-plugin-babel":"^4.4.0","rollup-plugin-copy":"^3.4.0","typescript":"^4.5.3"},"gitHead":"a4aed38a1fec143da6e5d4d454d76a868347397d","_id":"temperament@2.2.0","_nodeVersion":"16.13.0","_npmVersion":"8.1.0","dist":{"integrity":"sha512-x+JSlg/8V6syYobYLRx5c8hnNrqtloq1mn/G/hEtrB0X+BikJYGZWigXgZoH3RpX707cKuJKZZn8DZFxEFx/8w==","shasum":"42b36d57e37a348d9f9da58b316810c8bca851dc","tarball":"https://registry.npmjs.org/temperament/-/temperament-2.2.0.tgz","fileCount":11,"unpackedSize":82442,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhtWkICRA9TVsSAnZWagAAx24QAI6dtJduTDOkxa79KV70\nLM+HG3E8Z+vXK71k73Ocgh0SBrykUZ7i3jULyyCo0/G0IABadyUGC+faYnXx\nth05EGI4btSADKpsMj1aQn6fQ9vK7n/EkEdnFkRj9+29rfJEPeyufhjQkb5F\nTCdlWvaflWh77PWcWO1o4p+6f1Z9FOgeXqtB4GFSKW6FMoI0WPe+92EIpENv\nDUAlSWv9GXLffTxDADIPREquE4KqfjmobuTR3C6MYmvONDXLEd2Ml7RbkFDT\n0n5ME1RMcinFOwEFrGzsa4jO7VYljGHk0MxhWJ5yqRI02LVgZc6MRMWRRQoD\n8awbEjaW+ey1Qa7gL1PBFTrDnLnFOlBYcgAclI0XW7IvJmw1S36Swc9HiW8P\nqcSZCaF/pdposYn29I9l9Or2ULg6uTDVkcCAgNemmqOVHtOSPF3WjzdNhmvM\nPZuqtqzFtMQUwW5rrvql7ZbVv8NRRVeR5YYHMnWs9iOAfS6KtCxgLIrfFLYY\n9oPegU4FrKZuKKoyXFaZ4A/CR/SwzYd5GIzV+WtpOgBUrZTHLq/JnOpR5iag\nJT9C+R7Q1GeS36h34DuYZPtYSfWMEW2ZxnNES66Iq6aqnuEAqyi3PrOVXfir\n+Ow0NbwcPwaDKjqLVrXfIqbXl+6dgXSTbk4abV2X4nN9HZ9QX4iFmdSpV+ds\nqWHY\r\n=uwf1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDju44nYrglDjldSHdbMQj03iQmK6xEF5pgV1gvXQYS6AIgL18fG9BVplLITivwW2mRctRdqla0oMHFdd8SYW413tc="}]},"_npmUser":{"name":"ianprime0509","email":"ian@ianjohnson.dev"},"directories":{},"maintainers":[{"name":"ianprime0509","email":"ian@ianjohnson.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/temperament_2.2.0_1639278856120_0.988860274272273"},"_hasShrinkwrap":false},"3.0.0":{"name":"temperament","description":"A library for working with musical temperaments.","main":"./dist/temperament.umd.js","module":"./dist/temperament.es.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/temperament.es.js","require":"./dist/temperament.umd.js"}},"scripts":{"build":"run-s build:lib build:types","build:lib":"vite build","build:types":"tsc -p tsconfig.types.json","compile":"rollup -c","fmt":"prettier --write .","test":"run-p test:*","test:check":"tsc --noEmit","test:fmt":"prettier --check .","test:lint":"eslint --ext .js,.cjs,.mjs,.ts .","test:unit":"jest","prepare":"json2ts src/schema.json src/schema.ts"},"repository":{"type":"git","url":"git+https://github.com/ianprime0509/temperament.git"},"keywords":["temperament","music","theory","pitch"],"author":{"name":"Ian Johnson","email":"ian@ianjohnson.dev"},"license":"MIT","bugs":{"url":"https://github.com/ianprime0509/temperament/issues"},"homepage":"https://github.com/ianprime0509/temperament","dependencies":{"ajv":"^8.8.2"},"devDependencies":{"@types/jest":"^27.0.3","@typescript-eslint/eslint-plugin":"^5.6.0","@typescript-eslint/parser":"^5.6.0","eslint":"^8.4.1","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","eslint-plugin-tsdoc":"^0.2.14","jest":"^27.4.4","json-schema-to-typescript":"^10.1.5","npm-run-all":"^4.1.5","prettier":"2.5.1","semantic-release":"^18.0.1","ts-jest":"^27.1.2","ts-jest-resolver":"^2.0.0","typescript":"^4.5.3","vite":"^2.7.6"},"version":"3.0.0","gitHead":"9cbbbb7c45a3f2879f0519c761b230b527093f43","_id":"temperament@3.0.0","_nodeVersion":"16.13.1","_npmVersion":"7.24.2","dist":{"integrity":"sha512-tHsWZGcck0AT2YEUpG4QxBG1CchpiOwyk/iHIa4HdmzAZHKGgGQzUaFRnHkPCShuRN5fEG98Me4rfpV3U8bjtw==","shasum":"cd40c5e6ac1f0a9d4ce512cec86f7f02ebcc5660","tarball":"https://registry.npmjs.org/temperament/-/temperament-3.0.0.tgz","fileCount":3,"unpackedSize":9168,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhxjLOCRA9TVsSAnZWagAA3LAQAI9X39YxXV3J0jnK4O9w\nI2+Bjmuf7+IGCF8sXhm6jXXlRNC45oIemyfOsOj0ut42kEz65RcaOcnFGWn6\njeO09FHXPHGAlmQ3teoyE1X3ucQT3sbBi83TufW6CKDT4XoOlpcLqTZAgDkb\nCWhcQgVpEngzeah6CdL6ahovct51Wv81cqmQCTgOse7jJHIf4kMEk+Hp97LL\n0O3AI0b0IFSsIkcomVR7AWWJiHsn9V1D8VkJijWGKR1ys3YTJ+yrBlDfjyzn\nCPNHR1ayBRN4azb0L1yrx9e7pR9jaUlnm0AJsQg4Fu5UMq8mawW9vm1jTlHd\nc5QPb+pJbfRfBDD2SFz93fbdM4OsX/tDMmcmfyF4HDDcQKnqQFHVU4vkdDpS\n5QNGaG/2zahK4n4LCV55uD1fq3W83G9XUA4NlM2J07I2FiN1KGrPs4vEOiUs\nDfCIs5Saaf52KobnHH3zaByzfK57GtlzrvtJAA8a537VdmAmYzJCCORZc+Ds\n0pfUlqc1+dkQdqU9UD0r9ntRybPep2uqidzi2XAmdU172sauMdGK3Pa0gbeY\nhOr9yR8LornYpmnJLccu5kNliitsbNpG6Qy2P1LX7XxaSiA9POlzSsPdv/N5\nLM9KNC1FoZr3e86Dmuhoz6sgK3DpsRg+0u1JlcmowdOG/YOF+Eo3/F4MR4Wt\n/SMR\r\n=5xkF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEZC1oJgGFEdZr7JkH4GQ0VgJMp9bWU9XkWWaVYRU6k1AiEAs2QjNBPL3tS7fTSti/JLNT08G6D7zAwtZ6dZWxO/nX4="}]},"_npmUser":{"name":"ianprime0509","email":"ian@ianjohnson.dev"},"directories":{},"maintainers":[{"name":"ianprime0509","email":"ian@ianjohnson.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/temperament_3.0.0_1640379085921_0.6920372854647387"},"_hasShrinkwrap":false},"3.0.1":{"name":"temperament","description":"A library for working with musical temperaments.","main":"./dist/temperament.umd.js","module":"./dist/temperament.es.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/temperament.es.js","require":"./dist/temperament.umd.js"}},"scripts":{"build":"run-s build:lib build:types","build:lib":"vite build","build:types":"tsc -p tsconfig.types.json","fmt":"prettier --write .","prepack":"npm run build","test":"run-p test:*","test:check":"tsc --noEmit","test:fmt":"prettier --check .","test:lint":"eslint --ext .js,.cjs,.mjs,.ts .","test:unit":"jest","prepare":"json2ts src/schema.json src/schema.ts"},"repository":{"type":"git","url":"git+https://github.com/ianprime0509/temperament.git"},"keywords":["temperament","music","theory","pitch"],"author":{"name":"Ian Johnson","email":"ian@ianjohnson.dev"},"license":"MIT","bugs":{"url":"https://github.com/ianprime0509/temperament/issues"},"homepage":"https://github.com/ianprime0509/temperament","dependencies":{"ajv":"^8.8.2"},"devDependencies":{"@types/jest":"^27.0.3","@typescript-eslint/eslint-plugin":"^5.6.0","@typescript-eslint/parser":"^5.6.0","eslint":"^8.4.1","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","eslint-plugin-tsdoc":"^0.2.14","jest":"^27.4.4","json-schema-to-typescript":"^10.1.5","npm-run-all":"^4.1.5","prettier":"2.5.1","semantic-release":"^18.0.1","ts-jest":"^27.1.2","ts-jest-resolver":"^2.0.0","typescript":"^4.5.3","vite":"^2.7.6"},"version":"3.0.1","gitHead":"c97cb43e82745035355875bec0e4898d22df88c6","_id":"temperament@3.0.1","_nodeVersion":"16.13.1","_npmVersion":"7.24.2","dist":{"integrity":"sha512-52Pa9YlNWuYshVbjwqru2smCLGJ47F47VdYgwnBUyAlFkhVwq+iVaMfU2RG0YtTb5CcxKuLV0ulrE1i+krhAwQ==","shasum":"1e5b12a7269b9d16247d17623ed5e4e1517b0434","tarball":"https://registry.npmjs.org/temperament/-/temperament-3.0.1.tgz","fileCount":9,"unpackedSize":59658,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhyd2JCRA9TVsSAnZWagAAKRUP/jjgozwQKLduMV6h9xHj\nbQd27deIiWx1XHV27COUVnB//trCMJRtsVrO9ed+Q9yX92exmufDRZhoTEbi\n946LIHtPdLauo14BKkr1oQAZ5TkBcIsC6s7cnkOm266JiG7yuopdf7tK+eFI\niUXoYRSABCspHNfRkuExUj0+3Uum9AjwI6LyGduDTh2EQLJtuH19/TvpzzuG\n60oA9qFDwcnfQYY68tLSlj6wWM34NHbgoeW+Qq6oM5vkyrN46R/VF0EKFpSv\n85skfnfQFhJctE86o10988XfL0DtyanI/ibRgzRlXjB10RJx1IrHr+N7D6Gj\n2odJQROlj3CN0n4yzAdnYTKPd2gFxh8ugoSdsbhwLLMYHLV63lDpsM+B2ED8\nKINH/32fOl+uqz5XEgJt9zAApLS5DChuERHC2B4kNurbaTbitipKg57hBbWI\nNtUfbX8h3AUz4tL/A6zaPrckV3h6hz/SOiicqGK2p2qAQUYnCQDbeGC7W502\nQNPoPcsS9TrwjDP/xvk4BuTnapL1O37dd0kBnVqPNbDUjmzi6UlU/maqNrFv\n1ex/HQWlur9wDtA/R4KcB7B21WmSbcWz2c0n4rVafHcFF/HOiGpssDEI9GMI\nxB1pyvbIKHT/R648uJDOrShRqfNQGd11GnzW6zgcpICh61gYf2pPMwL0PcP/\nStFn\r\n=DW35\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBLlf4Nae6WawJBHa71M9vx3Drl+LxzOKS2MeSwBVgSrAiEAw+qmUmpcsfBWHZRxYLDnXNt8u369PYfgo2ZMLu5i8GY="}]},"_npmUser":{"name":"ianprime0509","email":"ian@ianjohnson.dev"},"directories":{},"maintainers":[{"name":"ianprime0509","email":"ian@ianjohnson.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/temperament_3.0.1_1640619401208_0.19398313493727448"},"_hasShrinkwrap":false},"3.0.2":{"name":"temperament","description":"A library for working with musical temperaments.","main":"./dist/temperament.umd.cjs","module":"./dist/temperament.es.mjs","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/temperament.es.mjs","require":"./dist/temperament.umd.cjs"}},"scripts":{"build":"run-s build:lib build:types","build:lib":"vite build","build:types":"tsc -p tsconfig.types.json","fmt":"prettier --write .","prepack":"npm run build","test":"run-p test:*","test:check":"tsc --noEmit","test:fmt":"prettier --check .","test:lint":"eslint --ext .js,.cjs,.mjs,.ts .","test:unit":"jest","prepare":"json2ts src/schema.json src/schema.ts"},"repository":{"type":"git","url":"git+https://github.com/ianprime0509/temperament.git"},"keywords":["temperament","music","theory","pitch"],"author":{"name":"Ian Johnson","email":"ian@ianjohnson.dev"},"license":"MIT","bugs":{"url":"https://github.com/ianprime0509/temperament/issues"},"homepage":"https://github.com/ianprime0509/temperament","dependencies":{"ajv":"^8.8.2"},"devDependencies":{"@types/jest":"^27.0.3","@typescript-eslint/eslint-plugin":"^5.8.1","@typescript-eslint/parser":"^5.8.1","eslint":"^8.4.1","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","eslint-plugin-tsdoc":"^0.2.14","jest":"^27.4.4","json-schema-to-typescript":"^10.1.5","npm-run-all":"^4.1.5","prettier":"2.5.1","semantic-release":"^18.0.1","ts-jest":"^27.1.2","ts-jest-resolver":"^2.0.0","typescript":"^4.5.3","vite":"^2.7.7"},"version":"3.0.2","gitHead":"a0775bb0d05c170f1291c30537a9c5ecbf8947d9","_id":"temperament@3.0.2","_nodeVersion":"16.13.1","_npmVersion":"7.24.2","dist":{"integrity":"sha512-i1vqNTz5H8gML1DXGLd66Pr3MoSzIWhE1CG4OkATpPUEBV4Q9zp6cwOJlSaZ1d/unn8RldjxkwNVff460GZKeQ==","shasum":"f04a5a1d56a4b3e571cd58f16a6077acde743974","tarball":"https://registry.npmjs.org/temperament/-/temperament-3.0.2.tgz","fileCount":9,"unpackedSize":59702,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhzgGLCRA9TVsSAnZWagAAqUcQAKKOQkZm5eLynOLpvZsx\n17JkP5iyOibkOX9viwCSNiUqYpvyKrTIeTQ2v5H5eBl3fJ7ftnjNSjgXiCtE\njU1NjHbUDwaDDJ+Tzayl3qx+niF2MikR1PqrI+NZYK176f5uVvmBJuXhyCKi\n5rBpzsGFr7DP4IqbqK8PPwB+0krmJYbHUUkIlsw+oAkACKxDLBmTS4lvfjXU\nkdHuUVAcmldGdi582TZ865oj3ejNaBDDs4IpotuSYKqXEZiYcl+quSW6HbB+\nt7E8tu88Ueu+5F3LRQKrZaLMCW8s8zJy5h+YwXkFPxrY9u6a+ezZG+ufeiqG\nZ6ZmDwD1w9U6bSFgceuwB853n/LN4ths4IvqJFZfue/ujvP6exVZBTENbT2g\nNrTQuaklAil/whkYdz1YtrUFrLqG/v7XEjoyZP9t86/0LIpAtKzdz/qMy9ak\nAUm0vdjkmN+9HJ53Yn3PalotQNUL1X8bQfF9mOHpSMMegn34Yj+BE4sVR4vB\n0Aq7L+xUzUHdlZe9Mc2nRhbBbD0w6KEqZgeWFkwxfn6cBTjmYMAHIp+i+Gbl\nN7H6ttFhrH0yyZU743MJ1V1k2L27V2cYD9riuHZ6GLzJogQs45uE057pIZ8W\n6kkxCifH0FqyEPW6ryRCB0dsqTWGru2bQ7h6TZrd0YDasraxUwGGGjf3gMmv\nn3SV\r\n=eK2g\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF3bPLJoVOqAUq7atooF1MWeGzUCUr1hfQhCSQWfUdEjAiEAkDNFpV5su5FBmqA+dV293Rsj0lMHQPWr1QggfoMVjmA="}]},"_npmUser":{"name":"ianprime0509","email":"ian@ianjohnson.dev"},"directories":{},"maintainers":[{"name":"ianprime0509","email":"ian@ianjohnson.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/temperament_3.0.2_1640890763835_0.7212870946649004"},"_hasShrinkwrap":false},"3.0.3":{"name":"temperament","description":"A library for working with musical temperaments.","main":"./dist/temperament.umd.cjs","module":"./dist/temperament.es.mjs","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/temperament.es.mjs","require":"./dist/temperament.umd.cjs"}},"scripts":{"build":"run-s build:lib build:types","build:lib":"vite build","build:types":"tsc -p tsconfig.types.json","fmt":"prettier --write .","prepack":"npm run build","test":"run-p test:*","test:check":"tsc --noEmit","test:fmt":"prettier --check .","test:lint":"eslint --ext .js,.cjs,.mjs,.ts .","test:unit":"jest","prepare":"json2ts src/schema.json src/schema.ts"},"repository":{"type":"git","url":"git+https://github.com/ianprime0509/temperament.git"},"keywords":["temperament","music","theory","pitch"],"author":{"name":"Ian Johnson","email":"ian@ianjohnson.dev"},"license":"MIT","bugs":{"url":"https://github.com/ianprime0509/temperament/issues"},"homepage":"https://github.com/ianprime0509/temperament","dependencies":{"ajv":"^8.8.2"},"devDependencies":{"@types/jest":"^27.4.0","@typescript-eslint/eslint-plugin":"^5.9.1","@typescript-eslint/parser":"^5.9.1","eslint":"^8.8.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","eslint-plugin-tsdoc":"^0.2.14","jest":"^27.4.7","json-schema-to-typescript":"^10.1.5","npm-run-all":"^4.1.5","prettier":"2.5.1","semantic-release":"^18.0.1","ts-jest":"^27.1.2","ts-jest-resolver":"^2.0.0","typescript":"^4.5.3","vite":"^2.7.13"},"version":"3.0.3","gitHead":"0077479d1c8967ac3256ffd873964f8e57ecf870","_id":"temperament@3.0.3","_nodeVersion":"16.13.2","_npmVersion":"7.24.2","dist":{"integrity":"sha512-ye5oKaeL58PaIcmPvLAbHBRIowUjX8jfLCbsQUFBDwf3t9YN8WbPjDgZ1hIBNLc16daAVjXyQsgNFAb7DCCnQw==","shasum":"40cdaea10c07eee78882f82e44da93b067d22be1","tarball":"https://registry.npmjs.org/temperament/-/temperament-3.0.3.tgz","fileCount":9,"unpackedSize":59703,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh+IgMCRA9TVsSAnZWagAATW0P+gNfDEIKD3iZQx9/A2un\nN/HGir/PDCLhWXtt+dL80NKT6HqiwIGbY1tJ/mKVYt5wPU6kH+HuEjq49kg1\nd3cDsBVBwZ9561S6PyGAH+S8Upr/P608j+daNXvzvkaZqkNedVsqRHIgH6nC\nGrUit2kSSjJtqASTgUncSSZpL6MYV6etgFrUmgp7QTCTYf2CFWkTkSSYvJWc\nwHWKWtfWrmQf3Wj/goy3nKGRTvlQ7ACaO3kDuGFHjiFEgoNv5JMlYg7mpFXy\nyBJUfS1ITQ2/nLsWJb/B/JajzLOLOE4aziIrUubSKNNxWrMiSc3gB6z7fCnu\nC9Xt8s26jKmxvhks0x+TP+U0dvhxErmQPT+UfkQwSzlOrmvnJiPPbADfJrP3\n1Ij96IC4KBDdUHys+1p7sLIH/weNZRaqCsXTqUq5Ic1KJJSOQFFkuMRpCZfg\nS38ZQys9BNRXGSRSfLC5EQN5IeX8vROGNvb8Gc7DEWVB2TlVmMGccjOWGZr+\nqGC5c6LYotrA7oD8mfsun8ytlR8qSa3pPS3Y+zU+tw1Y3pK5XNhaOt/GnTWL\nQPZE7XbLQocpeui4CH18Sflay2Zhr3ivrBKz1wdzcPuH/ZJNv4QTlYc/U+h7\n3uOlLNLQHsg8nxegtqrqE2/sMrieWXANX8RLZ5lGjQ+M+KGc5n32CeKPSNfd\nmDHE\r\n=HJfw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWjl1q8EYXsLaJy/XIsNucI/q5QcGG3ZLmS8UZfjkaoQIhAMVTLpO6+0yAnOtpyZo6n7EjpmCGu1VmaIqhG4oNS746"}]},"_npmUser":{"name":"ianprime0509","email":"ian@ianjohnson.dev"},"directories":{},"maintainers":[{"name":"ianprime0509","email":"ian@ianjohnson.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/temperament_3.0.3_1643677708295_0.6090613467842791"},"_hasShrinkwrap":false},"3.0.4":{"name":"temperament","description":"A library for working with musical temperaments.","main":"./dist/temperament.umd.cjs","module":"./dist/temperament.es.mjs","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/temperament.es.mjs","require":"./dist/temperament.umd.cjs"}},"scripts":{"build":"run-s build:lib build:types","build:lib":"vite build","build:types":"tsc -p tsconfig.types.json","fmt":"prettier --write .","prepack":"npm run build","test":"run-p test:*","test:check":"tsc --noEmit","test:fmt":"prettier --check .","test:lint":"eslint --ext .js,.cjs,.mjs,.ts .","test:unit":"jest","prepare":"json2ts src/schema.json src/schema.ts"},"repository":{"type":"git","url":"git+https://github.com/ianprime0509/temperament.git"},"keywords":["temperament","music","theory","pitch"],"author":{"name":"Ian Johnson","email":"ian@ianjohnson.dev"},"license":"MIT","bugs":{"url":"https://github.com/ianprime0509/temperament/issues"},"homepage":"https://github.com/ianprime0509/temperament","dependencies":{"ajv":"^8.9.0"},"devDependencies":{"@types/jest":"^27.4.0","@typescript-eslint/eslint-plugin":"^5.10.2","@typescript-eslint/parser":"^5.10.2","eslint":"^8.8.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","eslint-plugin-tsdoc":"^0.2.14","jest":"^27.4.7","json-schema-to-typescript":"^10.1.5","npm-run-all":"^4.1.5","prettier":"2.5.1","semantic-release":"^18.0.1","ts-jest":"^27.1.3","ts-jest-resolver":"^2.0.0","typescript":"^4.5.3","vite":"^2.7.13"},"version":"3.0.4","gitHead":"87c9d54a924ed8d4e1495d7ebe564c12a0b06c75","_id":"temperament@3.0.4","_nodeVersion":"16.13.2","_npmVersion":"7.24.2","dist":{"integrity":"sha512-zylF1TZqOg7JYfXytQT/v3aneYqXUuXBISGx8ht7Gv42GbAkYeJWyeeSdEGkeXX4EssIyamIDOiWB6Pzp3N0rw==","shasum":"1f7bfd86c0e30f91c37d15660f6a9481a31f3fa1","tarball":"https://registry.npmjs.org/temperament/-/temperament-3.0.4.tgz","fileCount":9,"unpackedSize":59705,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh+IhRCRA9TVsSAnZWagAAnMAP/3srq2C80lm3BtdqmfRI\nRbNvGW02jO2c/vgmLQy+5pSJ2t5TuXSCS6/hWC06JbAVmQmR7W+L/ppxgRVJ\n4ODzsdX9I8awCJaNWF9pOm42nLXhOuK6Ylz5PJEyIGM6pgsaDJJ9s5delGFJ\nEdi/+hj7mHnY2DMVqo1jXwqDhO2aOqdgGLgmaGiqiwyLehz2l1Xu6WeYIah6\nPLLvi5NT/q3Kppb1z1E5c1TOjPqVL/Ajank/HXZ7nbgQIQbwfa1VEkA2bA6U\nVh+sQ4mDJTdDHdG3u1yxKWWsc+hNoa57boDduztOIam2ES8qtjk1DQlRCxlW\nHZ/alC+s1X7/AT7lS0eKRUZO9IiXP18jNZ+DJ0jDx4XNmeVdg26iior0COZd\ncz6LvBMjD2FGqIcAtZfVRcrgMO3USWAdwcT033qxq+JjxWBf+mVJ5pM/woo1\nh/1WFatFp9810ea3KfMJHa5M1MFYxzD4xh28Lnm1qLwWEwRYaFfho+SQBSKP\nNy50bmikp/tX1Raql23KqrT774QuDSMN8KHzxGjll690bMsLdZUs5SnrOMSD\nv9JGMUqCMwgYuPMdaeATIni+9zyg55X7OqUigtv0EUCFwO7CK/AENTaLq/an\nb7MsdIh2ViUtp0UojICAGaaVqn8kAD7HiyfKlxvxpjEDGYU8eAAtHD+bGXxM\ncfS1\r\n=w4my\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEIkCI/bNdjYN9xYHXx+14Q9f+1ND2dIfqP/+Z7HuHqnAiBNIx+iMI8dN3rD+8YLiwyCHn4sH1l3a2q5j6VhnRBu9A=="}]},"_npmUser":{"name":"ianprime0509","email":"ian@ianjohnson.dev"},"directories":{},"maintainers":[{"name":"ianprime0509","email":"ian@ianjohnson.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/temperament_3.0.4_1643677776908_0.8993353023406252"},"_hasShrinkwrap":false},"4.0.0-beta.1":{"name":"temperament","description":"A library for working with musical temperaments.","type":"module","main":"index.js","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","import":"./index.js"}},"scripts":{"build":"run-s build:clean build:generate-schema build:types","build:clean":"rimraf index.d.ts schema.d.ts schema.json","build:generate-schema":"node generate-schema.js","build:types":"tsc","fmt":"prettier --write .","prepack":"npm run build","test":"run-p test:*","test:fmt":"prettier --check .","test:lint":"eslint .","test:unit":"uvu"},"repository":{"type":"git","url":"git+https://github.com/ianprime0509/temperament.git"},"keywords":["temperament","music","theory","pitch"],"author":{"name":"Ian Johnson","email":"ian@ianjohnson.dev"},"license":"MIT","bugs":{"url":"https://github.com/ianprime0509/temperament/issues"},"homepage":"https://github.com/ianprime0509/temperament","dependencies":{"ajv":"^8.9.0"},"devDependencies":{"eslint":"^8.8.0","json-schema-to-typescript":"^10.1.5","npm-run-all":"^4.1.5","prettier":"2.5.1","rimraf":"^3.0.2","semantic-release":"^19.0.2","typescript":"^4.5.5","uvu":"^0.5.3"},"version":"4.0.0-beta.1","readme":"# temperament\n\n[![npm](https://img.shields.io/npm/v/temperament.svg)](https://www.npmjs.com/package/temperament)\n![GitHub Workflow Status](https://img.shields.io/github/workflow/status/ianprime0509/temperament/CI)\n\nThis is a library for working with\n[musical temperaments](https://en.wikipedia.org/wiki/Musical_temperament) in\nJavaScript. It was originally extracted from (and is used in)\n[Temperatune](https://github.com/ianprime0509/temperatune), one of my other\nprojects. I figured it could be useful on its own to other developers, so I made\nit into its own module.\n\n## Installation\n\nYou can install the library using NPM or similar tools (such as Yarn) which use\nthe NPM package registry:\n\n```shell\n$ npm install temperament\n```\n\nYou can also use a CDN, such as [esm.sh](https://esm.sh), directly from a\nbrowser or Deno:\n\n```js\nimport { Temperament } from \"https://esm.sh/temperament@3\";\n```\n\nThis package is\n[ESM-only](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c),\nwhich means it cannot be used with `require`.\n\n## Usage\n\nThe `Temperament` class encapsulates information about a temperament, providing\nseveral methods for working with processed temperament data. The constructor\naccepts a single argument, an object in the format described in the\n[temperament format section](#temperament-format):\n\n```js\nimport { Temperament } from \"temperament\";\n\nlet equalTemperament = new Temperament(equalTemperamentData);\nequalTemperament.referencePitch = 441;\nconsole.log(equalTemperament.getPitch(\"A\", 4)); // Prints `441`.\n```\n\nIn the above example, `equalTemperamentData` could be the object corresponding\nto the sample given in the [basic usage section](#basic-usage).\n\n## Temperament format\n\nThe format of a temperament is specified by the\n[JSON schema](http://json-schema.org/) exported as `schema` in `index.js`. The\nschema is also published as a JSON file with each release, and can be found with\nthe latest release on\n[GitHub](https://github.com/ianprime0509/temperament/releases). Each item in the\nschema is annotated with a `description` key that explains its purpose.\n\nSome samples are included under `src/temperaments`.\n\n### Basic usage\n\nHere is an example of a temperament file describing equal temperament:\n\n```json\n{\n  \"name\": \"Equal temperament\",\n  \"referenceName\": \"A\",\n  \"referencePitch\": 440,\n  \"referenceOctave\": 4,\n  \"octaveBaseName\": \"C\",\n  \"notes\": {\n    \"C\": [\"C\", 0],\n    \"C♯\": [\"C\", 100],\n    \"D\": [\"C♯\", 100],\n    \"E♭\": [\"D\", 100],\n    \"E\": [\"E♭\", 100],\n    \"F\": [\"E\", 100],\n    \"F♯\": [\"F\", 100],\n    \"G\": [\"F♯\", 100],\n    \"G♯\": [\"G\", 100],\n    \"A\": [\"G♯\", 100],\n    \"B♭\": [\"A\", 100],\n    \"B\": [\"B♭\", 100]\n  }\n}\n```\n\nAll the keys used in the above example are required. The first key (and the one\nwhose purpose is most obvious) is the `name`: each temperament must have a name\nwhich identifies it for use in other applications.\n\nThe next three keys describe the reference note. The reference note is commonly\nthe one used as a tuning pitch in an ensemble: in Western music, it is typically\nA-4. The `referenceName` key gives the name of the reference note, which must\ncorrespond to a key in the `notes` object, and the `referenceOctave` key\nspecifies the octave number of the reference note. Finally, the `referencePitch`\nis the default value (in Hz) of the reference note's pitch. The reference pitch\nmay be configurable in user-facing applications, but you should provide a\nreasonable default that corresponds to common usage. For example, the reference\npitch is specified above as 440 since most modern players tune to a reference of\n440 Hz.\n\nThe `octaveBaseName` is the name of the note that should be at the bottom of\neach octave, and is used for octave numbering. The value of `octaveBaseName`\nmust correspond to a key in the `notes` object. In the example above, the\n`octaveBaseName` is C, so the highest C below the reference pitch will be\nlabelled as C-4 and the lowest C above the reference pitch will be labelled as\nC-5.\n\nFinally, the bulk of the temperament is described in the `notes` object. The\nkeys in this object are note names, and the corresponding values define the each\nnote in terms of an offset (in\n[cents](<https://en.wikipedia.org/wiki/Cent_(music)>)) from some other note. For\nexample, the entry `\"F\": [\"E\", 100]` above means that the note labelled F is 100\ncents above the note labelled E. To avoid giving redundant information, the\nentry `\"C\": [\"C\", 0]` ensures that note labelled C is defined, but does not\nprovide any information about its pitch since that information can be derived\nfrom the other notes. In general, your temperament definition should have\nexactly one note that is not defined relative to another note.\n\nConceptually, you can imagine the note information being used to deduce the\npitch of each note by starting at the reference pitch (which is already known)\nand working outwards. For example, if we have the pitch of the reference note A,\nthen we can immediately deduce the pitches of B♭ (100 cents above) and G♯ (100\ncents below). We can then continue this process to deduce the pitches of B and\nG, and so on.\n\nA note on octaves: an octave is defined to be 1200 cents, or a pitch ratio of\n2:1. The notes that you specify in the `notes` object are assumed to fill a\n_single octave_, meaning that the definition `\"C♯\": [\"C\", 1300]` is equivalent\nto the one given in the example above for C♯, since 1300 - 1200 is 100.\n\n### Metadata\n\nIn addition to the required `name` key, there are several other keys which can\nbe used to add metadata to a temperament. Currently, the supported keys are as\nfollows:\n\n- `description`: a longer description of a temperament. It is recommended to\n  restrict this to a single sentence, with a period at the end.\n- `source`: a description of the source from which the temperament data was\n  obtained. For example, this could be a URL pointing to the Wikipedia page of\n  your temperament or another page that describes it.\n\n## License\n\nThis is free software, distributed under the\n[MIT license](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","gitHead":"5cdc97ddbb3e70bd7268431c70e1bb09a2096564","_id":"temperament@4.0.0-beta.1","_nodeVersion":"16.13.2","_npmVersion":"8.4.0","dist":{"integrity":"sha512-1JgrFWBCzZ3sbwp6xfmcC2rubzWNLrwhAUnx1Jwd/95KwNzDHzZtIT6rpHXO/jurrWWikmraA30fvmjJD41HGQ==","shasum":"218be45302332c848ad654abd6e850438ef0290e","tarball":"https://registry.npmjs.org/temperament/-/temperament-4.0.0-beta.1.tgz","fileCount":4,"unpackedSize":23114,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh+LgOCRA9TVsSAnZWagAA+dkP/RrtjrDnLW8g9Rb2Jutm\nbZkQLFYxl5B25uSa9NDOqWJH5F1GNWWOvye/hXFC3HHnCtNqLGVNhS/L6n7k\njd8Vp/gkwcFeZTys6Y1DFgP1dgFIfwYvN3xqRP1DxSOG9VMWQk+HGYi8LYwV\nbmjuR/zEklLDLyeT0oUrrVKVj2xntN3suqDVO/U63tOuTH7ZayNZBQ0YLLOg\n246wzpO8ztuAMGpQaw9GbaQ6p4hYrV1WAbTIabn1tgFxNGZZ/gzkQV/0jG5A\nYyj0a5SwZXiXvBuvQyFwsLVV0n3JCanDNC2fbGE6Lu4gCeV8fgoNE9WImJ74\nIdX1jzw59fee+7dRtChYZWdo3nU/WOl3A+XzsHvoRcQgfcRo5Ls9P7C2NKbu\n1k62N8X0zLbqTzEGSGcQiY1fAKYxhLkKVt+hRjr9lXCbrOslT4PX28taIY0x\nssWx2NNwJ+wgtvVRqx7Workg8wBw2J81xR6Q7DougbR3emY0R5/1qSnQHk4W\n8Es3sABMA+bkFtdVwYdFTqPeK6YTTp2sH06s6oEKCsnYLyMotuf8q0gZsu0k\nER5w0Lbz/XbAYOYOFI8zXlynswyGu++MXdwNDxywOGKTNaWQPJ6s8aBMQGkw\na3z0fASq7ikDvz7AJHorhe/Kg4CT0Sc8xZ3CRyjb0wCjhncll9vozi9PZyHu\nxHR7\r\n=AvXu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBSlb8rrXPfq7/1Ddq2sLM1YIpN2KPuQ1bsp8MXzjVl9AiEAkeNmgCsdBFozL0VSRKxIxqGTbIr13NPoEUTWZG5coKU="}]},"_npmUser":{"name":"ianprime0509","email":"ian@ianjohnson.dev"},"directories":{},"maintainers":[{"name":"ianprime0509","email":"ian@ianjohnson.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/temperament_4.0.0-beta.1_1643689998489_0.4621010711431126"},"_hasShrinkwrap":false},"4.0.0-beta.2":{"name":"temperament","description":"A library for working with musical temperaments.","type":"module","main":"index.js","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","import":"./index.js"}},"scripts":{"build":"run-s build:clean build:generate-schema build:types","build:clean":"rimraf index.d.ts schema.d.ts schema.json","build:generate-schema":"node generate-schema.js","build:types":"tsc -p tsconfig.declaration.json","fmt":"prettier --write .","prepack":"npm run build","test":"run-p test:*","test:fmt":"prettier --check .","test:lint":"eslint .","test:types":"tsc","test:unit":"uvu"},"repository":{"type":"git","url":"git+https://github.com/ianprime0509/temperament.git"},"keywords":["temperament","music","theory","pitch"],"author":{"name":"Ian Johnson","email":"ian@ianjohnson.dev"},"license":"MIT","bugs":{"url":"https://github.com/ianprime0509/temperament/issues"},"homepage":"https://github.com/ianprime0509/temperament","dependencies":{"ajv":"^8.9.0"},"devDependencies":{"eslint":"^8.8.0","json-schema-to-typescript":"^10.1.5","npm-run-all":"^4.1.5","prettier":"2.5.1","rimraf":"^3.0.2","semantic-release":"^19.0.2","typescript":"^4.5.5","uvu":"^0.5.3"},"version":"4.0.0-beta.2","readme":"# temperament\n\n[![npm](https://img.shields.io/npm/v/temperament.svg)](https://www.npmjs.com/package/temperament)\n![GitHub Workflow Status](https://img.shields.io/github/workflow/status/ianprime0509/temperament/CI)\n\nThis is a library for working with\n[musical temperaments](https://en.wikipedia.org/wiki/Musical_temperament) in\nJavaScript. It was originally extracted from (and is used in)\n[Temperatune](https://github.com/ianprime0509/temperatune), one of my other\nprojects. I figured it could be useful on its own to other developers, so I made\nit into its own module.\n\n## Installation\n\nYou can install the library using NPM or similar tools (such as Yarn) which use\nthe NPM package registry:\n\n```shell\n$ npm install temperament\n```\n\nYou can also use a CDN, such as [esm.sh](https://esm.sh), directly from a\nbrowser or Deno:\n\n```js\nimport { Temperament } from \"https://esm.sh/temperament@4\";\n```\n\nThis package is\n[ESM-only](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c),\nwhich means it cannot be used with `require`.\n\n## Usage\n\nThe `Temperament` class encapsulates information about a temperament, providing\nseveral methods for working with processed temperament data. The constructor\naccepts a single argument, an object in the format described in the\n[temperament format section](#temperament-format):\n\n```js\nimport { Temperament } from \"temperament\";\n\nlet equalTemperament = new Temperament(equalTemperamentData);\nequalTemperament.referencePitch = 441;\nconsole.log(equalTemperament.getPitch(\"A\", 4)); // Prints `441`.\n```\n\nIn the above example, `equalTemperamentData` could be the object corresponding\nto the sample given in the [basic usage section](#basic-usage).\n\n## Temperament format\n\nThe format of a temperament is specified by the\n[JSON schema](http://json-schema.org/) exported as `schema` in `index.js`. The\nschema is also published as a JSON file with each release, and can be found with\nthe latest release on\n[GitHub](https://github.com/ianprime0509/temperament/releases). Each item in the\nschema is annotated with a `description` key that explains its purpose.\n\nSome samples are included under `temperaments`.\n\n### Basic usage\n\nHere is an example of a temperament file describing equal temperament:\n\n```json\n{\n  \"name\": \"Equal temperament\",\n  \"referenceName\": \"A\",\n  \"referencePitch\": 440,\n  \"referenceOctave\": 4,\n  \"octaveBaseName\": \"C\",\n  \"notes\": {\n    \"C\": [\"C\", 0],\n    \"C♯\": [\"C\", 100],\n    \"D\": [\"C♯\", 100],\n    \"E♭\": [\"D\", 100],\n    \"E\": [\"E♭\", 100],\n    \"F\": [\"E\", 100],\n    \"F♯\": [\"F\", 100],\n    \"G\": [\"F♯\", 100],\n    \"G♯\": [\"G\", 100],\n    \"A\": [\"G♯\", 100],\n    \"B♭\": [\"A\", 100],\n    \"B\": [\"B♭\", 100]\n  }\n}\n```\n\nAll the keys used in the above example are required. The first key (and the one\nwhose purpose is most obvious) is the `name`: each temperament must have a name\nwhich identifies it for use in other applications.\n\nThe next three keys describe the reference note. The reference note is commonly\nthe one used as a tuning pitch in an ensemble: in Western music, it is typically\nA-4. The `referenceName` key gives the name of the reference note, which must\ncorrespond to a key in the `notes` object, and the `referenceOctave` key\nspecifies the octave number of the reference note. Finally, the `referencePitch`\nis the default value (in Hz) of the reference note's pitch. The reference pitch\nmay be configurable in user-facing applications, but you should provide a\nreasonable default that corresponds to common usage. For example, the reference\npitch is specified above as 440 since most modern players tune to a reference of\n440 Hz.\n\nThe `octaveBaseName` is the name of the note that should be at the bottom of\neach octave, and is used for octave numbering. The value of `octaveBaseName`\nmust correspond to a key in the `notes` object. In the example above, the\n`octaveBaseName` is C, so the highest C below the reference pitch will be\nlabelled as C-4 and the lowest C above the reference pitch will be labelled as\nC-5.\n\nFinally, the bulk of the temperament is described in the `notes` object. The\nkeys in this object are note names, and the corresponding values define the each\nnote in terms of an offset (in\n[cents](<https://en.wikipedia.org/wiki/Cent_(music)>)) from some other note. For\nexample, the entry `\"F\": [\"E\", 100]` above means that the note labelled F is 100\ncents above the note labelled E. To avoid giving redundant information, the\nentry `\"C\": [\"C\", 0]` ensures that note labelled C is defined, but does not\nprovide any information about its pitch since that information can be derived\nfrom the other notes. In general, your temperament definition should have\nexactly one note that is not defined relative to another note.\n\nConceptually, you can imagine the note information being used to deduce the\npitch of each note by starting at the reference pitch (which is already known)\nand working outwards. For example, if we have the pitch of the reference note A,\nthen we can immediately deduce the pitches of B♭ (100 cents above) and G♯ (100\ncents below). We can then continue this process to deduce the pitches of B and\nG, and so on.\n\nA note on octaves: an octave is defined to be 1200 cents, or a pitch ratio of\n2:1. The notes that you specify in the `notes` object are assumed to fill a\n_single octave_, meaning that the definition `\"C♯\": [\"C\", 1300]` is equivalent\nto the one given in the example above for C♯, since 1300 - 1200 is 100.\n\n### Metadata\n\nIn addition to the required `name` key, there are several other keys which can\nbe used to add metadata to a temperament. Currently, the supported keys are as\nfollows:\n\n- `description`: a longer description of a temperament. It is recommended to\n  restrict this to a single sentence, with a period at the end.\n- `source`: a description of the source from which the temperament data was\n  obtained. For example, this could be a URL pointing to the Wikipedia page of\n  your temperament or another page that describes it.\n\n## License\n\nThis is free software, distributed under the\n[MIT license](https://opensource.org/licenses/MIT).\n","readmeFilename":"README.md","gitHead":"05a12a71ff1625df26943147f2cfedefb85e9023","_id":"temperament@4.0.0-beta.2","_nodeVersion":"16.13.2","_npmVersion":"8.4.0","dist":{"integrity":"sha512-oJGcuJrgEoTYtc1UP9ih5wSTnNp+GjbI9juyyWg1FSBxM2B/4bKPLjVR+BkXcLH8Yfe5PYSAnPuoc5rF9/BKrQ==","shasum":"2cfe983e9b05db0803631a542fb11730448bb191","tarball":"https://registry.npmjs.org/temperament/-/temperament-4.0.0-beta.2.tgz","fileCount":7,"unpackedSize":33628,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh+ep2CRA9TVsSAnZWagAAdq0P/22z7HjtFyrpL3nA7NlE\nWyGixXyrJC2tG1YtJp/EGn2NL1MBmePYOI7G67rRHlNV8pFEc7D4LuyLRmLK\n18e6n0Vhu6CWiWMeVA73yFr4phZBwgfd4RWQ4H6xdE2TcBgDDUCHdAFhT+ra\n+IFdrtcvwUap5UfH4KdSrO+Tmb3WZVwOjm/w7oKIXo4ZvneWH+4Gi01ZQ+nz\n21oE6/jn89vCxnw6XFz+l8r8ch87KH+utXgwTD/5JHdrrjEgmjTVcms2Nd82\nihxIyJNOI8RZqYKskAuLeCfFlp/tdG0caYAe3B7fmB+lXvRUZk6uIcXCD2DO\nQoiqXSjeL+OJfxwepQThFVZ59NBpnQmmDb1RS8NrQJPIMj7rDAm+U6Wqfy75\nx7bLaflsnid8Vzx0oQ5exR+BmMlZR7N0rSybgYLO/W2MOiK+12OcMAkz9kkz\nyewDoFm5UXdD2Iw9KYlIEfXqDusNzapDBx8JvE7IWrOgZjm8gezYcb3kOiQ+\nHwgrSqwPx86LSSKrj8w7F/nt3saNMwQKy5Kk7jHRMA49GRKHzByNZ/1Z7qie\ns5jyC8/zmHs8/z3TmWhbmv7rVAgGtXEMTyOofkFVIjZiiNLSQcuft9jwMkrq\nhMGSBvKGmkUOlp6miGL1OM2nBsboZO6fgK3Hyn57Lxcul4jY8xuBlPwI3q8Q\n63Oq\r\n=aO16\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDxXdUi0AjJwjoXLgijLR/Byh/qzHh6q5UXeW+GNUaZ8gIhAMLsJ788di5NJZidu/bBvT9i1M09SLZzh0R9hbmqZ0UQ"}]},"_npmUser":{"name":"ianprime0509","email":"ian@ianjohnson.dev"},"directories":{},"maintainers":[{"name":"ianprime0509","email":"ian@ianjohnson.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/temperament_4.0.0-beta.2_1643768438075_0.4323565201093824"},"_hasShrinkwrap":false},"4.0.0":{"name":"temperament","description":"A library for working with musical temperaments.","type":"module","main":"index.js","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","import":"./index.js"}},"scripts":{"build":"run-s build:clean build:generate-schema build:types","build:clean":"rimraf index.d.ts schema.d.ts schema.json","build:generate-schema":"node generate-schema.js","build:types":"tsc -p tsconfig.declaration.json","fmt":"prettier --write .","prepack":"npm run build","test":"run-p test:*","test:fmt":"prettier --check .","test:lint":"eslint .","test:types":"tsc","test:unit":"uvu"},"repository":{"type":"git","url":"git+https://github.com/ianprime0509/temperament.git"},"keywords":["temperament","music","theory","pitch"],"author":{"name":"Ian Johnson","email":"ian@ianjohnson.dev"},"license":"MIT","bugs":{"url":"https://github.com/ianprime0509/temperament/issues"},"homepage":"https://github.com/ianprime0509/temperament","dependencies":{"ajv":"^8.9.0"},"devDependencies":{"eslint":"^8.8.0","json-schema-to-typescript":"^10.1.5","npm-run-all":"^4.1.5","prettier":"2.5.1","rimraf":"^3.0.2","semantic-release":"^19.0.2","typescript":"^4.5.5","uvu":"^0.5.3"},"version":"4.0.0","gitHead":"cf8d531eeb0ac8daa575b597b5c3e9c66bc1195a","_id":"temperament@4.0.0","_nodeVersion":"16.14.0","_npmVersion":"8.4.0","dist":{"integrity":"sha512-K+FmPjnIPM/FmX+0WbvrXEEFq8+nn2QgcDiHWzhuxxRtIqilj1RtcRQEextoMqyUrS7FTOtSVpM3rdEcm2bivg==","shasum":"541b5f5e79cf7fb79306701497d74a735f89724d","tarball":"https://registry.npmjs.org/temperament/-/temperament-4.0.0.tgz","fileCount":7,"unpackedSize":33621,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiDvsZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrF9RAAjk0tk1QcRKrfR84GGpIZmBv9XGFdblmsPGbPaimFPtpH86Hg\r\ngJWufJbDCyG1yUJmJ2HMiSIJETsSnig9792BTnz4QZkQqQi1Wdl0OLv8JF5v\r\n43IkIvVSJeJmV/N1PA9hBKypxX0ePQlzMiaryuH/GUfIxmXXZcje1lOfN2E3\r\nGmJhKMytDYiX0FV5GOjv2tIgJme8kwpyIAZ/5UDuX/wwTwHFQn1ds38N+dFT\r\n36wAis8E/4d72eCR0tFb8lYeSjtnTPyX9zd3vgl4oeDzPTJ2SR4d3FLEzI24\r\nlx3ipa6QpCSioRsbf+VCoq3RpWb9DDXi1XzsFxfbBHXQ6492FHO9ywVymhQH\r\nQwNZWNVqJEagmn0vSWp5y4hCih7iLC1rvnIXVOQrWUnbQvuhKb/IEnDEiAg0\r\nTszsuVcPatiHqzB0Ub6q+N0bVBg5VyvZcZ7fLUO4dawKjbDVh3uk/5jKaD4W\r\ng1MKyvfkxwVfg3nE7+i3ftK7mD95GzjxeLTU0lFCYYuqfaDW6r4s+i1tvc/J\r\nco1w3E3Ce6t48fWPXaLroT7vt158nHIaasmOEFD0Eynk/XJFS3qiCGK1f+gB\r\n7omnQQV/8DRxZeH4ImAIBQcLj+gjfTwN38WfmsBf4HqAJrTw3fKiTv0iZjI/\r\nAVWYLqEOpGe7fqAcIsYmzujqgbJGFXYcjIo=\r\n=LKuR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD/9HpSSz+acIIlN8OuaJFYB58QqEbE+u2ooIF37BSnwAIgKmcAqSSJu8lZ3BHixAAcW4IvGTaVVfhdibHf/jtTMLg="}]},"_npmUser":{"name":"ianprime0509","email":"ian@ianjohnson.dev"},"directories":{},"maintainers":[{"name":"ianprime0509","email":"ian@ianjohnson.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/temperament_4.0.0_1645148953358_0.36334602719522846"},"_hasShrinkwrap":false},"4.0.1":{"name":"temperament","description":"A library for working with musical temperaments.","type":"module","main":"index.js","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","import":"./index.js"}},"scripts":{"build":"run-s build:clean build:generate-schema build:types","build:clean":"rimraf index.d.ts schema.d.ts schema.json","build:generate-schema":"node generate-schema.js","build:types":"tsc -p tsconfig.declaration.json","fmt":"prettier --write .","prepack":"npm run build","test":"run-p test:*","test:fmt":"prettier --check .","test:lint":"eslint .","test:types":"tsc","test:unit":"uvu"},"repository":{"type":"git","url":"git+https://github.com/ianprime0509/temperament.git"},"keywords":["temperament","music","theory","pitch"],"author":{"name":"Ian Johnson","email":"ian@ianjohnson.dev"},"license":"MIT","bugs":{"url":"https://github.com/ianprime0509/temperament/issues"},"homepage":"https://github.com/ianprime0509/temperament","dependencies":{"ajv":"^8.10.0"},"devDependencies":{"eslint":"^8.9.0","json-schema-to-typescript":"^10.1.5","npm-run-all":"^4.1.5","prettier":"2.5.1","rimraf":"^3.0.2","semantic-release":"^19.0.2","typescript":"^4.5.5","uvu":"^0.5.3"},"version":"4.0.1","gitHead":"992ad92044fea191ad0a83858175044cf331e88a","_id":"temperament@4.0.1","_nodeVersion":"16.14.0","_npmVersion":"8.4.0","dist":{"integrity":"sha512-wdo4Th1vqTVaKpkK103bXzniCzyfJmwjnd5ssfiooC45IoZnliSZEp/ft10rqPtkAZ5vzhoWxMqc8jwGnpL7yA==","shasum":"72473cca866a62e062261ac9b9ac5b8f0eff0ec1","tarball":"https://registry.npmjs.org/temperament/-/temperament-4.0.1.tgz","fileCount":7,"unpackedSize":33622,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiDwQeACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpoQw/+J3V7KvhtPpImIlEGq+/DKgT3fkyutJKq1CZqmP/MjDO3Dzkn\r\n66OR4vyPwRlICA1zweypCDrlDR9ZSXjTCHzL6bsF+eZiEi0ydwQJZT6I+QVN\r\nlRf0EmNH7XVLtkixbPDtUMIjtsO8xerwmn1H8dIOezys6124hfoIhE1y4njd\r\nFUVp6Hsr7PmDHVS2pmIMlqlAwhr/S+bxg8cISJtONahl2Osbzuq3wiBP+5oY\r\nmLT/M5dFCGkuLTT9ptze8uVBno1cdCVmc+pGDpOdyWjKyt+QQ0FU/zmm3T1l\r\nJ+Tj9y3JrF5+iS84MKpyQDyJFH0w2gkODz1g9d6kX6kL96cRSydUghDhQkx5\r\ntrRYlil+//9R3ZhhH9z0f0OZ0lsnviLgM/zW9UcJW2oF6yv9/v7oTEU+VSNz\r\nAfC4qFZrCW09fmA+JEGG+6SzA+To+mPLjxrZgcfLfVpDNAgymyKTB6poQr9K\r\nqu4RK6K+pleSvspwI1IcK4JK8IsUQsiMy7rCv34NT2aD2cv+2I73DWIwT7/P\r\nEflWxlD3TpaHIlsnuMFn8r/YYjeeJk1+HXrbTgaZUNLDPrHpkBnAPd7PDGKz\r\n0XF1TM8WtIfrBNG4Xyk6TEFuLUvYgFjBu8JNJ7jwnLOD315tcUXW8W2m3oMx\r\nsZIPMIzgmcuIrsKgmAovIHIcpL42+SYocsw=\r\n=0lnQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBTrPhw/9RSgzf6604k8vEzaC0fg5RquJ+Eh6v6fch+KAiEA60D5+9uYZX17ZxlODdLNWaNAfGZRwCITMAyuaRWL+VY="}]},"_npmUser":{"name":"ianprime0509","email":"ian@ianjohnson.dev"},"directories":{},"maintainers":[{"name":"ianprime0509","email":"ian@ianjohnson.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/temperament_4.0.1_1645151262384_0.3589477747216838"},"_hasShrinkwrap":false},"4.0.2":{"name":"temperament","description":"A library for working with musical temperaments.","type":"module","main":"index.js","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","import":"./index.js"}},"scripts":{"build":"run-s build:clean build:generate-schema build:types","build:clean":"rimraf index.d.ts schema.d.ts schema.json","build:generate-schema":"node generate-schema.js","build:types":"tsc -p tsconfig.declaration.json","fmt":"prettier --write .","prepack":"npm run build","test":"run-p test:*","test:fmt":"prettier --check .","test:lint":"eslint .","test:types":"tsc","test:unit":"uvu"},"repository":{"type":"git","url":"git+https://github.com/ianprime0509/temperament.git"},"keywords":["temperament","music","theory","pitch"],"author":{"name":"Ian Johnson","email":"ian@ianjohnson.dev"},"license":"MIT","bugs":{"url":"https://github.com/ianprime0509/temperament/issues"},"homepage":"https://github.com/ianprime0509/temperament","dependencies":{"ajv":"^8.11.0"},"devDependencies":{"eslint":"^8.12.0","json-schema-to-typescript":"^10.1.5","npm-run-all":"^4.1.5","prettier":"2.6.1","rimraf":"^3.0.2","semantic-release":"^19.0.2","typescript":"^4.6.3","uvu":"^0.5.3"},"version":"4.0.2","gitHead":"f438de74deb067e5979abebdf4b804401fd94123","_id":"temperament@4.0.2","_nodeVersion":"16.14.0","_npmVersion":"8.4.0","dist":{"integrity":"sha512-D9YiSOtLXvgRwreX6I/P1qHT2ewGD8UBJUNOqjtJ+XhA2KnsOmanfvcOUDtY8ofsPkK4LiLmOd6qFQF4vgg0YQ==","shasum":"212e003688ef5295c5f2d3d8a5f4857f9c06159a","tarball":"https://registry.npmjs.org/temperament/-/temperament-4.0.2.tgz","fileCount":7,"unpackedSize":33623,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQkHaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoRbBAAg+921BTejB03jDtoxwHDXyecqQuhnoNDYpk2do9BBdoUgV1b\r\n0j+Qyw/Tit9+PrGzScOAhdeAMJRSkGtu8gVfN6+0MaMz30UrWUte9QjttoBl\r\nef+0kdyQ19lRuWg5PsKDYyShpc9hfVsQhyGRFFq19f4m9oEi+ODsw0VtBBOY\r\nwMQ3upvxWAQT+qEjtGAMZEaQOdZo9P/Nqy4t4SD9a6mhbZNsY90j8wsT7zS7\r\n9N+uZ8qZhzsYw2VuhjzyfGNzmIvfZRoa9BzXHEXksElXnU+b6h2tzxBoHRvj\r\nfVaWjW6OcKXNL72pk4/44lglNMCKS8lUc5866TCgj67kPHwChL16EADcxGNq\r\n1OK0i129tGoeRC5usYwZAPubYy+ZU7DxuIMogwEPl55/mwjRtNfECB+6rrF7\r\ntP0XOSs+lbiMGLLM6GmowIDLHyL1BMoNUZ+gQMd5agXlpaLijjuln9NkSNoz\r\nFzjqggQGNKbhzSzOxwnVy9cnO0ZAXOCmtc95qomV5zM/OtKr5A4mF9YLvT+4\r\nNo5uIgCIGOfqG/1WOhyMmRW6+/p5EBSgxdkFjvKlFv2o3N0POuwBaWz2R8cv\r\nxzQQqowmOjl6olegkSwrJ7qIngtk5BaJ7arnsL/W5ex265z8Qzk0rMoeyGaf\r\nUCI/CTSnXb3wh4eNs/O6XMrD8TL2wnw7oPs=\r\n=NmQB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDVBq/HuCdfcYplqsDTFLMTWP0z5knEnYAFfh2WuxBx5QIhALTUZW5eGqIR2r+DaigD4hhISFvFB+CqVHmwLVqNiWet"}]},"_npmUser":{"name":"ianprime0509","email":"ian@ianjohnson.dev"},"directories":{},"maintainers":[{"name":"ianprime0509","email":"ian@ianjohnson.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/temperament_4.0.2_1648509402042_0.11249758642277086"},"_hasShrinkwrap":false},"4.0.3":{"name":"temperament","description":"A library for working with musical temperaments.","type":"module","main":"index.js","types":"index.d.ts","exports":{"./package.json":"./package.json",".":{"types":"./index.d.ts","default":"./index.js"}},"scripts":{"build":"run-s build:clean build:generate-schema build:types","build:clean":"rimraf index.d.ts schema.d.ts schema.json","build:generate-schema":"node generate-schema.js","build:types":"tsc -p tsconfig.declaration.json","fmt":"prettier --write .","prepack":"npm run build","test":"run-p test:*","test:fmt":"prettier --check .","test:lint":"eslint .","test:types":"tsc","test:unit":"uvu"},"repository":{"type":"git","url":"git+https://github.com/ianprime0509/temperament.git"},"keywords":["temperament","music","theory","pitch"],"author":{"name":"Ian Johnson","email":"ian@ianjohnson.dev"},"license":"MIT","bugs":{"url":"https://github.com/ianprime0509/temperament/issues"},"homepage":"https://github.com/ianprime0509/temperament","dependencies":{"ajv":"^8.11.0"},"devDependencies":{"eslint":"^8.21.0","json-schema-to-typescript":"^11.0.2","npm-run-all":"^4.1.5","prettier":"2.7.1","rimraf":"^3.0.2","semantic-release":"^19.0.3","typescript":"^4.7.4","uvu":"^0.5.6"},"version":"4.0.3","gitHead":"fdd8b75ec27d88b7b510e50fc829a9001f46ad86","_id":"temperament@4.0.3","_nodeVersion":"16.16.0","_npmVersion":"8.16.0","dist":{"integrity":"sha512-wVh6qrJUb920ag46giNepnTZngAKwXuv7qEqRfjM4TP0AWJn/uN9FIa8rYVTimMTZOU9Fn+jTUR3bx76sPEX1A==","shasum":"22f12588194d996d23de91ea4456729a913187b5","tarball":"https://registry.npmjs.org/temperament/-/temperament-4.0.3.tgz","fileCount":7,"unpackedSize":33709,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDg1eAKtGgJ3VPKlTPy8/5pPz1H3yjqrZ7B9VeZxUoQxwIhAL5Mmdm1/BJpK69Jy+4Gns2xJ5ITJSn+MPjyxfL76kQc"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi7rd4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmokXA/7Bxy5EaZIrth1CuAeCdBkhLLmZNFyKSq83fHLL6wOaEyp6iR3\r\nbUgtNTCEWgg3v288482NSQ11/uW0Ya/Pl3Q8wLdiT2uk9M5flnEPyN1oZhuB\r\n6lHdbeD94wxpz5inuG/MOueuunjJB542Ga+ekzvr09FT2y6aFXxC/bU1RsP7\r\nEC6d6rNGs/ulIJe8zYOAbH21uCzi0B6+byUaEY0Og/n01Sh0wvRO69mqyi/I\r\nKG7P6HTdrYX32H/6tibcSpH8FGrbH5eux3fyf0GoBk1ta5hjn1HrTeQh80Hw\r\n/MZJMkXO3vT/N1eRJmJaMTetGO30c1UNmMeYL4iitYJoCXpBoS/uVelUZqjp\r\nLRgOgJzp+rGvC+y3BUgOv0RKSg3S4vcOlbC0aOgnlTfO6TmcFS30d0bTH2xk\r\n5bZ3FOc+ac72+1rkrB49P5sgb5KwLzk9QSn1fGyLq0DSprGn91JLQP3lsvbW\r\nQT3NmaTOFusXy2ebIgrp34EOMN1YCl1kx0CpcakbEKJAF3Qm0PBHD5FvcIfT\r\nkQk3uk/VJApbdTimy6qJMWKEQ6vjebtdWiXNAyPlKchWJVnLaiVkRIFviSEI\r\n1z8D0quk2waKWRB/Mh3DzivUCLizd4AbdSqlu9e2k5OnrkF2+wqxYDqmSvy9\r\nlqDyK4M39LasRJMWdlloLTWu1v5zcWE6JJc=\r\n=/NBx\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ianprime0509","email":"ian@ianjohnson.dev"},"directories":{},"maintainers":[{"name":"ianprime0509","email":"ian@ianjohnson.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/temperament_4.0.3_1659811704189_0.6921860995704299"},"_hasShrinkwrap":false},"4.0.4":{"name":"temperament","description":"A library for working with musical temperaments.","type":"module","main":"index.js","types":"index.d.ts","exports":{"./package.json":"./package.json",".":{"types":"./index.d.ts","default":"./index.js"}},"scripts":{"build":"run-s build:clean build:generate-schema build:types","build:clean":"rimraf index.d.ts schema.d.ts schema.json","build:generate-schema":"node generate-schema.js","build:types":"tsc -p tsconfig.declaration.json","fmt":"prettier --write .","prepack":"npm run build","test":"run-p test:*","test:fmt":"prettier --check .","test:lint":"eslint .","test:types":"tsc","test:unit":"uvu"},"repository":{"type":"git","url":"git+https://github.com/ianprime0509/temperament.git"},"keywords":["temperament","music","theory","pitch"],"author":{"name":"Ian Johnson","email":"ian@ianjohnson.dev"},"license":"MIT","bugs":{"url":"https://github.com/ianprime0509/temperament/issues"},"homepage":"https://github.com/ianprime0509/temperament","dependencies":{"ajv":"^8.11.2"},"devDependencies":{"eslint":"^8.30.0","json-schema-to-typescript":"^11.0.2","npm-run-all":"^4.1.5","prettier":"2.8.1","rimraf":"^3.0.2","semantic-release":"^19.0.5","typescript":"^4.9.4","uvu":"^0.5.6"},"engines":{"npm":">=8.3.0"},"overrides":{"@types/node":"^18.11.17"},"version":"4.0.4","gitHead":"e222d1aa3447f6a1a09d5ac8fecd470700815655","_id":"temperament@4.0.4","_nodeVersion":"16.18.1","_npmVersion":"8.16.0","dist":{"integrity":"sha512-OQenSNBs/juKYRK6dCGeRiw6wfGLSPf8JBcH2StohhQLSKfkaFHhSjldRQI13nnGPv0/YoD4yjsIAXhgxZmQqQ==","shasum":"2ff523f9e11b6438ac949656b1899c2200d54d95","tarball":"https://registry.npmjs.org/temperament/-/temperament-4.0.4.tgz","fileCount":7,"unpackedSize":33803,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC4N3Mj50CekNxPvvdWzsCdmhWYbIJf8oLrwGX1Btv8swIhAN45e8fpXhBcY1iqx8Xptdn5EM40VFgdYtlQzlQSi6Qd"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjolj8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpMjRAAkL5P2v1nQFwuwv9mcSi+9jSV4BxFDY3lDGjUrG2Akz5V/OVd\r\nJ9VBrJClenxvDy1yQJPm+Qntvzqp7EiVXNn4N3Gw1Z80V0SJg2yXG6rZ0REq\r\nbUn6+Bm+iC6krsGfCZ1PErp2iM83eN3SxV4KZwetoshTRHqLnfbHJhkXU31b\r\nNOhtl2kweMXlfhNCpMJGCq4A43aamUFONC/gSFA3EfTlWrjdGvsth5/QgB9y\r\n8yM8PAJ2MDlA2A27hL08Mkpq+RkTdlVmwk4TdhHjxwp1ZiVlk3880ORB47/i\r\n0Fe9/oSfd85EwC9htO6wtL2xOVs/8rGib2dsLmxo/9aFFC52F54M6GXW4Gk4\r\nQerj6R6g9DmEvpazJvxX9Rs6PBLDOCWl1gOTR7ptAH/eyivbfyZWjbVku1Ap\r\n2X1oQSXF7fPM1Nlt6r4BK2hV/PtG5X1H01mgtxlJdjqj7nwbcdnjRpt0bGQg\r\nrmU1KGtSNI9uFYs9wRfA+m3xjcbVt5ZhWX9bOMvwa6RZs5A+lauTGgyUNOXG\r\nyalRIf8OewG4rLbVILpOdIJRX3M1wR8s2MUFRkg0gDmkOJ0waE0YTu/mAvsU\r\n8oFEj1zutO7y0INN530oU4LoJJqzP6rb9ip4tGdhVl0scoMCx0e3gY4TbMRu\r\n1dnleNPsZeVP7ZlK+XsN9B5tj2w4/CcEr6I=\r\n=ixM6\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ianprime0509","email":"ian@ianjohnson.dev"},"directories":{},"maintainers":[{"name":"ianprime0509","email":"ian@ianjohnson.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/temperament_4.0.4_1671583996330_0.8962077542604796"},"_hasShrinkwrap":false},"4.0.5":{"name":"temperament","description":"A library for working with musical temperaments.","type":"module","main":"index.js","types":"index.d.ts","exports":{"./package.json":"./package.json",".":{"types":"./index.d.ts","default":"./index.js"}},"scripts":{"build":"run-s build:clean build:generate-schema build:types","build:clean":"rimraf index.d.ts schema.d.ts schema.json","build:generate-schema":"node generate-schema.js","build:types":"tsc -p tsconfig.declaration.json","fmt":"prettier --write .","prepack":"npm run build","test":"run-p test:*","test:fmt":"prettier --check .","test:lint":"eslint .","test:types":"tsc","test:unit":"uvu"},"repository":{"type":"git","url":"git+https://github.com/ianprime0509/temperament.git"},"keywords":["temperament","music","theory","pitch"],"author":{"name":"Ian Johnson","email":"ian@ianjohnson.dev"},"license":"MIT","bugs":{"url":"https://github.com/ianprime0509/temperament/issues"},"homepage":"https://github.com/ianprime0509/temperament","dependencies":{"ajv":"^8.12.0"},"devDependencies":{"eslint":"^8.32.0","json-schema-to-typescript":"^11.0.2","npm-run-all":"^4.1.5","prettier":"2.8.3","rimraf":"^4.1.1","semantic-release":"^20.0.3","typescript":"^4.9.4","uvu":"^0.5.6"},"engines":{"npm":">=8.3.0"},"overrides":{"@types/node":"^18.11.17"},"version":"4.0.5","gitHead":"d8b5a581c482db486cdacce9136c4454662e3050","_id":"temperament@4.0.5","_nodeVersion":"18.13.0","_npmVersion":"8.16.0","dist":{"integrity":"sha512-DWthxZ6iwlDjdYoh5bh8TYMmEYFLREJdImFu08MXgWDirgovAxRRB2mSamQOmuOmjzAcpOknrBNmmeAaR0i7qg==","shasum":"63df3a37ff7b694b5144275910573ac4667fe890","tarball":"https://registry.npmjs.org/temperament/-/temperament-4.0.5.tgz","fileCount":7,"unpackedSize":33827,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG9yGpmYtxFzg2KPq7ipTc3fvjkIIGo+1OAStarRuXCcAiEA8HoYDMZpD2figFOtDedvE62VayS8tNAPaFD/sZj1jVo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjz0L8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmprmg/+L4eNxcC8NKtPcZfp/nntLLQKMYL3V6ub1B6DXyMrbGadsqKD\r\n41GGqWFKBYdqxCprL0ftUpNlG9U8MTe90SlU22moa/lpwAQEYgK5k86/uLkk\r\nH9ofkT/43y9QQ3IMhIz8ASJ6y4x2EU57MFVqbjNijrKdysM9btaHrY1GDVOW\r\nvTN27j3YCyWMgxjEbvm1LjeU56LxOyvcO2BlAJiizEKo09RWAZDv4Rt0ZWDa\r\nuiaj01pxBmXq6YHXjSn3v3gOWjntrDP671AR5QpZBGPyaxGg5kPOSza8tyXo\r\n4xiyQ3GZ12dqYiJImssa7JJyO+C0AKKhHkGE0n5LCYDFp4UeKzttbWaWlOvm\r\nnKoeBRWxYF+MmAO6gCzGB0eiLQ7Od6Ra5k7YkQiThdT5T/1TutC1/6OfeMKZ\r\n4D4DJNSTItM51aFDgIo4C7br+W0Hna2y0CNQpLhOM78seCBijHK1dNHNQkcS\r\nT/LIhPbo8FnOun3DALTxRfIcfxY9Jusaq0eZgy4n/A1q/jfcezmBveN7+AZt\r\nbVqXA351dyiJtYQNSeuv6FoIK8qBpwMuDdar9R8WsltSyGDyvk/dmAFDEZVF\r\n+MYNpz4pEndaMPQS5jqNoUGVgZDEwgV4hhCDqd904Yu0x6aku6rNBpaMGjRH\r\nuGt5ystXMD+LV1Tyae4yb0OlGD3B1Ahpf+g=\r\n=DfI6\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ianprime0509","email":"ian@ianjohnson.dev"},"directories":{},"maintainers":[{"name":"ianprime0509","email":"ian@ianjohnson.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/temperament_4.0.5_1674527484099_0.7818715214697385"},"_hasShrinkwrap":false},"4.0.6":{"name":"temperament","description":"A library for working with musical temperaments.","type":"module","main":"index.js","types":"index.d.ts","exports":{"./package.json":"./package.json",".":{"types":"./index.d.ts","default":"./index.js"}},"scripts":{"build":"run-s build:clean build:generate-schema build:types","build:clean":"rimraf index.d.ts schema.d.ts schema.json","build:generate-schema":"node generate-schema.js","build:types":"tsc -p tsconfig.declaration.json","fmt":"prettier --write .","prepack":"npm run build","test":"run-p test:*","test:fmt":"prettier --check .","test:lint":"eslint .","test:types":"tsc","test:unit":"uvu"},"repository":{"type":"git","url":"git+https://github.com/ianprime0509/temperament.git"},"keywords":["temperament","music","theory","pitch"],"author":{"name":"Ian Johnson","email":"ian@ianjohnson.dev"},"license":"MIT","bugs":{"url":"https://github.com/ianprime0509/temperament/issues"},"homepage":"https://github.com/ianprime0509/temperament","dependencies":{"ajv":"^8.12.0"},"devDependencies":{"eslint":"^8.44.0","json-schema-to-typescript":"^13.0.2","npm-run-all":"^4.1.5","prettier":"2.8.8","rimraf":"^5.0.1","semantic-release":"^21.0.6","typescript":"^5.1.6","uvu":"^0.5.6"},"engines":{"npm":">=8.3.0"},"overrides":{"@types/node":"^18.11.17"},"version":"4.0.6","gitHead":"6fca5417f007172d9bdbb1f68551b78448a73598","_id":"temperament@4.0.6","_nodeVersion":"18.17.0","_npmVersion":"9.6.2","dist":{"integrity":"sha512-rIm4s9QtOc8n17Qn9sgRiGV1TyE7z4dSsNuLgRZZcno1BWGtcaJ/RZ/2GZtXIY7+R89ulo+QdKdisMMb7rKRcQ==","shasum":"d86bc5a58881f9d0e4658d3c9761065efe55f9ae","tarball":"https://registry.npmjs.org/temperament/-/temperament-4.0.6.tgz","fileCount":7,"unpackedSize":33773,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDD30ElOh6iEtfvlC42rQ3Z598feEhN137Iqq/bVp8NdAiEAh9jqR9obgzcaaWq+AXiXuoSynrWR6Bi4VU/Tx4xGFf4="}]},"_npmUser":{"name":"ianprime0509","email":"ian@ianjohnson.dev"},"directories":{},"maintainers":[{"name":"ianprime0509","email":"ian@ianjohnson.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/temperament_4.0.6_1690767988940_0.4761639993968949"},"_hasShrinkwrap":false},"4.0.7":{"name":"temperament","description":"A library for working with musical temperaments.","type":"module","main":"index.js","types":"index.d.ts","exports":{"./package.json":"./package.json",".":{"types":"./index.d.ts","default":"./index.js"}},"scripts":{"build":"run-s build:clean build:generate-schema build:types","build:clean":"rimraf index.d.ts schema.d.ts schema.json","build:generate-schema":"node generate-schema.js","build:types":"tsc -p tsconfig.declaration.json","fmt":"prettier --write .","prepack":"npm run build","test":"run-p test:*","test:fmt":"prettier --check .","test:lint":"eslint .","test:types":"tsc","test:unit":"uvu"},"repository":{"type":"git","url":"git+https://github.com/ianprime0509/temperament.git"},"keywords":["temperament","music","theory","pitch"],"author":{"name":"Ian Johnson","email":"ian@ianjohnson.dev"},"license":"0BSD","bugs":{"url":"https://github.com/ianprime0509/temperament/issues"},"homepage":"https://github.com/ianprime0509/temperament","dependencies":{"ajv":"^8.12.0"},"devDependencies":{"eslint":"^8.57.0","json-schema-to-typescript":"^13.1.1","npm-run-all":"^4.1.5","prettier":"3.2.5","rimraf":"^5.0.5","semantic-release":"^22.0.8","typescript":"^5.1.6","uvu":"^0.5.6"},"engines":{"npm":">=8.3.0"},"overrides":{"@types/node":"^18.11.17"},"version":"4.0.7","_id":"temperament@4.0.7","gitHead":"4c4a9800c4ac553a2c14a814070d314cc4a12f02","_nodeVersion":"18.20.1","_npmVersion":"10.5.1","dist":{"integrity":"sha512-xnivwhJVkVItUOoYmCkdA2tA8uMf0iKH7kgXeg7n5RUYaEwJ52sQ6ER6N+MxGeZo7qn8s7IGmFnM5+SqJF+86g==","shasum":"ba4342ba05fc3cf84bae9725f01275e8be304b15","tarball":"https://registry.npmjs.org/temperament/-/temperament-4.0.7.tgz","fileCount":7,"unpackedSize":33565,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPC7mPEba4WOAGtTp4DcMMjcBfy5HfYzvgp9W51HqjugIhANKdeMLuQUbb5gR50WpFi1kIyKk00IcKjCAx8O598JYe"}]},"_npmUser":{"name":"ianprime0509","email":"ian@ianjohnson.dev"},"directories":{},"maintainers":[{"name":"ianprime0509","email":"ian@ianjohnson.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/temperament_4.0.7_1712703186624_0.8574022625138973"},"_hasShrinkwrap":false}},"time":{"created":"2018-02-27T01:27:00.102Z","1.0.0-alpha.0":"2018-02-27T01:27:00.209Z","modified":"2024-04-09T22:53:06.965Z","1.0.0-alpha.1":"2018-02-27T18:22:24.465Z","1.0.0":"2018-03-02T17:25:53.427Z","1.1.0":"2020-03-11T00:47:28.796Z","1.1.1":"2020-03-11T02:41:12.727Z","2.0.0-alpha.0":"2020-04-19T15:33:18.962Z","2.0.0-alpha.1":"2020-04-19T17:09:20.014Z","2.0.0":"2020-05-23T19:38:42.654Z","2.0.1":"2020-09-12T12:50:42.774Z","2.1.0":"2021-12-11T18:12:36.181Z","2.2.0":"2021-12-12T03:14:16.262Z","3.0.0":"2021-12-24T20:51:26.055Z","3.0.1":"2021-12-27T15:36:41.400Z","3.0.2":"2021-12-30T18:59:23.975Z","3.0.3":"2022-02-01T01:08:28.422Z","3.0.4":"2022-02-01T01:09:37.055Z","4.0.0-beta.1":"2022-02-01T04:33:18.671Z","4.0.0-beta.2":"2022-02-02T02:20:38.231Z","4.0.0":"2022-02-18T01:49:13.498Z","4.0.1":"2022-02-18T02:27:42.736Z","4.0.2":"2022-03-28T23:16:42.282Z","4.0.3":"2022-08-06T18:48:24.373Z","4.0.4":"2022-12-21T00:53:16.475Z","4.0.5":"2023-01-24T02:31:24.265Z","4.0.6":"2023-07-31T01:46:29.108Z","4.0.7":"2024-04-09T22:53:06.789Z"},"maintainers":[{"name":"ianprime0509","email":"ian@ianjohnson.dev"}],"description":"A library for working with musical temperaments.","homepage":"https://github.com/ianprime0509/temperament","repository":{"type":"git","url":"git+https://github.com/ianprime0509/temperament.git"},"author":{"name":"Ian Johnson","email":"ian@ianjohnson.dev"},"bugs":{"url":"https://github.com/ianprime0509/temperament/issues"},"license":"0BSD","readme":"# temperament\n\n[![npm](https://img.shields.io/npm/v/temperament.svg)](https://www.npmjs.com/package/temperament)\n![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/ianprime0509/temperament/ci.yml?branch=main)\n\nThis is a library for working with\n[musical temperaments](https://en.wikipedia.org/wiki/Musical_temperament) in\nJavaScript. It was originally extracted from (and is used in)\n[Temperatune](https://github.com/ianprime0509/temperatune), one of my other\nprojects. I figured it could be useful on its own to other developers, so I made\nit into its own module.\n\n## Installation\n\nYou can install the library using NPM or similar tools (such as Yarn) which use\nthe NPM package registry:\n\n```shell\n$ npm install temperament\n```\n\nYou can also use a CDN, such as [esm.sh](https://esm.sh), directly from a\nbrowser or Deno:\n\n```js\nimport { Temperament } from \"https://esm.sh/temperament@4\";\n```\n\nThis package is\n[ESM-only](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c),\nwhich means it cannot be used with `require`.\n\n## Usage\n\nThe `Temperament` class encapsulates information about a temperament, providing\nseveral methods for working with processed temperament data. The constructor\naccepts a single argument, an object in the format described in the\n[temperament format section](#temperament-format):\n\n```js\nimport { Temperament } from \"temperament\";\n\nlet equalTemperament = new Temperament(equalTemperamentData);\nequalTemperament.referencePitch = 441;\nconsole.log(equalTemperament.getPitch(\"A\", 4)); // Prints `441`.\n```\n\nIn the above example, `equalTemperamentData` could be the object corresponding\nto the sample given in the [basic usage section](#basic-usage).\n\n## Temperament format\n\nThe format of a temperament is specified by the\n[JSON schema](http://json-schema.org/) exported as `schema` in `index.js`. The\nschema is also published as a JSON file with each release, and can be found with\nthe latest release on\n[GitHub](https://github.com/ianprime0509/temperament/releases). Each item in the\nschema is annotated with a `description` key that explains its purpose.\n\nSome samples are included under `temperaments`.\n\n### Basic usage\n\nHere is an example of a temperament file describing equal temperament:\n\n```json\n{\n  \"name\": \"Equal temperament\",\n  \"referenceName\": \"A\",\n  \"referencePitch\": 440,\n  \"referenceOctave\": 4,\n  \"octaveBaseName\": \"C\",\n  \"notes\": {\n    \"C\": [\"C\", 0],\n    \"C♯\": [\"C\", 100],\n    \"D\": [\"C♯\", 100],\n    \"E♭\": [\"D\", 100],\n    \"E\": [\"E♭\", 100],\n    \"F\": [\"E\", 100],\n    \"F♯\": [\"F\", 100],\n    \"G\": [\"F♯\", 100],\n    \"G♯\": [\"G\", 100],\n    \"A\": [\"G♯\", 100],\n    \"B♭\": [\"A\", 100],\n    \"B\": [\"B♭\", 100]\n  }\n}\n```\n\nAll the keys used in the above example are required. The first key (and the one\nwhose purpose is most obvious) is the `name`: each temperament must have a name\nwhich identifies it for use in other applications.\n\nThe next three keys describe the reference note. The reference note is commonly\nthe one used as a tuning pitch in an ensemble: in Western music, it is typically\nA-4. The `referenceName` key gives the name of the reference note, which must\ncorrespond to a key in the `notes` object, and the `referenceOctave` key\nspecifies the octave number of the reference note. Finally, the `referencePitch`\nis the default value (in Hz) of the reference note's pitch. The reference pitch\nmay be configurable in user-facing applications, but you should provide a\nreasonable default that corresponds to common usage. For example, the reference\npitch is specified above as 440 since most modern players tune to a reference of\n440 Hz.\n\nThe `octaveBaseName` is the name of the note that should be at the bottom of\neach octave, and is used for octave numbering. The value of `octaveBaseName`\nmust correspond to a key in the `notes` object. In the example above, the\n`octaveBaseName` is C, so the highest C below the reference pitch will be\nlabelled as C-4 and the lowest C above the reference pitch will be labelled as\nC-5.\n\nFinally, the bulk of the temperament is described in the `notes` object. The\nkeys in this object are note names, and the corresponding values define the each\nnote in terms of an offset (in\n[cents](<https://en.wikipedia.org/wiki/Cent_(music)>)) from some other note. For\nexample, the entry `\"F\": [\"E\", 100]` above means that the note labelled F is 100\ncents above the note labelled E. To avoid giving redundant information, the\nentry `\"C\": [\"C\", 0]` ensures that note labelled C is defined, but does not\nprovide any information about its pitch since that information can be derived\nfrom the other notes. In general, your temperament definition should have\nexactly one note that is not defined relative to another note.\n\nConceptually, you can imagine the note information being used to deduce the\npitch of each note by starting at the reference pitch (which is already known)\nand working outwards. For example, if we have the pitch of the reference note A,\nthen we can immediately deduce the pitches of B♭ (100 cents above) and G♯ (100\ncents below). We can then continue this process to deduce the pitches of B and\nG, and so on.\n\nA note on octaves: an octave is defined to be 1200 cents, or a pitch ratio of\n2:1. The notes that you specify in the `notes` object are assumed to fill a\n_single octave_, meaning that the definition `\"C♯\": [\"C\", 1300]` is equivalent\nto the one given in the example above for C♯, since 1300 - 1200 is 100.\n\n### Metadata\n\nIn addition to the required `name` key, there are several other keys which can\nbe used to add metadata to a temperament. Currently, the supported keys are as\nfollows:\n\n- `description`: a longer description of a temperament. It is recommended to\n  restrict this to a single sentence, with a period at the end.\n- `source`: a description of the source from which the temperament data was\n  obtained. For example, this could be a URL pointing to the Wikipedia page of\n  your temperament or another page that describes it.\n\n## License\n\nThis is free software, released under the\n[Zero Clause BSD License](https://spdx.org/licenses/0BSD.html), as found in the\n`LICENSE` file of this repository. This license places no restrictions on your\nuse, modification, or redistribution of the library: providing attribution is\nappreciated, but not required.\n","readmeFilename":"README.md","keywords":["temperament","music","theory","pitch"]}