MK Slicer - lua скрипт для быстрой нарезки, квантования, триггеринга и не только

Kokarev Maxim

Rawker
13 Май 2007
5.850
5.271
113
44
Барнаул
recording-studio.ru
5jkmMRL.png


MK Slicer - это скрипт для быстрой нарезки, квантования по сетке, ре-грува и ре-квантования, триггеринга и сэмплирования аудио. Скрипт основан на работе нескольких ребят - его сердце, это Drum Trigger by eugen2777, функция экспорта в RS5k доступна благодаря работе MPL и Anton (MyDaw) который когда-то соединил эти два скрипта вместе и добавил ещё некоторой магии. Позже, я (с бесценной помощью всемогучего Archie) оптимизировал всё это, настроил, упростил интерфейс и добавил несколько удобных фич для быстрой и эффективной работы.

Features:

  • Продвинутый детектор. Благодаря фильтрам, вы можете брать транзиенты даже там, где они не визуализируются.
  • Быстрая нарезка и расстановка стретч маркеров (по транзиентам или по сетке)
  • Квантование по сетке в один клик. Без пауз, щелчков или искусствинного дублирвоания айтемов.
  • Возможность работы с мультитреками. Разрезание и квантование без изменения фазы, быстрои без боли. Айтемы в мультитреке будут автоматически сгруппированы.
  • Ре-Квантайз. Если квантовать с сеткой крупнее, чем шаг транзиентов, партии могут быть изменены до неузнаваемости. Хороший способ получить уникальный материал.
  • Сэмплирование и экспорт в RS5k одним кликом.
  • Старый добрый триггер. Простое конвертирование ритмических партий в миди паттерны с достоверной передачей velocity.
  • Продвинутый интерфейс. Интуитивное управление. Сброс значений слайдеров по Ctrl+Click. Смена операций на лету без потребности в Undo.
  • Адаптивные начальные настройки (thanks, Anton!). На старте, скрипт устанавливает Filtered Gain, Threshold, and Retrig в зависимости от материала и темпа проекта.
1jSucvA.gif


Системные требования:

Актуальная версия REAPER и SWS. Не тестировалась (но вполне может работать) со старыми версиями и на Мак.

Video 1 (Main):



Video 2 (Update):



Изменения в версии 1.3:


! MK Slicer (Non-Destructive) переименован в MK Slicer. Старый MK Slicer удалён.
+ Улучшена точность слайсинга
+ Улучшена точность MIDI Trigger
+ Новый слайдер Quantizing Strength
+ Новый слайдер Crossfades Length
+ Новый алгоритм Slice Quantizing. Теперь доступно квантование айтемов по сетке со свингом!
+ Дополнено управление
+ Новый алгоритм для кроссфейдов. Предварительная настройка SWS больше не требуется.
+ View Gain переименован в Filtered Gain, чтобы избежать недопониманий.
+ User Area (возможность установки собственных значений по умолчанию внутри скрипта):
Docked/Windowed Start
Esc to Exit (on/off)
MIDI_Base_Oct - Define Start octave for Export to MIDI Sampler
Default Crossfade Time in ms. (0 = Crossfades Off)
Default Quantize Strength in %. (0 = Quantize Off)
Default MIDI Mode (Sampler or Trigger)
Override Reaper option "Toggle auto-crossfade on split" (on/off)
Override Reaper option "Toggle enable/disable default fadein/fadeout" (on/off)

Инструкция по использованию:

1. Выберите айтем (или несколько) на одном треке. Скрипт не запустится, если айтемы находятся на разных треках.
2. Запустите скрипт.
3. Готово! Можно работать.
4. Для отмены действий, используйте Reset или просто Ctrl + Z. Сброс слайдеров до дефолтных: Ctrl + Click. Точная подстойка: Shift + Drag. Выход: Esc, Пробел - Play.

В окне с волноформой:
Mouswheel or Left/Right keys - Horizontal Zoom,
Ctrl(Shift)+Mouswheel or Up/Down keys - Vertical Zoom,
Middle Drag - Move View (Scroll),
Left Click - Set Edit Cursor,
Shift+Left Drag - Move Marker,
Ctrl+Left Drag - Change Velocity,
Shift+Ctrl+Left Drag - Move Marker and Change Velocity,
Right Click on Marker - Delete Marker,
Right Click on Empty Space - Insert Marker.


Альтернативный вариант:

