Я буду генерировать все мелодии!!!

Feb 27, 2020 09:01

Два программиста попытались отменить авторское право в музыке.
Алгоритм создал 68 миллиардов комбинаций - и всё для того, чтобы музыканты перестали судиться друг с другом из-за авторских прав.
[...]
Риль и Рубин разработали алгоритм, который записал все возможные комбинации из восьми нот и 12 тактов. По сути, они использовали тактику брутфорса, перебирая все комбинации до единой. По словам разработчиков, алгоритм генерировал 300 тысяч мелодий в секунду, и их вышло 68 миллиардов.
Далее см. источник.

Количество нот указано. Количество тактов указано. А вот про длительности нот ничего не сказано. И про размеры тоже. А жаль.
Между прочим, тут получается интересная математическая задачка.
Допустим, есть ряд длительностей нот, от целой до... Ну, скажем, шестьдесят четвёртой. Не будем брать в расчёт сто двадцать восьмые, двести пятьдесят шестые и прочие извращения в стиле Паганини, Листа и Ингви Мальмстина.
По сути, длительность каждой ноты - это число в виде 1/2n, где n принимает значения [0, 1, 2, 3, 4, 5, 6]. Семь значений. Следовательно, семь чисел от 1/20 до 1/26.
Едем дальше. Музыкальный размер - это, по сути, сумма такта. Сумма, которую должны иметь все ноты в пределах одного такта. Например, если у нас размер 4/4, то сумма длительностей всех нот должна быть равна единице. При размере 3/4 сумма длительностей равна, как ни странно, 0.75. При размере 2/4 - 0.5.
Таким образом, мы получаем задачку по комбинаторике.
Имеется K = 7 чисел:
1, 1/2, 1/4, 1/8, 1/16, 1/32, 1/64.
Из них нужно составить N комбинаций, которые в сумме дадут S, где S может принимать одно из трёх значений: или 0.5, или 0.75, или 1.
Таким образом мы узнаем, сколько есть способов записать один целый такт. И это, прошу заметить, с помощью одной-единственной ноты. То есть, ноты с одной высотой. Высоты нот рассмотрим дальше.
sevabashirov, как тебе?

ябгвм, математика, музыка

Previous post Next post
Up