The manual
A table of philosophers who argue aloud, in their own rhythms, and may cite only what they actually wrote. You are the host. This is how the evening works.
The app opens with empty chairs, on purpose — nobody is chosen for you. Three ways to fill them, and they are different offers rather than one offer three times.
Two to five chairs. You can seat someone mid-conversation with draw up a chair — he arrives into the argument in progress and answers that, not a fresh question.
Sixty curated arguments is a good default and a poor ceiling. When a table turns out to be the one you wanted, keep this table saves who was in it and the questions you want to ask them — during the argument, not only after it, because the evening a table proves itself is the evening you will remember to save it.
Your tables can never shadow or delete a curated one: they are kept apart in the app's own storage and carry their own identifiers. Keeping the same men twice revises the table you already have rather than leaving you two rows you cannot tell apart. A table that names somebody no longer in the roster is withheld from the menu rather than laid short.
Type it, or hold the microphone and speak it. Open the sentence with a name and it goes to that man first — “Marcus, does the fort hold?” — and the rest of the table decides for itself whether to join him.
Speaking fills the field; the arrow sends it. Letting go used to send directly, which was one gesture and one decision and is the better design right up until a name comes back misheard — and a question that has gone cannot be recalled, because the table has answered the wrong words. Look at what it heard, fix it if you need to, then send. Swipe the field left, or tap the ✕, to clear it whole.
something to ask them offers questions written for the table as it is actually seated — matched to who is in the chairs, not to which preset you last tapped.
Everyone at the table is scored on how strongly your question touches what they care about. The strongest reaction leads. The man most opposed to him speaks second — friction is the design, not a side effect. A third joins only with a genuinely different angle.
Each contribution arrives in two or three turns: a short opening that states his answer, then the explanation. That is not a style choice — every turn is spoken the moment it is written, so a short opening reaches you while the rest is still being composed.
Four things you can ask for that a plain question will not produce.
Tap your own portrait and you have asked to speak. The man talking finishes his thought, nobody new begins, and the label under you goes waiting → your turn. Holding the microphone does the same thing and silences the room at once.
Three controls that stop sound and they are not the same. Pause keeps your place. Interrupt does not. Mute does not stop anything — it stops you hearing it.
For a sitting you cannot attend to — running, driving, cooking. Choose let them talk by themselves before you ask, then ask however you like. The table takes it from there and the toast closes it. Nothing needs tapping again.
| Length | Exchanges | How they talk |
|---|---|---|
| 10 | 6 | the usual pace |
| 15 | 9 | the usual pace |
| 20 | 12 | room to develop |
| 30 | 18 | room to develop |
It quickens near the close, whatever it started as, so the last round is the end of a movement rather than a sudden change of manner. And it stops early when the argument runs dry — a twenty-minute setting ending at eleven is the table having finished, not a fault. take the floor ends it at the next round boundary.
toast closes the sitting. The table finishes what it was already saying first — the button says letting them finish… while it drains — and then raises a glass.
A rough copy is written after every round, whether you
ask or not, as Unfinished sitting.txt in Files → On My
iPhone → Symposium. It survives a crash. It is the words, not the
audio, and the next evening overwrites it.
Carrying one on rebuilds what the philosophers were told: the question, the rounds in the order they happened, and every interjection of yours between them. What is not rebuilt is how strongly each man reacted — those numbers decide who leads a round, they are spent by the time it is over, and inventing them would read as evidence of something. A sitting merely reopened stays a recording, and the screen says which you are looking at.
The sliders icon in the top bar → Kept sittings. Everything you kept is there, newest first, each row showing when it was, how many lines it ran to, whether it was toasted, and who was at it. Reachable between sittings and from the toast — not mid-argument, because opening one replaces what is on screen.
Two files are written and only one of them reloads.
The .txt is for a person: it is what you send somebody or
read on a laptop, and it is deliberately lossy — speaker, words,
citation, and nothing a machine would need. The
.symposium archive beside it is for the app, and it is the
one Kept sittings lists. Editing or renaming
the text file changes nothing about what can be reopened.
Both land in Files → On My iPhone → Symposium, so an evening can be moved to a computer, backed up, or handed to somebody. Carrying one on needs the archive, so keep it if you think you might want the argument again — keep the whole sitting writes both, and save the voices writes the audio separately.
What they remember
Each sitting is recorded as a gist and read back at the next one, so a philosopher can say “when you were last here you doubted…” — and will not reuse an image or an opening he has already spent on you.
He remembers only the evenings he was actually at. A man recalling a conversation he was absent from is inventing one, which is the same fault as an invented citation and harder to catch, because you may half-remember it too and agree.
A steelman is recorded as a case put, never as a view held. He argued it because you asked. The same is true of a movement — see below.
How hard they press
One dial in the settings menu, and a different question from whether anybody's mind changes. A man can be immovable and courteous, or open to persuasion and merciless.
| Setting | What changes |
|---|---|
| Cordial | They say what is right in the other man's case before pressing, and take the disagreement up from there. Fewer interruptions. |
| Candid | The default, and what an evening has always been: the second turn goes to whoever stands most opposed, and they argue. Adds nothing to the round. |
| Adversarial | They find the weakest joint and put their weight on it, name an evasion when they see one, and will not let a question be answered sideways. |
Both ends carry a floor, and it is a different one at each end. Cordial is not permission to stop disagreeing — a table that agrees is five men saying nothing at length, and friction is the design. Adversarial is not permission to be personal: against the position, never the man, and no diagnosis of anybody's motives. Those two failures are what this app exists to avoid, and a manner setting must not smuggle either one in.
Never in the opening round, whichever way it is set — two men are stating positions and there is nothing yet to press on. Change it mid-argument and it takes effect at the next round.
When somebody gives ground
A table where nobody ever moves is not a symposium; it is five lectures taking turns. So something said in the room — by another philosopher, or by you — can change what a man says next, and the turn is marked when it does.
Always on, and the floor below is what makes that safe. It was a setting for a while and is not one now: two dials for one evening was one too many, and the bound here is a type with two cases and an audit behind it rather than a request that might be ignored.
There is no third move, and that is enforced rather than requested. A load-bearing commitment is never abandoned: the reply is refused and the turn dropped. A movement must name who caused it, and that person must actually be in the room. Nobody is moved in the opening round, because nothing has been said yet to be moved from. And a man cannot move himself.
It is never remembered as his position. He granted something to somebody on one evening; that happened, and you may refer to it. What does not survive is the reading that he now believes it — a philosopher rewritten one concession at a time would drift out of himself over a season of sittings, and nobody would see it happening. It is also rare on purpose: a man who concedes something every round is not open-minded, he is furniture.
The rules they cannot break
Every integrity rule here is enforced in code, not merely requested in a prompt. A turn that breaks one is dropped before it can be spoken.
Thirty-five philosophers can be quoted exactly today, across 121 bundled texts: Aristotle, Augustine, Bacon, Berkeley, Comte, Confucius, Darwin, Descartes, Diogenes, Dostoevsky, Douglass, Einstein, Epictetus, Hobbes, Hume, James, Julian, Kant, Leibniz, Locke, Marcus Aurelius, Marx, Mill, Nietzsche, Plato, Pythagoras, Rousseau, Russell, Schopenhauer, Seneca, Socrates, Spinoza, Spooner, Tolstoy and Whitehead. For everyone else, quotation is refused rather than guessed — and you can change that yourself for any of them, by adding a source and fetching it.
Your own material
On the table screen, give one of them a source → the philosopher's name. Then a title, the link, optionally a note on where in it or why it matters, and whether it is a talk or video or something written — and Add it to his library. The sheet lists what he can already cite underneath, so you are not adding a second copy of a book he has.
He may cite it from the next round on, and the control is reachable mid-argument, which is usually when you want it: the moment to hand somebody a source is the moment he has said something it bears on. Swipe a source in that sheet to take it back out.
What fetching can read. Plain text, ordinary web pages, and PDFs that have a text layer. A scanned PDF with no text in it, or a page that builds itself entirely in JavaScript, will come back empty and say so. Nothing is stored silently: if the fetch fails you are told which way it failed, because a source you believe was captured and was not is the worst outcome here — you would go on expecting him to have read something nobody downloaded.
Video transcripts work well, and are worth knowing about: paste the link to a transcript rather than to the video, and the talk becomes as quotable as a book.
This is the one place the closed library opens, and it is worth being plain about the trade. The researched library is a promise the app makes: somebody checked that the man wrote the book and that the title is the title. A source you add carries no such promise — what it carries instead is an address, which is a stronger guarantee than most footnotes offer, and the reason it can be let in at all.
The roster
Grouped by where a man stands rather than when he lived. The groups exist to make a menu navigable, not to settle historiography.
| School | Seats | Who you will find |
|---|---|---|
| The ancients | 12 | Marcus Aurelius, Plato, Aristotle, Plotinus, Socrates, Diogenes, Heraclitus, Epicurus, Epictetus, Seneca, Pythagoras, Democritus |
| The Eastern schools | 9 | Lao Tzu, Confucius, the Buddha, Abhinavagupta, Mencius, Vivekananda, Zhuangzi, Mozi, Shen Dao |
| The age of reason | 10 | Hume, Hobbes, Kant, Descartes, Locke, Spinoza, Rousseau, Elisabeth of Bohemia, Zera Yacob, Leibniz |
| After Kant | 12 | Nietzsche, Hegel, Schopenhauer, Marx, Kierkegaard, Heidegger, Derrida, Schelling, Mill, Acharya Prashant, Mainländer, Ortega |
| Mind and matter | 19 | Wittgenstein, Kastrup, Penrose, Dennett, Churchland, Woollacott, Anscombe, Hoffman, Gallimore, Chomsky, Nagel, Searle, McDowell, Paul Churchland, Hameroff, McGilchrist, Fodor, Putnam, Marr |
| Power and refusal | 15 | La Boétie, Spooner, Arendt, Douglass, Tolstoy, Larken Rose, Foucault, Rothbard, Ellul, Nock, Orwell, Hitchens, Łobaczewski, Tannehill, Corbett |
| Faith and the mystics | 17 | Weil, Teresa, Aquinas, Avicenna, Rumi, John of the Cross, Eckhart, Yogananda, de Mello, Watts, Dyer, Augustine, Tillich, Hildegard, Julian, Bonhoeffer, Huxley |
| Existence and the absurd | 12 | Beauvoir, Frankl, Sartre, Camus, Dostoevsky, Husserl, Unamuno, Peterson, Vervaeke, Campbell, Cioran, Caraco |
| The sciences | 15 | Darwin, Turing, von Neumann, Levin, Margulis, Faggin, Shannon, Wheeler, Gödel, Cantor, Dawkins, Sagan, Deutsch, Rovelli, Tegmark |
| Mysticism, mind and computation | 11 | Schrödinger, Bohm, Berkeley, Whitehead, Planck, Einstein, Luria, Wolfram, Nørretranders, Pribram, Chaitin |
| Philosophy of science | 12 | Popper, Kuhn, James, Russell, Comte, Bacon, Peirce, Lakatos, Feyerabend, Jung, Meyer, Shermer |
| Free will, consciousness and AI | 17 | Sapolsky, Chalmers, Friston, Tononi, Carhart-Harris, Bostrom, Yampolskiy, Virk, Sheldrake, Torday, Hofstadter, Harris, Clark, Strawson, Hassabis, Minsky, Graziano |
Forty-four of them are alive. Those carry a standing disclosure: a living person can be got wrong in public, by name, and be around to see it — so the screen says plainly that this is a construction from published work and that he has not been consulted.
Two Simones, three Thomases
Where a given name is shared, everyone who shares it takes a surname initial — Karl M and Karl P, Simone W and Simone B, Thomas H, Thomas A and Thomas K.
The bare name reaches nobody, deliberately. Guessing between two men is worse than asking again, and you would hear the wrong one answer with no sign that anything had gone wrong.
Spelling is no help. Georg Cantor and George Berkeley are one name across a table, and dictation picks a spelling for you — so neither given name reaches anybody while both are seated, and each is addressed by surname. A name a letter or two out still finds its man (Larkin reaches Larken Rose), but never when it could find two.
Voices
The phone's own voices work with no setup and no cost. Cloud voices are better and are billed per character; the server holds the key and enforces a daily budget, so the system voices take over rather than the table going quiet.
Give your name and they will use it — sparingly, once or twice an evening, at the moment a man turns to you. A name in every turn is the register of a hold queue and would undo the thing it was added for.
When something goes wrong
You never have to leave a sitting to recover from a fault. Every transient failure offers the way onward directly beneath it.
The same table, in a browser
Everything in this manual so far describes the app on your phone. There is a second way in: a web page, at a URL you can hand to somebody else. The philosophers, the citation audit and the rules of a round are the same code — the server and the phone share one definition of who these men are, so nothing drifts between them.
Two differences are worth knowing before you open it.
Sixty-five men, in thirteen schools. The web table seats the dead only — five per field — while the phone carries all a hundred and fifty-nine. The living are held back until their voices are a settled question. The web also has a school the phone does not: Waking up, for Watts, Dyer, de Mello, Abhinavagupta and Yogananda.
The floor is the whole page. There are no sheets and no toast: a sitting is a transcript you can read, save, and open again.
One thing the web shows that the phone does not. When a philosopher returns a turn with no words in it, the phone records the fact and says nothing; the web prints it — "reacted 0/10 but returned no words, so he stayed silent this round". It is not a fault you need to do anything about. It is the audit being visible.
Whose credit pays
Open the settings wheel and paste an Anthropic key. Without one the table cannot answer — the roster, the curated tables and the portraits all work, but nobody speaks.
The key is kept in your browser and sent with each question. The server uses it for that one round and never writes it down. So when you send the link to a friend, he pastes his own key and his rounds bill to him. Yours are never spent by anybody else.
An ElevenLabs key is optional and works the same way. Without it the philosophers are read aloud in the browser's own voices, which is free and worse. With it they are cast from your own voice library, exactly as on the phone.
Forget my keys clears both from the browser. Worth pressing on a machine that is not yours.
The voice casting carried over from the phone is offered as a starting point and is read-only on a shared table. Voice ids belong to whichever ElevenLabs account made them, so your changes stay in your own browser rather than overwriting somebody else's cast list with ids his account has never heard of.
The sidebar
A curated argument lays one of the twenty-seven tables whose men are all on the web roster, and puts its opening question in the box.
Seat me a table draws four strangers — with one rule: the second man never shares the first man's school. Four at random produced tables that agreed with themselves.
An evening with… draws one man and asks his own question for you. One chair is the only arrangement where somebody gets to be long: no floor to yield, nobody waiting. It remembers the last twenty it drew, so an evening feels like meeting a person rather than reshuffling six names.
Clicking anyone on the roster draws up a chair for him, mid-argument included — the conversation carries on with him in it. Clear the table ends the sitting and empties the floor.
The moves
Hear one of them out. One man, at length, with nobody interrupting — his own account of what he thinks, what drove him there, what he is against, and what he never settled.
Let one question me. He asks; you answer. Most of the work here is restraint — left alone the model writes a question with the answer folded into it, which is a lecture wearing a question mark.
Steelman. Two choices: who argues, then whose case. The advocate puts the other man's view as well as it can be put, takes one aside of his own, and then the man whose case it is says whether it was put fairly. A steelman nobody is allowed to judge is a performance.
Let them talk. Nobody prompts; the table carries on under its own momentum. An empty round is the honest end of it.
Seat an opponent. Somebody on record arguing with the man you pick, and the quarrel is named — Schopenhauer, at "What the will wants". When the record has nothing, the offer is billed as what it is: a draw from another school.
Keep this table. Remembers the cast between visits. One table, not a library of them.
Typing a name works too. "Marcus, wouldn't this make you a slave to your own habits?" is an address, not a question to the room, and the man named answers first whether or not the scoring would have picked him.
A hand goes up
When one philosopher turns to another by name, the man addressed gets a badge on his coin carrying his place in the queue. Two hands up is an order you can honour rather than a guess.
The hand comes down when he speaks. If a round ends with his hand still up, the question is still owed him — click his coin and he takes it up.
Clicking a raised coin takes his hand rather than excusing him. His portrait is marked because he is waiting; a tap that removed him from the table would be the opposite of what the badge invites. Coins without a badge still remove.
The wheel beside the table is thinking keeps turning between turns, not just before the first one. A philosopher may answer and the next may still be a whole request away.
Taking it with you
The transcript, as text. Built from what is on the floor rather than from the bare history, so the citations and the audit's own notes come with it. A transcript that quietly dropped what the audit found would be the wrong document for this app to produce.
The sitting, to reopen. A file, not a slot on a server. The server keeps nothing about anybody, which is what makes the URL safe to hand out — and a sitting you can mail to someone is a sitting that survives the table being cleared.
The sitting, as audio. One file of the spoken lines.
A reopened sitting is spoken again. Reopening brings back the words, not the voices — those were made in a browser that has since forgotten them. So saving audio for one speaks whatever this browser never spoke, in the transcript's order, and tells you what that will cost in characters before it starts. It used to hand over whatever happened to be in the buffer, which for a reopened sitting meant a twenty-five minute evening saved as three and a half seconds — a file, not an error, which is the worse of the two.
Audio needs an ElevenLabs key, and says so plainly when there is none. The browser's own voices cannot be captured — they render straight to the speakers and no interface hands you the sound — so rather than save a file full of silent gaps and let you discover it later, the button explains itself.
Opening one again. The three most recent sittings sit in the side column under open a sitting, named by who was at the table rather than by filename — "Virk · 14 turns · 14 min · 30 August" — and one click puts the evening back on the floor, seating and all. The time is how long it runs spoken, at the pace episode 001 was measured at, and not the length of any recording beside it: those hold every pause while the next round was being written, and across the sittings kept here they run from half to nearly double the spoken length. show the rest lists the older ones, and reopen a sitting… still opens a file picker for anything kept elsewhere.
This list exists only where the saves do. Filing a sitting into a
folder the browser cannot read left the reopen dialog opening wherever
the browser last was, which on a Mac is Downloads — the one place the
sittings are deliberately not filed. Set
SYMPOSIUM_SAVE_DIR and the list appears; without it the
browser downloads as before and the picker is the way back in.
Before it is filmed
Your own words you may fix. On the web, hover your question and press edit; on the phone, hold it and choose Fix a typo. Both mend the words on screen and in the transcript together, so the film is voiced and captioned from what you meant rather than from what the dictation heard. It is worth doing before anything is voiced: a slip left in is spoken by ElevenLabs, animated, and burnt into the subtitles.
Theirs you may not. A philosopher's turn cannot be retyped where it sits, on the web or on the phone, and that is deliberate: a line altered in place would leave no trace of having been altered, and the whole point of the table is that what a man said can be checked against what he wrote. The host is not a philosopher — he cites nothing, quotes nothing, and no audit runs on him — which is why the pencil is drawn on his lines and on nobody else's. The words live in the saved sitting, and editing that file is the edit.
said — each entry has a
speaker and a text. Save it, then
reopen a sitting… and the new words are
what the voices read..symposium opens it in the app, seating
and all. The round trip is the feature; there is no shortcut
that keeps the file honest.Edit before you record, not after. The text drives the audio, the audio is cut into the clips, and the subtitles are timed against the finished film. A word changed after any of that has happened means doing all three again.
One limit, and it is the only one. Rewording what a man says about his own life is ordinary editing. Putting a book in his hands that he did not write is not — it breaks the single promise the table makes, and it breaks it invisibly, because a citation nobody checks reads exactly like one that holds. If an edit touches a work, verify the work.
From an evening to a film
A sitting can be cut into a film — the philosophers animated, speaking their own lines in their own voices, with subtitles and a works-cited card. The cutting is done in Anima Studio, a separate app on the desk; Symposium's part is to hand it an evening it can read. Which evening, and which app saved it, decides the first step and nothing else.
.symposium
archive rather than the text beside it. On the desk, save the
attachment to Downloads and run
tools/from-phone.js --go, which turns it into the
shape the film tools read and checks every speaker against the
roster on the way through.From there the two paths are one. The lines are voiced one file per line, the long ones cut at their own silences into pieces short enough to animate, and each piece becomes a shot of whoever is speaking. Anima Studio rotates through the eight framings each philosopher has, so a man with fourteen lines is not fourteen identical shots. The opening and closing sequences are kept between episodes and place themselves.
The subtitles are not transcribed. Every shot knows which line it was made from and the sitting holds the words, so they are already known — running the audio back through a recogniser would cost money to recover something never lost, and would misspell the names. What is measured from the film is the timing: each caption appears on the moment its speaker begins, and clears a quarter-second after he stops.
A line the round could not parse is written as (malformed)
and has no words to caption — the audio may exist, voiced by hand
afterwards, but the only copy of what was said is in the host's head.
Those, and anything cut in by hand at the end, are supplied in
tools/caption-fixups.json and the film tools take them as
read.
Something for them to work from
Giving one of them a source hands one man a link, and the asymmetry is the point: a paper put in front of Dennett that Teresa has not seen is a move in an argument. Add information, on the web table, is the other thing — an article, a passage, an excerpt that the whole table has read, so the evening argues against something rather than from memory.
Give it a name — it is cited by that name — say where it came from, and then paste the words, fetch a page, or open a file. Read what lands in the box, cut what you do not want, and put it on the table. Every philosopher seated may refer to it, disagree with it, and quote it, and every quotation is checked against those words before the turn is heard. Click a piece's name afterwards to read it again.
Why this may be quoted when a host source may not. The rule has never been permission, it has been checkability. A link with no text behind it can only be named, because nothing here holds a word of it — that is why a link is required there. Here you hand over the words themselves, so the audit compares them character by character, exactly as it does the hundred and twenty-one bundled books. What is lost is the listener's ability to open it, which is why the philosophers must name it as material you supplied.
doi.org links are followed, so a DOI is
often the better address to try.Three places, and losing any one of them loses nothing.
Saved Sittings/On the table/ — what is in front of
the philosophers tonight. Emptied whenever a page
opens, because a reload clears the floor and unseats
everybody: the next thing you do may be to seat two men on an
entirely different subject, and last night's paper has no
business in front of them.Symposium/Library/ — every piece you have ever
added, the words and the file it was read out of, under one
name each. bring in earlier material…
lists them: bring one back in, or forget it for good, which
takes both halves. A PDF you drop in that folder
yourself appears there too, waiting to be read
in.Sittings/ beside
the library — transcripts only. The audio stays on the machine
that made it: it runs to two hundred megabytes and it is a
rendering of the words rather than the thing itself. A sitting
from the Mac opens on the phone slightly plainer than one
recorded there, because the web keeps a citation's note and
who moved whom in its markup rather than in its data.
Only on a table you run yourself. The words are kept on
the server, so this exists only when SYMPOSIUM_SAVE_DIR is
set — the same gate the save buttons use, and for the same reason: a
server holding writable state for whoever has the URL is a gift to a
stranger. On the deployed table the panel says so instead.
SYMPOSIUM_LIBRARY_DIR moves the library if you want it
somewhere other than beside your sittings.
The ten steps, in four movements
tools/make-episode.js runs the sequence below for you, in
four phases. With no phase named it reads the folders and says where the
episode stands and what the next step would be — nothing is remembered
in a state file, because a state file is one more thing to fall out of
step with the folders it describes.
--go spends it. Skips anything already made.project.json.Why four phases and not one button. Two of them spend money and two do not, and the two that do spend a great deal — the reel’s own notes put a fifty-four line sitting at about $147 of clip generation at 480p, before a word is voiced. A single button that quietly spent that would be the wrong tool however well it worked. Every phase is safe to re-run: each does what is missing and nothing that is already done.
It does not cut the sitting, and will not. Choosing which
lines make the film, and in what order, is the editorial act — episode 003
is 26 lines of 73 — and dangling.js exists because selection
breaks conversations invisibly. Cut it yourself, then hand the result over.
The same evening, from archive to upload
The section above is what happens; this is what you type. Every tool
shows what it would do and writes nothing until --go, so the
first run of each is free to be wrong. Anything touching a film's
timeline reads ANIMA_PROJECT — set it once per terminal and
the rest of the evening knows which episode it is working on.
One archive, in the shape the film tools read. Which command depends on where the evening was recorded, and on whether it happened in one go.
.json is already that
shape.node tools/from-phone.js ~/Downloads/<file>.symposium --go
— and it checks every speaker against the roster on the way
through, which is the check that matters: a misspelt name is a
philosopher who silently vanishes from the film.node tools/join-sittings.js part1 part2 part3 --go.
The order is the order you type, not the order
they were saved — a session reopened out of sequence has a
misleading timestamp. Toasts from every part are consolidated at
the end.node tools/transcript-to-sitting.js <transcript.txt> --go.
Nothing is uploaded; the words are recovered, the citations are
not, because they were never spoken.A morning's sitting runs longer than a film should. Write the edit list by hand — movements with titles, and the line numbers each keeps, in the order they should be heard — and the tool does selection and order and nothing else. A number used twice, or one past the end, stops the cut.
Read the dangling report it prints. Cutting breaks conversations invisibly: the man replying is kept, the man he answers is dropped, and the file looks perfectly well. Episode 003 reached generated audio with four of those in it — Dennett answering a telling nobody heard, Teresa an ingredient never named. The check runs itself the moment the cut is written, which is the last moment it is free.
The report is deliberately noisy — it reports suspicion, not proof. Reading six lines beats re-cutting a film.
It looks for somewhere each cited work can actually be read and saves only what it could verify. What it cannot verify it says so about, rather than guessing a link that later turns out to point at nothing.
One file per line, evened out so four ElevenLabs voices sit at the same
loudness, and lines over 28.8 seconds cut at their own quietest moment
into parts the animator can take. Run it once without --go
first: it prints the character count, which is the bill.
The numbering counts files, not lines, and the speaker goes
last — 014-teresa.mp3. This is not cosmetic: the
reel matches a clip to a philosopher by what the filename ends with, so
002-teresa-1.mp3 is read as a man called "teresa 1", who is
nobody, and twenty-eight of thirty-eight chunks disappear without a
word of complaint.
A key lives in ~/.elevenlabs-key, or in
ELEVENLABS_API_KEY — and an environment variable that is set
wins over the file, which is worth remembering on the second attempt.
Never paste a key into a chat window.
node tools/copy-cast.js --from "Symposium 002" --to "Symposium 003" --go
— entities, their reference pictures and their eight framings,
ids preserved. A returning cast is not re-generated.node tools/split-sheets.js batch.png Teresa Dennett …
to cut one image into one file per philosopher, then
node tools/reel-stills.js --go for the four shots a
reel needs, then node tools/cast-refs.js --go to put
them into Cast & Locations.A philosopher who never appears on screen needs no sheet. John of the Cross is discussed for a whole episode and is not at the table.
In Anima Studio: Voice & Dub → the sixth
card, whole sitting → reel. Point it at the episode's
Audio-Chunks folder, fill the sheets, and generate. It skips
any line already shot, so a second pass costs only what is missing.
It appends — clips made in a later pass land at the end
of the timeline, after the outro, rather than where they belong.
That reads the timeline against chunks.json and names four
kinds of trouble: a line clipped twice, a line with no clip at all, clips
out of order, and a clip whose length does not match the audio it claims
to be. It infers the reel's lead-in from the clips themselves rather than
assuming it, because assuming it once produced forty-seven faults that
were not there.
If anything is out of order — and after a second pass it will be — quit Anima Studio and sort it. The clips know where they belong; each carries the line it was made from, so this is sorting rather than guessing.
Quit Anima Studio first — it holds the project in memory and writes its own copy back over yours the moment anything changes.
Every second turn per speaker, the first turn always shown, and the host
named once at the top and then left alone — he is the voice the viewer
has been listening to since the first second, and naming him four times
is a caption on the wrong thing. --every 3 thins it further;
--pos upper moves it off the lower third.
The opening and closing sequences are kept between episodes and are
dragged in from Bookends. After a film is finished, cut the
next episode's copies from it:
Export from Anima Studio, then the three commands that turn a render into a published episode. The subtitles are not transcribed — every shot knows which line it was made from, so only the timing is measured.
captions.srt beside the exports.Finished Episodes as
Symposium 003.mp4 with its subtitles beside it.
It copies rather than moves, and refuses to overwrite.
Ask for the YouTube Studio video details and the whole block
comes back in one piece: the title as
Symposium 003 — Teresa of Ávila, Daniel Dennett…: "the question",
and a description opening with the website, then the chapter timestamps,
then the works referred to, then the full bibliography.
Chapters have rules and YouTube does not explain them.
The first must be 0:00, there must be at least three, each
at least ten seconds after the last, and they must ascend. Break any one
and none of them appear — with no error to say why. The description caps
at 5,000 characters.
Upload your own subtitles rather than letting the automatic captions stand: they mishear every name at the table. The video file itself cannot be replaced after upload — a re-cut is a new video.
One thing to know
Philosophers, curated tables and bundled texts are compiled into the app itself. There is no database and nothing downloads in the background. Anyone added since your last install is not there until you build again — which is worth remembering the day a search comes back empty for a man you know exists.
Symposium · a spoken table
They cite only what they wrote. Where the words cannot be checked, they paraphrase and say so.