NinjamZap User Guide

A beginner's guide to jamming online with NINJAM

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.

When you first open NinjamZap, you will see the login screen:

NinjamZap login screen with sign-in options and Continue as Guest button

The login screen — sign in or continue as guest

You have two options to get started:

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:

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.

NinjamZap connection screen with server field, audio routing, and latency settings

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 list showing live rooms with tempo, musicians and video badges

Public Rooms — tap one to select it

Each room in the list tells you, before you commit to anything:

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:

Audio Settings

Tap Audio Settings to choose a Latency Profile for your setup:

In the same panel, Audio Quality sets the bitrate of the audio you send:

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:

How intervals work
Time
Interval 1
Interval 2
Interval 3
- - - - - - - - - - - - - - - - - - - - - - - - -
You hear
—
Others' Int. 1
Others' Int. 2
You record
Your Int. 1
Your Int. 2
Your Int. 3
What you record
What you hear from others

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:

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 session on Mac — master, your channels, everyone else's, and chat

The same mixer layout running on iPad

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

NinjamZap session screen showing Master volume, Metronome toggle, and Local Channels

Master controls and local channels

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:

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:

FX are applied to what you send, so the room hears them. They are available with a free account.

Remote Channels (Other Musicians)

NinjamZap remote channels showing multiple musicians with volume sliders and VU meters

Remote channels — each musician has their own controls

Each musician in the session appears as a separate channel with their own controls:

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).

NinjamZap musician profile card with photo, mantra, city and instrument

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.


Chat

The chat panel lets you communicate with other musicians via text messages. It is an essential part of the NINJAM experience.

NinjamZap chat panel showing messages between musicians

The chat panel — communicate with other musicians

Links, replies and translations

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

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:

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

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.

NinjamZap BPM/BPI modal with sliders, Vote buttons, and Tap Tempo

The BPM/BPI panel — adjust tempo and interval length

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

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)

  1. Audio interface (iRig, Focusrite iTrack, etc.) + wired headphones — the gold standard. Best audio quality, lowest latency, no feedback.
  2. Wired headphones with the built-in iPhone microphone — great for getting started. Low latency, no feedback.
  3. Bluetooth headphones — works, but adds latency. Use the "Safe" latency preset. Good enough for casual jams.
  4. 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.

  1. In AUM, add NinjamZap Send as an effect on the channel you want to send.
  2. In the plugin window, under NinjamZap Channels (NINJAM), choose which NinjamZap channels it feeds: 1/2, 3/4, 5/6 or 7/8.
  3. In NinjamZap, open Audio Routing and choose AUv3 as the input.

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.

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:

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

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:

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.

NinjamZap video grid showing multiple musicians' cameras in a full-screen stage view

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.

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.

NinjamZap for Mac mixer view with master, local channels and remote musicians side by side
The mixer view on Mac

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
⌘TTransmit on / off
⇧⌘MMute my channel
⌘LMonitoring on / off
⌘KMetronome on / off
⌘RRecord
⇧⌘VVoice chat on / off
⌘FFX…
⌘GVideo grid
⌘BVote tempo…
⇧⌘CShow / 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:

  1. In OBS, add a Browser Source with that URL, width 1920 and height 1080.
  2. Check "Control audio via OBS" so the room's sound goes into your OBS mix, and uncheck "Shutdown source when not visible".
  3. 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:

<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

  1. 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.
  2. 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.
  3. Add one more Browser Source for the room's audio. Use any musician's tile URL with ?audio=1 appended (or &audio=1 after 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.
  4. 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.
  5. 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):

What to expect

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


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.