Skip to content

t-bullock/kassia

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kassia

build

Kassia is a scoring program for creating music written in Byzantine notation. It takes an XML file, parses the neumes and lyrics, and generates a formatted PDF using ReportLab.

Requirements

Python 3.7+

Setup

  1. Make sure Python 3.7 or higher is installed
  2. Install poetry
  3. Install the required packages by running poetry install
  4. Start a poetry shell by running poetry shell
  5. Re-create the sample score in /examples to make sure everything works properly by running python kassia.py examples/sample.xml examples/sample.pdf

Running Kassia

python kassia.py [input_xml_file] [output_pdf_file]

The examples folder has sample scores to experiment with. Input files must be XML files, using the syntax of the sample scores. Output files will be in PDF format.

Editing Scores

Scores are saved as XML files (called BNML). Our wiki page explains the structure of a score.

Fonts

Kassia can utilize true type fonts files to draw neumes. To add new neume fonts, create a folder with the font name, place TTF files in the folder, and create classes.yaml and glyphnames.yaml files. The wiki has more information about how the YAML files should be structured.

Some sample fonts are included for headings and lyrics (Alegreya, EB Garamond, and Gentium Plus). Kassia will scan the /fonts folder and use any TTF files found there.

Contributing

We need your help with documentation, testing, and submitting fixes and features!

Before submitting a pull request, make sure your changes pass all tests.

  1. Install imagemagick and poppler
  2. Run tests:
  • pytest
  • flake8
  • isort . --recursive --diff

About

Kassia - a Byzantine Chant scorer

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%