Every V2 drum has exactly 64 physical positions. The controller stores the selected character-set setting and translates user text into the matching position commands. Modules only receive positions, so the selected software sequence must match the physical flap order.
The canonical machine-readable definitions are in
character_sets.json. They are validated and consumed
through character_sets.py.
international-64 is the default preset. Position 0 is the blank flap, so a
homed display starts empty.
ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜẞÑÇÉÅÆØŁ0123456789.,:!?¡¿-/'&@%€$°
This sequence contains exactly 64 unique characters:
- one blank;
AtoZ;- complete uppercase German:
Ä Ö Ü ẞ; Ñ Ç É Å Æ Ø Łfor practical additional Latin-script coverage;0to9;. , : ! ? ¡ ¿ - / ' & @ % € $ °.
The German group follows the uppercase inventory in the
2024 official German spelling rules, page 31:
A–Z, Ä, Ö, Ü, and ẞ.
The preset normalizes lowercase input to uppercase, preserves the characters printed on the drum, and maps common unsupported Latin diacritics to an available base letter. Unsupported characters cause an explicit error instead of silently moving to the wrong flap.
demo-64 preserves the physical order of the original demo drums already
installed on ten modules. Its blank flap remains at position 63.
ABCDEFGHIJKLMNOPQRSTUVWXYZ:.0123456789$€&@%×/·#=*+-±()<>,'°■£~©␠
Here ␠ denotes the position-63 blank; the machine-readable value in the
catalog contains an ASCII space.
A custom setting contains the exact physical order as one 64-character Unicode string. Validation requires:
- exactly 64 printable characters after NFC normalization;
- 64 unique positions;
- exactly one ASCII space;
- one Unicode character per physical position.
Preset setting:
{
"settings_version": 1,
"character_set": {
"preset": "international-64"
}
}Custom setting:
{
"settings_version": 1,
"character_set": {
"name": "My 64",
"custom": " ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜẞÑÇÉÅÆØŁ0123456789.,:!?¡¿-/'&@%€$°",
"uppercase_input": true
}
}Validate a setting and test its position encoding:
python3 V2/Code/character_sets.py validate V2/Code/settings.example.json
python3 V2/Code/character_sets.py encode V2/Code/settings.example.json "Grüße, señor! 20°"