Skip to content

Repository files navigation

SessionTape

Background daemon that automatically records Pioneer Rekordbox DJ sets by capturing process audio output.

  • Silence detection — pauses recording when no audio is playing
  • Session splitting — silence gaps create separate files
  • Auto export — saves to ~/Music/sessiontape/ as WAV or MP3 when Rekordbox closes

Installation

Windows (Pre-built)

Windows code signing is provided by SignPath.io, certificate by SignPath Foundation.

Method 1: PowerShell (Recommended)

Open PowerShell and paste this command to download and run the installer directly:

$msi = "$env:TEMP\sessiontape.msi"; Invoke-WebRequest -Uri "https://github.com/icherniukh/sessiontape/releases/latest/download/sessiontape.msi" -OutFile $msi; if ($?) { Start-Process msiexec.exe -ArgumentList '/i', $msi, '/qn', '/norestart' -Wait }

The installer places the application in %LOCALAPPDATA%\Programs\SessionTape and the config in %APPDATA%\sessiontape\config.toml. It registers a Scheduled Task so it runs automatically at login.

You can also run it manually from the command line:

sessiontape        # normal execution
sessiontape -v     # verbose debug logging

Method 2: Manual Download

  1. Download the latest sessiontape.msi from the Releases page.
  2. Unblock the installer: Right-click the downloaded .msi -> Properties -> Check Unblock -> OK.
  3. Run the installer.

    Note: If you still see "Windows protected your PC", click More info -> Run anyway.

macOS (Homebrew)

brew tap icherniukh/tap
brew install sessiontape

Run SessionTape in the foreground:

sessiontape

Start it as a background service at login:

brew services start sessiontape

Permissions (macOS 14+): Open Rekordbox — a system dialog will prompt for Screen Recording consent. If missed: System Settings → Privacy & Security → Screen Recording → enable sessiontape.

Installation from Source

If you want to install from source instead of using pre-built binaries, you will need the appropriate build tools (Visual Studio C++ on Windows, Xcode on macOS) and Python/uv.

git clone https://github.com/icherniukh/sessiontape.git
cd sessiontape
uv pip install -e .

(Note: For this to work fully, you must also compile the native capture helpers for your platform. See the Development section below).


Configuration

The application uses a configuration file to customize its behavior (such as output directory, silence thresholds, and export format).

Config file locations:

  • Windows: %APPDATA%\sessiontape\config.toml (created automatically by the installer)
  • macOS: ~/Library/Application Support/sessiontape/config.toml (you must create this manually)

You can find a complete list of settings and their default values in the config.default.toml file in this repository.

If you want to export recordings as MP3 instead of WAV, ensure ffmpeg is installed and available on your system PATH.


Development (For Contributors)

Requirements

  • Windows: 10 Build 19041+ (WASAPI loopback), Visual Studio 2019+ (C++ workload)
  • macOS: 12+ (Screen Recording permission required), Xcode + Swift toolchain
  • Python 3.11+
  • uv (recommended) or pip

Building Standalone Executables & Installers

The following scripts handle the entire build process: compiling the native capture helper, bundling the Python daemon using PyInstaller, and (on Windows) creating the WiX MSI installer plus an optional Inno Setup installer when available.

Windows

uv pip install pyinstaller
powershell -ExecutionPolicy Bypass -File scripts\build-windows.ps1

Outputs to dist\sessiontape.exe and dist\sessiontape.msi, plus dist\sessiontape-setup.exe when Inno Setup is installed.

macOS

uv pip install pyinstaller
bash scripts/build.sh --full

Outputs to dist/sessiontape.

Testing

uv run pytest tests/ -v

Architecture

File Role
src/daemon.py Orchestrator — drives capture lifecycle on Rekordbox start/stop
src/process_monitor.py Polls for Rekordbox process with debounce
src/capture.py Selects platform backend, feeds PCM to recorder
src/backends/macos_capture.py Spawns mac-capture, reads PCM from stdout
src/backends/windows_capture.py Spawns sessiontape-capture-win.exe, reads PCM from stdout
src/recorder_core.py Silence detection, raw session writing, WAV/MP3 export
windows-capture/main.cpp Native WASAPI process loopback helper (Windows)
mac-capture/ Native CoreAudio process tap helper (macOS)

License

© 2026 Ivan Cherniukh.

All code is licensed under the GPL, v3 or later. See LICENSE file for details.

Privacy

See PRIVACY.md.

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages