M-3700 Automation — User Manual
Overview
M-3700 Automation turns a TASCAM M-3700 console into a recallable, automatable mixer.
The M-3700 (1991) has VCA fader automation and transmits a small set of MIDI Control Change messages: fader positions, and four switches per channel packed into a single byte. It has no onboard storage worth the name, no way to recall a mix beyond its own scene memories, and no way at all to remember the two thirds of the desk that never touches MIDI — trims, EQ, aux sends, routing, pan.
This app does three things:
- Mirrors and records the automatable part. Faders, channel mute, monitor mute, aux mute and EQ-on are read from the console over MIDI and can be recorded against timecode as automation passes.
- Remembers the manual part. Every knob and switch the console cannot transmit is drawn in the app and stored with the session, so a mix can be reset by hand exactly as it was.
- Drives the tape machine. MMC transport control and MTC timecode display, so the app follows and commands a multitrack recorder.
Nothing the app stores for the manual controls is ever sent to the console — there is no wire for it. Those are a written record for you to dial back in by hand.
What You Need
- A Mac running macOS 14 (Sonoma) or later.
- A MIDI interface with at least one input and one output connected to the console's MIDI IN and MIDI OUT.
- A TASCAM M-3700 (32 or 24 input) console.
- Optional but recommended: a multitrack recorder that speaks MMC and sends MTC (developed against a Mackie HDR24/96).
The console must be in SNAPSHOT mode for it to transmit fader and switch changes. If it is not, the app sees nothing and its display will drift out of step with the desk.
Installing and First Launch
- Unzip the download and drag M3700 Automation.app to your Applications folder.
- The first launch must be right-click → Open, then confirm. The app is not notarized by Apple, so a plain double-click will be refused.
- If macOS still refuses, open Terminal and run:
xattr -dr com.apple.quarantine "/Applications/M3700 Automation.app"
On first launch the app opens with an empty, untitled session and no MIDI connections. Set those up next.
Setting Up MIDI
Open Settings (⌘,). There are four groups:
Console - MIDI In — the port carrying the console's MIDI OUT. This is how the app sees fader and switch moves. - MIDI Out — the port going to the console's MIDI IN. This is how snapshots and automation playback reach the desk. - Model — 32 or 24 inputs. This sets how many channel strips are drawn. - Status — live connection state. Useful for confirming a port actually opened.
Timecode - MTC Source — the port carrying MIDI Time Code from your recorder. Often a different physical port from the console.
Transport (MMC Out) - Send To — the port going to your recorder's MIDI IN. - Device ID — which MMC device to address. "All (broadcast)" is the MIDI spec's universal address, but many machines ignore it. A Mackie HDR24/96 in particular responds only to its own configured ID (0 by default, set under Setup ▸ MIDI). If the transport buttons do nothing, this is the first thing to change.
Appearance - Theme — System, Dark or Light.
Port selections are remembered between launches.
Sessions, Snapshots and Passes
Three things, nested:
Session — the document, saved as a .m3700 file wherever you choose, so it can live next to the Pro Tools session or recorder project it belongs to. A session holds everything about the mix: all snapshots, all automation passes, every manual control position, channel names and colours, the master section, and the start/end locators.
Snapshot — the whole console frozen at a moment: every fader, every automatable switch, and every manual control. Snapshots are recalled instantly. One snapshot can be marked the session's default, which is the state the desk is put back to when the session opens.
Pass — a recorded automation take: a starting state plus a stream of timed fader and mute moves keyed to timecode. Passes play back against your recorder's MTC.
MIDI port selections and the MMC device ID are deliberately not part of the session — those describe your room, not your mix, and stay put when you open someone else's session file.
Getting Your Console State Into the App
The M-3700 has no "send me your current state" command. This was confirmed against the service manual — the command simply does not exist. But there is one reliable way in:
Recalling a scene on the console transmits every fader and switch value.
So, once per project:
- Set up your mix on the console by hand.
- Save it to one of the console's own scene memories.
- Recall that scene on the console. The console dumps all its values, and the app takes them in.
- In the app, open Snapshots and save what you just received under a name.
- Mark it the session's default snapshot.
From then on the app has your starting state, and opening the session puts the desk back there. You only need to repeat this if you rebuild the mix from scratch on the console.
The app detects this kind of bulk dump (many channels changing at once) and treats it as a state load rather than as performance moves.
The Main Window
Along the top:
- Timecode counter — incoming MTC position, with a lock indicator and frame rate. Green when timecode is running. This panel stays dark in both light and dark themes.
- START / END locators — click the field itself to locate the transport there. ⊙ captures the current playhead position, ✕ clears it.
- Transport buttons — go to start, rewind, fast forward, go to end, then stop, play, record.
- Automation — WRITE, UPDATE, READ, NULL.
- Zero Console, Snapshots, Passes, and Settings.
Below that, the console itself. Input channels scroll horizontally and vertically as one block. The master section, stereo and group faders are fixed at the right and never scroll. An aluminium strip runs across the whole desk carrying channel numbers and scribble strips, and every fader is locked to the bottom edge regardless of window size.
Channel Strips
Each input strip runs top to bottom in the same order as the physical module:
- Input — PWR (phantom), PAD, MIC trim, LINE trim, LINE source, FLIP, HPF
- Equalizer — 10 k, HI MID gain and frequency, LO MID gain and frequency, 100, and the automatable EQ switch
- Auxiliary Sends — Aux 1/3, Aux 2/4, the 3-4 select, monitor source, post-fader, Aux 5, Aux 6
- In-Line Monitor — source select, short fader, pan
- Output — group assigns 1-2 through 7-8, stereo assign, pan, SOLO, and the manual MUTE
- BYPASS — takes the channel out of automation. Green LED.
Below the aluminium strip: the long fader, the automatable MUTE, the NULL indicator row, and a dB readout.
There are two mutes per channel, and they are not the same control. The MUTE beside SOLO is the console's local switch — manual, not automatable, remembered by the app only. The MUTE below the fader is the automatable one that travels over MIDI and gets recorded into passes.
Knob values read 0–127 because that is the actual resolution of the MIDI data, not a prettier scale invented on top of it.
The Master Section
Fixed at the right of the window, bottom-aligned to the aluminium strip, laid out to match the physical module:
- Four effects returns — fader, bus assigns, pan, solo, mute
- Aux Master — Aux 1 through 6
- Control Room — SOLO and PFL levels, PFL switch, CR level, MONO, DIM, speaker A/B, and the source-select column (Aux 1–6, EXT, 2 TR, STEREO)
- Meter Select — Studio, CR, Stereo
- Studio — CR/Mono source, Phones level, Studio level, ON
- Oscillator — frequency (OFF, 40, 100, 1k, 10k, 16k) and TONE
- Talk Back — Aux 1-4, SLATE, TB, and mic level
All of it is manual. None of it is transmitted or received; it is stored with the session as a written record.
The STEREO and group strips each carry their own BYPASS switch above the aluminium strip.
Scribble Strips and Channel Names
Click any scribble strip in the aluminium bar to rename that channel, and pick a colour from the swatches. Press Return to commit, or click anywhere else to close.
Tab moves the cursor to the next scribble strip to the right, Shift-Tab to the left. The order runs across the inputs, then STEREO, then the groups. Tabbing to a strip that is scrolled off screen scrolls it into view.
Names and colours are saved with the session.
Transport and Timecode
The transport buttons send MMC to your recorder; the counter displays MTC coming back from it. These are separate paths and can be separate physical ports.
- Play / Stop — also Space.
- Rewind / Fast Forward — shuttle. Most machines stop transmitting MTC while shuttling, so the counter may sit still until playback resumes. That is the machine's behaviour, not a fault in the app.
- |◀ — go to the START locator, or to 00:00:00:00 if none is set. Also Return.
- ▶| — go to the END locator; with none set, falls back to the end of the selected pass.
MMC is fire-and-forget: the app has no confirmation that a command arrived. Incoming MTC is the only real evidence the machine is rolling, which is why the lock indicator matters.
Recording Automation (WRITE and UPDATE)
WRITE records an entirely new pass. Arm WRITE, roll the recorder, and every fader and mute move you make on the console is captured against timecode. The console state at the moment recording starts is stored as the pass's starting state.
UPDATE plays back an existing pass while letting you ride over the top of it. Where you touch a fader, your offset is applied to what the automation is doing and recorded; where you don't, the original pass plays through untouched. This is how you fix one chorus without re-riding the whole song.
Pressing Stop ends the take and drops back to READ, so the next roll plays rather than records. You will be asked to name the pass.
Select a pass at any time from the Passes menu. Selecting one immediately recalls its starting state to the console, so the desk is where the pass expects it before you roll.
Playing Back Automation (READ)
READ plays the selected pass. At the first timecode frame the app asserts the pass's starting state — or the session's default snapshot if the pass predates that feature — then applies each recorded move as its timecode arrives.
Because playback is a stream of changes applied on top of a starting state, that starting state has to be right. This is why the app asserts it rather than trusting whatever the desk happens to be set to.
Nulling Faders (NULL)
The M-3700's faders are not motorized. When automation moves a level, the physical fader stays where your hand left it. NULL is how you get them back in agreement.
With NULL engaged, each channel shows an arrow telling you which way to move that fader to match what the automation says it should be. Move it until the arrow clears. NULL works with the transport parked — you do not have to be rolling.
NULL can be combined with READ or UPDATE. It is the standard way to pick up an existing mix before punching in.
Zeroing the Console
Zero Console has three levels, each confirmed before it runs, and none of them undoable:
- Zero Channels — every channel's manual controls, automated fader/mute/EQ display, and scribble strips back to defaults. Local only, nothing sent over MIDI.
- Zero Channels + Master Section — as above, plus the master section and the four effects returns. Still local only.
- Zero Channels + Master Section + Send to Console — as above, and sends the zeroed faders and switches out to the desk.
Keyboard Shortcuts
| Key | Action |
|---|---|
| Space | Play / Stop |
| Return | Go to START locator (or zero) |
| ← / → | Nudge the channel view left / right |
| Tab / Shift-Tab | Next / previous scribble strip while editing |
| ⌘N | New session |
| ⌘O | Open session |
| ⌘S | Save session |
| ⇧⌘S | Save session as |
| ⌘, | Settings |
Troubleshooting
The app sees no fader moves. Check the console is in SNAPSHOT mode — without it the desk transmits nothing. Then check the MIDI In port in Settings.
Everything went dead on a MOTU interface. A MIDI Timepiece AV can fall into standalone patchbay mode, at which point output still works but every input is dead and the panel LEDs flicker. Resetting the Timepiece fixes it. Also worth knowing: power the interface on before launching the app.
The transport buttons do nothing. The MMC Device ID is almost certainly wrong. Many machines ignore the "All (broadcast)" address entirely — set the ID to match the recorder (0 on an HDR24/96 by default).
MIDI ports have to be reselected after a reboot. Some interfaces hand out new CoreMIDI unique IDs between driver sessions, which invalidates a saved selection. Reselect the ports in Settings.
The counter does not move in rewind or fast forward. Most machines stop sending MTC while shuttling. Expected.
Opening a session does not restore the console. The session needs a default snapshot. See Getting Your Console State Into the App.
The Viewer Edition
M-3700 Viewer is the free, read-only edition. It installs alongside the full app and is marked with a VIEWER badge in the header.
It does everything the full app does in the inbound direction:
- Connects to the console and mirrors faders, channel mute, monitor mute, aux mute and EQ-on live
- Draws the complete desk — channel strips, master section, aluminium strip
- Displays incoming MTC on the timecode counter
- Opens existing
.m3700sessions so you can look at a mix - Lets you work the manual controls and name channels on screen
- Includes this manual
What it withholds:
- Sending anything to the console. No snapshot recall, no automation playback, no zeroing.
- Transport control. MTC still displays; MMC commands are not sent.
- Snapshots and automation passes.
- Saving sessions. Nothing is written to disk, so on-screen work is lost when you quit.
These are enforced at the MIDI output path and the session writer, not merely by greying out buttons — a viewer physically cannot write to your console or overwrite a session file. Blocked controls stay visible and dimmed; clicking one explains what it does in the full version.
Limitations and Known Issues
- Manual controls are a record, not a remote. The console cannot receive trims, EQ, aux or routing. Those are yours to dial in.
- The app cannot ask the console for its state. Recalling a scene on the console is the only way in.
- Optimistic updates. When the app sends a change, it assumes it landed — the console does not echo changes it received over MIDI, only physical ones. If the console is not in SNAPSHOT mode, or a cable is out, the app will show a state the desk does not have.
- MMC is unacknowledged. The app cannot tell whether the recorder received a command.
- Undocumented CC values. The console transmits on CC 40–47 and 104–111, which appear in no documentation. They are deliberately left unmapped rather than guessed at.
- Beta builds expire seven days after first launch. After that the app opens to a thank-you notice and nothing else. Your saved sessions are untouched and remain on disk.