Хочу странного

Аудио и видео 6354 просм. 14 сообщ.

День добрый, господа-товарищи!
Шарахаясь по интернету в поисках ответов на свои вопросы, набрёл на ваш форум. Почитал. Появилась надежда. Пишу.

Преамбула.
В качестве хобби я занимаюсь коллекционированием музыки (типа меломан).
Я не из тех коллекционеров, которые тащат всё и борятся за полное соответствие того, что лежит у них на винте тому, что продаётся в магазине - когда я вижу плохо оцифрованный винил или "псевдо-ремастер" или ещё какую гадость, моя душа не может этого перенести и я хватаюсь за аудиоредактор.
С 94-го года моей основной системой была IBM OS/2. Я - обычный пользователь.
Нужные мне задачи были отлажены на базе самописных REXX-скриптов и нескольких консольных программ.
Алгорим работы следующий: преобразование flac -> wav, нарезка wav по cue-файлу, анализ наличия пауз между треками, убирание лишних пауз там, где это требуется, нормализация, енкодинг (если надо) или создание DAO-Image.
Месяц назад из-за нервного срыва, вызванного несовместимостью Полуоси и нового железа, я плюнул и перешел на линукс. У меня стоит Leap 42.1 на Гноме.
Постольку поскольку в Оси большинство консольных программ работающих со звуком собрано на сырцах линуксовых, то особой разницы я не заметил. Зная бобик, переписать скрипты на шелл - тоже не особая проблема (ооРекс в линуксе как-то странно отрабатывает полуосёвые скрипты, поэтому проще переписать).

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

Что надо? Пару консольных программ, которые выполняют следующие действия:

program0 -cue bigfile.wav -bigfile.cue - режет большой вав по кью-файлу (консольной программы не нашел)

program1 -if -20dB file.wav - определяет и выводит информацию о паузе в начале файла, трешхолд -20дБ
program1 -il -20dB file.wav - определяет и выводит информацию о паузе в конце файла, трешхолд -20дБ
program1 -ib -20dB file.wav - определяет и выводит информацию о паузе в начале и конце файла, трешхолд -20дБ
соответственно
program1 -cib -20dB file.wav file.wav.new - определяет и выводит информацию о паузе в начале файла, трешхолд -20дБ, обрезает начало и хвост по заданному значению и копирует файл в file.wav.new, исходный файл не изменяется.

По идее, SOX позволяет выполнить часть этой задачи, однако, документация на SOX именно в этом месте написана весьма мутно, мне разобраться не удалось.

Прошу помощи клуба.
Заранее благодарен за подробный ответ, куда мне идти.

Понимаю)
"преобразование flac -> wav, нарезка wav по cue-файлу" - плейер deadbeef умеет такое прямо из интерфейса не останвливая проигрывания (видел консольные решения, но не пользуюсь, - не подскажу).

BigOrange:

Понимаю)
"преобразование flac -> wav, нарезка wav по cue-файлу" - плейер deadbeef умеет такое прямо из интерфейса не останвливая проигрывания (видел консольные решения, но не пользуюсь, - не подскажу).

флак - вав умеет и flac123
нарезать... знаю только гуёвые - flacon, но что-то ещё было, чуть ли не та же sox
самое главное - это анализ хвостов и их обрезка - всё остально можно как-то обустроить...

вот законвертил

выделяем всё

выбираем опции

вот вавки

щелчков при прослушиваниинет

BigOrange:

