Автор Тема: Нотный редактор - как реализовать повторения фрагментов?  (Прочитано 4880 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Armen Автор темы

  • Ветеран форума
  • ******
  • Сообщений: 6845
  • Или Армен
    • http://guitar.armenm.com
Тема по большей части относится к теории, но не только, поэтому открываю здесь и прошу модеров не перекидывать в раздел теории.

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

Первая идея была дать возможность пользователю определять произвольные повторения любых фрагментов композиции в любых комбинациях.
Например, в песне 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о, но после того, как закончим с первым вопросом.
« Последнее редактирование: Декабря 02, 2007, 14:19:47 от Armen »

Оффлайн Malmsteen Y.

  • Эксперт
  • *****
  • Сообщений: 1012
Armen:
>В итоге я подумал сделать так: открывается диалог, в котором следующие поля:
>1. номера открывающего и закрывающего тактов,
>2. число повторений
>3. номера начального и конечного такта для каждого из повторений.

вроде разумно :)

Оффлайн Reload

  • Эксперт
  • *****
  • Сообщений: 2898
  • שלום :)
>1. номера открывающего и закрывающего тактов,
>2. число повторений
>3. номера начального и конечного такта для каждого из повторений.

ИМХО.
Здесь как раз вместо "абсолютной свободы" лучше наоборот ограничить разнообразие вариантов повторений и вообще как можно строже придерживаться традиционных правил и норм нотной записи, дабы не вводить пользователя в излишнее замешательство. Я, собсно, не совсем понимаю, какие практические преимущества может дать твой способ. Можно получить прирост в компактности, в разнообразии записи или в чем то еще, но при этом наверняка снизится убодство и комфорт визуального восприятия записнного. На экране или в распечатанном виде такую |:------------:|--------:| или, например, такую  1|:----------2|:-----1:|--------2:|, или такую 1|:----2|:------3|:------1:|-------4|:----3:|---5|:-----:|245 :) конструкцию (тем более с разной последовательность повторений типа 11115544444423421) будет довольно сложно прочитать без специальной подготовки.
Поэтому:
1) третий пункт лишний
2) полностью исключить возможность перекрытия части одного повтора частью другого
3) оставить варианты, когда одно повторение полностью находится внутри другого
ИМХО
:)

Оффлайн Reload

  • Эксперт
  • *****
  • Сообщений: 2898
  • שלום :)
Кстати, в Гитар если ставишь репризу на одной дорожке, она автоматически ставится на всех остальных. А как у тебя это будет реализовано?