Перемещение клипов

  • Автор темы Автор темы Vovchik
  • Дата начала Дата начала

Vovchik

Well-Known Member
29 Апр 2005
2.290
1.085
113
66
Смоленск
Давно хотел выяснить такую вещь:

есть два клипа на одном треке, между ними - некоторое расстояние. Как мне подвинуть первый клип вправо, так, чтобы конец 1-го клипа приклеился к началу 2-го? Второй клип при этом должен остаться там, где был.
 
Еще одна неоднозначность... В Snap to grid можно с равным успехом поставить Events или Clip Boundaries, при этом реально снэпится только если передвигать ПРАВЫЙ клип к левому... :rolleyes:
 
Originally posted by morjer
ИМХО придется заниматься арифметикой, благо начало-конец каждого клипа тебе известны, потом Slide... Бред..???  :rolleyes:
Нет, не бред, но.... Сонар показывает старт и конец клипов в двух форматах: M:B:T или H:M:S:F. Допустим, первый клип заканчивается на 00:01:22:14, а второй начинается в 00:01:43:20. Каким арифметическим действием можно вычислить разницу между этими двумя пунктами? Напомню, что в каждой секунде 30 кадров.
 
Originally posted by vicle
клипы вручную об\"едени и методом копирования сделай,что надо.
Всетаки так быстрее будет :beer:
Боюсь, что ты не совсем правильно понял, чего я хочу. Мне надо подвинуть левый клип к правому вплотную, без зазора, не объединяя их.
 
Это-то ясно, да вот только как-то не научно... не элегантно. Поясню на примере. Допустим, имеется трек с целой песней. Я отрезал вступление и получил два клипа - короткий и длинный. Длинный в результате некоторых манипуляций (сейчас не важно, каких) отодвинулся вправо. Всё, что я хочу - приклеить вступление обратно, т.е. придвинуть его вплотную к продолжению. Чтоб звуковая волна точь-в-точь совпала так, как это было до разрезания.
Так мало надо для щастья, да видно не судьба (горько рыдает).
 
Vovchik
Почему вырезание не сделать с автоперемещением? Delete hole..?
 
Vovchik
:))) Вот, сейчас придумал такой изврат...
Ставишь сетку, ну, допустим, в 1 такт, удлиняешь мышой правый клип до целого такта. Ставишь Snap to Boundaries, и точно перетягиваешь правый клип к левому. Снова ставишь сетку в 1 такт (Move To), выделяешь оба клипа и перетягиваешь их так, чтоб конец правого был там, куда ты его растягивал в первом действии. Вуаля...
Хотя может туплю, Сонара щас под рукой нет
 
morjer  
я думаю, что разница будет 00:00:21:06

Ну это я слишком простой пример привел. А если 00:01:55:29 и 00:02:22:02?

Твой последний вариант теоретически правильный, НО мне не надо растягивать клипы, я хочу оставить всё как есть, только пристыковать левый к правому, и всё.

CakeWorker  
Почему вырезание не сделать с автоперемещением? Delete hole..?
Можно, но это будет другая операция, согласись. Мне не надо delete hole.

Я почему собственно всех задолбал уже с этой темой: когда-то, если не ошибаюсь, в Pro Audio 9, мне понадобилось именнно так склеить два клипа, и там это получилось. А здесь - никак. Почему-то в последней версии программы нет того, что было в более простой и устаревшей версии.

Видимо, задача сводится к тому, чтобы измерить расстояние между клипами и потом сдвинуть (slide) левый клип вправо на это расстояние. Как измерить? Я тут надыбал вот такой калькулятор:

----------------
(do
(dword e 0)
(= e (- Thru From))
)
NIL
(do
(pause "TICKTOTAL= " e " ")
)
-------------------

Этот CAL выдает длину выделенного участка в тиках. Ставим snap to clip boundaries, держим ALT и выделяем пустое пространство между клипами. Запускаем CAL, он показывает, сколько тиков в выделенном участке.
Недостаток этого метода в низком уровне разрешения - всё-таки тики слишком большая единица для работы с аудио.

