Lexurgy SC (sound change applier)

Conworlds and conlangs
Post Reply
User avatar
Vilike
Posts: 159
Joined: Thu Jul 12, 2018 2:10 am
Location: Elsàss
Contact:

Lexurgy SC (sound change applier)

Post by Vilike »

I chanced upon it when catching a frame of David Peterson and Jessie Sams' YT show LangTime Studio. This is an endeavour by one Graham Hill, and it has the peculiarity of working at the same time as a categorical SC (like Zompist's SCA2) and a featural one (like JS Bangs' Phonix).
In effect, I find it very powerful. Rules are human-readable and new features come out regularly.
Among other things, you can:
  • Define diacritics
  • Start and stop the sound changes at defined points in time
  • Use filter rules (for example when creating vowel harmony you just ignore any consonant)
  • Simulate affixation by deleting spaces between words at a certain point in time
See the doc for further examples.

Available as a web app and a command line tool.

I didn't see it introduced on the ZBB nor the CBB, so I put it here. I'd like to hear what's your take on it.
Yaa unák thual na !
User avatar
Vilike
Posts: 159
Joined: Thu Jul 12, 2018 2:10 am
Location: Elsàss
Contact:

Re: Lexurgy SC (sound change applier)

Post by Vilike »

Travis B. wrote: Sun Mar 07, 2021 11:50 am Question - how do you write it such that stress influences segments not adjacent to the segment the diacritic is on, e.g. aspirating a fortis explosive separated from the vowel by other members of a consonant cluster?
Lemme try...

Code: Select all

Feature type(*cons, vowel)

Feature Articulation (lenis, fortis, aspirate)
Feature Place (bilabial, alveolar, velar)
Feature Manner (*plosive, lateral, sibilant)

Feature Height (low, mid, high)
Feature Backness (front, central, back)
Feature +stress

Symbol p [fortis bilabial plosive]
Symbol b [lenis bilabial plosive]
Symbol t [fortis alveolar plosive]
Symbol d [lenis alveolar plosive]
Symbol k [fortis velar plosive]
Symbol ɡ [lenis velar plosive]

Symbol l [lateral alveolar]
Symbol s [sibilant alveolar]

Symbol a [low central vowel]
Symbol e [mid front vowel]
Symbol i [high front vowel]
Symbol o [mid back vowel]
Symbol u [high back vowel]

Diacritic ́ (floating) [+stress]
Diacritic ʰ [aspirate]

stress-second-last-syllable [vowel]:
 [] => [+stress] / _ [] $
 [] => [+stress] / $ _ $

aspirate-stressed-fortis:
 [fortis] => [aspirate] / _ []* [+stress]
And when you try it with some random words with and without clusters:

Code: Select all

blagat  => blágat
aklu    => áklu
tusa    => tʰúsa
ksat    => kʰsát
kslipot => kʰslípot
ktala   => kʰtʰála
So as you see, only the [fortis] consonants are affected by the aspiration rule before a vowel with the [+stress] feature. I used an empty matrix [] (it defaults to [cons]) with the * quantifier (zero or more). The rule affects all [fortis] in a cluster.

If you don't want to learn a new SCA at the moment, could I get a look at the Laqar sound changes you would like to see implemented? No promises, but I am happy to play with this new toy.
Yaa unák thual na !
Travis B.
Posts: 6854
Joined: Sun Jul 15, 2018 8:52 pm

Re: Lexurgy SC (sound change applier)

Post by Travis B. »

Vilike wrote: Sun Mar 07, 2021 12:56 pm If you don't want to learn a new SCA at the moment, could I get a look at the Laqar sound changes you would like to see implemented? No promises, but I am happy to play with this new toy.
I haven't really been conlanging recently, as I have been mostly spending my time programming, but if you want to give it a try you could take a look at the changes from https://travisb.neocities.org/conlangin ... index.html, to https://travisb.neocities.org/conlangin ... index.html, to https://travisb.neocities.org/conlangin ... index.html.
Yaaludinuya siima d'at yiseka wohadetafa gaare.
Ennadinut'a gaare d'ate eetatadi siiman.
T'awraa t'awraa t'awraa t'awraa t'awraa t'awraa t'awraa.
bradrn
Posts: 6259
Joined: Fri Oct 19, 2018 1:25 am

Re: Lexurgy SC (sound change applier)

Post by bradrn »

This SCA looks interesting, especially since I’m making my own SCA at the moment. I particularly like how it tries to support both featural and categorical approaches, though it leans slightly too far towards the featural end for my liking. (My own SCA was going to do that as well, though I haven’t figured out exactly how I want to do it yet.) I also like how it implements diacritics, which I think are a nice idea, although I still prefer my SCA’s approach of just having full multigraph support. On the other hand, I can’t say I’m a fan of the syntax — it looks a bit verbose and ugly to me. (Though the user interface is nice — I’d very much like to do the same with my SCA, but that will depend on if GHCJS ever starts working on Windows or not.)

The approach to suprasegmentals is interesting… in some ways it’s similar to how I tried to implement syllabification in my own SCA. I did however find this approach to be very hard to implement, use and reason about, so it will be interesting if Lexurgy can do any better. I note that suprasegmentals aren’t actually specially built-in in any way, so I’d also be interested to know if it supports slightly more complex rules like the following:
  1. Delete the vowel after a stressed syllable
  2. Delete second consonant in a cluster, except when the consonant cluster spans a syllable
  3. Make stops unreleased in the coda
  4. Move stress to first syllable
  5. Automatic syllabification or stress assignment
Travis B. wrote: Sun Mar 07, 2021 6:26 pm
Vilike wrote: Sun Mar 07, 2021 12:56 pm If you don't want to learn a new SCA at the moment, could I get a look at the Laqar sound changes you would like to see implemented? No promises, but I am happy to play with this new toy.
I haven't really been conlanging recently, as I have been mostly spending my time programming, but if you want to give it a try you could take a look at the changes from https://travisb.neocities.org/conlangin ... index.html, to https://travisb.neocities.org/conlangin ... index.html, to https://travisb.neocities.org/conlangin ... index.html.
May I use these as well to test my SCA? As I mentioned already, its syllabification support in particular is something I’d like to refine.
Conlangs: Scratchpad | Texts | antilanguage
Software: See http://bradrn.com/projects.html
Other: Ergativity for Novices

(Why does phpBB not let me add >5 links here?)
Creyeditor
Posts: 288
Joined: Wed Jul 08, 2020 9:15 am

Re: Lexurgy SC (sound change applier)

Post by Creyeditor »

As for full multigraph support, I think Lexurgy has it, IIUC. Or maybe only simple multigraph support, idk.
User avatar
Vilike
Posts: 159
Joined: Thu Jul 12, 2018 2:10 am
Location: Elsàss
Contact:

Re: Lexurgy SC (sound change applier)

Post by Vilike »

Creyeditor wrote: Mon Mar 08, 2021 5:07 am As for full multigraph support, I think Lexurgy has it, IIUC. Or maybe only simple multigraph support, idk.
I defined the combining tilde as the diacritic for the feature [+nasalised], and the output puts it correctly on the vowel if I have a "nasalisation" sound change. But when I use a precomposed character in the input (like <ã>), it is not recognized as [vowel +nasalised] and I have to define the symbol manually.
bradrn wrote: Mon Mar 08, 2021 1:40 am
  1. Delete the vowel after a stressed syllable
  2. Delete second consonant in a cluster, except when the consonant cluster spans a syllable
  3. Make stops unreleased in the coda
  4. Move stress to first syllable
  5. Automatic syllabification or stress assignment
(1) is easy and you can see an example in the "Advancedish" on the web page. Ditto for (4): just write a rule with a filter [vowel] (so as to not need to write optional consonants) that says [] => [+stress] / $ _ and in the same rule delete non-initial stress like [] => [-stress] / $ []+ _ (the condition read "after one or more vowel from the begining of the word.
(5) works for stress in my experience, and should work for syllabification also though I haven't tested it yet (should I make the separator a diacritic or something else?). After syllables are defined, (2) and (3) should be easy.
Yaa unák thual na !
Travis B.
Posts: 6854
Joined: Sun Jul 15, 2018 8:52 pm

Re: Lexurgy SC (sound change applier)

Post by Travis B. »

bradrn wrote: Mon Mar 08, 2021 1:40 am
Travis B. wrote: Sun Mar 07, 2021 6:26 pm I haven't really been conlanging recently, as I have been mostly spending my time programming, but if you want to give it a try you could take a look at the changes from https://travisb.neocities.org/conlangin ... index.html, to https://travisb.neocities.org/conlangin ... index.html, to https://travisb.neocities.org/conlangin ... index.html.
May I use these as well to test my SCA? As I mentioned already, its syllabification support in particular is something I’d like to refine.
Sure! Note that Laqar is not very complex syllabification-wise (it's basically CV/CV:/CVC/CV:C in the protolanguage, and CV/CVC in later forms), but it has relatively complex syllable-weight-conditioned mobile stress stuff going on.
Yaaludinuya siima d'at yiseka wohadetafa gaare.
Ennadinut'a gaare d'ate eetatadi siiman.
T'awraa t'awraa t'awraa t'awraa t'awraa t'awraa t'awraa.
User avatar
Vilike
Posts: 159
Joined: Thu Jul 12, 2018 2:10 am
Location: Elsàss
Contact:

Re: Lexurgy SC (sound change applier)

Post by Vilike »

Here is a simplified extract of my diachronic work on Travis B.'s Laqar to explain how to assign stress based on weight:

Code: Select all

# The * feature value is the default value
Feature type (*cons, vowel)

# Vowel Features
Feature height (open, close)
Feature frontness (front, central, back)
Feature +stress
Feature +long

# Consonant Features
Feature place (bilabial, alveolar, velar)
Feature manner (plosive, nasal, fricative)

#Feature for
Feature +coda

# Diacritics
# "Floating" diacritics are ignored in rules by default
Diacritic ́ (floating) [+stress]
Diacritic ː [+long]
Diacritic . (floating) [+coda]

# Vowel Symbols
Symbol i [vowel front close]
Symbol u [vowel back close]
Symbol a [vowel central open]

# Consonant Symbols
Symbol m [bilabial nasal]
Symbol n [alveolar nasal]
Symbol p [bilabial plosive]
Symbol t [alveolar plosive]
Symbol k [velar plosive]
Symbol s [alveolar fricative]

syllabification:
 [cons] => [+coda] / _ {[cons], $}
 [vowel] => [+coda] / _ {[cons] [vowel], $}

stress-assignment [vowel]:
 [+long -coda] => [+stress] / _ []? []? $
 {[-coda], [+long +coda]} => [+stress] / _ []? []? $ // _ []? [+long -coda]
 [] => [+stress] / _  [-long +coda] [-long +coda] $
 [] => [+stress] / $ _ [-long +coda] $
 [] => [+stress] / $ _ $
 Then: [+stress] => [-stress] / [+stress] []? _
Proto-Laqar stress is on the heaviest of the three last syllables, following this hierarchy: -VːC > -VC, -Vː > -V

I make use of a custom feature I call coda: on vowels it signals they're in unchecked syllable, on consonants it signals they're the syllable coda.

After the syllabification rule, the stress-assignment rule makes use of a filter ([vowel]) to avoid cluttering the lines with optional consonants in the environment.

Then we assign the feature [+stress] to the heaviest possible syllables in a in the last three of a word. The following line assigns stress on the medium-weight syllables, except if // they're followed (directly or with another in between) by a heavy syllable. At the same time the leftmost syllable gets the stress if and only if it's followed by two light syllables, or by one light syllable in dissyllabic words, or if it's the only syllable in the word.
Then, when all possible syllables have been stressed, we remove the stress on all but the leftmost.

After that, the coda feature may be removed... if you're not using it for other rules.
Yaa unák thual na !
Travis B.
Posts: 6854
Joined: Sun Jul 15, 2018 8:52 pm

Re: Lexurgy SC (sound change applier)

Post by Travis B. »

Vilike wrote: Sat Mar 13, 2021 1:25 pm Proto-Laqar stress is on the heaviest of the three last syllables, following this hierarchy: -VːC > -VC, -Vː > -V
Properly it is on the first of the heaviest of the last three syllables.
Yaaludinuya siima d'at yiseka wohadetafa gaare.
Ennadinut'a gaare d'ate eetatadi siiman.
T'awraa t'awraa t'awraa t'awraa t'awraa t'awraa t'awraa.
Post Reply