Программное упрощение аккордов • Stereo.ru
Вопрос Maksat 14

Программное упрощение аккордов

Здравствуйте!

Заранее прошу прощения, за возможные неправильные употребления терминов =) Я делаю ритм игру типа Guitar Hero, питающуюся MIDI-файлами. Программа отображает играемые в файле ноты на 4, 6 или 8 (в зависимости от установленной сложности) клавиши клавиатуры ПК. Я долго пытался сам разобраться, но чем глубже лезу в муз. теорию, тем больше у меня все путается. Перед тем, как задать вопрос, поясню что я делаю на картинках, так как я плохо владею терминологией и вы можете не так меня понять.

Задача

Упаковать все используемые ноты в песне на на 4,6 или 8 (в зависимости от установленной сложности) клавиши клавиатуры ПК, при этом сохранив иллюзию игры на пианино благодаря схожему перебиранию нот.

рис. 1. Скрин части песни на программе Synthesia


рис. 2. Скрин той же части песни из моей программы


Как видно из картинок, играемые ноты "сжимаются" до четырех клавиш, сохраняя при этом последовательность нажатий.

Алгоритм упаковки нот таков. Вся песня делится на временнЫе отрезки, при которых диапазон играемых нот не превышает количество установленных клавиш клавиатуры ПК. При игре, на конкретных отрезках времени, каждая клавиша соответствует определенной ноте. Наглядно на картинках:


Рис. 3. Исходные данные


Рис. 4 После разделения на отрезки программа получит такие данные.


Проблема

А как быть с аккордами?! Конечно, можно и их упаковать по описанному выше алгоритму, но при заданном количестве клавиш равному четырем — это будут просто тупые нажатия на одни и те же клавиши. Я хочу сделать возможность задания сложности игры. Чем меньше будет заданных клавиш клавиатуры ПК, тем легче играть. Это относится и к количеству одновременно играемых нот. Чем их меньше, тем легче игра. Более опытные игроки смогут поставить себе бОльшее количество клавиш для игры, и играть все ноты аккордов. Для достижения такой цели, нужно привести исходные данные с аккордами к виду как на рисунке 3.

Я попробовал на слух упростить показанную ниже мелодию, оставив только по одной ноте из аккордов, так чтобы она осталась прежней.

Рис. 5 часть той же мелодии, что и на предыдущих картинках


Рис. 6. После самостоятельного ручного упрощения.

При упрощении, так получилось, что приходилось убирать только нижние ноты. Я не уверен, можно ли принимать это за закономерность.

Вопросы:

1. Достаточно ли оставить в аккордах самые высокие ноты для упрощения?

1.1 Как алгоритмически упростить мелодию?

Из самостоятельных попыток изучения сольфеджио я запомнил, что аккорды имеют главный звук, но я так и не смог понять как его найти. Вроде бы при одних интервалах он сверху, а при других снизу, но в аккордах несколько интервалов! Про какой идет речь?!

2. Достаточно ли оставить главные звуки аккордов для упрощения? Если да, то:

2.1 Как найти главные звуки аккордов? Есть ли закономерность в их нахождении?

2.2 Если есть закономерность, есть ли таблица? Или можете ли вы, пожалуйста, описать, где будут главные звуки при 2, 3, 4, 5, 6 одновременных нотах?

2.3 Есть ли понятие "второй по главности звук", как его найти?

Ответы

bluesevich

Добрый вечер. Как-то вы немного не по адресу обратились. Здесь конечно присутствуют музыканты. Но тема сайта и форума - аппаратура для прослушивания музыки в домашних условиях. Hi Fi и High End в общем.

Tess
Главный звук
в аккордах несколько интервалов! Про какой идет речь?!


Аккорды состоят из секунд терций и кварт (квинты, сексты, септимы и октавы- это составные комбинации из секунд, терций и кварт). Есть такое понятие обращение аккорда- переброс баса (нижнего звука) на октаву вверх. Таким образом- второй снизу звук становится новым басом и такой аккорд называется первым обращением. Эту операцию можно повторить и аккорд будет называться вторым обращением и т.д.

Внимание ответ: основной звук аккорда -это бас необращённого аккорда.
Необращённый аккорд состоит из двух или трёх терций, но никогда в нём нет кварты или секунды. перебрасывайте бас на октаву вверх, пока ваш аккорд не будет состоять только из терций. Бас-будет основным звуком аккорда.

Второго по главности звука нет. Но при желании можно назначить терцию необращённого аккорда вторым звуком, терция отвечает за мажор или минор аккорда.
б3-мажор

м3-минор

Maksat @Tess

Здравствуйте Tess, спасибо за ответ! Если оставить только главные звуки аккордов мелодии, останется ли она узнаваемой? Иначе мне нету смысла находить главные звуки.

Maksat @Maksat

Вот что у меня получилось:

Это отрывок исходной мелодии с аккордами. Прослушать можно здесь


Это тот же отрывок, упрощенный вручную подбиранием на слух. Прослушать


Здесь выделены главные звуки в аккордах по вашему алгоритму.


После удаления "неглавных" нот с аккордов. Прослушать здесь


как слышно, при оставлении главных звуков аккордов, изначальная мелодия не сохранилась. Значит ли это что нельзя упростить мелодию алгоритмически, только вручную и на слух? или главные ноты нашлись неправильно?

Tess @Maksat
Значит ли это что нельзя упростить мелодию алгоритмически?

вы хотите слишком много сократить: есть бас+гармония+мелодия. Их линии нельзя прерывать или переключаться между ними.

Как в полифоническом голосоведении нельзя оборвать одну из линий, не будет полифонии.

Если цель всё играть с шести клавиш, то останьтесь только на мелодии, так было бы логичней.

Тем более, поделив «песню» на отрезки, где одна клавиша «F» отвечает за разные ноты- уже чёрт ногу сломит.


Если оставить только главные звуки аккордов мелодии, останется ли она узнаваемой?

Нет, не останется.

Главные звуки аккордов мелодии- оксюморон, как лобовое зеркало заднего руля

Maksat @Tess
Главные звуки аккордов мелодии- оксюморон

Простите за бред =)

Если цель всё играть с шести клавиш, то останьтесь только на мелодии, так было бы логичней.

Так я и пытаюсь аналитически вычленить только мелодию из всего массива звуков, это и есть мой главный вопрос? Есть ли какое-то правило ее нахождения?

Tess @Tess
Есть ли какое-то правило ее нахождения?

то, что вы можете насвистеть, как песню и будет мелодией.

Это тот же отрывок, упрощенный вручную подбиранием на слух. Прослушать

-вот вы всё прекрасно подобрали на слух.

Другого аналитического способа с подмешиванием гармонии в мелодию нету.


Maksat @Tess

Ухом то я отличаю мелодию и звуки, украшающие ее. Но вот как машину научить выделять мелодию?) По динамике? Но я бы не стал на это полагаться, т.к миди-файлы бывают разные. Конечно, все сводится к тому, что все ноты в "песне" сыграются через шесть клавиш, и нет никакой разницы в том, какой клавишей сыграется нота. Аккорды в игре сожмутся и будут показываться как одна падающая нота, можно оставить любую ноту из нее, она спозиционируется относительно предыдущей ноты. Но перфекционист внутри меня хочет, чтобы рисунок падающих нот (расположение друг относительно друга) был похожим на тот что получится при игре на настоящем пианино. Вот нажали первую ноту, вторая находится левее первой потому что она ниже по тону, третья посреди предыдущих, четвертая правее первой и т. д. Как на рис. 1 и 2 в теле вопроса в самом верху. С одиночными нотами это легко реализуемо, а вот если аккорд - нужно найти ноту, дающую мелодию, чтобы правильно расположить относительно предыдущей ноты.

Maksat @Tess

Бинго! Вот это и нужно было =) Спасибо вам большое! Я и сам заметил что когда я еще "упрощал" ( т.е когда еще "оставлял только главные звуки аккордов мелодии" =) ), а не отделял мелодию, оставались только верхние звуки аккордов. Сейчас выделил мелодии еще у нескольких песен. Действительно, почти везде остается верхний звук!

Maksat @Tess

Выделил мелодию еще у одной песни. Изначальное звучание


после ручного отделения мелодии, абсолютно во всех аккордах остались верхние ноты. Послушать результат


но как быть с партией для левой руки? Там же обычно нет мелодии? Какие ноты оставлять от аккордов для левой руки? Это не так важно, на самом деле. В игре ноты левой руки не будут часто показываться . Аккорды тоже будут группироваться в какую нибудь одну ноту. Все будет зависеть от выбранной сложности. Но возможно, будет режим, где будут показываться ноты для обоих рук одновременно. Тогда все же придется выбирать, какую ноту оставить отображаться, а остальные скрыть и проиграть вместе с оставшейся нотой при нажатии на ее соответствующую клавишу. Я попробовал слушать одновременно с выделенной мелодией конкретные звуки из аккордов левой руки. Особой разницы не услышал, поэтому там тоже оставил верхние ноты. Послушать что получилось. Может быть здесь оставлять главные тона аккордов?


Только авторизованные пользователи могут отвечать на вопросы, пожалуйста, войдите или зарегистрируйтесь.