AudioBridger for macOS
======================

Stream audio between computers on your local network in real time.

This zip contains:

  AudioBridger   All-in-one launcher. Starts the hub, a receiver and a
                 sender together and opens the dashboard. Easiest start.
  ab_sender      Picks an input device and broadcasts its audio.
  ab_receiver    Listens for a sender and plays the audio out.
  ab_hub         Optional. Web dashboard at http://<hub-ip>:4466 for
                 routing, monitoring, and remote control.
  ab_align       Post-production helper: turns a multi-machine recording
                 session into DAW-ready offsets.

There is also a separate download, AudioBridger.app, which wraps the same
binaries in a double-clickable app with a menu bar item. Use that if you
just want it running; use the loose binaries for servers and scripting.


Quick start
-----------

  ./AudioBridger

Starts everything and opens the dashboard in your browser. Ctrl-C stops it.
Add --no-sender if this machine should only listen, not offer its audio.


First run, one component at a time
----------------------------------

In two terminal windows on the same Wi-Fi or wired LAN:

  Terminal A:  ./ab_sender
               # picks an input device when prompted

  Terminal B:  ./ab_receiver
               # finds the sender automatically over the LAN


Optional: the hub
-----------------

  Terminal C:  ./ab_hub
               # then open http://localhost:4466 in a browser

  In the dashboard you can drag wires between senders and receivers,
  mute receivers, pick output devices, and listen to any sender's AAC
  stream right in the browser.


Capturing system or app audio
-----------------------------

A real microphone or hardware line-in works out of the box. To send
audio from a specific app, or your machine's overall output, install
one of:

  - BlackHole       https://existential.audio/blackhole/    (free)
  - Loopback        https://rogueamoeba.com/loopback/       (paid, polished)

Then pick it as the input device when ab_sender asks.


First-launch prompts
--------------------

The first time each app runs, macOS will pop up:

  - A microphone permission prompt for ab_sender. Allow it.
  - A firewall prompt for ab_receiver and ab_hub. Allow it.


Useful flags
------------

  ./ab_sender --version          show version and exit
  ./ab_sender --activate <CODE>  activate a paid licence (online)
  ./ab_sender -o                 print this machine's UUID for offline activation
  ./ab_receiver <sender-ip>      bypass mDNS, connect directly
  ./ab_hub --http-port 8080      use a different dashboard port

Run any app with no arguments for the interactive flow.


Where your settings are kept
----------------------------

Routes, device identities, the hub config and your licence all live in one
directory, and WHICH directory depends on how you run AudioBridger:

  Loose binaries (this zip)   <folder containing the binaries>/config/
                              Licence: registration.lic beside the binaries.

  AudioBridger.app            ~/Library/Application Support/AudioBridger/

The app cannot use its own folder: macOS does not allow an app to write
inside itself, and doing so would break its signature. So a bundled app
keeps everything under your Library folder instead.

Two consequences worth knowing:

  * The loose binaries and the .app have SEPARATE settings. Routes set up
    in one do not appear in the other.

  * A loose install is self-contained. Copy the folder — binaries, config
    and licence — to another machine and it comes with it. That is why
    server installs use the loose binaries.

A licence sitting next to the binaries is always honoured, whichever form
you run, so an existing install keeps working and you can ship a
pre-licensed folder.


Licensing
---------

The trial runs for 30 minutes per launch on the sender and hub.
Receivers are always free. Buy a licence at:

  https://bluetomatomedia.com/buy/audio-bridger/

See LICENSE in this zip for the full terms.


Trouble?
--------

  support@bluetomatomedia.com

Include your activation code if it's an activation problem.
