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

  • Автор темы Автор темы Dan3D
  • Дата начала Дата начала
Всё работает! До чего приятно, черт возьми, наблюдать работу профессионала :beer:

Ну что ж, понемногу коллекция ценных калов пополняется. Актуальной остается тема работы с темпом. А именно:

1) изменение темпа в таком проекте, где есть ускорения и замедления. Например, начинается вещь в темпе 90, потом замедляется до 70, потом ускоряется до 100. Надо изменить весь темпо-трек так, чтобы начальный темп стал 94. Функция Fit To Time позволяет это сделать, но попасть в нужный темп мне с ее помощью еще ни разу не удалось. Тот скрипт, что ты давал, Scale Tempo, так вроде до ума и не довели, во всяком случае, он у меня не работает. Потом еще такой момент. Fit To Time, насколько я понимаю, меняет все темпы в процентах. Альтернативный метод мог бы заключаться в том, чтобы изменить все темповые значения на определенную величину. В нашем примере, если даже подобрать New Thru опытным путем, чтобы начальный темп стал 94, то следующий темп 70 превратится в 73.11, а 100 станет 104.45. Вот если б можно было просто прибавить ко всем темпам 4, - это было бы и логичнее, и музыкальнее. В Кубейсе это можно делать, выделив все пойнты темпо трека и тащить их мышью вверх-вниз. В Сонаре, видимо, это представляет большую проблему.

2) рисование нелинейных замедлений/ускорений. Как я уже говорил, если подобрать замедление так, чтобы оно звучало естественно, неизбежно получается некая кривая.

tempocurve2.gif


tempocurve.gif


Если б можно было задать начальный и конечный темп, а также как часто вставлять изменения...

Мечтать не вредно! :biglaugh:
 
Vovchik:
Вот если б можно было просто прибавить ко всем темпам 4, - это было бы и логичнее, и музыкальнее.
насчёт логичности и музыкальности - сомневаюсь, например начало трека 100 bpm, а конец 200 bpm, т.е. темп меняется ровно в два раза, если изменять темп на какое то фиксированное количество, например на 50, то в итоге получится начало 150, а конец 250, т.е. темп поменяется не в два а в 1.66 раза.
 
Ну может и так. В любом случае, так или иначе, удобного инструмента для этого в Сонаре нет. Что не есть хорошо. :biggrin:

Я недавно в фолдер рабочих калов добавил несколько для быстрого квантайза и для перемещения курсора.

"Quant1" квантирует целыми, "quant1dur" - квантирует еще и окончания нот, если это надо. Соответственно, quant2 - для половинных и т.д.

"durfix" задает всем выделенным нотам определенную длительность.

Я посадил их на цифры: 1- целые, 2 - половинные, 3 - восьмые триоли (годится так же и для 4-х триолей), и т.д., 6 - шестнадцатые. Те же цифры, но с шифтом квантируют концы нот тоже. На цифры с контролом я посадил durfixы, т.е чтобы превратить все выделенные ноты в 16-е, надо нажать Ctrl+6 тем самым запустить durfix16. Таким образом, быстрый квантайз и управление длительностями нот происходит с клавиатуры.

Там лежат еще два кала для перемещения курсора. Я привязял их к плюсу и минусу на numpad, как в кубейсе. Они двигают курсор с шагом в 16-ю, но можно подставить другие цифры и изменить шаг.

(PS я конечно не сам эти калы делал, нашел в сети. Вернее, нашел образцы и подставил нужные значения)

[ADDED=Vovchik]1135618807[/ADDED]
Serg196:
Но это, пожалуй, после Нового Года.
Ну конечно, отдохни, отпразднуй, и - с новыми силами...! :biglaugh:
 
NRPN calculator

Одна из сильных сторон Сонара - он позволяет легко манипулировать синтезаторами с помощью NRPN, - достаточно создать envelope с соответствующим номером. Некоторые сложности возникают, если в мануале синта NRPN указаны в формате "MSB/LSB". В этом случае может помочь формула:

NRPN=MSB*128+LSB

В том случае, если ломает тыкать в калькулятор, :biglaugh: можно воспользоваться Studioware Panel.
 
Последнее редактирование модератором:
Vovchik:
Одна из сильных сторон Сонара - он позволяет легко манипулировать синтезаторами с помощью NRPN, - достаточно создать envelope с соответствующим номером.

