Skip to content

Hufnagel implementation proposal #1360

@JoyfulGen

Description

@JoyfulGen

@annamorphism and I have had a Hufnagel chat, both about MEI representation and visual rendering, and we’d like to propose the following:

The basic neumes (what Neon calls the Primitive Elements) will be:

  • C clef
  • F clef
  • Custos
  • Punctum
  • Virga
  • Upside-down virga (UDV) (note: much like the reversed virga in square notation, the upside-down virga only exists as a component of a larger neume)
  • Liquescent (or plica) up
  • Liquescent (or plica) down
  • Distropha
  • (@annamorphism did I forget anything?)

I think all of those individual elements can be encoded like they are in square notation. In particular, the standard virga can be encoded as

<neume>
    <nc tilt="s"/>
</neume>

And the upside-down virga (UDV) can be

<neume>
    <nc tilt="n"/>
</neume>

Neumes with more than one neume component will be built/encoded like so:

Podatus = punctum + virga

Clivis A = virga + UDV

Clivis B = punctum + UDV

Torculus = punctum + virga + UDV

Climacus = virga + punctum + punctum

Scandicus = punctum + punctum + virga

Podatus subpunctis = punctum + virga + punctum + punctum

Torculus resupinus = punctum + virga + UDV + virga

Image

And any neume with a liquescent attached to it, like the one above, is just that neume with a liquescent at the end.

We suggest that the virga and UDV have only the one standard size, which is about a third (from a line to a line, or a space to a space—this is what all the virgas look like in the Hufnagel spreadsheet). That means that the various podati will look like this:

Image

So when the interval gets bigger than a third, the virga isn’t quite long enough to reach the punctum, but we’re ok with that because
a) There aren’t that many intervals bigger than a third;
b) Having just one size of virga and UDV will make both the Neon input menu and the MEI a lot simpler;
c) It’s consistent with the square notation system, wherein sometimes the SVG doesn’t quite match the folio image, but the system is consistent enough that the user can still absolutely understand what’s going on.

The only neume that will have a toggle to change its appearance in Neon will be the clivis A. The toggle will allow the user to transform the clivis A from this:

Image

To this:

Image

In terms of MEI, we suggest stealing the con=”e” attribute from Hispanic notation. So toggling a clivis A will add that con=”e” to the second neume component. Ideally, we would like a different size for each interval of toggled clivis A, up to a fifth (just like there are different sizes of ligatures in square notation). So something like this:

Image

We would set the rules for toggling that any two descending, consecutive, and grouped neume components can be toggled into a clivis A. Any combination of punctum, virga, or UDV can be toggled into clivis A if they satisfy those conditions. If a clivis A is already linked and the user wants to change its pitches, they have to toggle it to un-link it. When un-linked, a clivis A always becomes a UDV + virga. Once the pitches are fixed, the user can toggle them again to make the clivis A linked again.

If a neume of three pitches or more contains a clivis A, then only the two pitches that make the clivis A must be toggled to connect them. Our thinking is that by only toggling the clivis A within the larger neume, we avoid needing more shapes and sizes of shapes. So various intervals of torculi would transform like this:

Image

I think that's all we discussed! Anna, please add anything I forgot. @zih-syuan, please let us know if you have any questions or comments!

(To be clear, my drawing masterpieces are only meant for visual aid, not as a template for making the SVG version of these neumes! I'll just put the spreadsheet link here as well for convenience: https://docs.google.com/spreadsheets/d/11Hfw4gD4au10WkWjswVRbE1t02NCWA3mBemxQ8zm7s0/edit?gid=0#gid=0)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions