Композиция музыкальных партий
Описание
В данном задании предлагается реализовать программную библиотеку, представляющую встроенный язык программирования для композиции музыкальных партий.
Основными сущностями этого языка являются:
- нота (C, D, E, F, G, A, B и альтерации: , и );
- пауза;
- интервал (диатонический и хроматический);
- длительность (целая, половинная, четверная и т.д);
- лад (последовательность нот в рамках одной октавы);
- гармония (аккорды, сопровождающие мелодию).
Библиотека должна предоставлять возможности для создания мелодий, заготовок партий и средства объединения этих базовых кусочков в более сложные партии, партитуры и композиции.
Минимальные требования (базовая часть)
Базовая реализация проекта, в которой должны разбираться все участники, должна:
- предоставлять возможность задания одноголосых мелодий (с паузами);
- транспонирование (перемещение всех нот на заданный интервал);
- последовательное склеивание нескольких мелодий;
- наложение мелодий (создание многоголосной партии).
Расширенная библиотека (индивидуальная часть)
Библиотека для композиции музыкальных партий должна быть расширена как минимум двумя различными возможностями:
- поддержка триолей, квартолей и пр.
- поддержка различных размеров;
- сжатие/растяжение мелодии;
- гармония, генерация нот по аккордам, угадывание гармонии;
- поддержка текста песен;
- и т.д.
Генерация композиции (индивидуальная часть)
Возможна генерации композиции в любом из следующих форматов:
Графический интерфейс (индивидуальная часть)
Графический интерфейс должен предоставлять визуальное представление партии, а также возможности редактирования (которые могут быть реализованы исключительно «горячими клавишами»).
Графический интерфейс должен реализовывать как минимум ввод отдельных нот/пауз с разными длительностями, а также выделение и удаление нот/пауз. Дополнительно должна быть реализована как минимум одна возможность:
- выбор/смена размера композиции;
- выделение/копирование/вставка/удаление отрезка партии;
- транспонирование выделенного участка на заданный интервал (хроматический/диатонический);
- поддержка триолей, квартолей и пр.
- визуализация и редактирование гармонии;
- визуализация и редактирование знаков артикуляции и динамики;
- визуализация и редактирование текста;
- и т.д.