1. Не выделяете айтемов перед запуском скрипта. Запускаете скрипт.
2. Выберите нужный айтем(ы) и нажмите кнопку "Get Item".
3. и т.д.

Работа с мультитреком:

0. Перед началом работы, я рекомендую создать guide item - обычно, это миксдаун бочки, снэра и томов. Этот айтем будет использован как "ведущий" для более точной работы детектора транзиентов. После работы вы можете удалить его.
1. Выберите (guide) айтем. Скрипт не запустится, если айтемы находятся на разных треках.
2. Запустите скрипт.
3. Выберите остальные айтемы в мультитреке - мышкой, или даже с помощью Ctrl+A - не важно. Рабочая область автоматически установится по длине айтема, который был выбран перед запуском скрипта.
4. Готово! Можно работать. При разрезке или установке маркеров, айтемы в мультитреке будут автоматически группированы.


Важно!

Чтобы механизм Reset работал корректно и операции на лету сменялись гладко, ВАЖНО, чтобы айтемы стартовали строго с начала такта. Это гарантирует комфортную работу без сюрпризов вроде внезапного сдвига партий после очередного квантования. Дополнительно, я не рекомендую изменять выделение айтемов или выполнять любые операции с ними, пока скрипт открыт. Так же, не забывайте сохраняться перед работой. Просто на всякий случай.

Иногда скрипт применяет Glue к айтемам. Это происходит, когда выделены несколько айтемов на одном треке и во время экспорта MIDI в режиме сэмплера.

Что делает кнопка Reset?
"Reset" сбрасывает айтем до исходного состояния. Фактически, это отмена операций Slice, SliceQ, Markers и MarkersQ. Так же, Reset работает каждый раз, когда вы нажимаете кнопки. Например, если вы нажмёте Markers после Slice, Reset незаметно сработает между ними: сперва айтем будет восстановлен, а потом будут проставлены маркеры.

Советы по улучшению производительности.
Скрипт довольно хорошо оптимизирован и быстро работает даже на слабых компьютерах, но есть некоторые вещи, которые необходимо знать.
Если у айтема изменён Rate, это заметно замедлит работу скрипта. На больших проектах, вы можете предварительно делать glue для айтемов с изменённым Rate для увеличения скорости работы.
Скорость скрипта также зависит и от размера проекта. Длинные партии и большое количество треков в мультитреке, могут сильно замедлить старый компьютер. В таких случаях, большие проекты лучше обрабатывать частями, по 30-60 секунд.


Рекомендации по настройке и использованию:

Настройки по умолчанию изначально установлены так, чтобы успешно детектировать транзиенты различного материала сразу, "из коробки".
Для перкуссии и струнных щипковых инструментов, поднятие Low Cut до 2500Hz и выше, часто работает хорошо.
Для мультитрека живых барабанов (Kick and Snare guide track), Low Cut 200Hz и Hi Cut 4500Hz.
Для самых низких звуков, таких как SubBass, SubKick или 808 bass, я рекомендую понизить Low Cut до 20-60Hz.
Цвета оригинальной и фильтрованной формы волны разные, таким образом вы сразу можете видеть, что именно поступает на детектор.
Имейте ввиду: настройки фильтров и уровней никак не влияют на звук, это только то, что поступает на детектор!

Sensitivity, Retrig и Reduce не самые важные настройки, но могут быть полезны, когда настроек Threshold и Filters не достаточно.
Если вам нужно больше чувствительности, уменьшите параметр Sensitivity. Порой, даже снижение всего на 1dB может помочь получить дополнительные транзиенты на тихих звуках. И наоборот - при увеличении параметра, чувствительность снижается.
Retrig как и предыдущий параметр, это вроде того же разрешения, но "по горизонтали". Если у вас есть лишние транзиенты рядом с основными, увеличение параметра позволит это исправить.
Reduce - простой инструмент для уменьшения количества транзиентов.

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


Скрипт доступен в ReaPack. Актуальная версия - 1.3.2


Этот скрипт создавался с максимальной самоотдачей и вниманием к деталям. Я буду рад, если он окажется полезен и найдёт место в вашем рабочем процессе. Лучший способ выразить вашу признательность и хороший мотиватор для поддержания проекта - это донат.

DONATION (PayPal)
DONATION (Yandex)
 
