Skip to content
jonobailPublic

About

Four-track tape recorder for the iPhone, in the browser

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

QUADTRACK QT-4

A four-track cassette multitracker for the phone: record with the built-in mic, overdub, punch in, bounce, ride the master pitch, mix down. A static site with no build step and no server code.

Use it now: https://jonobail.github.io/quadtrack/ on the phone. Share → Add to Home Screen makes it a full-screen app and protects saved tapes from Safari's clearing of unused site data. Tapes stay on the device and are never uploaded.

The mic needs HTTPS. Any static host works. localhost also counts for desktop testing.

Serve it on the tailnet

systemd-run --user --unit=quadtrack --working-directory=$PWD --property=Restart=always /usr/bin/python3 -m http.server 8097 --bind 127.0.0.1
tailscale serve --bg --https=10000 http://127.0.0.1:8097

The unit lasts until a reboot or logout. Then open https://<machine>.<tailnet>.ts.net:10000/ on the phone.

Serve it on the local network

Plain http://<ip> can't open the mic on an iPhone, so this runs HTTPS with a self-signed certificate:

systemd-run --user --unit=quadtrack-lan --property=Restart=always /usr/bin/python3 $PWD/tools/serve-lan.py 8444

If ufw is on, also run sudo ufw allow from <your-subnet>/24 to any port 8444 proto tcp. The certificate is tied to the IP and is remade if the IP changes, so a phone that trusted the old one has to install the new one.

Getting started

  1. Press REC. It picks the first empty track and asks for the mic, then records.
  2. Press STOP. The tape returns to where the take began, so PLAY hears it.
  3. Press REC again to add a part on the next track. Headphones stop the first part bleeding in.

Tap a track's number first to choose which track records. Before your first overdub, go to MORE → MIC → MEASURE so new parts land in time.

The live mic is never played back, so it can't feed back. The mic only reaches the speaker by way of the tape.

The main screen

Control Does
Track number Gets that track ready to record
Waveform Tap to edit it, drag to move through the tape
LEVEL That track's volume
MASTER PITCH ±12 % true varispeed on the whole tape, record and playback. Double tap to centre
TAPES Saved tapes, saving audio, backups
MORE Mic gain and EQ, overdub timing, pan, EQ, effects, bounce, tape speed, noise reduction, memory points, repeat, auto punch

The waveform editor

Drag to select, pinch to zoom, drag the strip underneath to move around. Tap to place the playhead. Edits happen in place, and nothing slides along, so the track stays in time with the others. CUT leaves silence and keeps the audio for PASTE, which also works across tracks and overwrites from the playhead.

Files

js/processors.js is the tape machine on the audio thread. js/engine.js is the mixer graph, js/app.js the panel, js/editor.js the waveform editor, js/peaks.js the waveform drawing, js/store.js the saved tapes.

The font

Eurostile is a commercial typeface and can't be redistributed here, so the wordmark uses Michroma (SIL OFL, fonts/OFL.txt), its closest free match. To use a licensed Eurostile, put its woff2 in fonts/ and point the src of the @font-face at the top of style.css at it.

About

Four-track tape recorder for the iPhone, in the browser

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages