Сегодня мне понадобилось склеить соприкасающиеся ноты в нескольких сотнях аккордов. Попробовал применить на практике вышеописанный скрипт для склейки нот и обнаружил, что скрипт имеет по меньшей мере три недостатка при применении его в массовом порядке:
1. Выделять необходимо только ноты одной тональности;
2. Склеиваются только две из выделенных нот, даже если все они соприкасаются друг с другом;
3. После обработки выделение не сохраняется.
Потому попробовал написать собственный вариант скрипта для склейки нот, лишенный указанных недостатков.
Скрипт существует в двух вариантах. Первый из них склеивает в выделенном фрагменте все ноты одной тональности в одну большую ноту (расстояние между ними может превышать более 1000 тактов); этот вариант предназначен для быстрой склейки нескольких нот, его я повесил на комбинацию, рекомендованную Vovchik'ом (Ctrl + G). Второй вариант предназначен для массового объединения нот в большом фрагменте (ради чего, собственно, все и было задумано), его я повесил на комбинацию Shift + Ctrl + G. Второй вариант скрипта предварительно запрашивает, какой прормежуток может быть между склеиваемыми нотами (только пустой промежуток, то есть от конца первой ноты до начала второй). Значение этого промежутка может быть в трех вариантах:
1. Значения от 1 до 32767 означают расстояние между нотами в 1/32 целой ноты.
2. Если первым знаком поставить "-" (дефис, он же минус), то значение будет интерпретироваться как модуль расстояния в тиках, уменьшенный на единицу. То есть, -1 будет означать 0 тиков (нет промежутка), -2 будет означать промежуток в 1 тик и т.д. Максимальное значение -32768.
3. Если указать в качестве промежутка 0, то склеиваться будут только те ноты, которые налагаются друг на друга.
По умолчанию указано значение -1, то есть при отсутсвии промежутка между нотами они будут склеены.
Замечу, что при необходимости первый скрипт может быть модифицирован также, как и второй, но только вручную. Для этого его необходимо открыть в каком-нибудь редакторе (подойдет блокнот), и в первой строчке вместо числа 32767 вписать нужное значение максимального промежутка между нотами, описанное для второго скрипта.
Скрипты в архиве ZIP залил сюда: webfile.ru/670320 (будет доступен до 11.12.2005)
Туда же положил 4 маленьких скриптика (написанные по ходу дела), предназначенные для транспонирования выделенного фрагмента на полутон и октаву соответсвенно вверх и вниз (назначенные на key binding эти скрипты также значительно упростили мне жизнь) а также немного модифицированный скрипт для разрезки нот. Теперь для разрезания не обязательно выделять ноты; если нет выделенных нот, то будут разрезаны все ноты, "попавшие под нож", то есть, находящиеся под курсором (но только в текущем треке).
Просьба всех заинтересованных лиц протестировать вышеописанные калы, все замечания и предложения просьба помещать в этот топик.