Instruction manual
Fulwave Monitor is a monitor router for your Mac: any input on any output, with its own gain at every crosspoint, and a processing chain on every channel. This manual covers choosing devices, building a mix, shaping each channel, recalling presets, talking back to performers, running several matrices at once with Pro, and unlocking the demo.
The signal path for every audio block is: device inputs → input processing → crosspoint matrix → output processing → device outputs. You decide what feeds what in the matrix, and what happens to each channel on the way in and on the way out.
That's the whole model. Everything else in the app is about setting up the grid quickly, shaping channels well, and getting back to a mix in one click.
One cell of the grid: the level, in dB, at which one input feeds one output.
The blocks on one input or output channel: filters, EQ, compressor, delay, IIR, trim and, with Pro, Audio Unit plugins.
The whole state (levels, master, mute/solo, gangs and every chain) recalled without a click.
A session: every matrix with its presets and devices, and the Control window’s pads: see Sessions & files.
One router: its own devices, grid, processing and presets. Every session has Main and TalkBack; Pro adds as many more as you need.
The fastest way to see how it works is to route something you can hear.
If you only remember one thing: the grid decides what feeds what, the FX button decides what happens to each channel, and presets remember all of it.
Fulwave Monitor is free to try, and the demo is the complete app.
The one difference: an unlicensed copy stops processing audio every 15 minutes. Next to Start you'll see DEMO · 14:32 left counting down. When it reaches zero the audio stops and the message “Demo limit reached” appears; your session stays open. Press Start to carry on for another 15 minutes. There is no expiry date.
Buy a license from Fulwave: the Unlock… button next to Start, or Buy a License… in Preferences, opens the store. Your key arrives by email.
A license works on every Mac you own. To move it, press Deactivate this Mac in the same place; that frees the key for another Mac and returns this one to demo mode.
The key is kept in your Mac's keychain and checked again each time the app opens. If your Mac is offline or the license server can't be reached, a licensed copy stays licensed.
Pro adds named matrices (extra routers and cue matrices, each in its own window if you like, with export and import), Audio Unit plugins in the channel chains, and audio through Blackmagic video devices. A Pro key is entered in the same place, and a standard license shows a field for it. Pro is sold by how many Macs can use one key at once; to move up, buy the larger key at the upgrade price and enter it on each Mac.
Anyone without Pro, on the demo or a standard license, can try it: press Try Pro for 30 Minutes in Preferences ▸ General ▸ License, or in the + menu beside the matrix tabs. Everything in Pro is unlocked, and PRO TRIAL · 29:59 counts down next to Start. The trial can be used once each time the app is launched.
The Input and Output menus list every Core Audio device with its channel count and sample rate.
Fulwave Monitor works through Apple’s Core Audio, the Mac’s own audio system, and nothing else: it installs no driver of its own to reach your hardware, and it uses each device exactly as macOS presents it. That is why any device that appears in Audio MIDI Setup appears here, and why other apps can keep using the same devices at the same time (macOS mixes what several apps play to one output).
They can be different devices: Fulwave Monitor joins them with a private aggregate device while it runs (the output is the clock master and the input is drift-compensated at the best quality) and removes it when you stop.
By default the grid follows your devices: a 12-in / 8-out pair gives a 12 × 8 grid, and with no device chosen it shows 16 × 16. The Channels button (next to Rescan) turns that off so you can set up to 64 inputs and 64 outputs by hand. Channels you hide keep their crosspoints, processing and gangs; they simply fall silent and return when the count grows.
Rows are inputs, columns are outputs. Each cell is the level, in dB, at which that input feeds that output. Blue cells carry signal; empty cells are off.
| To… | Do this |
|---|---|
| Select a cell | Click it. Arrow keys move the selection. |
| Set a level by dragging | Press on a cell and drag right or up for louder, left or down for quieter. |
| Set a level by scrolling | Scroll or swipe over the cell. Hold ⌥ for finer steps. |
| Type an exact level | Double-click the cell, or select it and press Return, or just start typing a number. -6, 3.5, -12,5 and +3 dB all work; off turns it off. Return sets it, Esc cancels. |
| Switch a crosspoint off or on | Right-click it (or control-click). It comes back at the level it had before; one that was never on returns at 0 dB. |
| Assign to the master | ⇧-click it. See Master, Mute & Dim. |
| Lock the grid | Press Lock in the master bar, or Master ▸ Lock Crosspoints (⌥⌘L). See below. |
The range is off to +12 dB. The row and column your pointer is over are highlighted so you can follow a path across a large grid. Changes are crossfaded over one audio block, so moving a level or recalling a preset never clicks.
Lock freezes the crosspoints so nobody can change a level or a master assignment by accident. While it is on, the grid has an orange border and clicks, drags, scrolling, typing, right-click and ⇧-click do nothing, the Selected bar is dimmed, and Assign all and Clear assignments are unavailable. You can still select cells, move the master level, and use Mute, Dim, solo and the channel buttons.
The lock is saved with the session, so a locked session opens locked. It belongs to the session, not to a preset: recalling a preset still loads that preset's crosspoints, and never unlocks the grid.
The grid scales to fill the window. The −/Fit/+ control in the session bar (⌘−, ⌘=, ⌥⌘0 for Fit) adds a 50–200% zoom on top of that, and is remembered. Fit stops enlarging the grid at about 150%; if the window is wider than that needs, the spare width makes the meters longer and the crosspoint cells wider instead of leaving empty margins. The window can't be made smaller than 1180 wide, or larger than the grid can use, so a small matrix doesn't leave a sea of empty space. Below about 75% scale the grid scrolls instead of shrinking. Scrolling over the matrix itself sets levels, so scroll the grid by its edges or scroll bars.
Every input row and output column has its own controls.
Silences the channel. Mute always wins over solo.
If any input is soloed, every un-soloed input is silenced. The same goes for outputs.
Skips the channel's whole processing chain and keeps every setting.
Opens the channel's processing window. Green while processing is actually changing the channel.
The link button between two adjacent channels (1+2, 3+4 …) gangs them into a stereo pair. A ganged pair mutes, solos, bypasses and processes together, shares one chain order, and is the only place the stereo HRTF filter works. Pairs can't overlap. Un-ganging removes the HRTF filter, because it can't run on a single channel. A solo on a channel you've hidden doesn't silence the visible ones.
The master is a single control that moves the crosspoints you choose and leaves the rest alone.
⇧-click a crosspoint to assign it; assigned cells are outlined in green. Assign all puts every crosspoint that is carrying signal on the master, and Clear assignments releases them all. Neither moves any level.
An assigned crosspoint remembers its level and where the master was when it was assigned. Afterwards its level is that base plus how far the master has moved, so a custom mix keeps its balance when you turn it up or down as a whole. Un-assigned crosspoints never move.
Ref jumps the master to a reference level and back. Press it to set the master to the level in the menu beside the button (0 dB by default, from +6 to −40 dB); press it again to return the master to where it was. Ref lights up while the master sits at the reference level, and it turns off if you move the master. The reference level is saved with the session, like the Dim amount.
Normally a preset saves the master level and recalling a preset restores it, so moving the master counts as an edit to the preset. With Monitor mode on (the Monitor button in the master bar and the Control windows, or Preferences) the master is a live control over whichever preset is loaded: switching presets leaves it where it is, and moving it never marks the preset as changed. Turning Monitor mode off brings back the loaded preset’s own master level.
Monitor mode applies to Main’s master, and to any other matrix you tie to it (see Tying matrices to Main).
Locking Monitor mode. Right-click the MONITOR button (or use Preferences ▸ Mixing) and choose Lock Monitor Mode to keep it as it is, on or off. The button shows a lock, and clicking it, the Preferences switch and its shortcut do nothing until you unlock it the same way. The lock is saved with the session, and a locked session opens with Monitor mode as it was locked, so someone running the Control window can’t switch it off by accident.
The master slider, fader, knob and dB readout show what the master is doing: red while muted, orange while dimmed, green while at the Ref level, and blue otherwise.
Master position (unless Monitor mode is on) and assignments are saved in presets. Mute and Dim are live controls and are not part of a preset. The Dim amount and the Ref level are saved once per session file and come back when it loads.
Every session has a second router for talking to performers: its own devices, grid, processing and presets, silent until you talk.
Choose its page with the TalkBack tab at the top of the main window. Pick its input (your talkback mic) and output, then route the mic to the outputs you want, the same way as on Main. TalkBack only starts once it has devices. New TalkBack presets have every crosspoint off, so nothing is sent until you set one up.
TB DIM. Other matrices can be dimmed the same way by checking Dimmed by TalkBack in their tab’s right-click menu; each uses its own Dim amount.Run as many routers as the job needs, side by side, each with its own devices.
The + beside the matrix tabs adds one of two kinds, or imports another session’s main matrix as either:
Passes audio all the time, like Main. Its pads recall its presets.
Silent until one of its presets is switched on from a pad, like TalkBack. Summed lets any number be on together; Switched allows one at a time.
Each matrix has its own devices, engine, grid, processing, meters and presets. Right-click its tab to rename it, give it a color, set a cue matrix’s pads to Summed or Switched, open it in a window of its own, export it as a session file, or delete it. Double-click a tab to open the matrix in its own window; any number can be open at once.
Tab order. Drag a named matrix’s tab onto another to move it, or use Move Left / Move Right in its menu. Main and TalkBack stay first. The order is saved with the session, and the Control window’s extra masters follow it. When there are more tabs than fit, the tab strip scrolls.
Let Main’s master section drive other matrices, so one fader runs the whole room.
Right-click a matrix’s tab and check any of these. Each is saved with the session.
| Option | What it does |
|---|---|
| Master Follows Monitor Mode | Monitor mode applies to this matrix’s master too: presets don’t save or recall it. While Monitor mode is on, moving Main’s master moves this one by the same number of dB, so it keeps its own offset from Main (set that with its own fader). Main follows by default and can be untied. |
| Muted with Main | Main’s Mute mutes and unmutes this matrix too. Its own Mute still works on its own. |
| Dimmed with Main | Main’s Dim button dims this matrix too, by its own Dim amount. |
| Ref with Main | Main’s Ref takes this matrix to its own Ref level, lit green, and back. Ref never moves matrices that don’t have this checked. |
| Dimmed by TalkBack | TalkBack dims this matrix while talking, as it dims Main. |
| Master in Control Window | Gives its master a fader in the Control window. |
Checking Muted, Dimmed or Ref with Main matches Main’s current state straight away. Untying a matrix from Monitor mode while it is on brings back its preset’s own master level.
Press FX on any input or output (or ganged pair) to open its processing window.
| Block | What it does |
|---|---|
| High pass | 24 dB/octave, 20 Hz–2 kHz. |
| EQ | Up to 8 parametric bands (frequency, Q, gain), plus an optional low shelf and high shelf. Click or drag handles on the frequency-response graph, double-click the graph to add a band, or use the chips and fields below it. |
| AGC / compressor | Threshold, ratio, attack, release and makeup gain, with a live transfer curve and a gain-reduction meter. |
| Delay | 0–500 ms. Whole samples are exact; fractions use an allpass. The field shows the delay in samples at the current rate. |
| IIR | A stereo HRTF Explorer filter. Ganged pairs only. See HRTF Explorer filters. |
| Low pass | 24 dB/octave, 1–20 kHz. |
| Trim | −24 to +12 dB. |
| Plugins Pro | Up to 8 Audio Unit effects in series. See Audio Unit plugins. |
The graph at the top of the window shows the combined effect of high pass, EQ and low pass. Double-click any knob to return it to its default.
Power button. Each block’s power button switches it on and off. The first time, it sets the block up with its defaults; after that it bypasses the block and keeps its settings, so switching it back on brings them all back. A bypassed block (orange) keeps running quietly, so it comes back without a click. Bypassing the Plugins block bypasses every plugin in it. Block bypass is saved in the preset.
Blocks run top to bottom in the order shown, and the flow bar under the title shows the same chain (dimmed stages are off). Rearrange by dragging a block's grip onto another block, or with the arrows beside it. Reset order restores the default: high pass, EQ, AGC, delay, IIR, low pass, trim, plugins. Filters commute, so the graph doesn't change with order, but AGC, delay and trim are order-sensitive. To set one order everywhere, use Chain order… in the session bar: it applies to all inputs, all outputs, or both, and changes only the order.
The B button, or the Bypass checkbox in the processing window, skips a channel's whole chain while keeping every setting. Bypass all FX (the button in the session bar and Control window, Processing ▸ Bypass All Processing, or a key you set) does it for every channel at once; it isn't saved and is off every time you launch or load a session. A bypassed chain keeps running silently, so its filters and delay lines are ready the instant you come back, and the change is crossfaded over one block so it never clicks.
You rarely want to set up the same chain eight times.
Copying replaces the destination's settings for those blocks and leaves its other blocks alone (and, for a block copy, its order and bypass). The stereo IIR filter is only copied to ganged pairs.
The arrow buttons in the processing window, or Processing ▸ Undo / Redo (⌥⌘Z / ⇧⌥⌘Z), step back through copies. One copy to many channels is one step. The history clears when you switch preset or load a session. Ordinary edits to knobs and handles aren't part of it.
The IIR block loads a filter set exported from HRTF Explorer as a .h header.
It's a stereo filter, so it runs only on a ganged pair: gang the two channels first, then press Load .h file… in the IIR block. The block shows the file name, whether it is Left/Right or Mid/Side, the header format, each channel's order and delay, and the sample rate it was designed for.
HRTF Explorer's Align Sets tab can save a text report with a delay for each set and a suggested bus EQ (Save Report…). Fulwave Monitor can read the EQ from it:
_cmsis or _sse ending. Pairs with no single match are left alone and listed. It is off by default, because headers written with Export Aligned Projects already contain their delay (HRTF_…_DELAY, which Monitor applies), and adding it again would double it. Use it with headers exported from the original projects.Put the effects you already own on any channel.
Every channel’s chain has a Plugins block (last by default, and movable like the others) that holds up to eight Audio Unit effects in series. Add Plugin lists the effects installed on your Mac by maker.
Adding plugins needs Pro; plugins already in a session always run.
UltraStudio and DeckLink devices only pass audio while their video is running.
With Blackmagic’s free Desktop Video software installed and Pro unlocked, starting a matrix that uses one turns its video on for you, as Media Express and OBS do: its input follows the incoming signal, and its output sends black frames in the format chosen in Preferences ▸ General ▸ Blackmagic devices (1080p29.97 by default). The audio itself goes through Core Audio as usual. Only the devices a running matrix uses are turned on, so another one stays free for your video software. If another app already has the video running, its audio passes anyway.
The audio always comes through Core Audio, which any number of apps can use at once. The video of a DeckLink device can only be run by one app at a time, and it is first come, first served:
Blackmagic Design, DeckLink, UltraStudio and Desktop Video are trademarks of Blackmagic Design Pty. Ltd.
Send audio between apps and Fulwave Monitor without a cable. Free with the app, demo included.
Four loopback devices: Fulwave In 16, Fulwave Out 16, Fulwave TalkBack Out and Fulwave TalkBack In (16, 16, 2 and 2 channels). Whatever any app plays into one, any app can record from it, so a DAW, a recorder or a meeting app can feed Fulwave Monitor and take its outputs.
They run at 44.1–192 kHz and have no volume controls. Audio that hasn’t been written yet reads as silence.
JumpDock, a script or another app can play pads and the master by opening a fulwavemonitor:// link.
Add a link to JumpDock as a link item, or from Terminal run open -g "fulwavemonitor://pad/7" (-g leaves the app in the background). A link opened while the app isn’t running launches it. Preferences ▸ Mixing ▸ Accept fulwavemonitor:// links switches them off.
| Link | What it does |
|---|---|
pad/7 |
Like clicking pad 7. Add /on, /off or /toggle for a TalkBack or cue pad. |
talkback/Cans · /on · /off |
A TalkBack preset by name (toggles if left out). talkback/off switches them all off. |
matrix/Cues/Floor · /on · /off |
Any matrix’s preset by name: a router recalls it, a cue matrix switches it. matrix/Cues/off switches a cue matrix off. |
mute · dim · bypass |
Main’s Mute, Dim and Bypass all FX (toggle, or add /on or /off). |
master?db=-10 |
Sets Main’s master level, −40 to +6 dB. |
master/up · /down · ?step=3 |
Steps Main’s master, 0.5 dB unless a step is given. |
…?matrix=Cues |
Added to mute, dim, bypass or master, acts on that matrix instead of Main, for example master/down?matrix=Cues. |
Names ignore upper and lower case; write a space as %20. A malformed link beeps and does nothing.
JumpDock 2.5 or later can put the app in your menu bar: an icon that mutes Main on a click and moves Main’s master on a swipe, with a slider for every matrix and the eight Control-window pads on a right-click. TalkBack can have an icon of its own that talks like a TalkBack pad, and any matrix can have one that mutes and moves its master. The icons follow the app as it changes (slashed while muted, one wave while dimmed, each matrix in its own color) because the app tells JumpDock about the session as it changes, not only when asked.
It needs Accept fulwavemonitor:// links on; with it off the app tells JumpDock nothing beyond that the links are off, and JumpDock says so. Set it all up in JumpDock’s Settings ▸ Monitor.
A preset holds the whole state: every crosspoint level, the master and its assignments, mute and solo, gangs, and all the processing chains.
Use them to audition alternatives: a speaker feed against a headphone feed, a mix with and without a filter.
A session is a .fwm file holding every matrix (Main, TalkBack and any named ones) with its presets, which one is active and its devices (by identity), plus the eight Control-window pad assignments.
Use File ▸ New (⌘N), Open… (⌘O), Save (⌘S), Save As… (⇧⌘S), Rename Session… and Close Session (⇧⌘W). Double-click a .fwm in Finder to open it here.
.fwm file opens that one instead. If the file has moved, the app says so and starts untitled.A small window for use while you listen.
It holds the master fader, Mute and Dim on the left, Monitor and Ref on the right (each with its level menu where it has one), how many crosspoints are on the master (with All / None), and eight preset pads. Open it with the Control button or Window ▸ Show Control Window (⌘9). It scales as you drag its edges.
Compact (or ⌥⌘9) shrinks it to a master knob (with the button to expand it again underneath), Mute, Dim, Monitor, Ref and eight narrow pads. Keep on top floats it over other apps, and All Spaces makes it follow you to every desktop and appear over full-screen apps. These choices are remembered, and both are also in Preferences ▸ Mixing. A window can only be on one display at a time, so with “Displays have separate Spaces” on, it stays on the display where you put it.
Right-click a pad to give it a preset from any matrix. Main’s pads recall a preset. Another matrix’s pad shows its name and color: a router’s pad recalls one of its presets, and a TalkBack or cue pad switches its preset on or off (see TalkBack).
Right-click a matrix’s tab and check Master in Control Window to give its master a fader of its own, named in its color and with its own Mute, to the left of Main’s (a knob in the compact layout). The window widens to fit. The faders follow the tab order mirrored, so the tab next to Main’s is the fader next to Main’s; drag the tabs to change it. The choice is saved with the session.
Dock click. Preferences ▸ Mixing ▸ Dock click sets what clicking the app’s Dock icon (or its entry in JumpDock) opens while it is running: the main window, the Control window or the compact Control window. Right-clicking the Dock icon also lists all three.
Every input and output has a level meter and a latching clip light. Choose the style in Preferences ▸ Meters.
| Style | Shows |
|---|---|
| Peak | Sample peak. |
| Peak with hold | Peak plus a hold marker (1, 2 or 5 seconds, or until reset). |
| RMS | RMS level with a peak marker. |
| True peak | 4× oversampled, so it finds overs between samples. It reads about 0.1 dB high in a worst-case test. Computed only while selected. |
The range is 36, 48 or 60 dB. The clip light latches at 0 dBFS (0 dBTP for true peak). Click a meter, or choose Meters ▸ Reset (⌥⌘K), to clear holds and clip lights. The AGC block also has its own gain-reduction meter.
Only the channels in use are processed and metered, so a 12 × 8 grid costs a fraction of a 64 × 64 one.
In a release build with every one of 64 channels running high pass, low pass, three EQ bands, compression and delay, the engine takes about 4% of one core. At large sizes, drawing meters costs more than the audio does. Under Preferences ▸ Meters ▸ Performance you can:
The audio thread never waits: if you're mid-edit when a block is due, that block skips strip processing rather than glitching the stream.
A cue matrix or TalkBack with nothing switched on, and its page not showing, idles: no processing, mixing or meters, so it costs almost nothing until a pad wakes it.
| Shortcut | Action |
|---|---|
| ⌘, | Preferences (General: license and Pro trial, Blackmagic devices, virtual audio devices, startup, launch session, updates; Appearance; Mixing: Monitor mode and its lock, shortcuts, links, Control window, Dock click; Meters: meters, performance) |
| ⌘N ⌘O ⌘S ⇧⌘S ⇧⌘W | New, Open, Save, Save As, Close Session |
| ⌘0 / ⌘9 / ⌥⌘9 | Main window / Control window / compact Control window |
| ⌘= ⌘− ⌥⌘0 | Zoom the grid in, out, fit |
| ⇧⌘P | New preset from the current state |
| ⌥⌘L | Lock / unlock the crosspoints |
| ⌥⌘Z / ⇧⌥⌘Z | Undo / redo a processing copy |
| ⌥⌘K | Reset peak holds and clip lights |
| Your own keys | Preset pads 1–8, master volume up and down (0.5 dB and 3 dB steps) and to 0 dB, Mute, Dim, Ref, Monitor mode and Bypass all FX. Set them in Preferences ▸ Mixing ▸ Shortcuts…. Master volume starts on ⌥⌘↑ / ⌥⌘↓ (⇧ for 3 dB) and ⌥⌘\ for 0 dB. Turn on Work in any app to use them while another app is in front. A TalkBack pad’s key latches on a tap and talks while held, or, with TalkBack pad keys: Push to talk, talks only while held. Preset recall, Mute, Dim and Bypass all FX have no fixed keys. |
| Arrows, Return, digits | In the grid: move the selection, type a level |
| ⇧-click / right-click a cell | Assign to master / switch the crosspoint off or on |
Questions, bug reports, or feature requests: use the support form and choose Fulwave Monitor.
When reporting a problem, tell us your macOS version, your input and output devices, and the sample rate they were running at.