feat: extend time signature support to 9 metres (5/4, 7/4, 7/8, 9/8)
Add 5/4, 7/4, 7/8, 9/8 to _VALID_TIMES and VOCAB (TIME_* tokens). Vocab size grows from 81 to 85 tokens. _parse_metre in the McGill converter assigns subdivision=8 to 7/8 and 9/8. Spec bumped to v2.2. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Спецификация формата данных hamori
|
||||
|
||||
**Версия:** 2.1
|
||||
**Версия:** 2.2
|
||||
**Дата:** 2026-05-20
|
||||
|
||||
---
|
||||
@@ -18,7 +18,7 @@
|
||||
Формат двухуровневый:
|
||||
|
||||
- **Исходный (`.chord`)** — то, что пишется руками. Близок к лид-шиту, человекочитаем, легко правится в любом текстовом редакторе.
|
||||
- **Токенизированный** — то, что подаётся в модель. Факторизованное представление с фиксированным словарём (81 токен).
|
||||
- **Токенизированный** — то, что подаётся в модель. Факторизованное представление с фиксированным словарём (85 токенов).
|
||||
|
||||
Между уровнями стоит детерминированный парсер.
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
| ------------- | ----------- | -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `title` | да | свободная строка | идентификация периода |
|
||||
| `key` | да | `<note>_major` или `<note>_minor` | для нормализации в C/Am перед обучением |
|
||||
| `time` | да | `4/4`, `3/4`, `6/8`, `2/4`, `12/8` | тактовый размер |
|
||||
| `time` | да | `4/4`, `3/4`, `6/8`, `2/4`, `12/8`, `5/4`, `7/4`, `7/8`, `9/8` | тактовый размер |
|
||||
| `subdivision` | да | `4` или `8` | сколько позиций в одном такте |
|
||||
| `style` | да | любой идентификатор `[A-Za-z][A-Za-z0-9_]*` (например: `H1K0`, `jpop`, `other`) | стилевой тег периода; при токенизации тег должен совпасть с токеном `STYLE_<tag>` в словаре, иначе используется `STYLE_other` |
|
||||
| `function` | нет | `verse`, `prechorus`, `chorus`, `bridge`, `intro`, `outro`, `interlude`, `other` | функциональная роль периода в исходной пьесе |
|
||||
@@ -226,7 +226,7 @@ D/F# ← D, бас F♯
|
||||
**Метаданные периода (выпускаются один раз в начале последовательности, после `<BOS>`):**
|
||||
|
||||
- `MODE_major`, `MODE_minor` — 2 токена (наследие тональности; нужны, потому что мажор и минор остаются разделёнными)
|
||||
- `TIME_4/4`, `TIME_3/4`, `TIME_6/8`, `TIME_2/4`, `TIME_12/8` — 5 токенов
|
||||
- `TIME_4/4`, `TIME_3/4`, `TIME_6/8`, `TIME_2/4`, `TIME_12/8`, `TIME_5/4`, `TIME_7/4`, `TIME_7/8`, `TIME_9/8` — 9 токенов
|
||||
- `SUB_4`, `SUB_8` — 2 токена
|
||||
- `STYLE_H1K0`, `STYLE_jpop`, `STYLE_classical`, `STYLE_jazz`, `STYLE_other` — 5 токенов стиля (текущий словарь); неизвестный тег → `STYLE_other`
|
||||
- `FUNC_verse`, `FUNC_prechorus`, `FUNC_chorus`, `FUNC_bridge`, `FUNC_intro`, `FUNC_outro`, `FUNC_interlude`, `FUNC_other`, `FUNC_unspecified` — 9 токенов
|
||||
@@ -244,7 +244,7 @@ D/F# ← D, бас F♯
|
||||
- `NC` — пауза в гармонии
|
||||
- `BAR` — конец такта
|
||||
|
||||
**Итого:** 4 + 2 + 5 + 2 + 5 + 9 + 12 + 18 + 8 + 13 + 3 = **81 токен**.
|
||||
**Итого:** 4 + 2 + 9 + 2 + 5 + 9 + 12 + 18 + 8 + 13 + 3 = **85 токенов**.
|
||||
|
||||
### 5.3 Структура обучающей последовательности
|
||||
|
||||
@@ -480,7 +480,11 @@ YYYY_NNN_<short-title>_<function>.chord
|
||||
|
||||
## 11. История изменений
|
||||
|
||||
- **v2.1** (текущая)
|
||||
- **v2.2** (текущая)
|
||||
- Добавлены тактовые размеры `5/4`, `7/4`, `7/8`, `9/8` — в допустимые значения поля `time` и в словарь (`TIME_*`).
|
||||
- Размер словаря: 81 → 85 токенов.
|
||||
|
||||
- **v2.1**
|
||||
- Поле `style` теперь принимает любой идентификатор `[A-Za-z][A-Za-z0-9_]*`, а не фиксированный список.
|
||||
- `STYLE_user` заменён на `STYLE_H1K0` (авторский тег) в словаре модели.
|
||||
- Неизвестный стиль при токенизации маппируется на `STYLE_other` с предупреждением в лог.
|
||||
|
||||
Reference in New Issue
Block a user