[ortho] — an invented-language generator external

Lee's icon

[ortho] — an invented-language generator external

I've released ortho, a Max external that generates invented language: pseudo-words that hold the shape and internal consistency of a language without belonging to any existing one.

Every seed names a different language — more than four billion of them. Go looking and you'll find tongues that are clipped and consonantal, others long and vowel-heavy, others that sound like they have grammar. Pick the one you want and the seed keeps it: same number, same language, on any machine, forever.

bang gives you a paragraph. tokens N gives you exactly N words with no punctuation. section mints a new cast of names and topics without changing the language itself.

Seven dials control recurrence and punctuation — how often names come back, whether phrases return whole, where commas fall. Words come out the left outlet as symbols, one per atom, and the right outlet reports why each word appeared: freshly generated, a function word, a topic, a name, or part of a recurring phrase. So you can colour by origin, or spawn something when a name shows up.

macOS, signed universal binary. Drop the folder in ~/Documents/Max 9/Packages/ and restart Max.

The language engine is a small C library shared with a JavaScript reference implementation and an openFrameworks addon, so a seed produces the same words in all three. Output is diffed against published golden vectors rather than assumed — the conformance suite is in the repo.

Happy to hear what people do with it.

Roman Thilenius's icon

lovely. finally something that makes sense after all those cycles and phasors.

TFL's icon

OMG that's the Lorem Ipsum I never knew I wanted. Thanks for that.

After a quick try, I struggle to get the difference between different seeds. They all look the same to me, and they all like 2-letters words, to the point I'm wondering if the seed is really working.

Also, I don't understand the relationship between the preset attribute and the sources output. Sometimes changing the preset affects the numbers shown in the source list, sometimes not at all.

Lee's icon

Both good catches, and the second one is a bug.

On the seeds — try tokens 20 rather than bang. The paragraph path is producing much shorter words than the token path, which is why seeds look alike; at two letters there isn't room for a language to show its character. I'm looking into whether that's intended. tokens should show you real variation between seeds immediately.

On preset — a dial you set by hand is marked as yours, and preset won't overwrite it, so call order never matters. But there's a bug: reopening a saved patch marks all the dials, so preset stops doing anything. Send cleardials and it'll work again. Fixing it properly in the next release.

Thanks for both — that's exactly the kind of thing I couldn't have found alone.

Lee's icon

Update: v1.0.2 is up, the preset bug is fixed. No need for cleardials anymore.

And on the word lengths — checked the reference implementation, and it's intended, just badly documented. @max_lettersis a ceiling on a random draw, and the paragraph path draws twice, so bang gives much shorter words than tokens at the same setting. Set it to 20 or so if you want longer words in paragraphs. That's in the docs now.overwrite it, so call order never matters. But reopening a saved patch marks all the dials, which makes preset look dead. cleardials restores it. That one is a real bug and it's fixed in the next release.

Thanks for both.