А вот перенести данные, прописанные обычными контроллерами, в сообщения NRPN это только ручками можно? Или есть в Сонаре боле продвинутый способ? Ведь обычно на клавах пишутся сообщения обычных контроллеров и хочется их не искажать...
 
Перевести контроллер в NRPN, при условии, что он прописан как envelope, - очень просто: Assign Envelope.
Если же контроллер прописан как MIDI Events в треке, то превратить его в NRPN, кажется, нельзя. Для подобных превращений есть CAL (во вложении), он превращает контроллер в другой контроллер или в aftertouch или в pitch wheel, и наоборот. Можно ли сделать скрипт для работы с NRPN - надо спросить у Serg196.
В крайнем случае можно сделать так: превратить миди контроллеры в энвелоп, а потом этот энвелоп переассигновать на NRPN.

Другой вопрос: зачем всё это нужно. Если синт легко управляется контроллерами, так и надо делать. Ведь NRPN обычно нужны для доступа к тем параметрам, которые простыми контроллерами достичь трудно, или вообще нельзя. Всё зависит от дизайна инструмента.
Вот ты какой именно синт имеешь в виду?
 
Vovchik:
Другой вопрос: зачем всё это нужно.

Я работаю с готовыми миди, набитыми на клавишах, ессно с контроллерами, которые надо переназначать под конкретный синт, например Контакт. Потому и спросил...
 
А, ну ясно. Тогда вот еще несколько скриптов для работы с контроллерами.
 
А я что-то не нашел Nrpn в списке ивентов, с которыми работает Cal. Может, плохо искал. (Уже стихами заговорил. Тут заговоришь...)

Я не знаю, нужен ли вообще конвертер Cc-nrpn в наши дни, когда есть энвелопы, управляющие всем и вся.
 
А я что-то не нашел Nrpn в списке ивентов, с которыми работает Cal
Неудивительно - RPN, NRPN, WAV и много других событий почему-то недокументированы, хотя скрипты их использующие работают.
 
Просьба к знатокам програмирования Cal!

Просьба к знатокам програмирования CAL! Не могли бы вы на досуге :biggrin: сочинить такой CAL, чтоб назначать енвелопы volume и pan на клип а не на весь трек, я б назначил их на какую либо горррячую клавишу и горя б не знал!:help:
 
Последнее редактирование модератором:
CAL не поддерживает практически работу с Envelopes. Уж тем более с их включением/выключением... а вообще я сама такую штуку оч хочу....
 
<div class='quotetop'>QUOTE(\"Osman\")</div>
чтоб назначать енвелопы volume и pan на клип а не на весь трек[/b]
а чем неустраивают встроенные Clip Pan & Clip Gain? это теже энвелопы панорамы и громкости для каждого клипа.
 
а чем неустраивают встроенные Clip Pan & Clip Gain? это теже энвелопы панорамы и громкости для каждого клипа

Долго назначать-правой кнопкой на клип, потом envelope-greate clip envelope-gain ежели этих клипов в проекте под сотню и боле прикинь скока времени уходит, специфика работы такая пишу, практически по слогам, мммммаааааамммммаааааа!!!!
 
Osman
еси по слогам в прямом смысле (т.е. вокал), то идеальный выход - V-Vocal!! Он в этом смысле просто идеален. Ну разве что панорамки тамочки неть... зато громкость просто иделаьно подстраивать!
 
Originally posted by Elle
Osman
еси по слогам в прямом смысле (т.е. вокал), то идеальный выход - V-Vocal!! Он в этом смысле просто идеален. Ну разве что панорамки тамочки неть... зато громкость просто иделаьно подстраивать!
надо буде трек боунсить а то на все кусочки ввокалов не напасешся-а так как ввокал имеет привычку фленжерить, не хотелось бы применять его к более или менее удачным руладам:biglaugh:
Все равно спасибо за участие!
 
Osman
ничего он не флэнжерит - аккуратнее надо просто ;)
 
более или менее удачным руладам

Это что-ж за удачные рулады такие, в которых надо каждому клипу назначать свой Pan? Имхо, менять вокалиста надо срочно.
А для Gain - почему обычный компрессор не годится?

Osman
Что-то неладное у вас там творится по большому счету. Тут никакие САL' ы не помогут.
 
