Oh my blog! Whee!

Wrong by design

  • Jan 24

    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.

  • First scripts

    Filed under Esolanean
    Jan 23

    Ok, so far I’ve been picking out consonants and vowels. I’m pretty sure I’ll need a few more, but I figure I might as well try and generate a few words.

    Here’s a first very simple script:

    tokens vowel a e i o
    tokens consonant b k l m n p r s t
    tokens noun-end r n
    
    rule noun {
     token consonant
     token vowel
     token noun-end
    }
    
    startingrule noun 50
    

    Which sadly generates very simple, one-syllable words. One moment!

    tokens vowel a e i o
    tokens consonant b k l m n p r s t
    tokens noun-end r n
    
    rule noun {
     loop 1 5[2] 4[3] 2[4] {
     rule syllable
     }
     token noun-end
    }
    
    rule syllable {
     token consonant
     token vowel
    }
    
    startingrule noun 50
    

    There, that’s better – although the syllable structure is a bit simple – CV isn’t much for variation. Here’s a new syllable rule for (C)V(C)

    rule syllable {
     loop 0 0 3[1] {
      token consonant
     }
     token vowel
     loop 0 0 6[1] {
      token consonant
     }
    }
    

    That gives me words like

    • poenin
    • repokor
    • loriten
    • lobkosrokor
    • lopkoer
    • botipkiir
    • obpaen
    • opotan
    • resereor
    • ikolkoen
    • ilsian
    • osin
    • bitor
    • setepar

    Some of them aren’t exactly great, (ikolkoen? and botipkiir??) but it’s a start. Maybe I can clean up some of it with further processing.

  • Esolanean

    Filed under WordBuilder
    Jan 16

    I just remembered a few more words that I’ve used.

    The benapak order is a nation-wide organisation of warriors and adventurers, training with a wide range of traditional weapons. I guess you could think of them as shaolin monks mixed with an adventurers’ guild.

    The tomal order is a group of healers, doctors and wise-folk, offering health services to those in need.

    I’ve yet to come up with a good explanation of the words, but the way I see it, they could be either irregular nouns (ending on anything but -n and -r), adjectives, or verbs in a continuing mode.

    Actually, ‘benapak’ could be ‘wandering’, so a continuing verb it is. Suffix could be -ak or just -k, not determined yet.

    ‘tomal’ could be ‘kind’, so an adjective.

    New letters are [b], [k], [m], [p].

    Here’s a table of the consonants and their placements:

    labial alveolar velar
    stop p, b t k
    frictative s
    approximant l, r
    nasal m n

    I had actually thought of making Esolanean a language without any frictatives, making it more of an either-or language; as in, either your mouth is open, or it’s closed. None of that in-between stuff. I do need [s], though. Hm.

  • Jan 13

    Here you go – Syntax Highlighting!

    Download here

  • Jan 4

    Spurred on by the few friendly folks who know about its existence, here’s WordBuilder v1.4.

    Features:

    • Export to CSV file
    • Edit word
    • Translator (a rather fault-prone beta)
    • Updated Text on path addin for InkScape
    • Added menu item for selecting all words – shortcut shift+ctrl+a no matter where you have focus.
  • Esolanean

    Filed under WordBuilder
    Oct 22

    Esolan is a large country, or empire, rather, covering most of the continent east of Dunderhill. Esolanean is the Dunderer name for the language spoken there. I know very few words of Esolanean, but I thought it could make an interesting test language for WordBuilder.

    I’m no expert conlanger, so I’m probably going about this all backwards, but here goes.

    One word that I know is the word for magic: /sint/. From that word come words for magic-user, /sintor/, and for a master of magic, /sintaro/. I made those up back in the day without giving much thought to why they’d be named so, but I’ve made up an explanation:

    The stem of the word is /sin/, actually meaning “river”. Magic in the world of Dunderhill and Esolan is of the channeling kind, so it would make sense for magic users to describe it as a river. The /-t/ suffix works to mark the determinant form, so /sint/ means “the river”.

    The /-or/ suffix changes a noun into “a slave of <noun>” – so a magic user to the Esolaneans is basically “a slave of the river”.

    The /-aro/ suffix works like /-or/, but turns the noun into “a master of <noun>” – that is to say, “the owner of a <noun> slave.”

    Let’s say Esolaneans are pretty keen on this slave/master relationship. I’m thinking I can use the slave suffix for genitive forms in general, but also to indicate reliance on, or addiction to, something, and the master suffix could be used for people who master a trade or skill. A regular mercenary could be a slave of the sword, while a highly regarded warrior hero might be a master of swords.

    As for WordBuilder, this already gives me a bunch of tokens (phonemes, I think they’re called) that Esolanean must allow: the vowels [a] [e] [i] [o] and the consonants [l] [n] [r] [s] and [t].

  • Oct 19

    Bleh. I’m tired, and I want to go to bed. It’s only barely 8 pm, though.

    I’ve been planning to start a conlang and try to fill it in using WordBuilder, and then blog about my progress here. Not entirely sure where that’ll take me.

  • Upcoming

    Filed under WordBuilder
    Oct 5

    Hm.. I had some fun with InkScape, generating names with the extension, but I’ve found that it’s a bit of a bother to have to make text-on-path objects for it to generate into. So for the next version, I’ve added functionality to put text on selected paths that have no text attached, so if there’s text on a path, that text will be filled, if there’s no text on it, a new text-on-path will be created.

    Also, I’m working on a word-editor for the dictionary, where you can manually add tokens, apply rules, branches and marks.

  • Oct 1

    Download here: http://whee.dk/wordbuilder/WordBuilder.msi

    New features:

    • Substring command: substring <start> <end>

    Where start is the first letter you want to keep, and end is the last letter you want to keep. Negative numbers count from the end of the token.

    So, with the token ‘abcdefg’:

    substring 2 -1 // bcdefg
    substring 1 2 // ab
    substring 1 -2 // abcdef
    substring -3 -1 // efg
    • About box
    • Inkscape extension to populate selected text objects with generated words – in the install dir, there’s a folder called InkScapeExtension. Copy the content of that folder to your InkScape/share/extensions, and look under Effects/Text.
  • Sep 28

    Well, I’ve been working on making an InkScape effect extension to allow me to generate place names directly into the map using WordBuilder rules.

    I can report some success, but also some woes. As of yesternight, I can select a textbox and run the effect, and a name appears, albeit not quite in the right place. I think I’m just putting the text in the wrong tag, so that should be easily fixable.

    The interesting thing is that I can’t get InkScape to accept the output from my .net console application. I’m writing to stdout, and running it from the command prompt allows me to stream the output to a file, so I’m pretty sure it’s going the right way. I ended up using a python script that executes the .net application, reads the output (from what it considers stdout), and then outputs that on its own stdout. Why that works better, I’ve no idea.

    Other than that, I’ve implemented the loop command:

    loop <list of numeric tokens> {
      <commands>
    }

    Which will pick a number from the list and repeat the commands that number of times. Since it takes a token list, 4[5] 6 will make 5 loops four times as likely as 6.