Тема по большей части относится к теории, но не только, поэтому открываю здесь и прошу модеров не перекидывать в раздел теории.
Итак, мой нотный редактор уже почти готов, осталось реализовать повторения фрагментов и возможность добавления партии вокала, т.е. слов в песнях. С вокалом более-менее ясно, а вот с повторениями проблема - не определился как это сделать.
Первая идея была дать возможность пользователю определять произвольные повторения любых фрагментов композиции в любых комбинациях.
Например, в песне 100 тактов, ну и списочек к ней типа:
Такты 1-10: играть два раза,
20-30: 2 раза
3-4:1 раз
30-60:5 раз и т.д.
Таким образом достигается абсолютная свобода того, какие фрагменты где и сколько раз повторять. С воспроизведением звука этого дела проблем никаких, НО! совершенно непонятно, как это отображать это в самих нотах.
Посмотрел как сделано в разных программах: везде по-разному плохо и непонятно.
Например, в Guitar Pro можно сделать такой фрагмент:
|:------------:|--------:|
причём до первого такта "с двоеточием" он повторяет правильное число раз, а на втором зацикливается. В Guitar Pro эти фрагменты создаются поотдельности проставляя "открывающий" так, "закрывающий" и такты для окончаний. Причём окончание не может быть длиннее одного такта, по крайней мере я не понял как это сделать.
В итоге я подумал сделать так: открывается диалог, в котором следующие поля:
1. номера открывающего и закрывающего тактов,
2. число повторений
3. номера начального и конечного такта для окончания каждого из повторений.
Т.е. всё повторение, от и до, с окончаниями делается одним шагом - этим диалогом.
При этом перекрытия (частичные и полные) повторяющихся фрагментов запретить.
А теперь скажите мне что я упускаю в этом случае?
Или может есть идеи получше?
Потом надо обсудить всякие штуки типа Da Capo al Fine и Dal segnо, но после того, как закончим с первым вопросом.