Я свежее 1.2.2 не могу найти, а где последняя?
Привет! В РеаПаке. Если старая, то нужно его синхронизировать, чтоб актуальную инфу с сервера взять - Extensions -> ReaPack -> Synchronize packages
 
  • Like
Реакции: Landre
Отличный скрипт, сколько намучался с динамик сплитом встроенным, а надо было всего лишь фильтры добавить, чтобы определял точнее.
НО, так и не понял зачем автоматически ставятся фейдыин и фейдауты при квантайзе? Мне это не нужно, если они мне понадобятся я и сам их могу сделать. Поэтому приходится выполнять кучу лишних действий, оффсетить левее чтобы фейдин не залез на волну, что приведет к тому, что после квантайза заранее смешенная волна будет играть с отставанием, после чего нужно снова всё сдвигать на глаз обратно.
 
Отличный скрипт, сколько намучался с динамик сплитом встроенным, а надо было всего лишь фильтры добавить, чтобы определял точнее.
НО, так и не понял зачем автоматически ставятся фейдыин и фейдауты при квантайзе? Мне это не нужно, если они мне понадобятся я и сам их могу сделать. Поэтому приходится выполнять кучу лишних действий, оффсетить левее чтобы фейдин не залез на волну, что приведет к тому, что после квантайза заранее смешенная волна будет играть с отставанием, после чего нужно снова всё сдвигать на глаз обратно.
Привет! Кроссфейды ставятся, чтобы не было щелчков на стыках. Если не нужны - не проблема, для этого есть ручка XFades. В нулевом положении фейдов не будет вообще. Если кроссфейды вообще не нужны никогда, есть настройка в User Area, внутри скрипта. Если поставить 0 для CrossfadeTime, то кроссфейды будут отключены всегда, при каждом запуске скрипта.
 
  • Like
Реакции: noshyn, Andruha и Andernik
есть настройка в User Area, внутри скрипта. Если поставить 0 для CrossfadeTime, то кроссфейды будут отключены всегда, при каждом запуске скрипта.
Можешь использовать функции: GetExtState / SetExtState что бы скрипт помнил этот параметр. Т.е. пошевелил слайдер, значения изменились и применяешь SetExtState (т.е. записываешь значения в память), а при запуске скрипта получаешь значения из GetExtState. (CrossfadeTime=GetExtState(.........))
P.S. Только Set оборачивай в какое нибудь условия, что бы запись происходила только тогда, когда значение изменилось, иначе если она будет постоянно писать, то это будет грузить комп.
 
Последнее редактирование:
Вот для примера, для параметра "XFades" сделал что бы значения запоминалось, так же можешь сделать для всех других параметров и еще кнопочку reset/default можешь добавить.
 

Вложения

Последнее редактирование:
  • Like
Реакции: Kokarev Maxim
Прошу прощения, в Реапаке в каком репозитории искать?
 
Вот для примера, для параметра "XFades" сделал что бы значения запоминалось, так же можешь сделать для всех других параметров и еще кнопочку reset/default можешь добавить.

Отлично, спасибо! Да ещё и с работающим примером! Круто! На досуге гляну, вроде фича вцелом многообещающая - можно будет между проектами легко квантайзить с теми же настройками, или просто вернуться к работе на следующий день и не перебивать настройки заново.


Прошу прощения, в Реапаке в каком репозитории искать?

Привет! Да проще поискать по названию скрипта, там по слову slice не так много вариантов :) РеаТим, как я понимаю, там по дефолту в РеаПаке есть.
 
1.3.3 уже в РеаПаке.

Появилось несколько новых Defaults в юзер ареа, ну, и самое главное - теперь плагин помнит позиции слайдеров Low и High Cut, Sensitivity, Offset, QStrength и XFades между сессиями. В очередной раз спасибо Арчи за идею и помощь в реализации :)
По моим быстрым тестам, реально стало значительно удобнее и не нужно лишний раз слайдеры трогать. Кстати, Defaults всё так же можно задавать и возвращаться к ним по Ctrl+Click.

Для адаптивных настроек (Filtered gain, Threshold и Retrig) пока всё без изменений - они зависят от материала и не восстановятся после перезапуска скрипта.
 
Для адаптивных настроек (Filtered gain, Threshold и Retrig) пока всё без изменений - они зависят от материала и не восстановятся после перезапуска скрипта.
И это абсолютно правильно и логично!
 
Продвинутый детектор. Благодаря фильтрам, вы можете брать транзиенты даже там, где они не визуализируются.

