Lexurgy Sound Changer Tutorial — Using Syllables

Lexurgy understands that words can be broken down into syllables. It offers two approaches for working with syllables: manual syllables and automatic syllables

Manual Syllables

The IPA uses the period (.) to mark syllable breaks. You can put . characters in your input words to show where the syllable breaks are. But by default, Lexurgy treats . as a sound like any other:

Ready
Input WordOutput Word

The words with the . characters in them aren't affected by the voicing rule, since the "sound" before the stop is ., not a vowel.

But as soon as you provide a syllables rule, this changes:

Ready
Input WordOutput Word

This sets syllables to explicit (i.e. manual) mode. Now the . characters are treated as syllable breaks, not sounds, which means they no longer disrupt adjacency.

Once you're done with syllables, you can clear them:

Ready
Input WordOutput Word

Inserting and Deleting Syllable Breaks

When working with syllables manually, sound changes can easily mess up the syllables. Take this rule that deletes a final vowel:

Ready
Input WordOutput Word

Realistically, this would produce ki.kik and bou.bab, but Lexurgy leaves the syllable breaks where they were, resulting in ki.ki.k and bou.ba.b.

To fix this, you can remove the extra syllable break the same way you remove sounds:

Ready
Input WordOutput Word

Similarly, you can insert syllable breaks with * => . rules:

Ready
Input WordOutput Word

Matching Syllable Breaks

You can use the . character in rules to match syllable breaks. For example, it's common for a rule to affect only coda consonants. This rule nasalizes vowels before a coda nasal:

Ready
Input WordOutput Word

You can also use !. to match a syllable interior, i.e. to only apply the rule if there is no syllable break at the specified location:

Ready
Input WordOutput Word

Matching Entire Syllables

If you want to match an entire syllable, use <syl> in the rule. This rule deletes the second-last syllable:

Ready
Input WordOutput Word

Syllable-Level Features

You can declare features that operate on entire syllables, rather than individual sounds. This is most often used to represent stress:

Ready
Input WordOutput Word

As this example shows, if you define a diacritic to mark a syllable-level feature, that diacritic will attach to the end of the entire syllable. Of course, normally the IPA stress symbol is written at the beginning of the syllable, not the end; you can enforce this with the (before) modifier:

Ready
Input WordOutput Word

You can assign a syllable-level feature to a syllable in a rule by changing any sound in the syllable to a matrix containing the feature:

Ready
Input WordOutput Word

Or you can assign it to the entire syllable:

Ready
Input WordOutput Word

Automatic Syllables

Instead of manually inserting and managing syllable breaks, you can have Lexurgy automatically divide words into syllables by describing the shapes of valid syllables. Here's a syllable rule that allows only syllables with a consonant followed by a vowel:

Ready
Input WordOutput Word

The :: symbol separates the syllable onset (usually its initial consonants) from the syllable nucleus (usually its vowel).

Some languages also allow a syllable coda—consonants after the vowel. You can specify a coda after another :: symbol:

Ready
Input WordOutput Word

Both of these examples make the consonants mandatory:

Ready
Input WordOutput Word

But in most languages the onset and coda are optional. You can mark them optional with ?, just like in ordinary rules:

Ready
Input WordOutput Word

Notice that apat becomes a.pat, not ap.at. In general, Lexurgy tries to put as many sounds as possible into the onset of a syllable, rather than the coda of the previous syllable.

In cases where you don't want maximal onsets, add a reluctant onset before the normal onset, separated from it by ?::

Ready
Input WordOutput Word

Most of the syntax available in ordinary rules can also be used in syllable rules, allowing for complex restrictions on syllable shapes:

Ready
Input WordOutput Word

Changing Syllable Structure

Syllable rules are automatically re-applied after every named rule:

Ready
Input WordOutput Word

Deleting the second p from pam.pat would result in pam.at, but the syllable rule adjusts this to pa.mat. You can see the syllable rule getting re-applied if you trace changes.

But sometimes sound changes alter the syllable structure. Suppose you add a vowel-deletion change to the language with only open syllables:

Ready
Input WordOutput Word

Now these words have consonant clusters, which the syllable rule disallows. To solve this, add a new syllable rule after the syncope rule:

Ready
Input WordOutput Word

You can also switch back to manual syllables at any time using explicit:

Ready
Input WordOutput Word

Or you can remove syllable breaks entirely using clear:

Ready
Input WordOutput Word

Automatically Assigning Syllable-Level Features

You can also assign syllable-level features directly in the syllabification rules. The following uses the syllabifier to distinguish "heavy" syllables (with a long vowel or coda) from "light" syllables (all others):

Ready
Input WordOutput Word

Capturing Syllable Information

By default, captures copy only sounds, not syllable information. Take this rule:

Ready
Input WordOutput Word

The stress stays on the first syllable instead of moving with the captured a to the second syllable.

If you want to copy syllable information, you can put a . between the $ and the capture number on the output side:

Ready
Input WordOutput Word

This can be useful if you want to move around whole chunks of words:

Ready
Input WordOutput Word

Using ordinary captures would yield the bizarre kiki.ˈka.n instead, as the rule tried to graft the original syllable structure onto the new sounds.