Остаётся одно: по рецепту WayBe максмально увеличивать и таскать мышью (или nudge by 1 sample) или переключать рулер на семплы, смотреть где начала и концы и вычитать многозначные числа.
 
Блин, оказывается, кейки на CAL вовсе не забили, как здесь высказывалось мнение, он продолжает развиваться.
Непонятно только, какого хрена официальной информации об этом нет. Тут http://www.bikexprt.com/calfiles/index.htm, в частности, описаны недокументированные возможности языка. Скажем, теперь можно использовать в качестве событий аудиоклипы. Например, что-нибудь вроде этого:

(forEachEvent
(if (== Event.Kind WAVE)
(pause Event.Time)
)
)

поочередно выдаст на экран точки начала выделенных аудиоклипов.
К сожалению, информация далеко не полная, в частности, описано, что событие WAVE использует три переменных: name (имя клипа), velocity (что имеется в виду применительно к аудиоклиру, не вполне ясно), и размер в сэмплах, деталей же относительно использования этих переменных не приведено. Вполне возможно, что это еще не реализовано; на всякий случай спрошу, ни у кого нет более точных данных о недокументированных возможностях CAL?
Побольше бы информации, и твою проблему, Vovchik, можно было бы решить с помощью CAL-скрипта.
 
velocity (что имеется в виду применительно к аудиоклиру, не вполне ясно
Это наследие каких-то древних кейков. То ли в 4-ке, то ли в 6ке аудио клипы назывались Audio events и имели velosity!

Вот форум

http://forum.cakewalk.com/tt.asp?forumid=12

А это известные мне ресурсы

http://home.wanadoo.nl/t.valkenburgh/CAL.html
http://www.bikexprt.com/calfiles/index.htm
http://www.hexachord.net/cal/
http://www.prorec.com/prorec/downloads.nsf...62565E2001C06A1
http://www.ericvonbayer.us/music/#cal

Вот здесь есть программка CAL Editor

http://www.collusioninc.org.uk/index.php?p...page=sonarstuff

Кстати, тут поднимался вопрос об измерении выделенного участка. Эта тема очень близка. Если уж совсем никак с CAL'ом, то может быть можно сделать калькулятор? Водишь FROM и THRU in SMPTE и получаешь разницу.
 
Vovchik
В смысле, калькулятор для вычисления разницы в SMPTE? Который просто выдает разницу и ничего больше не делает?
Если я правильно тебя понял, то калькулятор такой несложно забацать, но лучше использовать какой-нибудь нормальный язык программирования. Если это действительно то, что тебе нужно, то могу нарисовать.
 
Ну как сказать, пойми меня правильно: не то чтобы позарез нужно, а хорошо бы иметь. Я думаю, не мне одному. Так что если найдется немного времени на это, мы все будем тебе признательны.
 
Vovchik
при соединении клипов встык в большинстве случаев появится щелчок т.к. конец предыдущей волны врядли совпадёт с началом новой (если только не режешь на уровне семплов что то типа sine и т.п. сигналов или предыдущий клип не заканчивается паузой), поэтому лучше всетаки на некоторое количество семплов наезжать на следующий клип чтобы получался кросфейд.
з.ы. мне тут пришлось недавно миксовать 2 часа музла, было наверно сотня клипов, без всякой привязки к темпу и гриду, так пришлось группы этих клипов таскать вперёд назад с помощью мыши и зума чтобы соединять без артефактов.
 
Возьми любой клип и разрежь где попало, не обязательно на zero crossing. Раздвинь получившиеся клипы. Теперь включи snap to clip boundaries и подтяни второй клип влево к первому. Никакого щелчка не будет, да и откуда ему взяться. А вот первый клип вправо ко второму никак не подтянешь.
 
Во 1х, клип у тебя разрезан неаккуратно. Если бы сделал так, как я описал, стыковка бы выглядела иначе. Если разрежешь в любом месте волны, хоть на пике, а потом составишь вместе - никакого щелчка не будет.
Во 2х, второй клип с кроссфейдом получился короче! А при точной работе с лупами это недопустимо.
 
Кстати, увы и ах, калы и калькуляторы не помогут в деле решения этой архиважной задачи :smile:
Для примера приведу скрипт, который перемещает (вернее, пытается это сделать) левый клип к правому:
;==============================
(do
(dword len)
(= len (- Now Thru))
(EditSlide From Thru 1 len 1)
)
;==============================
Перед вызовом скрипта нужно установить курсор ровно на левой границе правого клипа, а затем выделить только левый клип. Последовательность действий следующая:
1. включить snap to clip bondaries;
2. кликнуть вблизи от левой границы правого клипа; курсор устанавливается на левую границу, клип выделяется;
3. зажать Ctrl и кликнуть по тому же месту еще раз; клип развыделяется
4. не отпуская Ctrl кликнуть по правому клипу.
5. запустить скрипт.
Или еще один вариант:
;==============================
(do
(dword stime1 -1)
(dword slen)
(dword stime2 -1)
(dword move1)
(dword move2)
(int track)
(forEachEvent
(if (== Event.Kind WAVE)
(do
(if (== stime1 -1)
(= stime1 Event.Time)
(if (== stime2 -1)
(= stime2 Event.Time)
)
)
)
)
)
(getWord slen "Введи размер левого клипа: " 0 -1);
(= move1 (- stime1 (+ stime2 slen)))
(= move2 (- stime2 (+ stime1 slen)))
(if (> stime1 stime2)
(EditSlide stime2 (+ stime2 slen) 1 move1 1)
(EditSlide stime1 (+ stime1 slen) 1 move2 1)
)
)
;==============================
В этом скрипте нужно выделить оба фрагмента, запустить скрипт, и на его просьбу ввести размер левого клипа в тиках, (предварительно вычисленного при помощи скрипта, упоминавшегося Vovchic'ом выше).
Проблема состоит в следующем.
Минимальная единица, используемая в CAL - тик, минимальный размер тика равен 1/960 четвертой ноты. Даже если темп будет равен 1000 (максимальное значение), то и в этом случае длительность тика будет равна всего лишь 0,0625 мс. Однако, границы клипов могут располагаться с градацией около 0,02 мс. Таким образом, в зависимости от того, на сколько левая граница правого клипа не равна ровному количеству тиков, будет либо зазор между клипами, либо они будут наезжать друг на друга. Погрешность будет тем более велика, чем меньше темп.
Я уж не говорю о фреймах... Хотя, возможно, калькулятор может пригодиться для других целей.
Для начала привожу пример скрипта, который вычисляет размер выделенного фрагмента (только в том случае, если на его протяжении темп остается неизменным):
;===========================
(do
(dword e 0)
(dword tem)
(dword hr)
(dword min)
(dword sec)
(dword frame)
(= e (- Thru From))
(getInt tem "Введи темп: " 0 1000)
(if (> tem 0)
(do
(*= tem TIMEBASE)
(= min (/ e tem))
(-= e (* min tem))
(*= e 60)
(= hr (/ min 60))
(= min (% min 60))
(= sec (/ e tem))
(%= e tem)
(*= e 30)
(= frame (/ e tem))
(if (> (%= e tem) (/ tem 2))
(++ frame)
)
(pause "Размер выделения " hr ":" min ":" sec "." frame)
)
)
)
;===========================
На запрос скрипта нужно будет ввести текущее значение темпа.

[ADDED=Serg196]1130514475[/ADDED]
Vovchik
Кстати о неаккуратном разрезании клипов.
При разрезке границы в точности соответсвуют друг другу. Но если в дальнейшем применить тримминг, то разрезанные не на нуле границы искажают форму волны. У меня, по крайней, почему-то именно так.
 
Vovchik:
Во 1х, клип у тебя разрезан неаккуратно.
эт просто пример, резалось в сонаре без грида на глазок, потом вырезаный кусок удалялся, а оставшиеся сдвигались, я вообщето думал что утебя задача микс нарезать, а оказывается лупы.

кстати о лупах, я вот не понял для для какой цели такая функция вообще нужна, луп у тебя так или иначе привязан к темпу и гриду, если я режу например хет который играет в лупе со смещением и длится чуть короче шестнадцатой и хочу объеденить его с оставшейся справа частью лупа оставив в силе его неровность - включаю в гриде move by и тащу вправо, он оказывается точно с таким же смещением относительно ритма но в нужной мне доле (хотя скорее всего между этими клипами образуется небольшой зазор который на слух не будет заметен), а если же я по твоему способу присоеденю его к правому или левому клипу (т.е. без зазора) , то его смещение относительно ритма уже изменится на непредсказуемое и смысл операции потеряется т.к. удар этого хета будет вообще непонятно в какой доле и каким смещением.

з.ы. вобщем я практического применения твоей функции для лупов так и не смог найти (кроме случаев когда луп режется строго по сетке, но при перемещении вправо/лево они тогда и так будут встык),
поясни plz для чего она может быть нужна.
 
Originally posted by morjer
Vovchik
:))) Вот, сейчас придумал такой изврат...
Ставишь сетку, ну, допустим, в 1 такт, удлиняешь мышой правый клип до целого такта. Ставишь Snap to Boundaries, и точно перетягиваешь правый клип к левому. Снова ставишь сетку в 1 такт (Move To), выделяешь оба клипа и перетягиваешь их так, чтоб конец правого был там, куда ты его растягивал в первом действии. Вуаля...
Хотя может туплю, Сонара щас под рукой нет

