Skip to content

rauversion/rau-studio

Repository files navigation

Rau Studio

Local native suite for preparing audio, converting files, managing Rekordbox playlists, generating masters, creating release visuals, and building smarter playlists from indexed metadata.

Rau Studio uses Tauri 2, Rust, React, TypeScript, SQLite, OpenAI-compatible AI features, and ffmpeg. The app is local-first: it does not replace original files, it stores operational history in a local SQLite database, and audio processing runs on the user's machine.

Rau Studio

Modules

  • Rekordbox Convert: import Rekordbox XML, select playlists, convert tracks to AIFF, and export a safe replacement XML.
  • File Importer: import local files or folders, create conversion groups, convert to AIFF, and keep history in SQLite.
  • Mastering: generate AIFF masters with presets, metadata, cover art, technical analysis, realtime events, and retryable history.
  • Turn: generate MP4 spinning-record mockups from local cover art and audio, with range preview and realtime progress.
  • Smart Playlists: index Rekordbox XML into SQLite, run lexical/vector search, browse artists/albums, inspect taxonomies, and generate playlist suggestions with Playlist Copilot.
  • Import Rau Studio XML into Rekordbox: visual guide for importing exported XML back into Rekordbox.
  • macOS Signing and Notarization: distribution notes for unsigned local builds and signed releases.
  • Architecture: technical notes about the desktop, Rust, SQLite, and UI structure.

Principles

  • Original source files are never replaced.
  • The original Rekordbox XML is never modified.
  • Existing AIFF files are reused instead of overwritten.
  • Operational state is stored in local SQLite.
  • Long-running work reports realtime progress and terminal logs.
  • Conversion jobs use controlled concurrency to avoid saturating CPU, disk, and memory.
  • AI features are optional and work with local fallbacks when no OpenAI API key is configured.

Stack

Layer Technology
Desktop Tauri 2
Core Rust
UI React + TypeScript
Styling Tailwind + shadcn-style components
Audio/video ffmpeg / ffprobe
Persistence SQLite
Search SQLite FTS + optional OpenAI embeddings
Frontend build Vite

Requirements

  • Stable Rust.
  • Node.js and npm.
  • ffmpeg and ffprobe available in PATH, or configured in Settings.

On macOS:

brew install ffmpeg

Commands

Install dependencies:

npm install

Run the native app in development:

npm run tauri:dev

Run only the web UI:

npm run dev

Build the frontend:

npm run build

Build the native bundled app:

npm run tauri:build

Bundles are generated under:

src-tauri/target/release/bundle/

Run the Rust core tests:

cargo test -p aifficator-core

Releases

GitHub Actions builds downloadable installers for macOS, Windows, and Linux.

Release options:

  • Run Build installers manually from the GitHub Actions tab.
  • Push a v* tag to publish a GitHub Release with attached artifacts.

Example:

git tag v0.1.9
git push origin v0.1.9

Expected artifacts:

  • macOS Apple Silicon: _arm64.app.tar.gz
  • macOS Intel: _x86_64.app.tar.gz
  • Windows: .exe / .msi
  • Linux: .AppImage / .deb

Unsigned macOS Builds

Current public macOS builds may be unsigned and not notarized. Gatekeeper can show "Apple could not verify..." when opening a downloaded app.

For local testing, extract the .app.tar.gz and remove the quarantine attribute:

cd ~/Downloads
tar -xzf RauStudio_0.1.9_arm64.app.tar.gz
xattr -dr com.apple.quarantine "Rau Studio.app"
open "Rau Studio.app"

If the app was already copied to /Applications:

xattr -dr com.apple.quarantine "/Applications/Rau Studio.app"
open "/Applications/Rau Studio.app"

This bypass is only for local testing. For distribution without warnings, the app must be signed and notarized. Details are in docs/macos-signing.md.

Project Structure

.
|-- crates/aifficator-core/
|-- docs/
|-- src/
|-- src-tauri/
|-- Cargo.toml
|-- package.json
`-- README.md

Quick Troubleshooting

Check ffmpeg and ffprobe:

ffmpeg -version
ffprobe -version

If the Vite websocket fails during development, restart the native dev server:

npm run tauri:dev

If Rekordbox cannot find files after importing XML, confirm that each exported Location points to an existing local file and that converted files still exist inside converted/ folders.

If files live on an external macOS drive and playback/conversion fails, grant Rau Studio access to removable volumes or Full Disk Access, and verify the drive is not mounted read-only.

License

MIT

About

Local audio toolkit for DJs and producers

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages