{"_id":"@audio/mir-chroma","_rev":"4-d6f25bddc5c5f501030ee20e652050fd","name":"@audio/mir-chroma","dist-tags":{"latest":"1.1.2"},"versions":{"1.0.0":{"name":"@audio/mir-chroma","version":"1.0.0","keywords":["audio","dsp","mir","chroma","pcp","nnls"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/mir-chroma@1.0.0","maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"dist":{"shasum":"3d857354c8b1f1d67e926721127da5d796bfad81","tarball":"https://registry.npmjs.org/@audio/mir-chroma/-/mir-chroma-1.0.0.tgz","fileCount":2,"integrity":"sha512-N2Witdo5tQxu9VUOlITAkqG/NYSGWzI2kZX/tuE/nrfsQmVnWxsynAEfkKTwDr7qhWPP+yCxxATlNe0TaSxD4g==","signatures":[{"sig":"MEUCIFEDACOQhVKDGN1Ac0pSCk01DAVgeqdfiymS2i1R4Bk1AiEAz8guvkbNCT7ojpKXKVA+vB8mz392XZxGbnlLFi208ow=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5253},"main":"chroma.js","type":"module","engines":{"node":">=18"},"exports":{".":"./chroma.js","./package.json":"./package.json"},"gitHead":"59e2811439a5d077fcfce741bae3e4090cecffe8","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"_npmVersion":"11.12.1","description":"Chroma (pitch-class profile) feature — a 12-D vector where each bin holds","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"fourier-transform":"^2.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mir-chroma_1.0.0_1783540381651_0.9804235847103144","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@audio/mir-chroma","version":"1.1.0","keywords":["audio","dsp","mir","chroma","pcp","nnls"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/mir-chroma@1.1.0","maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"dist":{"shasum":"2ce619ba6898dc82883d24ead204de5a98fa1f73","tarball":"https://registry.npmjs.org/@audio/mir-chroma/-/mir-chroma-1.1.0.tgz","fileCount":3,"integrity":"sha512-Aqh07b2GCn1WSBXbYlY+oIIbgxn7hWmFnKXYrh/4CgEf7DIIZD3IndA5TU3TEhlzbMxqOTXVFi0KryXC8T8GLA==","signatures":[{"sig":"MEUCIA4ZvaToNXqKuitEHhMwvauj2S189lLeYfEAPCVgYObLAiEArwTG/YCGEjFX1MQ+zGPXHsoBAGQQj+P0/sofxxygh9s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6284},"main":"chroma.js","type":"module","audio":"./audio.js","engines":{"node":">=18"},"exports":{".":"./chroma.js","./audio":"./audio.js","./package.json":"./package.json"},"gitHead":"d2606f054c981e35181de1e693c40a2a74236eb6","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"_npmVersion":"11.12.1","description":"Chroma (pitch-class profile) feature — a 12-D vector where each bin holds","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"fourier-transform":"^2.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mir-chroma_1.1.0_1783692308520_0.1979421954213736","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@audio/mir-chroma","version":"1.1.1","keywords":["audio","dsp","mir","chroma","pcp","nnls"],"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","_id":"@audio/mir-chroma@1.1.1","maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"dist":{"shasum":"148b5cdc4a0badc4396a04ca96702b562df57ada","tarball":"https://registry.npmjs.org/@audio/mir-chroma/-/mir-chroma-1.1.1.tgz","fileCount":4,"integrity":"sha512-8KokBpCoGECphqeoogEIWRxVVT441JaoVH9lHO0+CsYMMRUp8+OM53DGnZU4G39jngjutWFgPe4up2g9QNYrZA==","signatures":[{"sig":"MEUCIBuhzZik5Vu5LksiKhBx+EbTfVOqnUYu24rmFL/LPfZwAiEAizU2w9HQQjEn/ifM+NOb5fk2JxU9YWdiI5IGsdCcfSA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7361},"main":"chroma.js","type":"module","audio":"./audio.js","engines":{"node":">=18"},"exports":{".":"./chroma.js","./audio":{"types":"./audio.d.ts","default":"./audio.js"},"./package.json":"./package.json"},"gitHead":"d4fe4b5049989b7900c4b734f72dfd381ad8c23f","_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"_npmVersion":"11.12.1","description":"Chroma (pitch-class profile) feature — a 12-D vector where each bin holds","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","dependencies":{"fourier-transform":"^2.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mir-chroma_1.1.1_1783701751668_0.74270124669647","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@audio/mir-chroma","version":"1.1.2","description":"Chroma (pitch-class profile) feature — a 12-D vector where each bin holds","type":"module","sideEffects":false,"main":"chroma.js","exports":{".":"./chroma.js","./audio":{"types":"./audio.d.ts","default":"./audio.js"},"./package.json":"./package.json"},"dependencies":{"fourier-transform":"^2.2.0"},"keywords":["audio","dsp","mir","chroma","pcp","nnls"],"license":"MIT","author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"engines":{"node":">=18"},"publishConfig":{"access":"public"},"audio":"./audio.js","repository":{"type":"git","url":"git+https://github.com/audiojs/mir.git","directory":"packages/mir-chroma"},"funding":"https://github.com/sponsors/audiojs","types":"index.d.ts","gitHead":"92646d93d32b77e5219d245361ffbcb361ff683e","_id":"@audio/mir-chroma@1.1.2","bugs":{"url":"https://github.com/audiojs/mir/issues"},"homepage":"https://github.com/audiojs/mir#readme","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-Yc4yV8qEOo3AhKiM5b1xUVWmBfRxhyxKQnUN+cQYLAPiDkjJZzXE9Cy4tCspncX2KyWj3+GTV3t02E1uaHABew==","shasum":"2fa61486abb3d110a7011f2e20f7bc1002b04e6a","tarball":"https://registry.npmjs.org/@audio/mir-chroma/-/mir-chroma-1.1.2.tgz","fileCount":6,"unpackedSize":9876,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC7g/AYH8PRjt4kCQeLUIGKNhESM8JxUnfUiXQ6WibxggIgec1lwsWTDu4gy3Lkl0zTt+32+RDdd7KWeKu4ipIj+NY="}]},"_npmUser":{"name":"dy","email":"df.creative@gmail.com"},"directories":{},"maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mir-chroma_1.1.2_1783731669600_0.8337011661412748"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-08T19:53:01.542Z","modified":"2026-07-11T01:01:09.931Z","1.0.0":"2026-07-08T19:53:01.780Z","1.1.0":"2026-07-10T14:05:08.684Z","1.1.1":"2026-07-10T16:42:31.807Z","1.1.2":"2026-07-11T01:01:09.774Z"},"author":{"name":"Dmitry Iv.","email":"dfcreative@gmail.com"},"license":"MIT","keywords":["audio","dsp","mir","chroma","pcp","nnls"],"description":"Chroma (pitch-class profile) feature — a 12-D vector where each bin holds","maintainers":[{"name":"jamen","email":"jamenmarz@gmail.com"},{"name":"dfcreative","email":"df.creative@gmail.com"},{"name":"dy","email":"df.creative@gmail.com"}],"readme":"# @audio/mir-chroma\n\n> Chroma (pitch-class profile) — a 12-D vector where each bin holds the energy attributed to one pitch class (C, C♯, …, B), folding all octaves together.\n\n`npm install @audio/mir-chroma`\n\n```js\nimport chroma from '@audio/mir-chroma'\n\nlet c = chroma(data, { fs: 44100 })   // Float64Array[12], L1-normalized (sums to 1)\n```\n\nTwo methods:\n\n- **`'pcp'`** (default) — classical Fujishima (1999). Each spectral bin is mapped to its nearest pitch class by log-frequency rounding and power-accumulated.\n- **`'nnls'`** — Mauch & Dixon (2010) NNLS Chroma. Fits the observed spectrum as a nonnegative combination of synthetic pitch-tone profiles (fundamental + 1/h-decaying overtones) via multiplicative NMF updates, then folds pitch activations into pitch classes. Cleaner on polyphonic audio — suppresses octave and harmonic confusion that PCP is prone to.\n\nOptions: - `fs` — sample rate (default 44100, Hz) · `method` — `'pcp'` or `'nnls'` (default `'pcp'`) · `minFreq`/`maxFreq` — analysis band for `'pcp'` (default 65/2093, Hz, ≈C2–C7) · `harmonics` — partials per pitch template for `'nnls'` (default 8) · `iterations` — NMF update steps for `'nnls'` (default 30)\n\n`data` must be a power-of-2-length window (throws otherwise) — chroma operates on one FFT frame per call; slide it yourself for a chromagram.\n\nAlso exported as an `audio.js` stat manifest (`./audio`) — chromagram frames over time plus their normalized mean.\n\nPart of [@audio/mir](https://github.com/audiojs/mir).\n","readmeFilename":"README.md","homepage":"https://github.com/audiojs/mir#readme","repository":{"type":"git","url":"git+https://github.com/audiojs/mir.git","directory":"packages/mir-chroma"},"bugs":{"url":"https://github.com/audiojs/mir/issues"}}