Sound change rules (also known as phonological rules) can be applied to all words using the Sound Change field. This notation can also in affix rules, Custom Spelling, and Illegal combinations field.
A basic rule like
Input | Rule | Output |
---|---|---|
alabama
|
a > o
|
You can also specify if the change should only happen in a particular environment:
Input | Rule | Output |
---|---|---|
alabama
|
a > o / _b |
Be aware that letters with diaciritcs are treated as different phonemes to letters without. Therefore,
Input | Rule | Output |
---|---|---|
utah tʰexas
|
t > p
|
Word boundaries ![]()
Input | Rule | Output |
---|---|---|
alabama
|
a > o / #_
|
You must use
Input | Rule | Output |
---|---|---|
alaska iowa ohio
|
a > u / _##i
|
Similarly,
Classes and sets ![]()
Input | Rule | Output |
---|---|---|
alabama
|
V > o / C_
|
Additionally,
Capture a custom set of phonemes inside curly brackets:
Input | Rule | Output |
---|---|---|
alabama
|
{b,m} > p
|
|
alabama
|
a > o / _{b,m}
|
To capture other classes of phonemes with common features, such as stops, nasals, etc., you should use distinctive feature notation.
Note: Curly brackets cannot be used in the replacement side of the
Optional patterns ![]()
Round brackets makes a pattern optional:
Input | Rule | Output |
---|---|---|
alaksa kansas
|
a > o / _(C)#
|
Adding a star
Input | Rule | Output |
---|---|---|
alaksa maryland
|
a > o / _C*#
|
One or more of a pattern can be achieved by making the star optional
Deletion ![]()
To delete something, simply change to literally nothing:
Input | Rule | Output |
---|---|---|
alabama
|
C >
|
You can also write a null symbol,
Insertion (infixing) ![]()
Similar to deletion, changing from nothing (or null symbol
Input | Rule | Output |
---|---|---|
mtana vermt
|
> on / m_
|
Note that this effectively how you do infxes in Vulgarlang. In linguistic writing, the convention is to write infixes with hyphens either side of it, e.g.
Syllables ![]()
Input | Rule | Output |
---|---|---|
hawaii
|
i > e / _$
|
Be wary of syllable boundaries because Vulgarlang may split the syllables where you don't agree they should be split! Since there's generally no agreement where syllables should be split. Is "syllable" si-la-bəl or sil-a-bəl? You can test exactly how the app splits syllables on this page by changing the syllable boundary to something like a full stop
Affix boundaries ![]()
Input | Rule | Output |
---|---|---|
californian
|
a > e / _+
|
As noted in the Insertion (infixing) section, infixes in Vulgarlang have to be added with sound changes. By default, an insertion sound change does not add these affix boundaries either side of the insertion. If you want to make other sound changes that are sensitive to this infix boundary, you must add the
Exceptions to rules ![]()
The
Input | Rule | Output |
---|---|---|
alabama
|
a > o / !_m
|
Exceptions can also be added to the end of a normal rule, eg:
Distinctive features ![]()
Square brackets are used to specify the presence (+) or absence (-) of distinctive features of a phoneme. The following rule nasalizes a vowel before another nasal:
Input | Rule | Output |
---|---|---|
kansas
|
V > [+nasal] / _[+nasal]
|
Input | Rule | Output |
---|---|---|
kãnsas
|
[C +nasal] > b
|
Various features can be used to narrow down the match. The following rule deletes voiceless stops, which in this case is only
Input | Rule | Output |
---|---|---|
nebraska
|
[+stop -voice] > [+alveolar]
|
Here is a complete list:
Feature | Meaning |
---|---|
[+affricate] | affricate consonants |
[+alveolar] | alveolar consonants |
[+approx] | approximants |
[+aspirated] | aspirated consonants |
[+back] | back vowels |
[+click] | click consonants |
C or [+consonant] | consonants |
[+cons] | consonantals (different to consonants - see Wikipedia) |
[+cont] | continuants |
[+dorsal] | dorsals |
[+fricative] | fricative consonants |
[+front] | front vowels |
[+glottal] | glottal consonants |
[+high] | high vowels |
[+implosive] | implosive consonants |
[+labial] | labial consonants and round vowels |
[+labialized] | labialized consonants |
[+laryngeal] | laryngeal consonants |
[+lat] | lateral consonants |
[+liquid] | liquid consonants |
[+long] | long vowels or long (geminate) consonants |
[+low] | low vowels |
[+nasal] | nasal consonants or nasal vowels |
[C +nasal] | nasal consonants |
[V +nasal] | nasal vowels |
[+palatal] | palatal consonants |
[+palatalized] | palatalized consonants |
[+pharyngealized] | pharyngealized phonemes |
[+retroflex] | retroflex consonants |
[+round] | round vowels |
[+son] | sonorants |
[+stop] | stop consonants (a.k.a. plosives) |
[V +stress] | stressed vowels |
[+tap] | tap consonants |
[+trill] | trill consonants |
[+uvular] | uvular consonants |
[±+velar] | velar consonants |
[±+velarized] | velarized consonants |
[+voice] | voiced consonant or vowel (unless specifically a voiceless vowel) |
[C +voice] | voiced consonant |
[V +voice] | voiced vowels |
V or [+vowel] | vowels |
Assimilation ![]()
Assimilation is the process where a phoneme takes on a distinctive feature of another phoneme. An example of this in English can be seen in the prefix
It would be possible to capture this process with two separate rules:
Input | Rule | Output |
---|---|---|
helsinki istanbul
|
n > [@place] / _[@place]
|
This is currently an experimental feature, and works for
Stress ![]()
You can use the feature
To change the stress location of a word, you must target the location of the vowel, eg
Additionally,
Input | Rule | Output |
---|---|---|
ˈkansas neˈbraska
|
a > á / ˈC*_
|
Same phoneme in a set ![]()
There may be scenarios where you want to match two of the same phonemes from a class. To do this, use the a matching subscript number (
Input | Rule | Output |
---|---|---|
massachusetts
|
V > o / _C₁C₁
|
Different numbers can signify that they are different phonemes. The following pattern matches two consonants in a row and swaps them:
Input | Rule | Output |
---|---|---|
nebraska
|
C₁C₂ > C₂C₁
|
For ease of typing, regular numbers also work:
Input | Rule | Output |
---|---|---|
ohio
|
VV > VxV
|
Subscripts can also be used after distinctive features:
Input | Rule | Output |
---|---|---|
ahut
|
{VC}₁{VC}₂ > {VC}₂{VC}₁
|
Reduplication ![]()
Reduplication is a process in some languages where the whole word, or part of the word, is repeated exactly (or with a slight change). Although it often plays more of a grammatical function (such as forming the plural of a word) rather than being a global sound change.
A pattern can be reduplicated by changing the match to a double underscore
Input | Rule | Output |
---|---|---|
nevada
|
CV > __ / #_
|
Full word reduplication can be achieved by matching the whole word
Input | Rule | Output |
---|---|---|
newyork
|
X* > __
|
Changing to a single underscore replaces the match with itself, which is not very useful unless it's combined with something else. For example in Pangasinan, if the noun starts with a CCV pattern, it reduplicates the first consonant only and first vowel. One way to achieve this would be to use subscript numbers on the CCV pattern like
Input | Rule | Output |
---|---|---|
florida
|
C₁C₂V₁ > C₁V₁_ / #_
|
First and last match ![]()
In same cases, you may want to only change the first or last match in the word. Use
Input | Rule | Output |
---|---|---|
mississippi
|
s >> x
|
Input | Rule | Output |
---|---|---|
mississippi
|
s << x
|
Coniditional statements ![]()
There may be scenarios where you want to create sound changes based on whether a pattern exist in a word, and apply a different change if the pattern doesn't exist. Use the key words
Input | Rule | Output |
---|---|---|
alabama
|
IF #a THEN a > o ELSE a > e
|
The ELSE condition is optional and can be omitted. Multiple IF statements are permitted:
Input | Rule | Output |
---|---|---|
alabama
|
IF #s THEN #s > z IF a# THEN a > e
|
Non-Latin alphabets ![]()
Custom spelling supports all Unicode alphabets and scripts, such as Japanese, Chinese, Cyrillic and even Unicode Emojis.
Order of rules ![]()
The order of rules matter. Vulgar will find-and-replace the first rule to a word, then apply the next rule over the top of what it just did. This can be a problem if a IPA symbol appears in multiple patterns. For instance, the following ordering is problematic:
The intent here is for the diphthong
Another solution is to use the exception
Comments ![]()
Double forward slahes
// a turns to o before b a > o / _b
Comments can be used in all input boxes in Vulgarlang, as well as inside grammar tables in the Grammar Editor.