Record & capture
Joining an interrupted recording back together
updated
Several recordings from one meeting that got cut short, put back together into a single recording and a single note, with your side and theirs still told apart.
Sometimes one meeting ends up as two or three recordings. You pressed stop instead of mute, the Mac restarted for an update halfway through, or something crashed and you started again. Each piece gets its own short note with its own summary, and none of them is really about the meeting you had.
Joining puts the pieces back together. Pick the recordings in the order they happened, and Oris turns them into one recording and transcribes that into one note, with a summary of the whole meeting rather than of whichever piece you happen to open.
Doing it
Joining lives in the Obsidian plugin’s command palette: Oris: Join recordings…. Oris lists the recordings in your vault’s .recordings folder, oldest first, with each one’s length and size, so the pieces of one meeting sit next to each other. Click Add on each piece that belongs to the meeting. They collect in a Selected order list at the top, where ↑ and ↓ fix the order if it needs fixing and × takes one back out. They are joined in exactly the order shown there.
Then choose where the note goes. Inbox makes a new note in inbox/ with a name Oris picks. New note lets you choose the folder and the name. Existing note with a marker fills in a note you prepared yourself: put a <!-- TRANSCRIPT_PENDING_… --> marker where you want the transcript and pick it from the list. A new note never replaces a note that is already there. If the name you chose is taken, the new one gets a -2 on the end.
The transcript lands in that note in your vault, even if your meetings go to Apple Notes or a Markdown folder.
Click Join + transcribe. The joining itself takes a second or two, even for hours of audio, because nothing is re-encoded. The transcription is what takes the time, as long as it would for a recording of that total length, and the summary follows with whichever provider you have set under Settings → Summarization.
What you get
A new recording sits in .recordings beside the pieces it came from, named after the earliest of them: 2026-09-27_10-00-00_joined.m4a. The pieces themselves are left exactly where they were, so nothing is lost if you joined the wrong ones.
The note is shaped like any other meeting note, with the summary on top and the full transcript below it, and me and others are still told apart all the way through. Each piece keeps its own timing, too: if your microphone came up a second after the call audio in the second piece, it still does in the joined recording, so what you said stays lined up with what you were answering.
The pieces’ own transcripts are not reused. Their timestamps each start from zero, so the joined recording is transcribed fresh from the start.
Recordings that stopped abruptly
A recording that ended in a crash rather than a stop can usually still be joined. Oris writes audio to disk in small pieces as it records, and everything up to the last piece it managed to write is read and joined as it stands.
The exception is a recording that died in its first second or so, before any audio reached the disk. There is nothing in that file to read, by Oris or by anything else. The join tells you which file it is and stops without writing anything, so leave that one out and join the rest. (Recordings made before this version wrote their first audio after about five seconds rather than one, so an old one that crashed very early is more likely to be empty.)
When it isn’t available
Joining is reached from Obsidian’s command palette and from nowhere else in the interface, so it needs the Oris plugin in an Obsidian vault. The command-line tool below ships with the app either way.
From the command line
The same join is available directly, which is handy for a quick fix without opening Obsidian. In a source checkout it is bin/oris-join; in the installed app the same script lives at /Applications/Oris.app/Contents/Resources/oris/bin/oris-join.
bin/oris-join <a.m4a> <b.m4a> [<c.m4a>…] # → a new note in <vault>/inbox/
bin/oris-join <a.m4a> <b.m4a> --target-note <note.md> # → that note (see below)
bin/oris-join inspect <a.m4a> [<b.m4a>…] # each recording's tracks and length, as JSON
The recordings are joined in the order you list them. With --target-note, a note that holds a TRANSCRIPT_PENDING marker gets the transcript where the marker is; a note that does not exist yet is created; and a note that exists without a marker is left alone, with the new note written beside it under a -2 name. A note inside an Obsidian vault is filled there, wherever your meetings go. Anywhere else, the transcript goes where your meetings go.