{"_id":"4track","_rev":"17-0f97d2563943b833b7af5d1f9adbe44f","name":"4track","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"name":"4track","version":"0.1.0","keywords":["svelte","audio","recorder","cassette","4-track"],"author":{"name":"Andre Boekhorst"},"license":"GPL-3.0-only","_id":"4track@0.1.0","maintainers":[{"name":"bkhrst","email":"npm@andreboekhorst.nl"}],"homepage":"https://github.com/andreboekhorst/4track.cc#readme","bugs":{"url":"https://github.com/andreboekhorst/4track.cc/issues"},"dist":{"shasum":"75fd7c0db46c4fc5ed63fa513e07957a35afc651","tarball":"https://registry.npmjs.org/4track/-/4track-0.1.0.tgz","fileCount":79,"integrity":"sha512-Zu70AZ009CBHubpL8h2YMUYoM2WM3dHYlj0C/LrnygrNabP15OMKbRmlMrX91GH/HwkmKqAvZG38Db63OFw/tA==","signatures":[{"sig":"MEUCIEgPLxpGTnE0tXEqnAmcOuJyxRsbjNphkfF/Zawi5NZfAiEA2LqSJnD6fY76LxOM7Sj63/ovaRffg/YTvfxKrhVjwL0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12478533},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"7ac73bae896eacc1e89369abf350a1a61029e211","scripts":{"dev":"vite dev","build":"vite build","check":"svelte-check --tsconfig ./tsconfig.json","package":"svelte-package -o dist","preview":"vite preview","check:watch":"svelte-check --tsconfig ./tsconfig.json --watch","prepublishOnly":"npm run package"},"_npmUser":{"name":"bkhrst","email":"npm@andreboekhorst.nl"},"repository":{"url":"git+https://github.com/andreboekhorst/4track.cc.git","type":"git"},"_npmVersion":"11.6.2","description":"A 4-track cassette recorder component for Svelte 5","directories":{},"_nodeVersion":"25.1.0","_hasShrinkwrap":false,"devDependencies":{"sass":"^1.97.3","vite":"^7.3.1","svelte":"^5.49.2","prettier":"^3.8.1","typescript":"^5.9.3","svelte-check":"^4.3.6","@sveltejs/package":"^2.5.7","prettier-plugin-svelte":"^3.5.0","@sveltejs/vite-plugin-svelte":"^6.2.4"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/4track_0.1.0_1773002602556_0.44376594431069916","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"4track","version":"0.1.1","keywords":["svelte","audio","recorder","cassette","4-track"],"author":{"name":"Andre Boekhorst"},"license":"GPL-3.0-only","_id":"4track@0.1.1","maintainers":[{"name":"bkhrst","email":"npm@andreboekhorst.nl"}],"homepage":"https://github.com/andreboekhorst/4track.cc#readme","bugs":{"url":"https://github.com/andreboekhorst/4track.cc/issues"},"dist":{"shasum":"4a7c5110a6ac0cb3948f47c00a38060b7a2dada1","tarball":"https://registry.npmjs.org/4track/-/4track-0.1.1.tgz","fileCount":79,"integrity":"sha512-KcH7RhdCRUO4aZM4Awd+sm9i7n7pbv7HJzRdQbC8js4CyZd5yhiqy8NKKksRtwjBQxHWqLm27p778DF+HfpfsQ==","signatures":[{"sig":"MEQCIBEwLziIn6MIbEELfOMTv36A3oQXPcTEPbdE8FZAbOf2AiBTHd0sW+Qe4gTbMSh0u5OR2xdI83EGaK2xp8uLqyKfQw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12479057},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"f2d15e727e9bdb0ca3f73b8f8135e6475eb9a3a8","scripts":{"dev":"vite dev","build":"vite build","check":"svelte-check --tsconfig ./tsconfig.json","package":"svelte-package -o dist","preview":"vite preview","check:watch":"svelte-check --tsconfig ./tsconfig.json --watch","prepublishOnly":"npm run package"},"_npmUser":{"name":"bkhrst","email":"npm@andreboekhorst.nl"},"repository":{"url":"git+https://github.com/andreboekhorst/4track.cc.git","type":"git"},"_npmVersion":"11.6.2","description":"A 4-track cassette recorder component for Svelte 5","directories":{},"_nodeVersion":"25.1.0","_hasShrinkwrap":false,"devDependencies":{"sass":"^1.97.3","vite":"^7.3.1","svelte":"^5.49.2","prettier":"^3.8.1","typescript":"^5.9.3","svelte-check":"^4.3.6","@sveltejs/package":"^2.5.7","prettier-plugin-svelte":"^3.5.0","@sveltejs/vite-plugin-svelte":"^6.2.4"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/4track_0.1.1_1775107601517_0.10657011199580824","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"4track","version":"0.1.2","keywords":["svelte","audio","recorder","cassette","4-track"],"author":{"name":"Andre Boekhorst"},"license":"GPL-3.0-only","_id":"4track@0.1.2","maintainers":[{"name":"bkhrst","email":"npm@andreboekhorst.nl"}],"homepage":"https://github.com/andreboekhorst/4track.cc#readme","bugs":{"url":"https://github.com/andreboekhorst/4track.cc/issues"},"dist":{"shasum":"3a23e7616979f8cbf3b13790f55c22b46b54721d","tarball":"https://registry.npmjs.org/4track/-/4track-0.1.2.tgz","fileCount":79,"integrity":"sha512-i7zkdaKddqlqRIPsYgBNZzxmBigKG1Q13Wy/9SjyILoon4F9HNGSXgDiJmmvhR+rLJMwK2uybLvLJHcH26NW7w==","signatures":[{"sig":"MEUCIQCiL224D6DYF8vF1G652RCEf5zxSMc0YtsAdxhSCRFZiQIgGlinfNvuaEbOKnT2zEMUgKYM73gz7+QyQB2ik9WbS4A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12479093},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"e5b350bc691a8989e1e06666549d54f6a336eec0","scripts":{"dev":"vite dev","build":"vite build","check":"svelte-check --tsconfig ./tsconfig.json","package":"svelte-package -o dist","preview":"vite preview","check:watch":"svelte-check --tsconfig ./tsconfig.json --watch","prepublishOnly":"npm run package"},"_npmUser":{"name":"bkhrst","email":"npm@andreboekhorst.nl"},"repository":{"url":"git+https://github.com/andreboekhorst/4track.cc.git","type":"git"},"_npmVersion":"11.6.2","description":"A 4-track cassette recorder component for Svelte 5","directories":{},"_nodeVersion":"25.1.0","_hasShrinkwrap":false,"devDependencies":{"sass":"^1.97.3","vite":"^7.3.1","svelte":"^5.49.2","prettier":"^3.8.1","typescript":"^5.9.3","svelte-check":"^4.3.6","@sveltejs/package":"^2.5.7","prettier-plugin-svelte":"^3.5.0","@sveltejs/vite-plugin-svelte":"^6.2.4"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/4track_0.1.2_1775108859208_0.709357726188754","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"4track","version":"0.1.3","keywords":["svelte","audio","recorder","cassette","4-track"],"author":{"name":"Andre Boekhorst"},"license":"GPL-3.0-only","_id":"4track@0.1.3","maintainers":[{"name":"bkhrst","email":"npm@andreboekhorst.nl"}],"homepage":"https://github.com/andreboekhorst/4track.cc#readme","bugs":{"url":"https://github.com/andreboekhorst/4track.cc/issues"},"dist":{"shasum":"dc6c8f48f72e4f60c6a3ba35bcdbcd388b481bab","tarball":"https://registry.npmjs.org/4track/-/4track-0.1.3.tgz","fileCount":79,"integrity":"sha512-TRR1/A8lzmdyrBYy4926BF58me85fUrDjARDxUxzxAdAEqPymJYkgad0w9NncLJg3AvfSaVKkUUnqupMuk/dhw==","signatures":[{"sig":"MEQCIBYu5rjVPztlsVJN4uYwrrLmdz/DoO6K9gP0DFQK9NcYAiB4mYKXAoF8SM1iaVkiCGcXREmkraJZzr2Jdc5bj1X+XQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12478838},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"ee606c3bb7eac6908025516d0aef30453925434e","scripts":{"dev":"vite dev","build":"vite build","check":"svelte-check --tsconfig ./tsconfig.json","package":"svelte-package -o dist","preview":"vite preview","check:watch":"svelte-check --tsconfig ./tsconfig.json --watch","prepublishOnly":"npm run package"},"_npmUser":{"name":"bkhrst","email":"npm@andreboekhorst.nl"},"repository":{"url":"git+https://github.com/andreboekhorst/4track.cc.git","type":"git"},"_npmVersion":"11.6.2","description":"A 4-track cassette recorder component for Svelte 5","directories":{},"_nodeVersion":"25.1.0","_hasShrinkwrap":false,"devDependencies":{"sass":"^1.97.3","vite":"^7.3.1","svelte":"^5.49.2","prettier":"^3.8.1","typescript":"^5.9.3","svelte-check":"^4.3.6","@sveltejs/package":"^2.5.7","prettier-plugin-svelte":"^3.5.0","@sveltejs/vite-plugin-svelte":"^6.2.4"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/4track_0.1.3_1775114184581_0.9267055549643675","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"4track","version":"0.1.4","keywords":["svelte","audio","recorder","cassette","4-track"],"author":{"name":"Andre Boekhorst"},"license":"GPL-3.0-only","_id":"4track@0.1.4","maintainers":[{"name":"bkhrst","email":"npm@andreboekhorst.nl"}],"homepage":"https://github.com/andreboekhorst/4track.cc#readme","bugs":{"url":"https://github.com/andreboekhorst/4track.cc/issues"},"dist":{"shasum":"63ca8f0cfef663cc790cba344f1370f158e6086e","tarball":"https://registry.npmjs.org/4track/-/4track-0.1.4.tgz","fileCount":79,"integrity":"sha512-1huVo9P9EfzeMdisriS9hiUWnAB1YPyZSvJxVz7pXgxTk1QZwLUew0waVMKuc9iATxcgcyAHRKCmjrq2QbhTtg==","signatures":[{"sig":"MEQCIBEHVmFk/0LgLe7dxFy13+wPGzMy3INOUvMPhTrGewDoAiBg6L15vF/NWDiuQg1xO37pBYrjkO7kTcgoFt3ew4cv0Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12478838},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"ee606c3bb7eac6908025516d0aef30453925434e","scripts":{"dev":"vite dev","build":"vite build","check":"svelte-check --tsconfig ./tsconfig.json","package":"svelte-package -o dist","preview":"vite preview","check:watch":"svelte-check --tsconfig ./tsconfig.json --watch","prepublishOnly":"npm run package"},"_npmUser":{"name":"bkhrst","email":"npm@andreboekhorst.nl"},"repository":{"url":"git+https://github.com/andreboekhorst/4track.cc.git","type":"git"},"_npmVersion":"11.6.2","description":"A 4-track cassette recorder component for Svelte 5","directories":{},"_nodeVersion":"25.1.0","_hasShrinkwrap":false,"devDependencies":{"sass":"^1.97.3","vite":"^7.3.1","svelte":"^5.49.2","prettier":"^3.8.1","typescript":"^5.9.3","svelte-check":"^4.3.6","@sveltejs/package":"^2.5.7","prettier-plugin-svelte":"^3.5.0","@sveltejs/vite-plugin-svelte":"^6.2.4"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/4track_0.1.4_1775114242521_0.11073144107211608","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"4track","version":"0.1.5","keywords":["svelte","audio","recorder","cassette","4-track"],"author":{"name":"Andre Boekhorst"},"license":"GPL-3.0-only","_id":"4track@0.1.5","maintainers":[{"name":"bkhrst","email":"npm@andreboekhorst.nl"}],"homepage":"https://github.com/andreboekhorst/4track.cc#readme","bugs":{"url":"https://github.com/andreboekhorst/4track.cc/issues"},"dist":{"shasum":"eb129f60083274b84558aee88cd57653bcbec873","tarball":"https://registry.npmjs.org/4track/-/4track-0.1.5.tgz","fileCount":79,"integrity":"sha512-5eDFGj7Ymos0fQmIuglht1wr4rcIMXHvkwI5R8tGwbORHq4YurrEcDjs4Kr6YhVhJ+huQhgcM0BN9ICij8RIrA==","signatures":[{"sig":"MEUCIGnN+CX7SX5QpWbn/yulgWUNXKznLxfFHKBVr47eyErUAiEA4WX5kyXml+D//Zrh3p5rQdWTX01w71i/+XT52P5+7LA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12478828},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"66a51064bc0778e0ae023f3b52642c86fe6f0555","scripts":{"dev":"vite dev","build":"vite build","check":"svelte-check --tsconfig ./tsconfig.json","package":"svelte-package -o dist","preview":"vite preview","check:watch":"svelte-check --tsconfig ./tsconfig.json --watch","prepublishOnly":"npm run package"},"_npmUser":{"name":"bkhrst","email":"npm@andreboekhorst.nl"},"repository":{"url":"git+https://github.com/andreboekhorst/4track.cc.git","type":"git"},"_npmVersion":"11.6.2","description":"A 4-track cassette recorder component for Svelte 5","directories":{},"_nodeVersion":"25.1.0","_hasShrinkwrap":false,"devDependencies":{"sass":"^1.97.3","vite":"^7.3.1","svelte":"^5.49.2","prettier":"^3.8.1","typescript":"^5.9.3","svelte-check":"^4.3.6","@sveltejs/package":"^2.5.7","prettier-plugin-svelte":"^3.5.0","@sveltejs/vite-plugin-svelte":"^6.2.4"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/4track_0.1.5_1775115534833_0.47513604010143196","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"4track","version":"0.1.6","keywords":["svelte","audio","recorder","cassette","4-track"],"author":{"name":"Andre Boekhorst"},"license":"GPL-3.0-only","_id":"4track@0.1.6","maintainers":[{"name":"bkhrst","email":"npm@andreboekhorst.nl"}],"homepage":"https://github.com/andreboekhorst/4track.cc#readme","bugs":{"url":"https://github.com/andreboekhorst/4track.cc/issues"},"dist":{"shasum":"7fab3e38154b5c2db7e7f0d9437e6b196fe06c27","tarball":"https://registry.npmjs.org/4track/-/4track-0.1.6.tgz","fileCount":78,"integrity":"sha512-jWU14KWlYRMMR15v1j8PI8FUP9gLCuyuP/CrAW+qlUkIGzAJqK0xbvHyZvAclD2A3M1diZAeIxBZpkshEjppGw==","signatures":[{"sig":"MEUCIQD3JCaKEDVoG6UckfwS4kVMVda8k55YD00IH7jo4y1MwAIgXB9zo5wL9wZyYP3ZSOrLHdqEmCmiB3CwDMUAcFrSfzg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2470207},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"082b7329d8d40634e5e945c4c6cbbe8fd3245115","scripts":{"dev":"vite dev","build":"vite build","check":"svelte-check --tsconfig ./tsconfig.json","package":"svelte-package -o dist","preview":"vite preview","check:watch":"svelte-check --tsconfig ./tsconfig.json --watch","prepublishOnly":"npm run package"},"_npmUser":{"name":"bkhrst","email":"npm@andreboekhorst.nl"},"repository":{"url":"git+https://github.com/andreboekhorst/4track.cc.git","type":"git"},"_npmVersion":"11.6.2","description":"A 4-track cassette recorder component for Svelte 5","directories":{},"_nodeVersion":"25.1.0","_hasShrinkwrap":false,"devDependencies":{"sass":"^1.97.3","vite":"^7.3.1","svelte":"^5.49.2","prettier":"^3.8.1","typescript":"^5.9.3","svelte-check":"^4.3.6","@sveltejs/package":"^2.5.7","prettier-plugin-svelte":"^3.5.0","@sveltejs/vite-plugin-svelte":"^6.2.4"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/4track_0.1.6_1775407479684_0.9634708692783895","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"4track","version":"0.1.7","keywords":["svelte","audio","recorder","cassette","4-track"],"author":{"name":"Andre Boekhorst"},"license":"GPL-3.0-only","_id":"4track@0.1.7","maintainers":[{"name":"bkhrst","email":"npm@andreboekhorst.nl"}],"homepage":"https://github.com/andreboekhorst/4track.cc#readme","bugs":{"url":"https://github.com/andreboekhorst/4track.cc/issues"},"dist":{"shasum":"0616542d9e81c2a2c6570f0919245b29b44d4d43","tarball":"https://registry.npmjs.org/4track/-/4track-0.1.7.tgz","fileCount":78,"integrity":"sha512-gLyU5wTRMjORW4PnmNEaESx7MEgDlT+Fn2phSTMlFQqLjHcIG+QxkMCmmw39mGvfGMlQ0mS8pSxWQ1tWKfHZqA==","signatures":[{"sig":"MEQCIHiFNqKEFravlZBHFqAsvB5pV7yl2eQOc0IERRTa56IkAiBVR5gqp/hrpP7l6JsvyGdMoM3qa6M2jNG7G77i0khJ6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2470939},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"ff09a9240dd4790769bf73fad9da48041412a9d5","scripts":{"dev":"vite dev","build":"vite build","check":"svelte-check --tsconfig ./tsconfig.json","package":"svelte-package -o dist","preview":"vite preview","check:watch":"svelte-check --tsconfig ./tsconfig.json --watch","prepublishOnly":"npm run package"},"_npmUser":{"name":"bkhrst","email":"npm@andreboekhorst.nl"},"repository":{"url":"git+https://github.com/andreboekhorst/4track.cc.git","type":"git"},"_npmVersion":"11.6.2","description":"A 4-track cassette recorder component for Svelte 5","directories":{},"_nodeVersion":"25.1.0","_hasShrinkwrap":false,"devDependencies":{"sass":"^1.97.3","vite":"^7.3.1","svelte":"^5.49.2","prettier":"^3.8.1","typescript":"^5.9.3","svelte-check":"^4.3.6","@sveltejs/package":"^2.5.7","prettier-plugin-svelte":"^3.5.0","@sveltejs/vite-plugin-svelte":"^6.2.4"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/4track_0.1.7_1775497648835_0.2438611369427819","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"4track","version":"0.1.8","keywords":["svelte","audio","recorder","cassette","4-track"],"author":{"name":"Andre Boekhorst"},"license":"GPL-3.0-only","_id":"4track@0.1.8","maintainers":[{"name":"bkhrst","email":"npm@andreboekhorst.nl"}],"homepage":"https://github.com/andreboekhorst/4track.cc#readme","bugs":{"url":"https://github.com/andreboekhorst/4track.cc/issues"},"dist":{"shasum":"af26bc40b6f4278d2b52ac22d130772d248b583b","tarball":"https://registry.npmjs.org/4track/-/4track-0.1.8.tgz","fileCount":78,"integrity":"sha512-Q1mvvFssXk6W4E+w8cEjBsKSKfgE2nOo5ZBey9cxnA+em671josaccoE3U8SWo9hhkci8hVTekVh7V4QbZZ8aQ==","signatures":[{"sig":"MEUCIQCJqateT8y35vbNEMFs+wtrDD+SX/cOGhJ6UqNdiQj9KwIgVZQyQruUBfm+DKkn1UmtyCd/N9uSYHZw4IAxD03FgII=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2471012},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"12220e76e3f1a3fa80365dc0d6d1d9febfa47a95","scripts":{"dev":"vite dev","build":"vite build","check":"svelte-check --tsconfig ./tsconfig.json","package":"svelte-package -o dist","preview":"vite preview","check:watch":"svelte-check --tsconfig ./tsconfig.json --watch","prepublishOnly":"npm run package"},"_npmUser":{"name":"bkhrst","email":"npm@andreboekhorst.nl"},"repository":{"url":"git+https://github.com/andreboekhorst/4track.cc.git","type":"git"},"_npmVersion":"11.6.2","description":"A 4-track cassette recorder component for Svelte 5","directories":{},"_nodeVersion":"25.1.0","_hasShrinkwrap":false,"devDependencies":{"sass":"^1.97.3","vite":"^7.3.1","svelte":"^5.49.2","prettier":"^3.8.1","typescript":"^5.9.3","svelte-check":"^4.3.6","@sveltejs/package":"^2.5.7","prettier-plugin-svelte":"^3.5.0","@sveltejs/vite-plugin-svelte":"^6.2.4"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/4track_0.1.8_1775550446994_0.2738898976941857","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"4track","version":"0.1.9","keywords":["svelte","audio","recorder","cassette","4-track"],"author":{"name":"Andre Boekhorst"},"license":"GPL-3.0-only","_id":"4track@0.1.9","maintainers":[{"name":"bkhrst","email":"npm@andreboekhorst.nl"}],"homepage":"https://github.com/andreboekhorst/4track.cc#readme","bugs":{"url":"https://github.com/andreboekhorst/4track.cc/issues"},"dist":{"shasum":"4bea71994cc44d245ee53687b291557f0590be79","tarball":"https://registry.npmjs.org/4track/-/4track-0.1.9.tgz","fileCount":78,"integrity":"sha512-rJQou5lC+yWy8sown+vBM+UZuuKvaXl6rkqWJ8/2qPa9yhZGRtBs7Ke/qlq8CfgPCVzaJkOBj7QCsjw59MUh4g==","signatures":[{"sig":"MEQCIEfwnzO9qI3U88YbHZWxSK4i2Rlw9h8AP8DpwwxoVNn0AiBZR5SrZ0Gnig54pCcpK5iiTzH5C6qmdh475b1f/WRUJw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2471022},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"9468d58e9d7ca96ab20e73355520ad7441dac8d1","scripts":{"dev":"vite dev","build":"vite build","check":"svelte-check --tsconfig ./tsconfig.json","package":"svelte-package -o dist","preview":"vite preview","check:watch":"svelte-check --tsconfig ./tsconfig.json --watch","prepublishOnly":"npm run package"},"_npmUser":{"name":"bkhrst","email":"npm@andreboekhorst.nl"},"repository":{"url":"git+https://github.com/andreboekhorst/4track.cc.git","type":"git"},"_npmVersion":"11.6.2","description":"A 4-track cassette recorder component for Svelte 5","directories":{},"_nodeVersion":"25.1.0","_hasShrinkwrap":false,"devDependencies":{"sass":"^1.97.3","vite":"^7.3.1","svelte":"^5.49.2","prettier":"^3.8.1","typescript":"^5.9.3","svelte-check":"^4.3.6","@sveltejs/package":"^2.5.7","prettier-plugin-svelte":"^3.5.0","@sveltejs/vite-plugin-svelte":"^6.2.4"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/4track_0.1.9_1775735908840_0.14410491446585394","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"4track","version":"0.1.10","keywords":["svelte","audio","recorder","cassette","4-track"],"author":{"name":"Andre Boekhorst"},"license":"GPL-3.0-only","_id":"4track@0.1.10","maintainers":[{"name":"bkhrst","email":"npm@andreboekhorst.nl"}],"homepage":"https://github.com/andreboekhorst/4track.cc#readme","bugs":{"url":"https://github.com/andreboekhorst/4track.cc/issues"},"dist":{"shasum":"23d1b787613f319a77b7834456ff0f2f2769e04b","tarball":"https://registry.npmjs.org/4track/-/4track-0.1.10.tgz","fileCount":80,"integrity":"sha512-qXjSAr/+eJsU4dNLKtnUChEvgXOqgeop52a3QAUpWvYQCuflbLL0oN34eISQYrtKjRUEv2f50NMeMg4HFsTP8w==","signatures":[{"sig":"MEUCIQDsAylSc37ZzbbphPGkFxV8TH+djbC89mR++g5du7vgxQIgFQ22ds/H7pMCTF3hLGRkGbaljgQvDHCq+H2olEqu7i4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2473087},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"9583fb80a5478b037aebb330e21219b40b0a76be","scripts":{"dev":"vite dev","build":"vite build","check":"svelte-check --tsconfig ./tsconfig.json","package":"svelte-package -o dist","preview":"vite preview","check:watch":"svelte-check --tsconfig ./tsconfig.json --watch","prepublishOnly":"npm run package"},"_npmUser":{"name":"bkhrst","email":"npm@andreboekhorst.nl"},"repository":{"url":"git+https://github.com/andreboekhorst/4track.cc.git","type":"git"},"_npmVersion":"11.6.2","description":"A 4-track cassette recorder component for Svelte 5","directories":{},"_nodeVersion":"25.1.0","_hasShrinkwrap":false,"devDependencies":{"sass":"^1.97.3","vite":"^7.3.1","svelte":"^5.49.2","prettier":"^3.8.1","typescript":"^5.9.3","svelte-check":"^4.3.6","@sveltejs/package":"^2.5.7","prettier-plugin-svelte":"^3.5.0","@sveltejs/vite-plugin-svelte":"^6.2.4"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/4track_0.1.10_1775816146309_0.4450363091027658","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"4track","version":"0.1.12","keywords":["svelte","audio","recorder","cassette","4-track"],"author":{"name":"Andre Boekhorst"},"license":"GPL-3.0-only","_id":"4track@0.1.12","maintainers":[{"name":"bkhrst","email":"npm@andreboekhorst.nl"}],"homepage":"https://github.com/andreboekhorst/4track.cc#readme","bugs":{"url":"https://github.com/andreboekhorst/4track.cc/issues"},"dist":{"shasum":"d7f2feeadafa98afac88c992d34c1bdb75c1b62b","tarball":"https://registry.npmjs.org/4track/-/4track-0.1.12.tgz","fileCount":78,"integrity":"sha512-0MJOE2aJ7JjFyBIf5/3dlrFOuS/9fdYEOkXp3OiYVHtaHan6rLV29PqhfH/8VEM+bJ+x6ZK/VxUG1TBbkL0+Cw==","signatures":[{"sig":"MEYCIQDwluznk0sId7IXm3QoGC9YLHCYUsBV/LcyFJ42DXgqEQIhAIXZWSvKjtK4UOIwmrRPvDsOIopKcMnXZIfzkSBiNVeE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2472214},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"929bf69f9bd68548a4ac910a7d89dc9a8ddddbc9","scripts":{"dev":"vite dev","build":"vite build","check":"svelte-check --tsconfig ./tsconfig.json","package":"svelte-package -o dist","preview":"vite preview","check:watch":"svelte-check --tsconfig ./tsconfig.json --watch","prepublishOnly":"npm run package"},"_npmUser":{"name":"bkhrst","email":"npm@andreboekhorst.nl"},"repository":{"url":"git+https://github.com/andreboekhorst/4track.cc.git","type":"git"},"_npmVersion":"11.6.2","description":"A 4-track cassette recorder component for Svelte 5","directories":{},"_nodeVersion":"25.1.0","_hasShrinkwrap":false,"devDependencies":{"sass":"^1.97.3","vite":"^7.3.1","svelte":"^5.49.2","prettier":"^3.8.1","typescript":"^5.9.3","svelte-check":"^4.3.6","@sveltejs/package":"^2.5.7","prettier-plugin-svelte":"^3.5.0","@sveltejs/vite-plugin-svelte":"^6.2.4"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/4track_0.1.12_1776067726515_0.2778407695470684","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"4track","version":"0.1.13","keywords":["svelte","audio","recorder","cassette","4-track"],"author":{"name":"Andre Boekhorst"},"license":"GPL-3.0-only","_id":"4track@0.1.13","maintainers":[{"name":"bkhrst","email":"npm@andreboekhorst.nl"}],"homepage":"https://4track.cc","bugs":{"url":"https://github.com/andreboekhorst/4track.cc/issues"},"dist":{"shasum":"c9c59b2a62c9752ef507fdf7781b68792a87f2e2","tarball":"https://registry.npmjs.org/4track/-/4track-0.1.13.tgz","fileCount":78,"integrity":"sha512-3HhyJv/HXYlhpEZ8tVNH+cZa0qsIqb7M3L+bVbwvuWsLFBPiiXFM3Qc9lYavUCwBnzpXxek1MLJ43P61CmZQJA==","signatures":[{"sig":"MEUCIQDquhkXFDPetnt4HBuCgGcwmPhrijZ7ecBBFNfGt/CUrgIgRaulT2Bk+545/JG8YfCPhuf0ASHMbosu00gh6wN5jEM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2472249},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"929bf69f9bd68548a4ac910a7d89dc9a8ddddbc9","scripts":{"dev":"vite dev","build":"vite build","check":"svelte-check --tsconfig ./tsconfig.json","package":"svelte-package -o dist","preview":"vite preview","check:watch":"svelte-check --tsconfig ./tsconfig.json --watch","prepublishOnly":"npm run package"},"_npmUser":{"name":"bkhrst","email":"npm@andreboekhorst.nl"},"repository":{"url":"git+https://github.com/andreboekhorst/4track.cc.git","type":"git"},"_npmVersion":"11.6.2","description":"A 4-track cassette recorder component for Svelte 5","directories":{},"_nodeVersion":"25.1.0","_hasShrinkwrap":false,"devDependencies":{"sass":"^1.97.3","vite":"^7.3.1","svelte":"^5.49.2","prettier":"^3.8.1","typescript":"^5.9.3","svelte-check":"^4.3.6","@sveltejs/package":"^2.5.7","prettier-plugin-svelte":"^3.5.0","@sveltejs/vite-plugin-svelte":"^6.2.4"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/4track_0.1.13_1776068300191_0.8717817823770846","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"4track","version":"0.1.14","keywords":["svelte","audio","recorder","cassette","4-track"],"author":{"name":"Andre Boekhorst"},"license":"GPL-3.0-only","_id":"4track@0.1.14","maintainers":[{"name":"bkhrst","email":"npm@andreboekhorst.nl"}],"homepage":"https://www.4track.cc","bugs":{"url":"https://github.com/andreboekhorst/4track.cc/issues"},"dist":{"shasum":"54514a9b40fea08604bd0de976c83cb22d0b9e5a","tarball":"https://registry.npmjs.org/4track/-/4track-0.1.14.tgz","fileCount":78,"integrity":"sha512-yIefEzhyNuSeb6u8DL5szMn46Ek+3mlhZpxVnBsQnSnvrqfIpqBXyW0L2QdrNYRUvTjcrjgoc2FPPFsy8AUMCA==","signatures":[{"sig":"MEUCIQDB0wieNCbXQfLBMYqp6gBx/cr/Iqg0UZLE9QjpMaRMXwIgJ9/IEBLMnOwVUu30RyAL9JRLiKlTnN5Jc9bqBajz34o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2472253},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"297a63f898b01564c178dd1a50cb726ab500ccd0","scripts":{"dev":"vite dev","build":"vite build","check":"svelte-check --tsconfig ./tsconfig.json","package":"svelte-package -o dist","preview":"vite preview","check:watch":"svelte-check --tsconfig ./tsconfig.json --watch","prepublishOnly":"npm run package"},"_npmUser":{"name":"bkhrst","email":"npm@andreboekhorst.nl"},"repository":{"url":"git+https://github.com/andreboekhorst/4track.cc.git","type":"git"},"_npmVersion":"11.6.2","description":"A 4-track cassette recorder component for Svelte 5","directories":{},"_nodeVersion":"25.1.0","_hasShrinkwrap":false,"devDependencies":{"sass":"^1.97.3","vite":"^7.3.1","svelte":"^5.49.2","prettier":"^3.8.1","typescript":"^5.9.3","svelte-check":"^4.3.6","@sveltejs/package":"^2.5.7","prettier-plugin-svelte":"^3.5.0","@sveltejs/vite-plugin-svelte":"^6.2.4"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/4track_0.1.14_1776071588371_0.6569910408716426","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"4track","version":"0.1.15","keywords":["svelte","audio","recorder","cassette","4-track"],"author":{"name":"Andre Boekhorst"},"license":"(GPL-3.0-only OR LicenseRef-4track-commercial)","_id":"4track@0.1.15","maintainers":[{"name":"bkhrst","email":"npm@andreboekhorst.nl"}],"homepage":"https://www.4track.cc","bugs":{"url":"https://github.com/andreboekhorst/4-track-recorder/issues"},"dist":{"shasum":"65185cfb848772012104df86584b58d0c6466945","tarball":"https://registry.npmjs.org/4track/-/4track-0.1.15.tgz","fileCount":78,"integrity":"sha512-W3P1nmRUAbGoffKdi8PMEmKfcjB5y2vO13acEcZN30Atzf8r/aDrcOuOjqtPMVJKH7H0yEYkxJ9x+j1/J7v2yQ==","signatures":[{"sig":"MEUCIQCXs1Sm1h1WsQYfDr4F762xQCSR6CoXo0laCmIac25drwIgLCDj9ZPpseF0W4dvddimxtWxbW2IoYSskq1hl3/Choo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2472560},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"bd54ebce22f7c58d0882e3d7383402dbd49443d1","scripts":{"dev":"vite dev","build":"vite build","check":"svelte-check --tsconfig ./tsconfig.json","package":"svelte-package -o dist","preview":"vite preview","check:watch":"svelte-check --tsconfig ./tsconfig.json --watch","prepublishOnly":"npm run package"},"_npmUser":{"name":"bkhrst","email":"npm@andreboekhorst.nl"},"repository":{"url":"git+https://github.com/andreboekhorst/4-track-recorder.git","type":"git"},"_npmVersion":"11.6.2","description":"A 4-track cassette recorder component for Svelte 5","directories":{},"_nodeVersion":"25.1.0","_hasShrinkwrap":false,"devDependencies":{"sass":"^1.97.3","vite":"^7.3.1","svelte":"^5.49.2","prettier":"^3.8.1","typescript":"^5.9.3","svelte-check":"^4.3.6","@sveltejs/package":"^2.5.7","prettier-plugin-svelte":"^3.5.0","@sveltejs/vite-plugin-svelte":"^6.2.4"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/4track_0.1.15_1787505728112_0.0803783027276761","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"4track","version":"0.2.0","keywords":["svelte","audio","recorder","cassette","4-track"],"author":{"name":"Andre Boekhorst"},"license":"(GPL-3.0-only OR LicenseRef-4track-commercial)","_id":"4track@0.2.0","maintainers":[{"name":"bkhrst","email":"npm@andreboekhorst.nl"}],"homepage":"https://www.4track.cc","bugs":{"url":"https://github.com/andreboekhorst/4-track-recorder/issues"},"dist":{"shasum":"2c4d35d06db828d400e614615c4c6f2b7a39222a","tarball":"https://registry.npmjs.org/4track/-/4track-0.2.0.tgz","fileCount":80,"integrity":"sha512-hgI8EV9yWApKN05yhEYeSZERod3ztFt/Cf2UHhlWgzFeYRUHjikkYzlQeU5EpwYK/xnvI/Wcto/hF+tj4oO4Ow==","signatures":[{"sig":"MEUCIEcNJwf6n7HMgtGDWyQgWWfgYGaA42Sm74FX2yrsfzFpAiEAhSEEOOEIYf3btThs4kWaxIu59uQM4CuvXwtOfR3ld9w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2492840},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"db78e00f8552a4f143d808f37def6f72c0cb63fc","scripts":{"dev":"vite dev","build":"vite build","check":"svelte-check --tsconfig ./tsconfig.json","package":"svelte-package -o dist","preview":"vite preview","check:watch":"svelte-check --tsconfig ./tsconfig.json --watch","prepublishOnly":"npm run package"},"_npmUser":{"name":"bkhrst","email":"npm@andreboekhorst.nl"},"repository":{"url":"git+https://github.com/andreboekhorst/4-track-recorder.git","type":"git"},"_npmVersion":"11.6.2","description":"A 4-track cassette recorder component for Svelte 5","directories":{},"_nodeVersion":"25.1.0","_hasShrinkwrap":false,"devDependencies":{"sass":"^1.97.3","vite":"^7.3.1","svelte":"^5.49.2","prettier":"^3.8.1","typescript":"^5.9.3","svelte-check":"^4.3.6","@sveltejs/package":"^2.5.7","prettier-plugin-svelte":"^3.5.0","@sveltejs/vite-plugin-svelte":"^6.2.4"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/4track_0.2.0_1788678046617_0.9784664689505285","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"4track","version":"0.2.1","description":"A 4-track cassette recorder component for Svelte 5","license":"(GPL-3.0-only OR LicenseRef-4track-commercial)","author":{"name":"Andre Boekhorst"},"homepage":"https://www.4track.cc","repository":{"type":"git","url":"git+https://github.com/andreboekhorst/4-track-recorder.git"},"keywords":["svelte","audio","recorder","cassette","4-track"],"type":"module","svelte":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"dev":"vite dev","build":"vite build","preview":"vite preview","package":"svelte-package -o dist","check":"svelte-check --tsconfig ./tsconfig.json","check:watch":"svelte-check --tsconfig ./tsconfig.json --watch","prepublishOnly":"npm run package"},"peerDependencies":{"svelte":"^5.0.0"},"devDependencies":{"@sveltejs/package":"^2.5.7","@sveltejs/vite-plugin-svelte":"^6.2.4","prettier":"^3.8.1","prettier-plugin-svelte":"^3.5.0","sass":"^1.97.3","svelte":"^5.49.2","svelte-check":"^4.3.6","typescript":"^5.9.3","vite":"^7.3.1"},"gitHead":"e3b04319a6897faa2796f13d11cd306a050c18f8","_id":"4track@0.2.1","bugs":{"url":"https://github.com/andreboekhorst/4-track-recorder/issues"},"_nodeVersion":"25.1.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-V4amqNE/7ytlcFK5d0TyFBdq+YotkC/YUvGmT+7Y0mxC8R/tjzgBEt+RGVToD0molTfEpFolYIw4P5xYE8pfIQ==","shasum":"526306da6b2c1e844546da482c9ac24bb81d726b","tarball":"https://registry.npmjs.org/4track/-/4track-0.2.1.tgz","fileCount":80,"unpackedSize":2493279,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDSQhoyPZwaltwtnXykPy1q4Hl8deRUO2/NLEYVKm5GEAiEA+RiYdFUWZLhIA9ra7LoZbeB14Nu1g9RPd/qy2bl5Mzc="}]},"_npmUser":{"name":"bkhrst","email":"npm@andreboekhorst.nl"},"directories":{},"maintainers":[{"name":"bkhrst","email":"npm@andreboekhorst.nl"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/4track_0.2.1_1788681073721_0.8267207499055198"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-08T20:43:22.555Z","modified":"2026-09-06T07:51:14.044Z","0.1.0":"2026-03-08T20:43:22.999Z","0.1.1":"2026-04-02T05:26:41.992Z","0.1.2":"2026-04-02T05:47:39.781Z","0.1.3":"2026-04-02T07:16:25.098Z","0.1.4":"2026-04-02T07:17:23.023Z","0.1.5":"2026-04-02T07:38:55.330Z","0.1.6":"2026-04-05T16:44:39.952Z","0.1.7":"2026-04-06T17:47:29.038Z","0.1.8":"2026-04-07T08:27:27.337Z","0.1.9":"2026-04-09T11:58:29.077Z","0.1.10":"2026-04-10T10:15:46.528Z","0.1.12":"2026-04-13T08:08:46.694Z","0.1.13":"2026-04-13T08:18:20.428Z","0.1.14":"2026-04-13T09:13:08.590Z","0.1.15":"2026-08-23T17:22:08.320Z","0.2.0":"2026-09-06T07:00:46.786Z","0.2.1":"2026-09-06T07:51:13.906Z"},"bugs":{"url":"https://github.com/andreboekhorst/4-track-recorder/issues"},"author":{"name":"Andre Boekhorst"},"license":"(GPL-3.0-only OR LicenseRef-4track-commercial)","homepage":"https://www.4track.cc","keywords":["svelte","audio","recorder","cassette","4-track"],"repository":{"type":"git","url":"git+https://github.com/andreboekhorst/4-track-recorder.git"},"description":"A 4-track cassette recorder component for Svelte 5","maintainers":[{"name":"bkhrst","email":"npm@andreboekhorst.nl"}],"readme":"# 4track\n\nA browser-based 4-track audio recorder built with the Web Audio API and SvelteKit. Designed for low-latency recording with overdub support, latency compensation, and sample-accurate multi-track playback — all running entirely client-side with no server required.\n\n![4-Track Recorder](img/4track.png)\n\n## Give it a try\n\nYou can try out the 4 track recorder on [4track.cc](https://www.4track.cc)\n\n## Installation\n\n```bash\nnpm install 4-track-recorder\n```\n\n## Basic Usage\n\n```svelte\n<script>\n  import { FourTrack } from \"4-track-recorder\"\n</script>\n\n<FourTrack />\n```\n\n## Saving and Loading Projects\n\nThe component uses a custom `.4trk` binary format that stores all track audio data and mixer settings (volume, pan, master volume).\n\n### Bind `save` and `load` functions\n\nUse `bind:save` and `bind:load` to get functions you can call from your own UI:\n\n```svelte\n<script>\n  import { FourTrack } from \"4-track-recorder\"\n\n  let save\n  let load\n\n  function handleSave() {\n    const blob = save()\n    // Download as file\n    const url = URL.createObjectURL(blob)\n    const a = document.createElement(\"a\")\n    a.href = url\n    a.download = \"my-song.4trk\"\n    a.click()\n    URL.revokeObjectURL(url)\n  }\n\n  function handleLoad(event) {\n    const file = event.target.files?.[0]\n    if (file) load(file)\n  }\n\n  // Or load directly from a URL\n  function loadFromUrl() {\n    load(\"https://example.com/songs/demo.4trk\")\n  }\n</script>\n\n<FourTrack bind:save bind:load />\n\n<button onclick={handleSave}>Save Project</button>\n<input type=\"file\" accept=\".4trk\" onchange={handleLoad} />\n```\n\n### Load a project on mount\n\nPass a URL or `File` to `initialProject` to auto-load a project when the component mounts:\n\n```svelte\n<FourTrack initialProject=\"/songs/demo.4trk\" />\n```\n\n## Props\n\n| Prop             | Type                                                   | Description                                                       |\n| ---------------- | ------------------------------------------------------ | ----------------------------------------------------------------- |\n| `hiddenTracks`   | `HiddenTrackConfig[]`                                  | Background audio tracks (e.g. cassette hiss)                      |\n| `onready`        | `(detail: { engine: AudioEngine }) => void`            | Callback when the engine is initialized                           |\n| `save`           | `() => Blob` (bindable)                                | Bind to get a function that exports the project as a `.4trk` blob |\n| `load`           | `(source: File \\| string) => Promise<void>` (bindable) | Bind to get a function that imports a `.4trk` file or URL         |\n| `initialProject` | `string \\| File`                                       | URL or File to auto-load on mount                                 |\n| `config`         | `Partial<AudioEngineConfig>`                           | Extra engine config passed through to `AudioEngine` (see below)   |\n\n## Engine configuration\n\n`FourTrack` creates an `AudioEngine` internally; pass extra options via the\n`config` prop, or construct `new AudioEngine(config)` yourself.\n\n| Option                   | Type                                                | Default | Description                                                                                                                                             |\n| ------------------------ | --------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `sampleRate`             | `number`                                            | `32000` | **Storage/export** rate. The live graph always runs at the hardware's native rate; tracks are resampled to this rate on export. `0` = export at native. |\n| `bitDepth`               | `8 \\| 16 \\| 32`                                     | `16`    | PCM bit depth in exported `.4trk` files                                                                                                                 |\n| `audioConstraints`       | `MediaTrackConstraints`                             |         | Merged over the engine's `getUserMedia` defaults (echo cancellation, noise suppression and AGC off)                                                     |\n| `captureStream`          | `(constraints) => MediaStream \\| Promise<...>`      |         | Supplies the mic stream instead of the engine calling `getUserMedia`                                                                                    |\n| `persistentCapture`      | `boolean`                                           | `false` | Acquire the mic once and record each take from a `clone()`; avoids WebKit's level ramp at take start. Release with `engine.releaseCapture()`           |\n| `monitoringAdapter`      | `{ start(detail), stop() }`                         |         | Takes over the live mic-to-speakers pass-through (e.g. a native audio path). Capture, meters, playback and export stay on Web Audio                    |\n| `recordingLatencyOffset` | `number` (seconds)                                  |         | Overrides the computed recording latency compensation. Also settable at runtime via `engine.recordingLatencyOffset`                                    |\n\n### Recording latency compensation\n\nWhen you overdub, the backing track reaches your ears after the output\nlatency and your playing reaches the recorder after the input latency, so\nevery recorded sample lands late by roughly the sum. The engine shifts each\ntake earlier by `outputLatency + baseLatency + mic latency` as advertised by\nthe browser. Browsers (WebKit especially) understate these values, so if takes\nstill land late, measure the real round trip (a loopback click test works) and\nset `recordingLatencyOffset`:\n\n```svelte\n<FourTrack config={{ recordingLatencyOffset: 0.045 }} />\n```\n\n### External monitoring\n\nIf your host can monitor the mic with lower latency than Web Audio (for\nexample a native audio path in a desktop wrapper), hand it the pass-through:\n\n```ts\nconst config = {\n  monitoringAdapter: {\n    start: ({ stream, trackIndex, context }) => native.startMonitoring(),\n    stop: () => native.stopMonitoring(),\n  },\n  captureStream: (constraints) => navigator.mediaDevices.getUserMedia({ audio: constraints }),\n  recordingLatencyOffset: 0.012,\n}\n```\n\n## License\n\n4track is dual-licensed under [GPL-3.0-only](./LICENSE) or a\n[commercial license](./LICENSE-COMMERCIAL.md). Use it under the GPL for free,\nor reach out for a commercial license if you need to embed it in a\nclosed-source product (e.g. an App Store app).\n","readmeFilename":"README.md"}