Cakewalk Application Language (CAL)_Создание, применение, проблемы

  • Автор темы Автор темы Dan3D
  • Дата начала Дата начала
Vovchik
Скачал. Спасибо. Будет время - попробую написать.
Кстати, спасибо за вопрос - натолкнул меня на одну мысль (долго думал, как автоматически увеличить темп проекта, в котором темп все время меняется, хотел уже здесь помощи просить). Надо будет при помощи кала (о господи! ну что за сокращение они выбрали!) попробовать. Все таки, действительно, правильно поставленный вопрос содержит в себе большую часть ответа.
 
Originally posted by Serg196
как автоматически увеличить темп проекта, в котором темп все время меняется
Ну, для этого кал не нужен, все просто. Выделяем регион, идем в Process > Fit to time. Выставляем новое конечное время и радиокнопку Modify by changing tempo map.
 
Увы, в четвертом сонаре у меня этот метод работает обратно: вместо того, чтобы увеличивать темп, он его уменьшает. Я уже писал здесь об этом глюке. Неужели у кого-то работает нормально?
 
Извини конечно за дурацкий вопрос: ты New Thru правильно выставлял? Чтобы темп уменьшить, конечное время надо увеличить. И наоборот.
 
Vovchik
Ура! Попробовал - получилось! Спасибо за совет тебе и Antonio.

ты New Thru правильно выставлял
Н-ну... вроде, правильно. Раньше-то все норрмально было, в смысле, в третьей версии сонара. Но там я пытался подогнать темп под вавку. ROMiK не даст соврать, у него тоже не получалось это сделать. У тебя получается? Правда, это было пробовано еще в версии 4.01 (которая у меня и сейчас стоит).
 
Версия тут ни при чем. По идее порядок действий такой:

допустим, вставили аудио клип, длина которого известна, например, 8 тактов. Тут главное точно выверить начало и конец клипа. Если это просто кусок музыки, а не драм луп, надо найти первую долю и подогнать ее к тактовой черте и поставить там якорь. В общем, выяснить тактовую структуру аудио материала. Теперь выделяем в клипе кусок, равный целому числу тактов и смотрим, где заканчивается выделение. Только не в тактовой шкале, а во временнОй. Это время можно просто скопировать. Теперь выделяем 8 тактов в тактовой шкале, Fit To Time и см. выше.
 
Vovchik
Теперь понял. Спасибо.
С меня еще одно виртуальное пиво. :)
:beer:
Замечу, правда, если это касается миди-данных, то так и удобно делать. А вот подгонять темп под аудио... Разве в прежних версиях не наоборот надо было делать (тому, как ты описал) Может быть, я ошибаюсь, но мне кажется, раньше я выделял целое число тактов в муз клипе, а затем в фит ту тайм ставил желаемое количество этих самых тактов.
 
Так ты что, аудио растягивал? Или ты говоришь про миди клипы? Чёт торможу я сегодня...
Только что поковырялся в сонаре - твой способ не смог применить. Конечное время в тактах и битах хорошо указывать, если надо миди клип растянуть/сжать под имеющийся темп. Допустим, имеется миди клип, про который известно, что в нем ровно 4 такта, но темп меньше, чем в сонге. Подгоняем начало клипа к первой доле любого такта, например, 5-го. Закончиться он должен на 1-й доле 9-го такта, а он заканчивается не на 1-й доле, а где-то посередине 9-го такта. Выделяем клип, идем в Fit to time, переключаемся на тактовый формат и пишем конечное время 9:01:000. Радиокнопка "Event Times".
 
Originally posted by Serg196
Vovchik
Скачал. Спасибо. Будет время - попробую написать.
Вот здесь есть CAL tutorial и несколько очень полезных скриптов. Например, "melody" как раз имеет отношение к теме - выделяет верхний голос из полифонии. К сожалению, эта штука сработала у меня только один раз. Недолго музыка играла...

http://web.archive.org/web/20010202124900/...w.cal.pyar.com/

Некоторые калы скачиваются только в виде текста.
 
Vovchik
Не бери в голову, разобрался уже, в чем была ошибка (это насчет фит ту тайма).
За ссылку пасиба, извини, никак время не могу выделить на написание (хотя там, ваще-то, полчаса достаточно, ежели не слишком сложный алгоритм)...
 
Да выдели нужные для обращения аккордов ноты в пианоролле, и скопируй на другой трек. В этом треке поменяй звук на нужный в этой тесситуре.
Да вообще это не такая тема чтобы без пива... . Я вот парюсь Generic Surface, что-то не настраивается с крутилками M-Audio Radium 49.
 
1 выделяй с макс. минусовым разрешениемЮ если рамочкой с CTRL.
2 если барабаны то вообще нет проблем, выделяй клавишей копируй на др. трек, меняй ноту и подставляй программный DXI VSTI барабаны. Это вообще удобно, набираешь и GM, XG, GS, а все нравится,и раскидывай таким макаром на софтовые с любой раскладкой.
Удачи! :smile:
 
Scale Tempo CAL

Нашел у себя CAL для изменения темпа. Вернее, их четыре, все должны лежать вместе. Когда-то они работали, не помню в какой версии, но в 5-ке - нет. Может, кто-нибудь сможет разобраться, в чем дело? Вещь полезная.

-------------

