Lyricorize practice audio: third-party software and rebuild materials The practice audio worklet uses SoundTouchJS 0.3.0, without modifications to the library. Its independent time-stretch and pitch-shift processing is covered by the GNU Lesser General Public License, version 2.1 or later. SoundTouchJS copyright holders: Olli Parviainen; Ryan Berdeen; Jakub Fiala; Steve 'Cutter' Blades. Upstream project: https://github.com/cutterbl/SoundTouchJS The full license is included as LICENSE.soundtouchjs.txt. The library is distributed WITHOUT ANY WARRANTY, including merchantability or fitness for a particular purpose; see that license for details and permissions. Included materials: - soundtouch.js: the exact readable ES module used from the installed package. - soundtouch.js.map: its original source map, including original source text. - upstream-src/: the original source files embedded in that source map. - engine-source/: the matching Lyricorize worklet wrapper, transport, and types. - build.config.mjs: a separate build recipe using the readable local library. - practice-audio-source.zip: a convenient copy of these materials. The separate library and wrapper sources are supplied so you can inspect, modify the library for your own use, and rebuild the practice worklet. Nothing in Lyricorize's terms restricts the permissions the LGPL grants for this library or reverse engineering needed to debug such modifications. To rebuild a modified worklet, unpack the source archive into a working directory, edit soundtouch.js, and use Node.js with Vite 8.2.0: npx --package vite@8.2.0 vite build --config ./build.config.mjs This writes rebuilt/practice-worklet.js and its source map. The build uses the supplied local SoundTouchJS module and does not require the full app, user accounts, provider credentials, music files, or a server connection. The generated worklet registers the processor name lyricorize-practice; its message contract is described in engine-source/contracts.ts. To use a compatible modified library in a local Lyricorize checkout, replace the installed soundtouchjs/dist/soundtouch.js module with your modified version and rebuild the app with npm run build. Preserve the library's license and notices when redistributing. Lyricorize's full application source and unrelated components are not relicensed by this notice.