<div class='quotetop'>QUOTE(\"tarzan\")</div>
Имхо, менять вокалиста надо срочно[/b]
Не ладно чтой-то в королевстве Датском!
Увы не мы вокалистов выбираем а они нас-кто пришел того и пишем, конечно компресор пользуем, иногда даже дважды, не помогает, а панорамки назначать надо бывает на на клипы бэков и тд, соответственно вокалистам попадаются и бэк вокалисты:))


Elle
Фленжерит и еще как, как и все подобные проги, кто больше а кто меньше.

Спасибо.
 
По ходу дела выяснилось, что скрипт некорректно работает, если количество тиков на четвертую ноту отличается от 960.
Путем проведения ряда несложных тестов выяснилось, что виноват интерпретатор CAL, который некорректно применяет значение TIMEBASE (количество тиков на 1/4) при указании границ выделения. При этом CAL считает. что количество TIMEBASE всегда равно 960.
Например, имеем 1/4 ноту в начале второго такта при размере 4/4. Выделяем ее (начало выделения совпадает с началом ноты).
Устанавливаем TIMEBASE (в меню option->project) равным 960.
Запускаем небольшой скрипт:

;=====
(forEachEvent
(if (== Event.Kind NOTE)
(pause "Event.Time=" Event.Time ", From=" From ", TIMEBASE=" TIMEBASE)
)
)
;=====

Скрипт по-очереди перебирает все события в миди-треке. Если событие - нота, то он выводит на экран значения event.time (позицию начала ноты), From (позицию левой границы выделения) и TIMEBASE (количество тиков на четверть).
После запуска скрипт должен вывести следующую строку:

Event.Time=3840, From=3840, TIMEBASE=960

Отсюда видно, что позиция ноты и начало выделения равны, кроме того, их значение равняется действительному количеству тиков (3840 = 960*4).

Теперь устанавливаем значение TIMEBASE равным, скажем 48 тик на четверть.
Теперь вышеприведенный скрипт выдаст следующую строку:

Event.Time=192, From=3840, TIMEBASE=48

Видно, что позиция начала ноты соответсвует действительному количеству тиков (48*4 = 192), а позиция начала области выделения считает, что количество тиков по-прежнему 960.

Отсюда вывод: для корректной работы скриптов, в которых применяются операции с границами выделения (это переменные From - левая граница и Thru - правая граница) следует корректировать их значения таким образом, чтобы количество тиков на четверть равнялось равным 960.
Например, строку вида

(= From left_selection) ; здесь левая граница выделения устанавливается в значение left_selection.

следует заменить на:

(= From (/ (* left_selection 960) TIMEBASE)) ; здесь значение левой позиции
;предварительно приводится к TIMEBASE, равной 960, для чего оно последовательно умножается
;на 960, а затем делится на текущее значение TIMEBASE

При чтении значения из переменных From и Thru следует поступать обратным образом.

В качестве иллюстрации прикрепляю модифицированный скрипт для склейки, который работает независимо от значения TIMEBASE.
 
2 Serg196

Не будете-ли Вы так любезны ещё раз выложить модифицированные скрипты по склейке. В 2005 меня здесь к сожалению не было. :unsure:

Может существует какой-либо банк со скриптами?

Интересно, а нельзя как в CAD программах сделать инструмент (кнопку) и назначить на него САL?
 
lespolov
Пардон, модифицированный скрипт по склейке я выложил пару дней назад.
Или ты имеешь в виду скрипт, в котором можно указывать расстояние между склеиваемыми нотами?
Если да, то достаточно открыть скрипт любым текстовым редактором и раскомментировать строку, которая начинается "(getInt ...". Раскомментировать - это значит удалить точку с запятой в начале строки.

<div class='quotetop'>Цитата</div>
Может существует какой-либо банк со скриптами?[/b]
А что конкретно интересует?
В сети имеется немало полезных (и не очень) скриптов (адреса не худо бы спросить у Vovchika; я предпочитаю набросать их (скрипты) самостоятельно, нежели рыться в инете в поисках подходящего, тем более, что случаи, в которых нужно применение автоматизации, чаще всего достаточно нетривиальные).
Могу выложить "джентельменский" комплектик, которым часто пользуюсь (до дома бы только добраться). В нем есть скрипты для быстрого транспонирования на тон и октаву вверх/вниз, уже упомянутые здесь для склейки и резки нот, скрипты для обращения аккордов, а также выделения басовой линии. Есть еще несколько специфических скриптов, написанных "по случаю", и с тех пор пылящихся на диске.
Почти все они были выложены в свое время на этом форуме (набери в поиске "скрипт", может, они еще лежат).
Впрочем, об этом лучше, пожалуй, попросить Vovchikа, он у нас активный каловод. :)