Не получается прикрепить zip. Что делать?
 
Последнее редактирование модератором:
Vovchik
выкладывай на рапидшаре, мегааплоаде и прочих подобных сайтах.. думаю и вебфайл подойдёт - там ведь от силы пара килобайт
 
Разрезание и склеивание нот

Обращаюсь к знатокам программирования. У меня есть CAL для разрезания нот @ Now time. Привязанный к горячей клавише, он бывает очень удобен. Тыкаешь в ноту там, где надо разделить, и запускаешь CAL. Я назначил его на Y.

(forEachEvent
(if (&& (== Event.Kind NOTE) (< Event.Time Now))
(do
(insert Now Event.Chan NOTE Note.Key Note.Vel (- Note.Dur (- Now Event.Time)))
(= Note.Dur (- Now Event.Time))
)
)
)


Вопрос в том, есть ли обратный CAL для склеивания нот, и если нет, трудно ли его написать? Я имею в виду стоящие рядом ноты одинаковой высоты.
 
Последнее редактирование модератором:
CAL, как и любую команду, можно привязать к любой горячей клавише. В этом-то весь смысл. Я использую CALs довольно активно. Вот некоторые из них:

прибавить/убавить velocities выделенных клипов или нот

транспозиция на полтона и октаву вверх/вниз

удвоение в октаву опять же вверх/вниз

квантизация на скорую руку, привязано к цифрам на основной клавиатуре. 1 - целыми, 2 - половинными, 3 - восьмыми триолями, 4 - четвертными и т.д.

управление длительностями нот - сделать все выделенные ноты/клипы нужной длительности. Привязано тоже к цифрам, но с CTRL - CTRL+6 превращает все ноты в 16-е, CTRL+8 - в восьмушки и т.д.

Ну и еще несколько. Все они назначены на шорткаты, кроие тех, что используются редко.
 
Vovchik, я обязательно с CAL'ом разберусь! Сейчас просто немного некогда, завтра вечерком сяду копаться. :super2:
Так что ворвёмся. :smile:
 
Чувствую, что скрипт должен быть несложный, но моей соображалки не хватает, чтобы сделать. Например, имеем две ноты:

___ ____

выделяем первую, запускаем Cal и получаем:

__________

то есть то, что в Кубе делает клей.
 
Проблема решена, помогли добрые люди. Я обратился на кейковский форум, посвященный CAL, и получил вот это:


;;------------------------------------------
;; _Notes_Glue.CAL, by Serge Daigneault 2005
;; Combine similar notes

(do
(dword StartTime From)
(dword FromTime 0)
(dword ToTime 0)
(int NoteKey 0) ; Note Key
(int NoteDur 0) ; Note duration
(int Found 0)

(while (!= 5 Found)
(do
(= Found 0)

;; Get the primary Event.Time and Note.Key

(forEachEvent
(do
(if (&& (== Found 0) (&& (== Event.Kind NOTE) (> Event.Time FromTime)))
(do
(= FromTime Event.Time)
(= NoteKey Note.Key)
(= Found 1)
))

;; Find the next note

(if (&& (== Found 1) (&& (== Event.Kind NOTE) (> Event.Time FromTime)))
(do
(= Found 2)

;; Verify the note value, if ok delete that similar note and calculate the duration gap

(if (== Note.Key NoteKey)
(do
(= Found 3)
(= ToTime (+ Event.Time Note.Dur))
(delete)
))
))
))

;; Return to the primary note and resize the note duration

(forEachEvent
(do
(if (&& (== Found 3) (&& (== Event.Kind NOTE) (== Event.Time FromTime)))
(do
(= Note.Dur (- ToTime Event.Time))
(= Found 4)
))
))
(if (== Found 0) (= Found 5)) ;; Ending when last note is reached
))
(= From StartTime)
)
;; The End
;;------------------------------------------



Я посадил этот скрипт на шорткат CTRL+G. (от слова glue)
Выделяем две ноты, жмем CTRL+G.
 
Описанный выше скрипт для разрезания нот имеет один недостаток - для его правильной работы нужно выделять только те ноты, которые находятся на линии разреза. Если его видоизменить до следующего состояния:

;**********************************************
(forEachEvent
(if (&& (&& (== Event.Kind NOTE) (< Event.Time Now)) (> (+ Event.Time Note.Dur) Now))
(do
(insert Now Event.Chan NOTE Note.Key Note.Vel (- Note.Dur (- Now Event.Time)))
(= Note.Dur (- Now Event.Time))
)
)
)
;**********************************************

то появляется возможность выделять любое количество нот, в том числе те, которые не находятся на линия разреза. Теперь разрезать можно прямо из трека, выделив нужный миди-клип, и установив курсор в нужное место.

[ADDED=Serg196]1130607746[/ADDED]
Vovchik
Кста, спасибо за скрипт про склейку.
 
не понимаю, это топик дерматологов или хирургов ?
с одной стороны калл, а с другой стороны разрезают и склеивают.

боюсь я Вас.
Вот приду я завтра в больницу... а там врачей уволили, поставили роботов хирургов списаных с звукостудий. ВОт вошьют они мне какой-нибудь реверб или дилей в живот. и что я буду делать ?
Как в туалет ходить ? и что из меня будет выходить ? то что cal я понял а вот по какому алгоритму ?
 

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