Язык передачи текстов рингтонов
Язык передачи текстов рингтонов (англ. Ring Tone Text Transfer Language, RTTTL) — текстовый формат, предназначенный для передачи рингтонов на мобильные телефоны Nokia[1]. Структура RTTTL состоит из трёх частей: имени, значений по умолчанию и данных. В настоящее время формат применяется как легковесное решение для генерации звуковых сигналов во встраиваемых системах и IoT-устройствах (например, Arduino, ESP8266/ESP32)[2].
Раздел имя содержит строку с названием рингтона, обычно длиной не более 10 символов и не содержащую двоеточий. В некоторых реализациях допускается увеличение длины до 15 символов по аналогии со спецификацией Smart Messaging.
В разделе значения по умолчанию через запятую указываются параметры, состоящие из пары ключ-значение, разделённых знаком «равно», определяющие стандартные настройки для исполнения рингтона. Используются следующие ключи:
- d — длительность
- o — октава
- b — темп (удары в минуту)
Раздел данные содержит последовательность строк, разделённых запятыми; каждая строка описывает отдельную ноту — с указанием длительности, высоты, октавы и при необходимости — точки (длительность с точкой увеличивает длительность в полтора раза).
Нотация RTTTL схожа с музыкальным макроязыком (Music Macro Language), применяющимся в некоторых диалектах BASIC на ранних персональных компьютерах.
Технические особенности
Чтобы рингтон в формате RTTTL (или Nokring) был распознан программами для воспроизведения, он должен содержать три части: имя, настройки и перечень нот.
Пример рингтона RTTTL для Haunted House:
HauntHouse:d=4,o=5,b=108:2a4,2e,2d#,2b4,2a4,2c,2d,2a#4,2e.,e,1f4,1a4,1d#,2e.,d,2c.,b4,1a4,1p,2a4,2e,2d#,2b4,2a4,2c,2d,2a#4,2e.,e,1f4,1a4,1d#,2e.,d,2c.,b4,1a4
Три части разделяются двоеточиями:
- Часть 1: Название рингтона (в примере: «HauntHouse») — строка символов, обозначающая имя мелодии.
- Часть 2: Настройки (здесь: d=4,o=5,b=108): «d=» — длительность ноты по умолчанию (в примере, «4» означает четвертную ноту, «8» — восьмая нота и т.д.); «o=» — октава по умолчанию (всего в RTTTL четыре октавы); «b=» — число ударов в минуту (темп).
- Часть 3: Последовательность нот. Каждая нота отделяется запятой и включает по порядку указание длительности, самой ноты (a, b, c, d, e, f или g) и октавы (как в научной нотации высоты звуков). Если длительность или октава не указана — используются значения по умолчанию.
Названия нот и символ паузы (p) нечувствительны к регистру[3]. В спецификации формата нет явных ограничений на максимальное количество нот. Название рингтона не должно содержать двоеточий, при этом для него рекомендуется использовать только буквенно-цифровые символы[4]
Длительности
Стандартные музыкальные длительности обозначаются числами:
- 1 — целая нота
- 2 — половинная нота
- 4 — четвертная нота
- 8 — восьмая нота
- 16 — шестнадцатая нота
- 32 — тридцать вторая нота
Для формирования пунктирных ритмических рисунков используется символ точки («.»), который ставится после обозначения ноты и увеличивает её длительность в 1,5 раза[5]. Оригинальная спецификация формата не поддерживает 64-е ноты и триоли[3].
Высота звучания
- P — пауза
- A — Ля
- A# — Ля-диез / Си-бемоль
- B — Си / До-бемоль
- C — До
- C# — До-диез / Ре-бемоль
- D — Ре
- D# — Ре-диез / Ми-бемоль
- E — Ми / Фа-бемоль
- F — Фа / Ми-диез
- F# — Фа-диез / Соль-бемоль
- G — Соль
- G# — Соль-диез / Ля-бемоль
Для обозначения диеза используется символ #, который ставится сразу после буквенного обозначения ноты. В оригинальной спецификации формата нет специального символа для бемоля, поэтому ноты с бемолем записываются через их энгармонически равные эквиваленты с диезом (например, си-бемоль записывается как ля-диез)[6].
Октавы
Формат RTTTL допускает указание октав с Ля ниже средней до четырёх октав выше, что связано с ограничениями звучания динамиков мобильных телефонов по высоте тона. Нумерация октав — с 4 по 7 (от самой низкой к самой высокой). Для паузы указание октавы не требуется.
Пример
Пример строки в формате RTTTL:
fifth:d=4,o=5,b=63:8P,8G5,8G5,8G5,2D#5
В данном примере использование заглавной буквы P для обозначения паузы является синтаксически корректным. Явное указание октавы 5 для нот (например, D#5) также допустимо, хотя и избыточно, поскольку совпадает с заданным значением по умолчанию (o=5)[3].[5]
Современное применение
Благодаря простоте и низким требованиям к ресурсам формат RTTTL активно применяется в IoT-устройствах и проектах на микроконтроллерах (Arduino, ESP32, ESP8266) для воспроизведения звуков через пьезодинамики[2]. Также формат используется для кастомизированных звуковых уведомлений в децентрализованных сетях Meshtastic на устройствах вроде SEEED T1000E и LilyGo T-Deck[7].
PTTTL
PTTTL (англ. Polyphonic Tone Text Transfer Language) — текстовый формат для описания полифонических мелодий, являющийся расширением (надмножеством) формата RTTTL[8].
Главным отличием формата является поддержка полифонии: он позволяет задавать несколько одновременно звучащих каналов, которые в секции данных разделяются символом вертикальной черты (|). Кроме того, в PTTTL добавлена поддержка эффекта вибрато[8].
Проект разработан Эриком Нюквистом (Erik Nyquist) и размещён на платформе GitHub. Он включает эталонные реализации парсера на языках C и Python[8].
Примечания
Литература
- Как отличить рингтон в формате Nokring/RTTTL от других рингтонов? (англ.). about.com. Eric Bematchez. Дата обращения: 16 июня 2024. Архивировано 13 декабря 2007 года.
- Документация по спецификации RTTTL (на Бэкуса-Наура) (англ.). merwin.bespin.org. Дата обращения: 16 июня 2024.