Я не дочитал топика, если это уже неактуально, прошу простить. Склеить клипы в один можно выделив их, потом bounce to clip. Правда, так и не понял, имеем ли мы дело с аудиоклипами или midi. В аудиоклипы при этом вставляется тишина - сами аудиофайлы становятся больше размером.
 
Димекис Задунайский
Это не "не актуально", это просто не в тему. Речь идет не об объединении двух клипов в один, а об перемещении их таким образом, чтобы зазор между ними исчез.
 
Уважаемые Serg196, POOH и все кто откликнулся - спасибо за проявленное терпение и участие.
Я уже и сам слегка напуган тем снежным комом, который разросся из заданных мною невинных вопросов. Ведь всё, что я хотел - это просто притянуть один клип к другому, тем более, что в одной из ранних версий Кейквока это делалось запросто. И второе желание - в абсолютном времени измерить длину выделенного участка - согласитесь, это не есть нечто архисложное и небывалое. Я и не ожидал, что решения потребуют столь титанических усилий. Поневоле задумаешься, а стоит ли овчинка выделки. А весь сыр-бор из-за того, что в Сонаре не предусмотрели этих простейших функций почему-то.


Теперь о скриптах, любезно предоставленных Serg196 . При первом запуске они отказывались работать, сообщая о какой-то syntax error. Открыв текст в программке CAL Editor, я выстроил строки лесенкой (должен заметить, что никаких программистских знаний у меня нет, и делаю я всё методом ненаучного тыканья). После этого калы заработали - большое спасибо! Первый мне особенно нравится лаконичностью и простотой.

Первый я назвал MovRiteEdg2Now.cal. К вопросу о том, как поставить курсор точно на край клипа. Вот тут-то и вылезает баг. Когда я переключаюсь на clip boundaries, снеп не работает! Приходится переключаться обратно на measure, потом опять на boundaries, тогда начинает снепить. Предлагаю альтернативный способ: выделяем клип и жмем F7 - курсор встает точно на начало клипа.
Оба скрипта по перемещению клипов работают как задумано, за исключением ситуации, которую попробую описать.
Имеем два клипа с промежутком между ними. Режем первый ножницами где-нибудь. Получаем: 1-й и 2-й клипы без зазора - пустое место - 3-й клип. Применяем скрипт ко 2-му и 3-му клипам. Вот тут начинаются странности.
(Речь идет об аудио клипах)

Третий кал по замеру выделенного участка работает хорошо. Вот если бы еще учитывать изменения темпа... Но это я наверно много хочу.

Если я еще не совсем всех за@#$% этой темой, у меня есть еще пара-тройка идей насчет калов. :biglaugh:
 

Сейчас просматривают