вот законвертил
(///)
щелчков при прослушиваниинет

Насколько я помню этот диск КС, там во-первых, нет пауз между вещами, а во-вторых, там звук завален где-то на 2-3дБ. Вот - тебе лично - всё равно, что это так? Мне - нет.
Кстати, там моя любимая вещь Кримсон (после Starless, конечно) - Cat's Food :)
(///)
И потом - я ж говорю: консоль мне нужна и скрипт. Картинки итд - это, конечно же, здорово, но написать flac -d *.flac мне проще, чем нажимать-выделять-выставлять-дируназначать-итд.

при всём уважении, я чего-то не понимаю
паузы есть,
да, можено нормалайз сделать в том же audacity,
однако, я против, - заваленный звук решается аппаратно, - ручкой громкости

BigOrange:

при всём уважении, я чего-то не понимаю
паузы есть,
да, можено нормалайз сделать в том же audacity,
однако, я против, - заваленный звук решается аппаратно, - ручкой громкости

Есть разве? Вроде он весь слитно шёл, ну, не суть. Суть в том, что нормальный нормалайз на диске не имеющем пауз, сделает СЛИШКОМ хорошо. Вот, к примеру упомянутый Посейдон: навскидку - первый трек надо поднимать на 15дБ, а второй опускать на -3дБ. Понимаешь, что будет? Там же ЗАДУМАНО так, чтобы после шёпота первой дать по ушам грохотом второй... Поэтому, нормализовывать там надо в режиме батча/микса, вычисляя среднее по альбому. Аудасити работает с одним треком (в проекте), тыкать мышой придется немеряно. А в консоли можно просто написать
normalize -b *.wav и получить нужный результат. Удобно, быстро.
Что касается ручки громкости - не всегда она или пульт под рукой и не всегда (хотя и как правило) слушаешь один альбом - иной раз делаешь себе треклист - например (в особенности не в прог-роке) микс из всех альбомов исполнителя, в лупе. И вот тут-то и выясняется, что бойцы студийного фронта мастерят диски с разбросом в 8-10 (ВОСЕМЬ ТИРЕ ДЕСЯТЬ, Карл!) РАЗ по громкости (вообще ИМХО, когда они осознали, что луч лазера из дорожки не выпрыгнет, в отличие от тонарма, у них просто крышу сорвало). Мне попадались диски как с превышением в 6-12дБ! Так и диски с недоливом в -5-6дБ. Поэтому, ДЛЯ СЕБЯ ЛЮБИМОГО я выправлю все так, чтобы оно звучало нормально.
Ещё момент - так называемые hidden tracks. Это - те, которые - диск на 40 минут, потом 10 минут тишины и 30 секунд бонусного трека. Ну, не знаю. Меня жаба давит хранить мегабайты-гигабайты ненужной тишины. Это - только так кажется, что оно фигня, а в результате набегает ОЧЕНЬ много; конечно же - я вырежу в отдельный бонус-трек этот хидден, а тишину уберу. Это в консоли делать тоже удобно, НО если есть анализатор. А вот тут проблема и встала в полный рост (см. заходное письмо).

мне бы Ваши проблемы ...)
но тема интересная

BigOrange:

мне бы Ваши проблемы ...)
но тема интересная

Ну, свои ДРУГИЕ проблемы я сюда притаскивать не собираюсь :)
А тема - да. Самое противное то, что она какбэ не очень решается. С нетерпением жду других идей от аксакалов форума.
В качестве затравки могу предложить написать скрипт для sox, но так, чтобы _в одной строчке_ производились следующие операции для группы файлов в данной директории:

отсечка паузы на носу (по заданным данным, например 2, 5, 0.1% )
реверс файла
отсечка паузы на хвосте (по тем же значениям)
реверс файла
переименование файла в первоначальное имя
следующий файл
стоп
выход
Очень удобно навешивать такое на юзер-меню в МЦ :)
Шелл, желательно, bash.
Это - так называемый "прямой" способ решения задачи...

BigOrange:


мне бы Ваши проблемы

не ниже по важности проблема, чем все проблемы которые решают пользователи линукс )))

накопал пока негусто, по нормалайзу только вылезло:
http://zenway.ru/page/mp3gain - опять, таки!

http://softhelp.org.ua/?p=3038
http://linux-bash.ru/menumultim/57-cutmp3mp3gain.html
http://ru-linux.livejournal.com/2677892.html
http://askubuntu.com/questions/246242/how-to-normalize-sound-in-mp3-files
http://normalize.nongnu.org/README.html

про фэйды ничего вразумительного не нашёл, про остальное не искал.
мне самому показалась интересной идея пакетного нормалайза с фэйдами.

