Hi John
After some discussion here Jim has decided how to support this. It's going to be a very common thing to want to do, to add words to the lexicon for new functions. The only issue is really that for consistency there needs still be the 'one true lexicon' that rules them all. So here is how it will work:
*Each Agent can have an optional 'lexicon.txt' file in it's its directory.
*This file will get added to the Agent manifest by the build system and allow EigenD to be aware of it at startup and hence for the interpreter to find the new words
*It will be overridden by the main, compiled in, system lexicon, so if a word already has a definition, or if we decide to include new word definitions at some point the local definition will get (silently) ignored from that point on. This should provide a nice mechanism for the organic evolution of the Belcanto lexicon without too much chaos. If we really hate or can't use a word for some reason (company brands, trademarks etc might be a good example) this also gives us the option of overriding or suppressing it - hopefully this will never need to happen, its a 'nuclear option'.
*The file will have the same syntax as the current file and errors in it will be silently ignored
*There will be a Belcanto region that is specifically for new, user contributed vocab. Avoiding conflicts in that area will be the developers problem, and conflicts will be treated by EigenD on a random basis (as in, only one will end up defined but I have no idea what one, it'll be pot luck). This is going to have to be an organic process and a degree of good manners and some mutual communication will probably make it all go smoother. A post in the developers forum along the lines of 'I'm defining these new words in my Agent, and using these note sequences, any objections?' might be a good practice. There's no point in a central registry of any sort as that's what the system lexicon already is, if things work out well that's where they'll migrate to. If you have strong feelings about a new word and you would like to stray out of the defined user area ('I really want it to be the opening phrase of Beethoven's 5th'), feel free to email me direct about it.
As a general principle, please try to use the existing lexicon to good effect and avoid coining new words unnecessarily, we'd really like to keep Belcanto reasonably lean but don't stretch an exisitng word to breaking point in pursuit of this. If you need a new word, you need a new word and hopefully this will make that a tractable problem.
Jim is hoping to get this change in sometime in the next couple of weeks, possibly for the next release if we can.
John