А у меня к Вам предложение есть. Я тут как-то выкладывал свою утилитку, которая очень хорошо ищет начала ударов в барабанных делах - https://rmmedia.ru/threads/135943/
Не желаете в свой скрипт добавить корреляционный способ? Я, если что, исходники и консультации все выдам.
 
@Kokarev Maxim, скрипт не сразу запускается а с некоторой задержкой, это так и должно?
Да, это норма. И, чем больше длительность аудио, тем больше задержка. Он анализирует аудио на старте. Так же, если менять настройки фильтров и трэшхолда, перестройка и прорисовка транзиентов так же, будет занимать какое-то время.


А у меня к Вам предложение есть. Я тут как-то выкладывал свою утилитку, которая очень хорошо ищет начала ударов в барабанных делах - https://rmmedia.ru/threads/135943/
Не желаете в свой скрипт добавить корреляционный способ? Я, если что, исходники и консультации все выдам.

Спасибо за предложение! Но я очень, очень плохой программер :D В этом скрипте код детектора писался Евгеном и я стараюсь эту часть кода обходить стороной - там всё довольно сложно.
 
А у меня к Вам предложение есть. Я тут как-то выкладывал свою утилитку, которая очень хорошо ищет начала ударов в барабанных делах - https://rmmedia.ru/threads/135943/
Не желаете в свой скрипт добавить корреляционный способ? Я, если что, исходники и консультации все выдам.
Дима, это нужно с Женей пообщаться. Я спрошу.
 
Но я очень, очень плохой программер

Я понял. Ну, к сожалению, плотно помочь (читай - написать этот код) я не смогу из-за нехватки времени.

Дима, это нужно с Женей пообщаться. Я спрошу.

Саша, да это, видимо, не сейчас. Я думал, можно обойтись буквально часовой консультацией на пальцах, а так - откладываем в долгий ящик.
 
  • Like
Реакции: Kokarev Maxim
А где можно глянуть?
 
Саша, да это, видимо, не сейчас. Я думал, можно обойтись буквально часовой консультацией на пальцах, а так - откладываем в долгий ящик.
Если Женя откликнется, то так возможно и будет.
 
1.3.4
+Улучшена масштабируемость шрифтов при изменении размеров окна (особенно, растягивании по ширине)
+ Скрипт теперь помнит последнюю позицию в доке. Но, возможно, при самом первом запуске придётся засунуть в док вручную.
 
@Kokarev Maxim, при попытке сэмплирования получил ...Scripts\ReaTeam Scripts\Items Editing\cool_MK Slicer.lua:3579: bad argument #1 to 'GetActiveTake' (MediaItem expected). Это после нажатия кнопки "midi". Что я мог сделать не так? Открываю RS5K - там всё в сборе, как говорится)) То есть нарезано и расставлено. Но сам миди тэйк не случается.
 
  • Like
Реакции: Kokarev Maxim
@Kokarev Maxim, при попытке сэмплирования получил ...Scripts\ReaTeam Scripts\Items Editing\cool_MK Slicer.lua:3579: bad argument #1 to 'GetActiveTake' (MediaItem expected). Это после нажатия кнопки "midi". Что я мог сделать не так? Открываю RS5K - там всё в сборе, как говорится)) То есть нарезано и расставлено. Но сам миди тэйк не случается.
Нашёл сам, возможно пригодится не только мне. Эта ошибка вылазит, если включена опция - Options: Toggle trim behind items when editing. Что в принципе логично))) Мне кажется, это можно решить в коде.
 

Вложения

  • Trim.gif
    Trim.gif
    1,5 MB · Просмотры: 397
Последнее редактирование:
  • Like
Реакции: noshyn и Kokarev Maxim
Что в принципе логично
Нет не логично, скрипт должен проверить есть ли тейк и если есть, то выполнять код далее, а если нету, то не выполнять какой то код.
1. Мне кажется что было бы логичнее, что бы миди с семплерами создавались на новом треке, а не на этом же.
2. Хотелось бы что бы сброс значений (который происходит по ctrl+клик) происходил бы по двойному клику
3. Хотелось бы что бы окно скрипта запоминало свое положение и открывался в том же месте при следующим запуске.
4. В режиме сэмплирования если семплов больше 127, то надо бы создавать новый трек и продолжать на нем или стопорится и не добавлять больше сэмплеры и ноты.
 
Последнее редактирование:

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