так это всё про мп3, мп3 - это не интересно - там что-то править - себе дороже, я говорю исключительно о вавах
(///)
на самом деле, внимательно и вдумчиво вкурив документацию к sox, я выяснил, что всё не так страшно - нужное преобразование делается в одну строку:
sox file.wav newfile.wav silence 1 5 0.1% reverse silence 1 5 0.01% reverse - на выходе получаем newfile с обрезаной до начала звука паузой в начале и до тишины в конце 0.01% подобрано экспериментально, чтобы не обрывать затухание
(вот так, несколько черезжопно, но работает)
теперь мне надо как-то заранее вывести информацию - общее звучание файла / полезное (без пауз) / размер пауз в начале и в конце - эта статистика сразу позволяет узнать: стоит ли вообще связываться с этой группой файлов - если размер пауз < 0.1ms, то скорее всего это - связанные файлы - например концерт или сюита
в этом случае надо н выпендриваться, а делать normalize -b на группу без пауз (кстати, в концертах тоже "пенки" бывают лихие, когда разные фрагменты с разных концертов, и громкость плавает так, что ой), дальше - отшибать этот 0.1, который на самом деле заголовок вав-файла, проверять аудиоредактором, что совмещение звуковых дорожек проходит через ноль (мне это больше нравится) или натравлять упомянутый sox, в которой есть очень приличные фильтры для склейки встык или с прегапом, и писать либо в ДАО, образом, либо lame -nogap.
Вот как-то так...
(у меня в коллекции флаков нет - то, что мне действительно любо я покупаю или пишу на болванку, а то, что мне просто нравится, я гоню в мп3, предварительно доведя до ума)
ну, в общем - круг нерешенного очерчен, скрипты надо писать (для этого надо про баш почитать - я его особо не видел)
кстати, вот сразу вопрос возник (я понимаю, что простой, но я и сам ещё чайник)
каким образом заменить пробелы в именах файлов на подчеркивания? а обратно?

Uncle_Brr:


Кстати, там моя любимая вещь Кримсон (после Starless, конечно) - Cat's Food :)

Ух! Ажно дух захватывает!))) Целую вечность не встречал людей которым КС нравится! Думал тают наши ряды, ан нет)))

frost42:

Uncle_Brr:


Кстати, там моя любимая вещь Кримсон (после Starless, конечно) - Cat's Food :)

Ух! Ажно дух захватывает!))) Целую вечность не встречал людей которым КС нравится! Думал тают наши ряды, ан нет)))

Ты чо! КиСи - это ж нашевсйо форева!
Кстати, ты напрасно ТАК пессимистичен - вокруг лично меня куча молодежи, которая слушает (правда, старую КС - ПроКСджекты как-то не катят) Кримсон, а также сайт-проекты - типа Левиновских или Калифорниан Гитар Трио или там 21ст Сечури Шизоид Бэнд. На концерте последних я, кстати, был и был удивлён не только количеством папиков с детками, но и просто деток. Правда, я бывший музыкант (бассит, да :) и давний модератор su.music - т.е. окружение у меня соответствующее.
(///)
Ладно, не будем впадать в офф-топик.
(///)
Итак, текущая проблема - это отсутствие софтины, которая выводила бы статистику по вав-файлам НА ПРЕДМЕТ ПАУЗ НА ХВОСТАХ (с остальным прекрасно справляется soxi и normalize -b -n. Согласен даже на ГУЙ.
Вторая проблема, как ни странно, это - невозможность переименовать файлы с пробелами.вав в файлы_с_пробелами.вав. Мои старые рексовые скрипты не работают по причине того, что формат ключей в mv и в ren разный. Попытка написать скрипт (баш у меня) с регексом не увечалась успехом, видимо тут я круглый чайник с крышечкой. Нашел, как мне кажется весьма гибкую и удобную утилитку - rnm (https://github.com/neurobin/rnm), но, опять же, не могу вьехать в формат регекса (ну, блин - трудное децтво, 8-битные игрушки, всю жизнь под полуосью...).
Может быть кто-нибудь из аксакалов мне тут поможет?
(Я слово волшебное знаю: "пожаааалуста!")


Добавлено позже:

В дополнение к предыдущей мессаге - нашел на просторах гитхаба весьма удобную софтину для переименования всего. чего охота, из комстроки (эдакое расширение возможностей mv и mmv) - rnm
https://neurobin.org/docs/unix/rnm/bulk-rename-in-linux/
весьма рекомендую. Автор хоть и пакистанец, но весьма отзывчивый.
(///)
Осталась только проблема со статистикой... курю ман к SOX. Пока не получается (в этом месте не раскуривается) :)

Написать ответ…