Skip to content

jlar0che/BrainWave

Repository files navigation

BrainWave Logo

BrainWave

Binaural beats audio generator + information center
Self-hosted. Tons of features. Beautiful UI.

Release Docker pulls Docker image size License: GPL-3.0

BrainWave main UI


🎧 What are binaural beats?

A binaural beat is an auditory illusion created when you listen to two nearby frequencies, one in each ear (headphones required). Your brain perceives a third “beat” at the difference between them.

Example:

  • Left ear: 396 Hz
  • Right ear: 404 Hz
  • Perceived beat: 8 Hz

BrainWave lets you choose a carrier frequency (the tone you hear) and a beat frequency (the difference between left/right).


✨ What makes BrainWave different?

  • Live Scope: real-time waveform view while audio plays
  • Realtime brainwave band readout: see the current band label (Delta / Theta / Alpha / Beta / Gamma)
  • Export audio: render your session to files (MP3 / OGG / FLAC)
  • Presets: save/recall sessions, import/export BrainWave Preset files (.bwp)
  • Library: curated reading list + bundled public-domain docs (PDFs) inside the UI
  • Modern Architecture: self-hosted, web accessible and optimized for mobile

⚡ Quickstart (Docker)

Clone the repository:

git clone https://github.com/jlar0che/BrainWave.git
cd BrainWave

Open the docker-compose.yml file:

services:
  brainwave:
    image: jlaroche/brainwave:latest
    container_name: brainwave
    ports:
      - "5890:5890"
    environment:
      # Set a real secret for production (at least 32 bytes / 64 hex chars)
      - SECRET_KEY=change-me-to-a-long-random-string

      # Optional: upload size (bytes)
      - MAX_UPLOAD_BYTES=65536

    volumes:
      # Persist exports + presets + library data
      - ./static/output:/app/static/output
      - ./static/presets:/app/static/presets
      - ./static/data:/app/static/data
      - ./logs:/app/logs
      - ./static/docs/public_domain:/app/static/docs/public_domain

    restart: unless-stopped

Set up your environment variable(s) in the docker-compose.yml file:

environment:
      # Set a real secret for production (at least 32 bytes / 64 hex chars)
      - SECRET_KEY=change-me-to-a-long-random-string

      # Optional: upload size (bytes)
      - MAX_UPLOAD_BYTES=65536

NOTE: You can easily create a secret key at https://it-tools.tech/token-generator


📸 Screenshots

BrainWave Screenshot 1

BrainWave Screenshot 2

BrainWave Screenshot 3

BrainWave Screenshot 4

BrainWave Screenshot 5


🤝 Contributing

PRs welcome — especially for:

  • more presets/templates
  • additional relevant resources in the Vault/Library
  • UI improvements and accessibility tweaks
  • additional features