Skip to content

Releases: TheButterZone/MacIntercom

MacIntercom v0.1.6

Choose a tag to compare

@github-actions github-actions released this 27 Jul 20:03
v0.1.6
63da008

Full Changelog: v0.1.5...v0.1.6

DSP & Audio Engine Updates

  • Asymmetrical Noise Gate: Implemented a fast-attack/slow-release envelope tracker to preserve speech transients while naturally rejecting background noise.
  • AGC Onset Grace Period: Added a multi-buffer grace period that prevents the Automatic Gain Control from squashing the first syllable of speech.
  • Soft-Knee Limiting: Replaced standard clipping with a mathematical soft-limiter to ensure total output never exceeds -0.08 dBFS, eliminating digital distortion entirely.

Modes

  • Media-aware mode (default when running ./macintercom) — intercom automatically yields to media playback.
  • Standalone mode (run ./macintercom --s) intercom ignores media playback and stays active continuously until Ctrl-C.
  • Test tone mode (run ./macintercom --t) intercom simultaneously plays 220 Hz tone through computer output & 440 Hz tone through Bluetooth speaker.

One thing you may want to try in Media-aware mode

In release assets, is the result of
ffmpeg -f lavfi -stream_loop -1 -i anullsrc=r=8000:cl=mono -t 36000 -c:a aac -b:a 12k silence_10h.m4a

If you set this file to play on loop in a media player, when you press the Mac's global hotkey for play/pause, or the Bluetooth speaker's play/pause button, you'll effectively get Push-To-Talk/Push-To-Mute from both ends. However, other media players/browser media will likely steal Now Playing focus; you'll have to open the silent loop's media player & toggle play/pause/play or pause/play, to restore it as the active Now Playing app for MacIntercom to return to PTT/PTM.

Why generate a silent track 10 hours long instead of 5 seconds?
Some media players briefly transition through a paused/stopped state when looping a single file. Media-aware mode interprets those transitions as legitimate playback changes. A very long silent file avoids repeated loop events while remaining small because silence compresses extremely well.

Installation

MacIntercom is currently distributed as source code and unsigned release binaries.

Because MacIntercom is not signed with an Apple Developer certificate, macOS may require manually approving the executable before first use.

Verification

Verify the checksum:

shasum -a 256 -c SHA256SUMS

Verify the GPG signature:

gpg --verify macintercom-macos-universal-v0.1.6.zip.asc macintercom-macos-universal-v0.1.6.zip

MacIntercom v0.1.5

Choose a tag to compare

@github-actions github-actions released this 25 Jul 17:36
v0.1.5
99a9101

Full Changelog: v0.1.4...v0.1.5

How does it work now?

  • Media-aware mode (default when running ./macintercom) — intercom automatically yields to media playback.
  • Standalone mode (run ./macintercom --s) intercom ignores media playback and stays active continuously until Ctrl-C.
  • Test tone mode (run ./macintercom --t) intercom simultaneously plays 220 Hz tone through computer output & 440 Hz tone through Bluetooth speaker.

One thing you may want to try in Media-aware mode

In release assets, is the result of
ffmpeg -f lavfi -stream_loop -1 -i anullsrc=r=8000:cl=mono -t 36000 -c:a aac -b:a 12k silence_10h.m4a

If you set this file to play on loop in a media player, when you press the Mac's global hotkey for play/pause, or the Bluetooth speaker's play/pause button, you'll effectively get Push-To-Talk/Push-To-Mute from both ends. However, other media players/browser media will likely steal Now Playing focus; you'll have to open the silent loop's media player & toggle play/pause/play or pause/play, to restore it as the active Now Playing app for MacIntercom to return to PTT/PTM.

Why generate a silent track 10 hours long instead of 5 seconds?
Some media players briefly transition through a paused/stopped state when looping a single file. Media-aware mode interprets those transitions as legitimate playback changes. A very long silent file avoids repeated loop events while remaining small because silence compresses extremely well.

Installation

MacIntercom is currently distributed as source code and unsigned release binaries.

Because MacIntercom is not signed with an Apple Developer certificate, macOS may require manually approving the executable before first use.

Verification

Verify the checksum:

shasum -a 256 -c SHA256SUMS

Verify the GPG signature:

gpg --verify macintercom-macos-universal-v0.1.5.zip.asc macintercom-macos-universal-v0.1.5.zip

MacIntercom v0.1.4

Choose a tag to compare

@TheButterZone TheButterZone released this 25 Jul 06:51
v0.1.4
7af08e9

Full Changelog: v0.1.3...v0.1.4

How does it work now?

  • Media-aware mode (default when running ./macintercom) — intercom automatically yields to media playback.
  • Standalone mode (run ./macintercom --s) intercom ignores media playback and stays active continuously until Ctrl-C.
  • Test tone mode (run ./macintercom --t) intercom simultaneously plays 220 Hz tone through computer output & 440 Hz tone through Bluetooth speaker.

Installation

MacIntercom is currently distributed as source code and unsigned release binaries.

Because MacIntercom is not signed with an Apple Developer certificate, macOS may require manually approving the executable before first use.

Verification

Verify the checksum:

shasum -a 256 -c SHA256SUMS

Verify the GPG signature:

gpg --verify macintercom-v0.1.4.zip.asc macintercom-v0.1.4.zip

MacIntercom v0.1.3

Choose a tag to compare

@TheButterZone TheButterZone released this 24 Jul 17:11
v0.1.3
0912d65

Full Changelog: v0.1.2...v0.1.3

How does it work now?

Computer's media app is paused: intercom resumes audio.

Computer's media app is playing: intercom pauses audio.

Your Bluetooth speaker's multi-function button is pressed, or any other input method (keys, clicks, ...?) for resume/pause: the media app toggles resume/pause, then intercom deconflicts & does the opposite.

Installation

MacIntercom is currently distributed as source code and unsigned release binaries.

Because MacIntercom is not signed with an Apple Developer certificate, macOS may require manually approving the executable before first use.

Verification

Verify the checksum:

shasum -a 256 -c SHA256SUMS

Verify the GPG signature:

gpg --verify macintercom-v0.1.3.zip.asc macintercom-v0.1.3.zip

MacIntercom v0.1.2

Choose a tag to compare

@TheButterZone TheButterZone released this 22 Jul 18:10
v0.1.2
42e2c4a

Source-only release. Previous binary releases had AGC hardcoded in source lacking any way to toggle off AGC (only AGC logs, via DebugFlags.swift).

Make enableAGC flag toggle AGC+AGC logs is the only addition for v0.1.2 - which needs compiling from source after setting DebugFlags.swift.

Unless each terminal run has a startup prompt added for choosing which flags to set, all binaries before GUI releases, will be compiled with the flags affecting devices & audio (except TestTone) set true.

Download previous binary release if you want AGC-only: https://github.com/TheButterZone/MacIntercom/releases/tag/v0.1.1

MacIntercom v0.1.1

Choose a tag to compare

@TheButterZone TheButterZone released this 22 Jul 12:43
v0.1.1
6267900

Full Changelog: v0.1.0...v0.1.1

Installation

MacIntercom is currently distributed as source code and unsigned release binaries.

Because MacIntercom is not signed with an Apple Developer certificate, macOS may require manually approving the executable before first use.

Verification

Verify the checksum:

shasum -a 256 -c SHA256SUMS

Verify the GPG signature:

gpg --verify macintercom-v0.1.1.zip.asc macintercom-v0.1.1.zip

MacIntercom v0.1.0

Choose a tag to compare

@TheButterZone TheButterZone released this 21 Jul 12:09
v0.1.0
43261f0

Installation

MacIntercom is currently distributed as source code and unsigned release binaries.

Because MacIntercom is not signed with an Apple Developer certificate, macOS may require manually approving the executable before first use.

Verification

Verify the checksum:

shasum -a 256 -c SHA256SUMS

Verify the GPG signature:

gpg --verify macintercom-v0.1.0.zip.asc macintercom-v0.1.0.zip