Skip to content
Linus Mußmächer edited this page Apr 28, 2024 · 10 revisions

Welcome to the Chorsatz wiki!

🎼 Introduction

In classical music, SATB-sheets are used to accompany the main singing voice of a musical piece by a choir or similar arrangement. These sheets usually only depend on the chord progression of the piece and follow a rigid set of rules and preferences.

Chorsatz aims to speed up this traditional manual process by algorithmically modelling a set of exclusion and scoring criteria that is used to automatically create, score and rank a list of four-part vocal progressions. In order to retain a human element and allow for some musical elements that cannot be mathematically described, the user is then shown multiple of these results and can select, listen to or download them.

📥 Inputs

In the input fields, you can specify a series of chords, which can be either triads or quadrains. The exact syntax on how to specify your desired chords is described in Chord input syntax.

📈 Generation Algorithm

In each time slot, the notes of the quadrain need to be assigned to the voices. In the case of a quadrain, there are 24 different possibilities, and in the event of a triad one note is duplicated for the bass for a total of 18 possibilities. Of course, if you manually specify a bass note (see Chord input syntax#manual bass note), the number of possibilities goes down a bit. On the other hand, there are often multplice choices for the pitch of a note even within a voice (for example, there are two Cs in soprano) which increases the number of possible choices each step.

The programm then builds a tree out of all of these choices with number of levels equal to the number of chords specified. If at any point during the generation of the tree the current branch satisfies any of the Exclusion criteria, the generation of this branch is aborted, reducing the required time. After the tree has been completed, all full tree-leaf branch consist of a series of 4-note blocks, wehre each block consists of four notes along with their octave/pitch, one for each voice. This encompasses a valid four-part vocal progression fit to accompany a classical musical piece that follows the chords from the initial input.

All of these series are then scored according the the Scoring criteria and displayed in order, with lower scores ('better' series) showing up higher.

⚙️ Customization

Both the exclusion criteria and the weights of the scoring criteria can be freely adjusted and toggled in the Options tab.

☑️ Correctness

Chorsatz does not claim to always yield a perfect or even good and certainly not creative SATB-sheet. The rules above only guarantee that a rule conforming and valid progression is created. In order to create progressions that agree with your intuition, some fiddling with the options may be required.

If you encounter any errors in the generation, the notes of chords, the playback of notes or in any other area, please open an issue here on GitHub or write a mail to linus.mussmaecher@gmail.com.

📤 Output

The results are shown both as sheet as music and as a table of notes, with format as described in Note Output Format. Additionally, you can listen to each result and download the sheet music as an .svg file and the sound as a .wav file.

📝 Authors

The idea for this project belongs to Minona Schäfer and the program and website were created by Linus Mußmächer, while the algorithm was a joint work.

The authors thank Biljana Wittstock for helpful advice in musical matters.