<div class='quotetop'>Цитата</div>
Интересно, а нельзя как в CAD программах сделать инструмент (кнопку) и назначить на него САL?[/b]
Кажется, нет; впрочем, не вижу здесь причины для особой печали, поскольку тулбары и так перегружены самыми разнообразными (и одновременно нужными) кнопками, поэтому я предпочитаю пользоваться шорткатами, да и работать клавиатурой (имхо, конечно же) несколько быстрее и удобнее.

зы Кстати, в свете обнаруженного глюка надо бы пересмотреть скрипты на наличие трабла-960. Я, правда, не вижу причины, по которой требовалось бы использовать иное значение TIMEBASE, нежели 960 тиков на четверть.

ззы И еще. Язык CAL, в общем-то, весьма несложен (другое дело, что из-за его примитивности приходится извращаться для организации прстейших действий). Советую потратить немножко времени на его изучение, а затем пользоваться возможностями по автоматизации, любезно предоставленными разработчиками Сонара (несколько убогими, надо сказать, возможностями, но, все же)...
 
Здесь с разрешения Serg196 я выложил некоторые его калы с комментариями

http://forum.cakewalk.com/tm.asp?m=961016&...cal&#962075

http://forum.cakewalk.com/tm.asp?m=959635&...cal&#959635

Не вижу смысла менять разрешение с 960-ти на какое-либо другое. Раньше, в Кейквоке, я использовал 120, начиная с Сонара перешел на 960. Поначалу было неудобно, потом привык.

Для поиска калов достаточно набрать в гугле Cakewalk CAL.
 
<div class='quotetop'>Цитата</div>
... выложил некоторые его калы...[/b]
Благодарю покорно, что не выложил что-либо иное! :)

Кстати.
В скрипте для выделения басовой линии рекомендую изменить значение по умолчанию 30 в строке

(int fw_step 30)

(в самом начале скрипта) на 1000. Строка должна выглядеть так:

(int fw_step 1000).
<div class='quotetop'>Цитата</div>
Раньше, в Кейквоке, я использовал 120, начиная с Сонара перешел на 960. Поначалу было неудобно, потом привык.[/b]
Интересно, в чем конкретно это неудобство выражалось?
Я вообще не замечаю никакой разницы.
ИМХО, это чисто технический параметр, не имеющий к музыке практически никакого отношения (в отличие от размера сэмпла аудиоматериала. который находится в обратной зависимости от частоты дискретизации).
 
Удобство заключалось единственно в цифрах, выражающих длительности и позиции нот. 120, 60, 30 - четверти, восьмые, шестнадцатые, 40, 20 - триоли и секстоли и т.д., то есть числа простые и наглядные.

Спасибо за поправку в скрипте. Относится ли это также к скрипту для выделения мелодии?
 
<div class='quotetop'>Цитата</div>
Спасибо за поправку в скрипте. Относится ли это также к скрипту для выделения мелодии?[/b]
Ваще-т, наверно, не обязательно.
Кроме того, в скрипте для выделения мелодии этот параметр запрашивается при запуске скрипта (не помню точно, что спрашивается, что-то про "forward"). Эта строка указывает, какое значение будет по-умолчанию.
Кстати, в скрипте для выделения мелодии есть строка (примерно так двадцатая сверху)

(getInt fw_step "че-то про forward" 0, 99).

В ней, собственно, и запрашивается значение этого параметра.
Здесь предпоследнее число в строке означает минимальное значение, которое можно ввести с клавиатуры, а последнее - максимальное. Вот его я бы порекомендовал увеличить бы так тысяч до десяти. На всякий случай. :)

Кстати, в скрипте для выделения баса есть такая же строка, только она закомментирована. Если ее раскомментировать (удалить точку с запятой в начале строки), значение параметра fw_step тоже будет запрашиваться при запуске скрипта.
 
Скачал, спасибо. Теперь Сонар меня почти полностью устраивает ;) а то было какое-то чувство ущербности.
 

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