Getting Started
NinjamZap is a native NINJAM client for iPhone, iPad and Mac. You can join jam sessions with musicians around the world directly from your device.
- iPhone and iPad — iOS / iPadOS 15.6 or later.
- Mac — macOS 12.5 or later. See NinjamZap for Mac.
When you first open NinjamZap, you will see the login screen:
The login screen — sign in or continue as guest
You have two options to get started:
- Sign in with an account — Continue with Google, Continue with Microsoft, Sign in with Apple, or Sign in with email (tap Create account to register with an email). Accounts are free.
- Continue as Guest — no account needed. Pick a username and jump straight into a jam.
Guest mode vs. a free account
Guest mode is the fastest way to try NINJAM. As a guest you can connect to any room, play and transmit on one local channel, use the metronome, chat, vote on BPM/BPI, record, and watch other musicians' video.
Signing in with a free account adds:
- More local channels — up to 8, each mono or stereo.
- FX on every channel — reverb, compressor and mic boost.
- Sending your own video, including HD resolution.
- Your musician profile — photo, bio and location that other musicians can see.
Tip: If you just want to try NINJAM for the first time, Guest mode is the fastest way in. You can sign in later — while in a room as a guest, tap Sign in (you'll leave the room).
Connecting to a Server
After logging in or entering guest mode, you will see the Connection screen. This is where you configure your session before joining a jam.
The connection screen — configure and connect
NINJAM Username
Choose a name that will be visible to other musicians in the session. This can be anything you like — your name, your instrument, or a creative alias.
Choosing a room
Tap Public Rooms to see every room that is live right now. You don't have to type an address — tap a room in the list and it fills the field for you.
Public Rooms — tap one to select it
Each room in the list tells you, before you commit to anything:
- How many musicians are in it — the
2/7badge is people over slots. A grey dot means the room is empty. - Who is playing — name, photo and country flag of everyone currently connected.
- Tempo and interval — the BPM / BPI the room is running at.
- VIDEO — the room supports video, not only audio.
- Listen — the headphones icon lets you hear what is going on before you join. Nobody hears you.
Nobody around right now? Tap Notify me on a NinjamZap room and you'll get a push notification when someone connects, so you don't have to keep checking.
You can also type an address by hand in the Room (address:port) field
— for example ninbot.com:2049 — if someone gave you one that isn't
on the public list.
Some rooms require a password: tap the key icon to show the Room Password field. Use Share to send a friend an invite link to the room.
Audio Routing
Select your audio input and output devices. For the best experience:
- Wired headphones — lowest latency, no feedback issues
- Audio interface (iRig, Focusrite, etc.) — best quality for instruments and microphones
- Bluetooth headphones — they work, but add some latency
Audio Settings
Tap Audio Settings to choose a Latency Profile for your setup:
- Ultra Low (3 ms) — fastest response, best with wired headphones or an audio interface. The default on iPhone and iPad.
- Low (5 ms) — a good balance of speed and stability for most setups.
- Safe (10 ms) — a larger buffer for maximum stability. Use it with Bluetooth, older devices, or if you hear glitches.
In the same panel, Audio Quality sets the bitrate of the audio you send:
- Quick (64 kbps) — the original NINJAM default, easiest on cellular data.
- Standard (128 kbps) — balanced for most jams. The default.
- High (192 kbps) — nearly full-range, recommended on Wi-Fi.
- Studio (256 kbps) — full 20 kHz response, best for recording.
All quality options work with other NINJAM clients — only the bitrate changes.
Connect
Once everything is configured, tap Connect to join the session. If the room shows a license agreement, tap Accept. The app then connects and starts syncing with the current interval.
Why you hear everyone one interval later
Unlike video calls or other jamming apps that try to fight internet latency and usually fail, NINJAM takes a completely different approach: it embraces the latency.
How does it work?
NINJAM uses an interval-based approach. Instead of trying to send audio in real time (which always has noticeable delays over the internet), it organizes music into synchronized loops called intervals. Here is the key idea:
- Everyone plays in sync to the same tempo and interval length
- While you record what you are playing in the current interval, you hear what others played in the previous interval
- Think of it like a musical round or relay — you respond to what just happened
- There is always a delay of one interval, but everyone stays perfectly in sync
During Interval 1 you only record — there is nothing from others yet. Starting from Interval 2, while you record your new part, you hear what others played during the previous interval. This one-interval offset is what makes NINJAM work over any internet connection, regardless of distance.
This means NINJAM works best with improvisational music: jazz, blues, ambient, experimental, funk, and anything where you can react to what you hear. It is not designed for playing pre-written songs note-for-note, but for creative, free-flowing jams where musicians respond to each other.
Understanding BPM and BPI
Two settings control the timing of every NINJAM session:
- BPM (Beats Per Minute) — the tempo, how fast the music goes
- BPI (Beats Per Interval) — how many beats fit in one loop/interval
Together, they determine the interval length:
(BPI / BPM) x 60 = seconds.
For example, at 120 BPM / 16 BPI, each interval lasts
8 seconds (16 / 120 x 60 = 8).
The Session
The session on Mac — master, your channels, everyone else's, and chat
The same layout on iPad — and on iPhone, stacked to fit the screen
Once connected, you are in the Session screen — the main jamming interface. Here is what you will find:
Master Volume, Mute and Metronome
Master controls and local channels
- Master Volume — controls the overall output level of everything you hear (remote musicians, metronome). The VU meter next to it shows your current output level.
- Mute — mutes all audio output instantly.
- Metronome — a click track that keeps everyone in sync, following the BPM set by the server. Enable it, especially when you are starting out. It helps you stay on beat and understand when each interval begins and ends.
Local Channels (Your Audio)
This section shows your own channels. The key control on each one is the Transmit toggle. When Transmit is on, that channel is sent to the room and other musicians can hear it. When it is off, you are in "listen only" mode for that channel.
Tip: When you first join a session, start with Transmit off. Listen for a few intervals to get a feel for the music, then turn Transmit on when you are ready to play.
Each local channel has its own controls:
- Name — tap it to rename the channel (for example "Guitar" or "Vocals").
- Input — with a multi-input audio interface, the input chip lets you choose which inputs the channel sends, and whether it is Mono (one input) or Stereo (a pair).
- Volume and Pan — how loud and where you hear the channel in your own mix.
- M (Mute) — mutes what you send: the others stop hearing this channel, but it stays in the session.
- S (Solo) — hear only this channel.
- Monitor — stop hearing yourself on this channel (the others still hear it). Useful when your interface already gives you direct monitoring.
- FX — open the channel's effects (see below).
Adding and removing channels
Signed-in users can play on up to 8 local channels at once — for example a guitar, a vocal mic and a stereo keyboard from the same interface, each one heard separately by the room. Tap + on your first channel to add a channel, then choose its input. To remove an extra channel, tap its trash icon.
The number of channels you can add is also limited by how many inputs your audio interface has and by the room itself: some rooms allow fewer channels per musician (a video channel counts as one). When that happens, the app tells you.
FX
Tap FX on a local channel to open its effects. Each effect has an on/off switch and a slider:
- Mic Boost — extra gain, from 0 to +12 dB.
- Reverb — choose Room, Hall or Plate, and set the amount with the slider.
- Compressor — a one-knob compressor: slide from Light to Heavy.
FX are applied to what you send, so the room hears them. They are available with a free account.
Remote Channels (Other Musicians)
Remote channels — each musician has their own controls
Each musician in the session appears as a separate channel with their own controls:
- Volume and Pan — adjust how loud and where you hear that musician
- M (Mute) — temporarily silence a musician
- S (Solo) — hear only that musician, muting everyone else
- Receive — turns receiving a remote channel on or off. Turn it off if you do not want to hear a particular channel at all.
- VU meters — show the audio levels for each channel in real time, so you can see who is playing even before adjusting volumes
When a musician sends several channels, tap the arrow next to their name to show or hide them. With an audio interface that has more than two outputs, you can also choose which outputs each remote channel plays on.
Musician profiles
Tap a musician's avatar, or their name in the chat, to open their profile card: photo, display name, country and city, instruments, bio and mantra (whatever the musician has filled in).
A musician's profile card
To edit your own profile, open Settings (the gear icon) and choose Edit Profile. Tap your photo to Choose photo, Take photo or Remove avatar, and fill in your Display Name, Bio, Location, Country and Mantra. Profiles require a free account.
Recording a session
Tap the record button (◉) at the top of the session screen to start recording, and tap it again to stop. You can then Save or Discard the recording.
- Recordings are AAC (.m4a) files at 256 kbps, stereo, with the mix you hear (your own channels plus the other musicians).
- The metronome is never recorded, so the files are ready to drop into a DAW.
- On iPhone and iPad, recordings are in the Files app: Files > NinjamZap > Recordings. On Mac, use Show in Finder.
- Browse, play and share them from My Recordings (the folder icon at the top of the connection screen), or choose Open Recordings Folder in Settings.
- Turn on Multitrack recording (NINJAM session) in Settings to also keep the classic NINJAM session folder: one OGG file per channel per interval, plus a
clipsort.log.
Chat
The chat panel lets you communicate with other musicians via text messages. It is an essential part of the NINJAM experience.
The chat panel — communicate with other musicians
- The server topic and rules are shown at the top of the chat
- System messages tell you when musicians join or leave the session
- Use chat to introduce yourself, suggest a key or tempo change, coordinate the jam, or just say thanks for a great session
- Be friendly — the NINJAM community is welcoming and collaborative
Links, replies and translations
- Links in messages are tappable.
- Swipe a message to reply to it; your reply shows the message you are answering.
- Long-press a message for Copy, Reply and Translate (translation needs iOS 18 or later, or macOS 26 or later), as well as Report and Block.
- Tap a sender's name to open their musician profile.
Resizing and minimizing the chat
On iPad, and on Mac in a wide window, the session uses a mixer layout with the chat in a column on the side. Drag the column's left edge to make the chat wider or narrower (double-tap the edge to reset it), or tap Minimize chat to fold it away and give the mixer more room.
Community & Safety
Voice chat — talk between takes without leaving the room
NinjamZap is built for a friendly, collaborative community. When you first connect you agree to the community rules shown in the License Agreement. A few tools help keep sessions respectful.
Report and Block
Long-press a chat message (or a musician in the session) to open the actions menu, where you can:
- Report — flag a user for abusive behavior. Reports go to our moderation team, who review them within 24 hours.
- Block — immediately hide that user. Blocking removes their chat messages and stops receiving their audio and video, in this session and future ones.
Chat filter
A profanity filter automatically masks offensive words in chat, so sessions stay welcoming for everyone.
Tip: Blocking is personal and instant — you don't need a moderator to stop hearing or seeing someone. Reporting helps keep the whole community safe.
BPM / BPI
Voting on BPM / BPI — the room decides together
Tap the green BPM/BPI bar at the bottom of the session screen to open the BPM/BPI panel. This is where you can view and propose changes to the session tempo and interval length.
The BPM/BPI panel — adjust tempo and interval length
- BPM slider — adjust the tempo (beats per minute)
- BPI slider — adjust the beats per interval (loop length)
- Vote buttons — propose your changes to the server. Changes require a majority vote from the connected musicians to take effect.
- Tap Tempo — tap the button repeatedly to detect a tempo from your tapping rhythm. Useful when you want to match a song or a groove you have in mind.
Room key
While the band plays, NinjamZap listens to the room and shows the key it detects (for example Am) in the middle of the interval bar. The space stays empty while the app is not sure yet. To hide it, open Settings and turn off Show the room's key.
Common BPM/BPI combinations
| Setting | Duration | Style |
|---|---|---|
120 / 16 |
8 sec | Standard jam — 4 bars of 4/4, works for most genres |
85 / 16 |
11.3 sec | Relaxed groove — blues, soul, laid-back funk |
90 / 8 |
5.3 sec | Short loops — fast call and response |
70 / 32 |
27.4 sec | Ambient — slow, evolving soundscapes |
Audio Setup Tips
Audio Routing — pick your interface in and out, and open Integrations
Use headphones! Without headphones, your microphone picks up the playback audio and creates a feedback loop. This ruins the experience for everyone in the session.
Recommended setups (best to good)
- Audio interface (iRig, Focusrite iTrack, etc.) + wired headphones — the gold standard. Best audio quality, lowest latency, no feedback.
- Wired headphones with the built-in iPhone microphone — great for getting started. Low latency, no feedback.
- Bluetooth headphones — works, but adds latency. Use the "Safe" latency preset. Good enough for casual jams.
- Speaker with Echo Cancellation — when the built-in microphone is selected, tap the phone icon on the microphone row to enable Echo Cancellation. Audio quality will be reduced.
Audio interface tips
If you use an external audio interface (like an iRig), plug it in before opening NinjamZap. The app will automatically detect it and route audio through it. You can verify the selected device in the Audio Routing section on the Connection screen.
Technical details
NinjamZap processes all audio internally at 48 kHz. If your audio device runs at a different sample rate (common with Bluetooth), the app automatically resamples to match. This is handled transparently — you do not need to configure anything.
Connect Your Gear
NinjamZap goes beyond the built-in microphone. You can bring your whole rig into a session — synths and effects from other apps, a second device as a wireless input, external cameras, and your DAW's tempo.
AUv3 Send — route AUM apps into your session
NinjamZap ships an Audio Unit (AUv3) effect called NinjamZap Send. Load it inside a host like AUM and any audio flowing through it — synths, drum machines, guitar amp sims, effect chains — is streamed straight into NinjamZap on the same device.
- In AUM, add NinjamZap Send as an effect on the channel you want to send.
- In the plugin window, under NinjamZap Channels (NINJAM), choose which NinjamZap channels it feeds: 1/2, 3/4, 5/6 or 7/8.
- In NinjamZap, open Audio Routing and choose AUv3 as the input.
- Multichannel: load one NinjamZap Send on each AUM channel and give each one a different channel pair. In NinjamZap, add a local channel with + for each part and pick its AUv3 inputs with the input chip — the room hears your synth, drums and vocals as separate channels.
- On Mac: put NinjamZap Send on a track in Logic Pro, GarageBand or any other AUv3 host, then choose AUv3 as that channel's input in NinjamZap — the track's audio goes straight into the jam.
LAN Companion — another device as a wireless input
Turn a second phone or tablet, a laptop, or our desktop plugin into a wireless microphone or input over Wi-Fi. The companion streams audio to NinjamZap on the same local network, using Opus audio with packet retransmission for clean, low-latency sound.
- On the sending iPhone or iPad: load NinjamZap Send in a host like AUM and turn on Also send to another device (Wi-Fi) in the plugin window.
- On a computer: use the Desktop Companion plugin (below).
- On the device you play from: open Audio Routing. Under Integrations, the Companion Device (LAN) section looks for sources on your network; pick the companion in Input, or tap Use when the app tells you a LAN source is available.
- Turn on Safe mode in that section if your Wi-Fi is unstable: a deeper buffer avoids cuts, at the cost of a bit more latency.
- Both devices must be on the same Wi-Fi network — a VPN on either device can block LAN discovery.
Desktop Companion — your DAW as a source
For the desktop, we publish a free, open-source NinjamZap Companion plugin (VST3 / AU / standalone) for macOS, Windows and Linux. Drop it on your DAW's master bus (Reaper, or any host) and it streams that stereo audio over the local network into NinjamZap as an input — so your whole computer becomes a source for your rig.
Download: get the latest build from the Companion Releases page (macOS, Windows, Linux). Source and setup instructions are on GitHub. The builds are unsigned, so your OS may quarantine them the first time — the repo has one-line steps to clear that.
Audiobus
On iPhone and iPad, NinjamZap can receive audio from Audiobus, so a synth or effect in another music app can be your input. In Audiobus, put NinjamZap in the Output slot, then choose Audiobus as the input in NinjamZap's Audio Routing. NinjamZap does not send its own audio to other apps.
External USB (UVC) camera
On iPhones and iPads with USB-C (iOS/iPadOS 17+), and on Mac, you can select an external USB camera — a webcam, a capture device, or a mirrorless/DSLR over HDMI-to-USB — for your video channel, and choose its resolution. The camera picker is in your local channel's Video settings when video is on.
Each camera remembers its own Mirror setting, so you can flip a webcam without affecting your front camera. Other musicians see the image exactly as you set it.
On Mac, virtual cameras such as OBS Virtual Camera or Camo show up in the same picker, each one with its own name.
Ableton Link and MIDI Clock Out — sync your gear to the room
Open Audio Routing and expand Integrations:
- Ableton Link — other Link-enabled apps and DAWs on the same network follow the room's tempo.
- MIDI Clock Out — sends MIDI clock to drum machines, synths and DAWs. Choose a destination with Select MIDI device (USB-MIDI or Bluetooth MIDI); apps on the same device can also follow the clock.
Both stay locked to the room's tempo for the whole session, with no jumps between intervals — useful when you're driving loops or a backing setup alongside the jam.
Video
Video on Mac — everyone in a grid, locked to the jam interval
Beyond audio, NinjamZap can share video so you can see
the musicians you're jamming with, synced to the room. Video is optional
and scoped to the room — a rehearsal-room view, not a social feed.
It works in NinjamZap rooms such as video.ninjamzap.com:2049;
on other NINJAM servers the audio still works as usual.
Sharing your video
Signed-in users can turn on the camera on their local channel to transmit video. Guests can see others' video but don't transmit their own. Open Video settings on your channel to choose:
- Camera — front, back, an external USB camera, or a Continuity Camera on Mac. There is also a Visualizer option that turns your sound into animated graphics (styles: Rings, Bars, Plasma).
- Mirror — saved per camera.
- Resolution — SD, VGA or HD (up to 1280×720).
At fast tempos with short intervals, NinjamZap may lower your video quality (or pause video) so it doesn't compete with the audio for upload bandwidth. It goes back up automatically when the interval grows again.
The video grid
Tap a video tile to open the video grid — a full-screen stage view of everyone's cameras, each tile showing that musician's live audio level.
A tile's meter follows all of that musician's channels. Musicians who aren't sending video show their profile photo instead of a black tile.
The video grid — everyone's cameras in one stage view
Voice chat
NINJAM's interval delay is great for music but makes conversation awkward. With voice chat you can talk face to face between songs: your voice is heard right away instead of one interval later.
- Tap the microphone button on your own tile in the video grid (or on your local channel) to turn voice chat on or off.
- When you turn it on from the video grid (or with the keyboard shortcut), the metronome mutes while you talk and comes back when you turn voice chat off.
- Musicians who are talking show a microphone badge on their tile and In voice chat on their channel.
- Voice chat isn't in sync with the music — turn it off to play.
External display
Connect an external display — HDMI on iPhone or iPad, or an extra monitor on Mac — and a display button appears in the session. Choose Show on external display to put the video grid on it, and Remove from external display to take it off. It's ideal for a live setup or a rehearsal room TV.
NinjamZap for Mac
NinjamZap runs as a native app on Mac (macOS 12.5 or later), with the same rooms, channels, FX, video and chat as on iPhone and iPad — plus a few things that make sense on a computer.
Mixer view
In a wide window, the session is a mixer: master and metronome on top, a strip for each of your channels and each musician's channels side by side, and the chat in a resizable column. Make the window narrower and it switches to the compact layout. Hover a control to see what it does, and double-click a pan knob to center it.
Keyboard shortcuts
During a session, the Session menu in the menu bar lists these shortcuts. They also work on an iPad with a hardware keyboard — hold ⌘ to see the list.
| Shortcut | Action |
|---|---|
⌘T | Transmit on / off |
⇧⌘M | Mute my channel |
⌘L | Monitoring on / off |
⌘K | Metronome on / off |
⌘R | Record |
⇧⌘V | Voice chat on / off |
⌘F | FX… |
⌘G | Video grid |
⌘B | Vote tempo… |
⇧⌘C | Show / hide chat |
⌘/ | Keyboard shortcuts |
⌘, | Settings (NinjamZap menu, Mac only) |
Mute, monitoring and FX act on your first local channel. Typing a letter without ⌘ goes to the chat, even when it is minimized.
Audio devices and aggregate devices
In Audio Routing, choose the input and output devices NinjamZap uses, independently of your Mac's system sound settings. To use several interfaces (or an interface plus a virtual device) at once, create an aggregate device in Audio MIDI Setup — the Audio MIDI Setup button in the Audio Routing panel opens it — and select it in NinjamZap. Every input of the aggregate then appears in the channel input picker, grouped by device, so each one can be its own local channel.
Video on an external display
With a second monitor connected, use Show on external display to put the video grid on it while you keep the mixer on your main screen. See Video.
Recordings in Finder
Session recordings are saved on your Mac. In My Recordings, use Show in Finder to jump to a file, or choose Open Recordings Folder in Settings. See Recording a session.
Streaming a Room to OBS
Every NinjamZap room is broadcast live on the web by our listener bot, which joins each room as a hidden listener (it doesn't play and isn't in the player list). It publishes one video stream per musician plus the room's mixed audio, all on one shared clock so they stay in sync. You can pull them into OBS Studio as Browser Sources, switch between cameras, add overlays, and restream the result to YouTube, Twitch, or anywhere else OBS can push to.
Who is this for? Hosts who want to broadcast a jam as a livestream — multi-camera switching, picture-in-picture, scene transitions, branded overlays. If you just want to listen along to a room, the player at ninjamzap.com/live already does the right thing.
Quickest: the whole room in one source
One page shows every camera of the room in an automatic grid, with the room's audio, all synced — add it to OBS as a single Browser Source and you can stream or record the whole jam:
https://www.ninjamzap.com/obs/<host>/<port>— for examplehttps://www.ninjamzap.com/obs/video.ninjamzap.com/2049. The OBS button on each live room card links to it.
- In OBS, add a Browser Source with that URL, width 1920 and height 1080.
- Check "Control audio via OBS" so the room's sound goes into your OBS mix, and uncheck "Shutdown source when not visible".
- Press Start Recording to record the session as one video with every camera, or Start Streaming to send it to YouTube, Twitch, etc. For recordings, MKV or fragmented MP4 survive a crash; File → Remux Recordings turns MKV into MP4.
The grid rearranges itself as musicians join and leave (1 camera full screen,
2 side by side, 3–4 in a 2×2…). Options:
label=0 hides the names, fit=contain shows whole
frames instead of cropping, gap=0 removes the spacing,
audio=0 leaves the sound out, and latency=<seconds>
plays further behind live (default 10) if you see stalls. Opened in a regular
browser it starts muted with a Click to unmute button; in OBS it
plays with sound right away.
Custom layouts: one tile per musician
For your own layouts (picture-in-picture, camera switching, overlays), each musician in a room also has a dedicated single-tile page designed for OBS. Use either URL shape — they're equivalent:
- Pretty path:
https://www.ninjamzap.com/tile/<host>/<port>/<username> - Query string:
https://www.ninjamzap.com/tile/?host=<host>&port=<port>&u=<username>
<host> and <port> identify the
NinjamZap room (for example video.ninjamzap.com and
2049). <username> is the musician's NINJAM
nickname — exactly as it appears on the
live page for that room.
The page has a transparent background, no chrome, and auto-plays the stream
so OBS picks it up the moment the scene becomes active.
Step by step
- Open the live page for the room you want to stream (ninjamzap.com/live) and note the host, port, and the nicknames of the musicians in the room.
- In OBS, create a new scene. Add a Browser Source for each musician you want as a separate camera. Set the URL to the tile URL above with that musician's nickname, choose the width/height you want for the tile, and click OK.
-
Add one more Browser Source for the room's audio. Use
any musician's tile URL with
?audio=1appended (or&audio=1after the existing query string). Only add this flag to one source — if more than one Browser Source plays audio you'll get duplicate streams stacked on top of each other and unpleasant phasing. - Lay out the tiles on your canvas: grid, picture-in-picture, single pinned camera with thumbnails, whatever works for your show. Each tile is just a video element — resize, crop, and apply OBS filters freely.
- Start streaming or recording in OBS as you normally would.
OBS Browser Source settings we recommend: uncheck "Refresh browser when scene becomes active" and "Shutdown source when not visible". Both options would tear down the HLS buffer every time you cut to a different scene, which means a fresh 4-second buffer wait and an audible audio glitch on every cut. Leaving them off keeps the streams warm in the background.
URL flags
You can tweak any tile's behavior by appending these flags to the URL
(use ? for the first one, & for the rest):
audio=1— play the room's mixed audio. Add this to exactly one Browser Source.label=0— hide the small username chip at the bottom-left of the tile. Useful when you're rendering your own lower-thirds in OBS.fit=contain— letterbox the video instead of cropping. Helpful when a musician is filming vertically and your scene is horizontal.latency=<seconds>— how far behind live every tile plays (default10). All tiles and the audio show the same moment, so give every Browser Source the same value; raise it if you see stalls.
What to expect
- Latency: one NINJAM interval (musicians play to the previous interval) plus the
latencybuffer (10 seconds by default) between what each musician plays and what your stream's audience hears. For casual restreams this is invisible; for live talk-over hosts it's a constraint to plan around. - Sync: every tile, the
/obsgrid and the audio follow the same clock: cameras stay within about 50 ms of each other and roughly within ±100 ms of the sound, and it doesn't drift over time. A musician's own camera may trail their sound by a fraction of a frame to ~0.2 s (their phone's camera and encoder). - Reconnects: if a musician's stream goes offline (they hung up, lost their connection, switched cameras), the tile automatically reattaches when they come back. No action needed on your side.
Coming later: broadcast-grade per-camera streams
The Browser-Source path above is the lightest possible setup — great for hobby restreams and "press play and walk away" broadcasts. If you need sub-2-second latency (talk-back with the musicians, interactive shows), the next step is a per-user SRT or WebRTC push from the bot directly to OBS, with no HLS in between. That path is on the roadmap; if you have a concrete production use case for it, email [email protected] and we'll prioritize it.
Tips for Great Jam Sessions
- Start by listening. Join a session and listen for at least one full interval before you start playing. Get a feel for what is happening musically.
- Keep it simple. Leave space for others. The best jams happen when everyone contributes without stepping on each other.
- Use the chat. Say hello when you join. Suggest a key if the music needs direction. Thank people when you leave. Communication makes sessions better.
- If it sounds weird, give it a few loops. Remember, you are hearing the previous interval. After two or three intervals, your ear adjusts and things start to click.
- Experiment! NINJAM is a playground for improvisation. Try new sounds, play instruments you are learning, explore different genres. There are no wrong notes in a jam.
Troubleshooting
"I can not hear myself"
Turn up the volume slider on your local channel — this controls how loud you hear yourself in the mix. Also check that Monitor is not muting the channel, that Transmit is on so that others can hear you too, and that your Master Volume is up.
"Others can not hear me"
Make sure you have granted microphone permission to NinjamZap (on iPhone and iPad: Settings > NinjamZap > Microphone; on Mac: System Settings > Privacy & Security > Microphone). Also verify that Transmit is on and M (Mute) is off for your local channel.
"Audio is glitchy or crackling"
Switch to the Safe latency profile in Audio Settings on the connection screen. Close other apps that might be using audio. If you are on Bluetooth, try switching to wired headphones.
"Can not connect to server"
Check your internet connection. Verify the server address is correct (including the port, e.g., ninbot.com:2049). Some servers may be temporarily offline — try a different one from Public Rooms. If the room asks for a password, tap the key icon to enter it.
"I hear echo or feedback"
Use headphones. Without them, your microphone picks up the playback and sends it back to the server. If you must use the speaker, tap the phone icon on the built-in microphone row to enable Echo Cancellation.
"The audio stopped after I opened another app"
If another app takes over the audio (the Camera, a call, a video), NinjamZap pauses the session. Audio resumes on its own when you come back; you can also tap Resume audio, or Leave room.
"The music sounds out of sync"
That is normal! In NINJAM you always hear the previous interval. This is by design. Turn on the metronome to help you stay on beat, and give it a few intervals to adjust your ear to the concept.
If you are experiencing other issues or need help, contact us at [email protected].
Why NinjamZap?
The name says it all: NINJAM + Zap. “Zapada” is Argentine slang for an informal jam session — getting together with friends to play music, improvise, and have fun with no pressure. That spirit is at the heart of this app.
NinjamZap was born during the pandemic, when a group of musician friends from Córdoba, Argentina could no longer meet to play together. Searching for a way to keep jamming, they discovered NINJAM — and fell in love with it. What started as weekend “zapadas” over the internet became a six-year passion for the platform and its community.
The app was created by Javier Alejandro Cordero, an independent developer and drummer from Córdoba with over 25 years of experience in software engineering, who simply wanted a mobile NINJAM client that didn’t exist yet. NinjamZap is built for any musician who wants to play with others in real time — no studio and no complicated setup, straight from a phone, a tablet or a Mac.
Where NINJAM comes from
NINJAM, the protocol NinjamZap speaks, was created by Justin Frankel, the same person behind Winamp (the legendary media player) and Reaper (the popular digital audio workstation). Musicians have been playing together over it for more than 15 years.
Have questions, ideas, or just want to say hi? Reach out at [email protected] or connect on LinkedIn.