I ended up last night with a script that generated some decent syllables. Alas, when combined, they didn’t always work very well.
So I changed my script a bit:
tokens vowel a e i o tokens consonant b k l m n p r s t tokens noun-ender r n rule base { loop 0 1 1 5[2] 2[3] { rule syllable } } rule noun { rule base rule noun-ending } rule noun-ending { loop 0 0 1 1 1 { token consonant } token vowel token noun-ender } rule syllable { loop 0 0 1 1 1 { token consonant } token vowel loop 0 0 6[1] { token consonant } } rule syllable { translate { a # => a $consonant e # => e $consonant i # => i $consonant o # => o $consonant } loop 0 0 1 { repeat } token vowel loop 0 0 6[1] { token consonant } } startingrule noun 50
Now, I’ve added a new variation of the syllable rule so as to make double consonants more likely. I found that ever so often, the rule would be applied to a syllable ending with a vowel, so I added the translate command to make sure there was a consonant at the end before repeating.
That’s a lot better, but there are still some consonant pairs that I dislike. So I added this rule to the script:
rule cleaning { translate { [b p] k => m k t k => s k [b p] n => n n b p => p p p b => b b l r => l l } }
Which solves at least most of my problems. Words now look like this:
- arpakpir
- elobrar
- akinan
- oppin
- abor
- itokimkon
- kanikbamen
- oksan
- ikabmemir
- eppobin
- an
- etetelen
- inter
- orser
- itannesmar
- nabsipporon
- imsinror
- ekeon
- obbason
- mibosepir
- ibasbir
Not bad – and with a pretty uniform feeling, I think.