Humanize

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

Elle

Богиня
Команда форума
15 Фев 2006
5.428
5.076
113
Берлин
Сегодня понадобилось аккуратненько "очеловечить" партию.
К сожалению стандартный CAL скрипт, прилагающийся к Х1 помимо временных параметров нот модифицирует и велосити. К тому же этот скрипт работает так, что чем длиннее нота, тем сильнее её может "расколбасить" (не только по длине, но и по времени).
Меня всё это совершенно не устраивало, так как мне надо было всего лишь подвинуть времена туда-сюда, а велосити оставить существующие. Да так, чтоб нота длиною в такт не уехала чуть ли ни на 1/4.

В общем в итоге появился такой вот HumanizeTime.cal (см. аттач):
- двигает начало ноты рандомно максимум в пределах 1/4.
- максимальный сдвиг выставляется в % (например, если в одной четверти 960 тиков, а вводимое значение = 10%, то начальное положение ноты может максимум измениться на 96 тиков)
- аналогично изменяется длительность ноты

При значении по умолчанию = 5% получается всё оч и оч миленько.
Если будет завтра время, то сделаю ещё один скрипт, который будет модифицировать и велосити.
qttempgg7284.png
qttempwb7284.png

UPD:
вложение удалила, используйте HumanizeExT.cal из сообщения ниже
 
Последнее редактирование:
  • Like
Реакции: x.com, vijsolo и sadhak
ну.. в общем вот обновлённый результат, четыре скрипта:
  • HumanizeEx.CAL - изменяет и временные параметры нот, и велосити (настраиваются независимо)
  • HumanizeExQ.CAL - тож самое, но ничего не спрашивает, используя параметры по умолчанию из HumanizeEx
  • HumanizeExT.CAL - хьюманайзит тока по времени (т.е. то же, что и приаттаченное выше HumanizeTime, только кое-то подправила и добавила комментарии)
  • HumanizeExV.CAL - хьюманайзит тока велосити, не трогая временные значения нот

qttempho7284.png
qttempoh7284.png
qttempuy7284.png
 

Вложения

Последнее редактирование:
Спасибо, работает хорошо. Файлы "до" (no_ex) и "после" (ex_2_10) во вложении. Я использовал HumanizeEx с параметрами 2 и 10. Для меня первый параметр кажется несколько грубоватым - 2% маловато, 3% - многовато. А при бОльших значениях - сильно уж кривой результат. Поточнее бы это параметр...:blush:
 

Вложения

  • Like
Реакции: Elle
Для меня первый параметр кажется несколько грубоватым - 2% маловато, 3% - многовато. А при бОльших значениях - сильно уж кривой результат. Поточнее бы это параметр...
ага, сегодня вечерком сделаю так, чтоб 1000% - это была четвертная нота.. тогда будет целый разброс значений от 20 до 30 вместо 2 и 3. Точнее делать уже не имеет смысла, т.к. даже когда Timebase = 960 тиков на четверть, 1% будет округляться до 1 тика.
Ну и ещё я хочу поломать голову и сделать так, чтоб разброс нот был сконцентрирован ближе к указываемому значению, а не равномерно случайно распределён.
 
  • Like
Реакции: Kokarev Maxim
Тут ведь какое дело, гуманизация то оно ,конечно, хорошо, но вот как то смотрю и она уже и динамику СВОЮ прописывает, а это уже не хорошо
 
А в 8.3 будет работать?
это будет даже работать в Про Аудио 8 :)))))

Тут ведь какое дело, гуманизация то оно ,конечно, хорошо, но вот как то смотрю и она уже и динамику СВОЮ прописывает, а это уже не хорошо
именно поэтому я сделала вариант, который динамику (велосити) вообще не трогает: HumanizeExT.cal

Самая лучшая хуманизация, это хуманизация прописанная своими ручками.
безусловно, но иногда подобные скрипты существенно облегчают жизнь. У меня вот, например, была партия дудки. Я её продублировала на вторую дорожку и транспонировала на квинту. В итоге получила отличные "бэки" для азиатской дудки. Но, конечно, тот факт, что ноты начинались синхронно, живости не добавлял. В итоге я отхьюманайзила транспонированную партию и получилось как будто играет 2 дудки, но одну и ту же партию. А двигать совершенно спонтанно какждую нотку и её длительность в пределах 20 тиков... ну слишком уж заморочно..
 
  • Like
Реакции: IvanbI4 и Alien
Ну и ещё я хочу поломать голову и сделать так, чтоб разброс нот был сконцентрирован ближе к указываемому значению, а не равномерно случайно распределён.

(dword random_val 5)
(=random_val (random (- 0 max_time_offset) max_time_offset))
(= start_offset (/(* (- max_time_offset random_val) (+ random_val max_time_offset) ) max_time_offset )

или

(dword random_val 5)
(=random_val (random (- 0 max_time_offset) max_time_offset))
(= start_offset (/(* random_val random_val) max_time_offset))


Это параболическое распределение с максимумом в +max_time_offset, построено на основе формулы параболы (X-значение)(Х+значение)/(-значение) или X*X/значение (где X случайная велечина)

Если нужно +/- max_time_offset можно умножить на sgn(random_val) (жалко что в скриптах такой функции нет, придется писать через if)
 
  • Like
Реакции: Elle
Сэр Ёжик - (ворчливо) всё математика да математика.... А душа где?

Не не не, у математиков тоже душа есть ;) Бывает что чувство прекрасного ограничено только математикой, но это не мой случай...
 
А чем не устраивал MFX Quantize? Там есть режим Random. Я обычно им и пользовался, а для рандомизации велосити соответственно юзал другой МФХ.
 
  • Like
Реакции: Elle
А чем не устраивал MFX Quantize?
видимо, память мою, девичью, он не устраивал)))))))) мда.. правильно говорят: дурная головая рукам покоя не даёт...
(dword random_val 5)
(=random_val (random (- 0 max_time_offset) max_time_offset))
(= start_offset (/(* (- max_time_offset random_val) (+ random_val max_time_offset) ) max_time_offset )
тут где-то что-то со знаками напутано.. вместо (- max_time_offset random_val) должно быть (- random_val max_time_offset), чтоб соответствовало приведённой выше формуле.. но в целом, спасибо! а где можно про это распределение почитать? Что-то гугл мне пока не оч помощником в этом оказался, а лезть в пыльные мат. справочники как-то не оч хочется...
всё математика да математика.... А душа где?
в математике она тоже есть, особенно в мат и функциональном анализе, честно-честно))))))))))))))) когда это изучаешь, порой и не только о душе задумываешься)))))
 
Всегда прописываю динамику в ручную, даже если пользуюсь автоаккомпаниатором, потом всё равно всё прописываю своё, а уж где как ни в Боксе над этим подумали, но вот я такой человек:secret:
 
Elle'чка СПАСИБО тебе огромное за доброе дело !!!! Руками двигать, это лишний гемор и потеря большого количества времени. Только вот бестолковый я, не знаю куда это пихать ? :)))))))) С НОВЫМ ГОДОМ !!!!!!!!!
 

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