Вступление

Всем добрый день. Решил поделиться одним из почти заброшенных проектов десятилетней давности – передача текста музыкой. Программирование здесь тоже будет, поэтому можно считать это ИТ-проектом.

История

Идея передать текст нотами не моя, но прошлые её реализации были так себе. Самое первое и простое решение - пусть нота до будет буква А, нота ре - Б и так далее. Назвать получившееся музыкой будет прям большой натяжкой. А расшифровать на слух практически невозможно.

Введение

Основной мой инструмент - гитара, родной язык - русский. Поэтому я придумал сделать музыкальный алфавит для гитары и русского языка. Главные требования:

  • Должно звучать красиво.

  • Легко сыграть.

  • Можно понять на слух.

Пример

Я решил сразу привести пример, чтобы показать, что получилось в итоге, а потом уже объяснить, как это получилось.

Ниже сыграна фраза:

ПРИВЕТ МИР ПРИВЕТ ХАБР ПРИВЕТ ВСЕ КОНЕЦ

Видео и картинка
Ноты + табы
Ноты + табы

Ну вот и та самая «музыка».

Описание

Буквы состоят из одиночных и двойных звуков. В начале каждого слова играется самая толстая (шестая) открытая струна. Ноты выбраны в пределах гаммы Ми минор (Em), это, возможно, не первый, но точно самый простой аккорд для начинающих.

Аккорд Em
Гамма ми минор Ноты + табы
Стандартный
Стандартный
Расширенный, используемые ноты в алфавите
Расширенный, используемые ноты в алфавите

При создании алфавита ноты и интервалы выбраны так, чтобы исполнитель не выходил за пределы 5 лада, а лучше третьего. Пятый лад используется только в одной букве, четвёртый – в трёх.

Реализация

Так как я решил не выходить за пятый лад и остаться внутри гаммы ми минор, одиночных нот получилось 13 штук. Остальные 20 пришлось добирать двузвучиями - это две ноты, сыгранные одновременно. И я выбрал более-менее звучащие и распознающиеся на слух интервалы.

Требование звучать красиво решается так: красиво звучащие сочетания нот должны совпадать с красиво звучащими сочетаниями букв.

Определять красоту звучания буквенных сочетаний я решил объективно – по частоте употребления в языке. Язык эволюционирует, и некрасивые сочетания употребляются реже. Ну или мы считаем красивыми те, что употребляются чаще, можно спорить, но статья не об этом.

Взял таблицу частотности из словарей, отсортировал и разбил на 10 частей, чтобы присвоить оценки от 1 до 10.

Пример таблицы

С нотами пришлось сыграть все сочетания по очереди и так же присвоить им оценки. Количество сочетаний получилось 528, совпало с вычисленным по формуле:

Оценки присваивал по пятибалльной шкале. Красота сочетания оценивалась на мой слух, оценка снижалась, если сложно было сыграть, а некоторые получили 6, в основном, красивые сочетания одиночных нот. Сложнее играть подряд двойные ноты, поэтому таких сочетаний не очень много.

Итого у нас есть сочетания букв с оценками и сочетания нот с оценками. Задача - сопоставить буквы с нотами так, чтобы система имела максимальную массу. Если каждому из 528 сочетаний букв присвоить свои сочетания нот, массой системы будет сумма произведений их оценок. Например, если букве С назначить ноту до, а букве Т ноту ми, то сочетание СТ имеет оценку 10, сочетание до-ми имеет оценку 6, в копилку падает 60. 

Теперь нужно найти все перестановки и найти систему с максимальной массой. Если, например, мы расставили 33 буквы и назначили им 33 ноты - количество возможных перестановок в правом столбце равно факториалу числа 33.

Факториал числа 33

Перебором решать не будем.

То ли я вспомнил какие-нибудь лекции по вычислительным методам, то ли решение само напрашивалось. Возможно, есть способ лучше, но я использовал такой алгоритм: Заполняем случайную расстановку, находим массу и меняем пары. Поменяли пару, масса подросла - оставляем, снизилась - откат, и так, пока масса не перестанет расти при любых обменах. При разных начальных условиях можем попадать на локальные максимумы, поэтому делаем много экспериментов. В итоге максимальную массу получило размещение, к которому приводила большая часть экспериментов. Если это вдруг не абсолютный максимум, ничего страшного, я поиграл по этой системе - звучит хорошо, оставляем.

Ниже получившаяся схема в нотах и табах, уже можно играть, если кто умеет.

Итог работы: ноты + табы

Релиз

Сделал это я в 2013-2014 году и оформил как букварь. На каждую букву записал видео со звуком и инструкцией, как её играть, брались слова с уже изученными буквами, которые взял также из букваря. Выложил всё это на один популярный в то время сайт, думал найти единомышленников, да и просто поделиться. Отклик был небольшим, музыканты, например, совсем не заинтересовались. Я не удивился, но подостыл и оставил всё как есть, дальше не развивал. Планов по развитию пока нет, на грифе остались ещё резервные места для цифр и знаков препинания, могу продолжить в любое время.


С программированием и музыкой у меня были и другие интересные проекты, например, многодорожечное проигрывание участков фрактальных множеств, позже напишу и об этом.

Спасибо за внимание, на вопросы отвечу в комментариях. Ниже добавил картинки процесса работы.

Картинка Ноты-лады
Буква А на своей позиции
Ноты в ви��е аккордов
Эксперимент в программе