Язык передачи текстов рингтонов

Язык передачи текстов рингтонов (англ. Ring Tone Text Transfer Language, RTTTL) — текстовый формат, предназначенный для передачи рингтонов на мобильные телефоны Nokia[1]. Структура RTTTL состоит из трёх частей: имени, значений по умолчанию и данных. В настоящее время формат применяется как легковесное решение для генерации звуковых сигналов во встраиваемых системах и IoT-устройствах (например, Arduino, ESP8266/ESP32)[2].

Раздел имя содержит строку с названием рингтона, обычно длиной не более 10 символов и не содержащую двоеточий. В некоторых реализациях допускается увеличение длины до 15 символов по аналогии со спецификацией Smart Messaging.

В разделе значения по умолчанию через запятую указываются параметры, состоящие из пары ключ-значение, разделённых знаком «равно», определяющие стандартные настройки для исполнения рингтона. Используются следующие ключи:

Раздел данные содержит последовательность строк, разделённых запятыми; каждая строка описывает отдельную ноту — с указанием длительности, высоты, октавы и при необходимости — точки (длительность с точкой увеличивает длительность в полтора раза).

Нотация 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,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].

Примечания

  1. Точные сведения о происхождении формата RTTTL спорны: хотя спецификация Smart Messaging и ранние программы Nokia для создания рингтонов не упоминают RTTTL, формат широко использовался программой "NokRing" (Джон Мостело). См.: Документация по спецификации RTTTL (на Бэкуса-Наура) (англ.). merwin.bespin.org. Дата обращения: 29 мая 2026.
  2. 1 2 RTTTL Component. ESPHome. Дата обращения: 29 мая 2026.
  3. 1 2 3 RTTTL Specification. RTTTL Specification. Дата обращения: 29 мая 2026.
  4. Ring Tone Text Transfer Language (RTTTL). Chromatone Center. Дата обращения: 29 мая 2026.
  5. 1 2 An RTTTL Parser Class. Arduino++ (23 декабря 2019). Дата обращения: 29 мая 2026.
  6. RTTTL Specification. GitHub. Дата обращения: 29 мая 2026.
  7. RTTTL Ringtones in Meshtastic. mtnme.sh. Дата обращения: 29 мая 2026.
  8. 1 2 3 PTTTL: Polyphonic Tone Text Transfer Language. GitHub. Дата обращения: 29 мая 2026.

Литература

Ссылки