Как лучше всего и быстрее всего разрезать аудиофайл с «фразами» и паузами между ними известной длите

2 Янв 2019
14
1
3

Здравствуйте.

Есть такая задача. Имеется аудиофайл (в wav), который содержит несколько «фраз» (в среднем около 300), разделённых паузами. Под «фразами» я понимаю партии музыкальных инструментов (семплы) (то есть, полезный сигнал). Все фразы записаны при темпе 90 BPM и размере 4/4, их длительность различная, но известна. Длительность пауз составляет 1 такт.


У меня два вопроса.

Первый. Как быстро разрезать этот файл (такой большой итем) на отдельные фразы (итемы), при условии, что длительность фраз и пауз между ними известна? Верно ли я понимаю, что это удобно выполять с помощью скрипта? Хотел бы обсудить

это подробнее. Я ни Python, ни Lua, ни какой-то там ещё ЯП, на котором пишется скрипт, не знаю. На псевдокоде он должен выглядеть «примерно» так:


A = массив интервалов вида [s1, p, s2, p, …, sn], где s1, s2, …, sn – длительность фразы в тактах (для долей надо умножить на 4, как я понял), а p = 1 (длительность паузы в тактах, для долей это 4).


цикл по массиву A (скорей всего это будет цикл for) (i = 1, 2, …, n)

отмерить A[ i ] тактов/долей и отрезать

конец цикла



Подскажите, пожалуйста, как должен выглядеть скрипт. Массив я сгенерирую сам. Если не сложно, напишите мне шаблон, пожалуйста.


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


Спасибо заранее.


P. S. Я прошу понятнее объяснять, у меня нет музыкального или звукорежиссёрского образования, а также в Reaper я (почти) ничего не понимаю.
 
Последнее редактирование:
@Вадим Мошев, я бы начал с установки SWS extension и использования экшна remove silence.
Кроме того, можно толчно подогнать bpm (если там прям тютелька в тютельку записано) и воспользоваться умным наименованием файлов для легкого экспорта.
Но вообще, как правило, руками что-то делать всегда приходится, это уже индивидуально.
 
  • Like
Реакции: Dimilyan
@PianoIst,
и использования экшна remove silence
Такой экшн удалит пустые итемы или тишину в исходном файле?


и воспользоваться умным наименованием файлов для легкого экспорта.
Мне кажется, здесь речь идёт о функции WildCards, в частности о шаблоне $itemnumber. Мне он не пригодится, так как у меня есть подготовленные имена в файле. Функция группового переименования в Total Commander себя уже хорошо зарекомендовала. Для этого, правда, нужно, чтобы фразы на переименование в поступили в том же порядке, в котором они были отрендерены. Для этого нужно, чтобы файлы имели такие имена с порядковыми номерами, чтоб их можно было отсортировать в порядке возрастания этих номеров. Чтобы обеспечить такие условия, порядковые номера должны состоять из одинакового количества цифр, которое определяется максимальным номером. С этом случае использовать $itemnumber не надо, так как он, насколько я понял, для первого номера использует две цифры, а если у вас фраз больше 99, то вы получите номера 01, 02, ..., 99, 100, 101. Если включить сортировку по имени в TC, то файл файлы будут отсортированы в лексикографическом порядке, что приведёт к тому, что порядок наименования будет нарушен. Поэтому, если на выходе после рендеринга хотите получить файлы, порядок сортировки по имени которых не зависит от способа упорядочивания, не используйте $itemnumber. Может, этот совет кому-нибудь пригодится.

@Slick,
Я бы выставил сетку и порезал по сетке одним разом.
Как это сделать? Динамическое разбиение? Мне с помощью него удалось лишь только приблизиться к желаемому результату, но точного получить не удалось. Например, после разбиения, количество тактов получалось дробным, а этого нельзя допускать.


А потом одним разом сократил паузы
А сжатие пауз что даст? Они же при рендеринге всё равно будут учитываться? Да и как их сжать одним разом?


http_://sws-extension.org/
Ссылка на всякий случай.
Спасибо.
 
@Slick, вот ссылка на запакованный wav файл, ссылка на яндекс диске: https_://yadi.sk/d/xdDwHKjllo5ocg
Темп: 90 BPM
Размер: 4/4
Между фразами пауза в один такт.

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

Вложения

  • 333.gif
    333.gif
    2,2 MB · Просмотры: 106
@Вадим Мошев, может проще это сделать в propellerheads recycle, он по транзиентам поставит маркеры, можно и вручную их выставить и откорректироват, а потом все это размеченное дело одним кликом сохранить в кучу отдельных вавок. Правда и пустоты/паузы так же сохраняются и придется потом эти файлы вручную отслушать и удалить. Я так делал, ниче страшного, несколько минут отняло.
 
В реапаке есть скрипты Script: me2beats_Split items with given length.lua
Я думаю, проще всего ставить маркеры или регионы при записи, потом Script: X-Raym_Split selected items at regions.lua, вручную удалить тишину, Xenakios/SWS: Reposition selected items..., удалить старые регионы. Если нужно отрендерить пофразно - выделить все айтемы - SWS/BR: Create regions from selected items (name by item's notes) - Render Project region.
Сейчас, проще всего сделать сплит через Dynamic split items по транзиентам, как пишут сверху. Если файл очень длинный лучше применять частями.
 

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