Lofi Engine Studio is a simple app to create and play lo-fi music.
- Generates lo-fi tracks with Tone.js.
- Lets you control ambience and effects.
- Supports keyboard shortcuts.
- Works offline.
- Runs on Linux, macOS, and Windows.
- New app identity: Lofi Engine Studio.
- ML integration from jacbz-lofi with local server scripts.
- Custom track flow and song mode controls in the UI.
- Video export script for longer lo-fi loops.
- Source attribution and upload steps for your GitHub account.
- Better onboarding for first-time users.
- Easier model setup with fewer manual steps.
- More ambience presets and sound customization options.
- More testing and stability improvements for release builds.
You can play only music, only ambience, or both.
- Music: Focus on beat and chords.
- Atmosphere: Add weather and nature sounds.
- World: Add richer scene sounds.
- Manual: Full control of all sound layers.
Most actions have keyboard shortcuts.
Press ESC to open the info box and shortcut help.
The app supports multiple languages, including English, French, Spanish, Japanese, Korean, Indonesian, and Russian.
- Node.js (v14+)
- pnpm (v6+)
- Rust (latest stable)
- Tauri prerequisites for your OS
git clone https://github.com/amnindersingh12/lofi-engine
cd lofi-engine
pnpm installpnpm tauri:dpnpm tauri:bBuild output is created in src-tauri/target/release.
pnpm dev- Run Vite only.pnpm build- Build frontend only.pnpm preview- Preview frontend build.pnpm check- Run Svelte type checks.pnpm ml:generate:loop- Continuously generate new jacbz-lofi tracks (default every 240 seconds).pnpm lofi:video -- --visual <clip> --audio <track> --duration <sec> --output <file>- Generate a longer lo-fi video.
Use the loop generator to automatically assign a matching background image to each generated track. If you also have a matching audio file for each track, the script can export synchronized 4-minute MP4 loops.
pnpm ml:generate:loop -- \
--interval 240 \
--source mixed \
--export-video \
--audio-dir ./output/rendered-audio \
--video-dir ./output/generated-lofi/videosThe generator writes a JSON record for each track with the selected visual metadata, then renders an MP4 when the corresponding track-0001.wav-style audio file exists in the audio directory.
- Start the ML server:
pnpm ml:server:dev- In another terminal, run the loop generator:
pnpm ml:generate:loop -- --interval 240 --source mixedTracks are written to output/generated-lofi/ as JSON files.
Optional:
- Add
--count 15to stop after 15 tracks. - Use
--source generatefor pure random latent generation. - Use
--source predictfor prompt-guided generation only.
- Install FFmpeg:
brew install ffmpeg- Run export:
pnpm lofi:video -- \
--visual ./input/loop-5s.webm \
--audio ./input/lofi-track.webm \
--duration 240 \
--output ./output/lofi-4min.mp4Notes:
--durationis in seconds.- Short visuals are looped automatically.
- Short audio is looped automatically.
This repo includes an integration of an upstream project:
- Core app baseline and structure are from meel-hd/lofi-engine.
- Upstream repository URL: https://github.com/meel-hd/lofi-engine
integrations/jacbz-lofiis based on jacbz/Lofi (Apache-2.0).- The upstream license is kept in
integrations/jacbz-lofi/LICENSE. - Workspace integration notes are in
integrations/jacbz-lofi/WORKSPACE_INTEGRATION.md.
If you share this repository, keep the attribution and license files.
Contributions are welcome.
- Read CONTRIBUTING.md
- Open issues at: https://github.com/amnindersingh12/lofi-engine/issues
This project uses the MIT License.
