← Back to Blog

Overview

January 2, 2026 • Atanas Tonchev

Introduction

ichnos is a web-based editor for Byzantine music notation. It is powered by kassia to ensure well-structured PDF outputs, but employs its custom Typos shorthand to simplify the process of creating neume scores, while ensuring a reliable and scalable plain-text-centric workflow.

Entirely graphic approaches to notation are not suitable for large-scale publishing, as they require a lot of manual work and simple changes to format tend to break the whole file. On the other hand, previous plain text solutions have required too extensive and complex syntax, which has limited speed. ichnos aims to strike a balance between robustness and ease of use through its Typos shorthand. ichnos has a relatively steep learning curve, but pays by allowing speed of note entry, flexibiltiy of fonts, and reliability.

Disclaimer

Kassia, just as ichnos, is an open source project still in development and is thus not fully finished, so expect errors. Do not hesitate to use the Bug Report form at the bottom. If your project cannot afford any errors and you need on-call technical support, assistance, and feature requests, consider signing up for the supported plan below.

Projects

Your homepage contains an overview of all your projects and allows you to create new ones.

Editor

The editor is the main interface for creating and editing scores. On the top, you will find its (editable) name on the left, and the Save, Render, and Export buttons on the right. Below, from left to right, are the Header Editor & Neume Palette Sections, the plain text input, and the output preview.

Input

The text input field is where you will be mostly working, after you learn the names of most characters. The text field should follow the Typos shorthand conventions (see the Typos section below).

Preview

The Preview section allows you to see how your score is getting along, and to catch any errors early. If you are new to Typos, it is a good idea to render often to ensure you have not made any errors in the last few notes.

Header Selector

The Header Selector allows you to select and change the format for your score. It is a gropdown field with presets, but you can also modify your header manually by editing the raw XML input's parameters for each style. This includes header, paragraph, dropcap, and lyric fonts, but also notation fonts. Currently, the supported fonts for text are EB Garamond, Alegreya, Gentium Plus, and Fedorovsk Unicode. For notation, kassia currently supports KA New Stathis and KA Almouzios.

Neume Palette

The neume palette window lists all neume combinations and provides a graphical interface for entering more complex neumes. It contains all characters that can be written with kassia and some that cannot (e.g. the archaia such as oxeia). In a future iteration, I hope to expand kassia to support old characters as well. The tooltip of each image will show its particular combination and clicking it will enter the text into the Typos editor.

Typos

The Typos shorthand is ichnos' main tool. It consists of paragraphs, separated by '---'. Each paragraph has parameters shown in brackets at the top and following a (key:value) convention. A paragraph can either be a text or notation paragraph.

Text Paragraph

A text paragraph has a (style:) parameter, which is simply follower by the text. For example, a header 1 paragraph will look like this:

---
(style:h1)
This is my Header 1 Title
---

The styles' names and properties are defined in the header section.

Note: The (style:) parameter is compulsory for text paragraphs. It can also be shorthanded as (s:).

Notation Paragraph

Parameters

A notation paragraph can begin with optional parameters for (mode:), (base:), (dropcap:), and (lang:). The mode parameter is an integer from 1 to 8 and renders the mode's symbol above the notes. The base parameter is plain text, and is used for the note from which the notes begin (e.g. Pa, Vou, Ga etc.). The lang parameter informs the language in which the word Mode will be written before the mode martyria. Default is English (EN), but ichnos also supports Greek (EL) and Church Slavonic (CS). The dropcap parameter is a boolean that, when set to true, will render the first lyric with a dropcap.

For example, a notation paragraph with mode 1, base Pa, lang EL, and dropcap will look like this:

---
(mode:1)
(base:Pa)
(dropcap:true)
(lang:EL)
---

and render as: mode example

Note that the mode martyria uses the h2 style for its text and the KA New Stathis font for the mode martyria.

Neumes

Neumes are contained within parentheses and consist of two parts: lyric and neume combination, sepaarated by a colon, i.e. lyric:neume1-neume2. Neumes can be standalone (e.g. ison, olig etc.) or combined (e.g. peta-isonU, ison-gorgU). Each neume has a shorthand, usually of around 4 characters. However, it can also include a placement character ar the end. For example, an oligon with kentima above will be written as olig-kentU. We can also place the kentima in the upper right corner by writing olig-kentUR. Finally, we can place a character above the kentima using the second upper level, U2. For example, [o:olig-isonUL-ken2UR-gorgU2R] will render as: olig example

The same principle applies for placing characters below the main level, but using D instead of U, so gorgdotD2R will place a dotted gorgon on the right of the second lower level.

Lyrics are optional (for example, martyrias don't have text below them). In such cases, the lyric part of the note will be left blank. For example, a bareia is written as [:bare]. Knowing what we already know, a martyria for pa of the first mode will be written as [: malfa-mpaU] and render as: martyria example

where the lyric part is empty, while the notes are the alpha martyria on the main level and the pa martyria on the first upper level.

Syntax Highlighting

The ichnos editor features syntax highlighting for the Typos shorthand. It leaves plain text black, paragraph separators are red, text paragraph style parameters are purple, notation parameters are green, and notes are orange. This allows a quick overview of the work done so far.

Questions

If you have any questions or you find any bugs, do not hesitate to contact me at atanas.iv.tonchev@gmail.com.