Audio
Everything on this page lives in Settings › Audio, Settings › Codecs and Settings › Network. Changes apply immediately; a few network values need an engine restart and say so.
Devices
| Row | Meaning |
|---|---|
| Microphone | Popup with every input device plus System default; a live level meter next to it (green segments, the top one yellow near clipping) shows that the right microphone is picked. |
| Speaker | Popup with every output device plus System default. The test tone is in the Audio test group below. |
| Ringtone device | Output for the ringtone only: "Plays the ringtone through the speakers even when calls use a headset." |
| Switch to a headset when it is connected | On by default. "Uses a newly connected headset for calls until it is unplugged." |
| Headset buttons | On by default. Answer, hang up, hold, mute and redial from the call controls of a USB headset; the secondary text reads "Connected: Jabra Evolve2 65" or "No headset with call controls". Details below. |
"System default" follows macOS Sound settings. If a chosen device is unplugged, MacroSIP falls back to the system default and switches back when it returns. The device list updates live.
Headset auto-switch
When a device with both input and output appears (a USB or Bluetooth headset, AirPods), it becomes the microphone and the speaker for calls and a banner says "Switched to AirPods Pro" for four seconds. When it is removed the chosen devices come back ("Back to MacBook Pro Speakers", or "Back to the system default"). Picking a microphone or speaker by hand, or turning the switch off, ends the following. The ringtone device is never changed, and devices already present at start are not followed.
Headset buttons
With Headset buttons on, a USB headset that exposes HID telephony controls drives the calls; the row names the connected device ("Connected: Jabra Evolve2 65") or reads "No headset with call controls". Turning the switch off releases the device.
| Control on the headset | Does |
|---|---|
| Hook (answer / end) | Answers the ringing call (the active one goes on hold); ends the active call. A plain hook button answers if a call rings, otherwise hangs up the current call. |
| Flash | Answers the waiting call, or swaps the held call in. |
| Hold | Holds or resumes the current call. |
| Mute | Toggles your microphone, like Mute in the call panel. |
| Redial | Calls the last outgoing number when no call is in progress. |
The headset's indicator lights follow the call when the device has them: off-hook while a call is answered or being placed, ring while one rings, mute while the microphone is off. A long first press cannot answer and hang up in one go.
Limitations: Bluetooth headsets whose buttons speak the hands-free profile (HFP) rather than HID are handled by macOS itself and are not supported; they never appear in this row. The media keys of a keyboard and a headset on the 3.5 mm jack have no telephony controls and are ignored. A headset that offers its controls only inside a consumer-control device may be refused by macOS; the log then reads "headset buttons: cannot open …" (see Troubleshooting).
Ringtone
Sound in Settings › Audio › Ringtone chooses what rings for an incoming call:
- Classic, Digital and Soft are three different built-in melodies.
- Custom file… takes a WAV, AIFF, M4A or MP3 file ("“Custom file…” accepts WAV, AIFF, M4A and MP3."); the popup then shows "Custom: office-bell.m4a". MacroSIP converts the file once and reuses the result, so a long file does not slow the next call.
- Play previews the real choice, at the volume set below, on the ringtone device.
- A file that cannot be read keeps the previous choice, and the group says why: "The ringtone file could not be used: …".
Volume is a slider from 0 to 100 %, applied live and used by the preview. The ring itself comes out of the Ringtone device (see Devices above). Call waiting uses a short tone in the earpiece instead of the ringtone; see Calls. If the ringtone you hear is not the one you chose, see Troubleshooting.
Hold music
Source in Settings › Audio › Hold music is what the caller hears while you hold the call: Built-in (a short looping melody, the default), Custom file… (WAV, AIFF, M4A, MP3 and anything else macOS can read; the popup then shows "Custom: office-hold.m4a") or Off (silence). "The other party hears this while the call is on hold." A change applies at once, also to calls already on hold. A file that cannot be read keeps the previous source; the group footer and a banner say "The file could not be used: …". The music goes to the held call only: you do not hear it, and it is not written into recordings. See also Calls and, if the caller hears something else, Troubleshooting.
Sound events
Four switches (a fifth, New message, appears while Messages is on) in Settings › Audio › Sound events, all off by default. "Short beeps on the speaker; the other party does not hear them." The beeps play on the speaker chosen for calls and never reach a call or a recording.
| Switch | When the sound plays |
|---|---|
| Call connected and ended | Two rising beeps when a call connects (not after a resume from hold); two falling beeps when a call ends. Only for calls that were established: a missed or declined call and a failed outgoing attempt make no sound. |
| Dial pad key presses | The DTMF tone of the key pressed on the dial pad while no call is active ("+" has no tone). During a call the keypad sends DTMF to the other side instead. |
| New voicemail | Three beeps when an account's voicemail indicator reports more new messages than before (see Incoming calls). |
| Registration error and lost network | Two low beeps when a registration fails or the network path goes away, at most once every 10 seconds. |
| New message | Two short high beeps when a text message arrives; not during Do Not Disturb, at most once every 2 seconds. The row exists only while messages are switched on (Messages). |
Audio test
Settings › Audio › Audio test has one row, Speaker and microphone: "Plays two notes on the speaker for 2 seconds; the meter shows the microphone level." Test plays two notes (660 and 880 Hz) on the speaker chosen in Devices (System default is the call output); a second press restarts it. If the chosen speaker has been unplugged, the tone plays on the system default instead. The meter beside the button is the live microphone level, the same as in the Microphone row. The tone never reaches a call or a recording.
Echo cancellation and voice processing
Echo cancellation is on by default: "Turn it off only if your headset cancels echo itself."
With the default input and output devices the audio runs through the system.s voice-processing unit, which adds noise suppression and automatic gain control; there is no switch for it. When you choose a non-default device by hand the engine.s built-in echo canceller is used instead.
Codecs
Settings › Codecs lists the codecs in order of preference; the order is what is offered in SDP. Drag rows or use Move up / Move down; unchecked codecs are never offered; at least one must stay enabled. Restore Defaults restores the order and turns on Opus, G.722 and PCMU only.
| Codec | Default | Sample rate | Bitrate |
|---|---|---|---|
| Opus | on | 48 kHz | 6–510 kbit/s |
| G.722 | on | 16 kHz | 64 kbit/s |
| PCMU (G.711 µ-law) | on | 8 kHz | 64 kbit/s |
| PCMA (G.711 A-law) | off | 8 kHz | 64 kbit/s |
| G.722.1 (Siren 7), G.722.1C (Siren 14) | off | 16 / 32 kHz | 16–32 / 24–48 kbit/s |
| GSM | off | 8 kHz | 13 kbit/s |
| iLBC | off | 8 kHz | 13–15 kbit/s |
| Speex 8 / 16 / 32 kHz | off | 8 / 16 / 32 kHz | 2–44 kbit/s |
"Wideband codecs (Opus, G.722, G.722.1, Speex 16 and 32 kHz) work only if the PBX supports them." There is no G.729. If your PBX offers only G.711 A-law, turn PCMA on.
Opus switches
- Packet-loss correction (FEC), on: "repairs lost packets for a little extra data; keep it on for Wi-Fi and mobile networks."
- Silence suppression (DTX), off: "saves bandwidth during pauses but can clip the start of a word; use it only on a slow connection."
Both are disabled while Opus is unchecked and apply at once to new and renegotiated streams.
Network settings that affect audio
| Setting (Settings › Network) | Default | Why it matters for audio |
|---|---|---|
| STUN server | empty | Lets the engine learn its public address behind NAT. "Leave empty if you are not behind NAT." |
| Use ICE | on | "Helps audio get through NAT. Uses the STUN server above." |
| Use rport | on | "Helps behind NAT: the server replies to the address you are calling from." |
| Keep-alive interval | 15 s | "Keeps NAT bindings open between registrations." |
| Port range (RTP) | start 4000, 1000 ports | "Ports for call audio, 1024–65535. Each call needs two." Open or forward this range on a firewall. Applies after the engine restart offered in the pane. |
| Local SIP port | 5060 | 0 picks a free port. Changing it re-registers all accounts. |
Transport (UDP/TCP/TLS) and SRTP are per account; see Accounts. A server addressed by a private IP address does not use STUN at all (see Accounts).
Troubleshooting one-way audio
One-way audio almost always means RTP packets do not find their way back through a NAT or firewall while SIP signalling works.
- Check the microphone permission. If the call panel says "Microphone access is off", allow MacroSIP in System Settings › Privacy & Security › Microphone. After an update the permission is asked again (Installation).
- Check the devices. Watch the level meter in Settings › Audio while you speak; pick the device explicitly if "System default" points at the wrong one.
- Behind NAT: set a STUN server (your provider's, or a public one such as
stun.example.org:3478) and keep Use ICE on, so the media is sent to an address the far side can reach. - Keep rport on so the server answers to the address and port it actually sees.
- Firewall: allow UDP on the local SIP port and on the RTP port range (4000–4999 by default).
- VPN or several interfaces: the engine re-registers and re-INVITEs calls on a network change; if audio still drops, lower the keep-alive interval.
Red quality bars and the "Poor connection" banner point at loss or jitter rather than NAT (Calls). The log file (Troubleshooting) shows the addresses and ports negotiated for each call.