Pulse Phone docs
Calls, video and Live
Start your supported voice resource before phone. Normal calls use that resource;
video calls and Live add a WebRTC picture. For production servers, configure a TURN relay
in your private server configuration using Video relay configuration (advanced) in
Integrations. Keep service secrets server-side with set, not setr.
To add people during a call, use Add Person. To answer a second caller, use Hold & Accept, then Swap between lines or Merge Calls. In Vibe or Loop, choose Go Live; the viewer count opens the audience list and its guest invitations.
Check phone:health in the server console after setup. It identifies the voice provider and
RTC configuration. A configured TURN address and credentials describe your setup; an ICE
relay connectivity test confirms the network path.
Capacity and providers
Pulse Phone carries the voice of every call through your voice resource (pma-voice, mumble-voip, SaltyChat, TokoVOIP or YACA) and the pictures of a video call browser to browser over WebRTC. This page says what that means for group calls, with the numbers.
Voice
A group call is one voice channel. Its size is Config.Calls.maxParties (default 5, at most 16).
| Voice resource | Group calls | Most people |
|---|---|---|
| pma-voice, mumble-voip | call channels | 16 |
| SaltyChat | call groups on its server API | 16 |
| TokoVOIP | call channels (server events) | 16 |
| YACA | every pair of players is connected | 8 (a group of n is n(n-1)/2 connections) |
| none | install and start a supported voice resource before making calls | - |
A group call carries on when anyone leaves it, the host included (Config.Calls.keepGroupOnLeave).
The host's place passes to whoever joined the group first. Someone who hung up can tap Rejoin
on their ended screen for Config.Calls.rejoinSeconds (default 60). The host can remove someone,
who then cannot rejoin.
Pictures
There is no media server. Each phone sends its picture once to every other phone with a picture (a "mesh"), so each extra person adds one upload to every phone.
- Up to 4 pictures (
Config.Calls.groupVideoMax = 4, the default): a grid. Each link is capped at 400 kbit/s, 18 fps, at two thirds size, so a phone uploads about 1.2 Mbit/s. - 5 to 8 pictures (
groupVideoMax5-8): a speaker view. Whoever talked last takes the big tile, everyone else is a small tile. The person on the big tile sends 450 kbit/s per link; everyone else sends 150 kbit/s per link at a third of the size. At 8 people the speaker uploads about 3.2 Mbit/s and everyone else about 1 Mbit/s. Players on slow connections may lose pictures; their voice is not affected. - Past
groupVideoMax: Add Person says the call is full. Someone merged in past the limit is on the call with their avatar and voice.
What the game's browser (Chromium 103) can and cannot do here:
- It can cap each link separately: bitrate, frame rate and resolution (
RTCRtpSender.setParameters, in Chromium since versions 69, 81 and 74). That is what the speaker view uses. - It can restart a dropped connection (an ICE restart). A picture that drops says "Reconnecting" over the last frame. The phone tries 3 times, then shows the avatar and the call carries on by voice. A member's tile can then be tapped to try again.
- Simulcast (sending several sizes at once) only helps when a server picks between the sizes. Without a server it only costs upload, so the phone does not use it.
- Scalable video (
scalabilityMode) arrived in Chromium 111, after 103. The phone does not use it.
Anyone on a poor connection can tap Audio Only during a group video call. They stop sending and receiving pictures, their seat goes to the next person, and they stay in the call.
More than 8 pictures
That needs a media server (an SFU): every phone uploads its picture once and the server forwards it. Pulse Phone does not include one and has no setting for one. A server would have to be hosted and run by you. The phone's picture links would have to be rewritten to talk to it and not to the other phones. Your TURN relay would have to reach it. This page will say so when it is supported. Voice-only group calls are not limited by any of this; they follow the table above.
Who is talking
Each phone reports when its own player starts and stops talking, and the call shows a ring on that person's tile. This works on pma-voice and mumble-voip, because only those two let the phone read talking. On the other voice resources the ring does not show and the speaker view keeps whoever was on the big tile last.
Call controls and recovery
An incoming call while you are talking appears as Call Waiting. Choose Hold & Accept to keep the first line, Swap to switch lines, or Merge Calls to bring everyone together. Add Person invites someone without interrupting the current conversation.
Video calls include Camera to pause your picture and Flip Camera to switch front/rear views. Muting controls your phone audio through the selected voice provider. Wearing Pulse Buds keeps the call private; the default accessory setting prevents speakerphone while they are worn. Provider capabilities are shown in the startup compatibility report.
Pulse reconnects interrupted video links and restores active call state after an interface
reload. Calls use the same WebRTC connection engine as Vibe and Loop Live, with separate
server-authorized memberships. Live viewers receive the broadcaster's picture directly;
viewers do not upload video to each other. Picture seats follow Config.SocialLive.maxViewers.
Going live with a guest
Vibe and Loop let the host invite one guest from the viewer list. Tap the viewer count, then Invite beside a viewer with a picture seat. The viewer chooses Join Live to share their camera and voice. An invitation lasts 30 seconds. Ordinary viewers remain listeners.
The host and guest each have camera, front/rear and mute controls. The host can remove the guest; the guest can leave the stage and keep watching. Either action leaves the host's broadcast running. Ending the broadcast closes both publishers and all viewer connections. Live voice uses pma-voice or mumble-voip's one-way voice routing.
Keep the default picture-seat limit for small broadcasts. Each publisher sends one picture per seated viewer, and a viewer with a guest on stage receives two pictures. This is a bounded direct/relayed WebRTC broadcast, not an SFU service for large audiences.
For production networking, follow Video calls (STUN / TURN) in the installation guide.
Keep TURN service secrets in your private server configuration. The server generates expiring
relay credentials when phone_turn_secret is configured.