Javascript-форум (https://javascript.ru/forum/)
-   Работа (https://javascript.ru/forum/job/)
-   -   Сделать скрипт распаковки аудиоатласа созданного AudioSprite (https://javascript.ru/forum/job/84160-sdelat-skript-raspakovki-audioatlasa-sozdannogo-audiosprite.html)

Francisk 22.06.2022 03:36

Сделать скрипт распаковки аудиоатласа созданного AudioSprite
 
Вложений: 1
Доброго времени суток уважаемые знатоки js.

Значит есть такая утилитка как AudioSprite ( https://www.npmjs.com/package/audiosprite ), результатом её работы является .json файл, с инфой о таймингах/разметке аудиоатласа, собственно о том от куда брать звук, и несколько аудиофайлов в разных форматах но с одинаковым содержимым.
Нужно сделать .js скрипт который будет делать обратный процесс, читать .json файл и по таймингам нарезать звуковой атлас обратно на отдельные звуки.
Можно скрипт без всякого интерфейса, который будет запускаться через командную строку.
Или можно сделать с примитивной web оболочкой, собранный из того что есть в сети, что по идее должно сэкономить уйму времени.
Я немного погуглив нашел такой web drumkit( https://github.com/musicandcode/drumkit ), в котором как я понимаю есть уже почти все что надо... Он использует howler.js для воспроизведения, почти читает .json ( просто в нем все что внутри .json файла, вставлено "статично" в код app.js , при этом я погуглил и есть способы подгрузки кода из одного .js файла в другой( https://ru.stackoverflow.com/questio...-файл?rq=1 ), в итоге в файле app.js надо просто сделать так что бы он обращался к файлу sound.json и брал из него кусок "кода", ибо содержимое файла "sound.json" будет меняться.
Потом так же надо сделать что бы он прочитав .json сам определял количество и названия звуковых фрагментов из полученной инфы из .json , ибо в этом коде они так же указаны "статично".
Самое главное, допилить функцию нарезки звука, которой в howler.js нету, допилить самостоятельно либо опять таки взять за основу готовое решение из сети, коих несколько штук, гугл выдает на первой странице при поиске чем резать звук на js( https://github.com/lubenard/simple-mp3-cutter , https://github.com/cevadtokatli/mp3-cutter , https://github.com/meowtec/audio-cutter ), желательно что бы результат был в формате .wav , хотя и .mp3 тоже пойдет.
И собственно реализация web оболочки, минимальная, не надо даже кнопки выбора .json файла, в моем случае он всегда называется sound.json, но их много, и я просто буду по одному менять закидывая в папку утилиты вместе с соответствующими ему аудиофайлами идущими с ним. Так что от web оболочки требуется только что бы она выводила в столбик ровно столько строк сколько отдельных аудиофайлов запаковано в текущий аудиоатлас(канеш с скролом по вертикали если столбик не поместится по высоте в экран) , и в идеале еще в верху кнопка для нарезки сразу всех звуков разом. Не надо ни какого оформления, и тд, тупа белый фон, черный текст и пару картинок для кнопок.
Примерно по такой схеме:
[кнопка cutting_all_sounds]
"Название звука1" | [кнопка play] | [кнопка cutting]
"Название звука2" | [кнопка play] | [кнопка cutting]
"Название звука3" | [кнопка play] | [кнопка cutting]
...
Получиться должна такая портативная утилита исключительно для локального запуска, без всяких там зависимостей, что бы просто архивчик распаковал, кинул где захотел на компе, файлы нужные в её папку закинул, запустил и работает, ну то есть в коде пути использовать относительные и тд, и соответственно все что нужно для работы утилиты что бы было в её папке, я из того drumkit'a сделал такой "набросок" того как хочу видеть архитектуру папок утилиты.
Утилита нужна чисто для себя, для удобства в работе, резать в ручную через Adobe Audition иногда утомляет, когда дают задание начать новый проект а звуки для него заимствуются из старых проектов, но некоторые звуки не запакованные утрачены, но это не беда ибо все звуковые атласы на месте... но в итоге когда надо восстановить для нового проекта звуки из нескольких старых а их еще найти надо... и вот сидишь ковыряешься в json файлах, по названиям смотришь потом в медиаплеере по таймингам клацаешь и слушаешь что бы найти а потом открываешь в аудишн и нарезаешь, сохраняешь... ну кароч в итоге минус 2-3 часа жизни на такую рутину, и такое случается иногда.. значит если сделать такую тулзу то она и мне пригодится еще не раз, и думаю если тот кто поможет сделать либо сам выльет на гитхаб или будет не против что бы я эту сборную солянку вылил на гитхаб, то людей в интернете благодарных за такую утилиту найдется достаточно. Подробности эти к чему, что бы было понимание что требований к оригинальности кода нет(как бывает у заказчиков), и что хоть я её и буду использовать для работы на которой получаю зарплату, но мне ни кто не компенсирует затраты на её создание, ибо это моя личная инициатива.. а вы сами знаете что инициатива делает с инициатором. А я ни разу не программист и мне даже с таким копипастом как собрать из нескольких готовых утилит - франкенштейна из жанра "быдлокодинга" - все равно придется уйму времени потратить. Поэтому скажите кто и за сколько мог бы с этим помочь, что по деньгам что по времени, и прошу вас не ломите дикую цену ;)

Francisk 24.06.2022 19:22

Вложений: 3
Нашел исполнителя на другом сайте, до того как здесь один человек отозвался в ЛС. Весь нужный мне функционал он смог оперативно реализовать, мне не жалко, шарю на общак.

Какие идеи остались не реализованными(пушто под мои задачи это не надо, но для большинства юзеров было бы кстати):
1. Кнопка(и функция) выбора .json файла нужного аудиоатласа, с любым названием а не только sound.json и соответственно из любой папки на компе, при этом что бы скрипт копировал .json и идущие с ним аудио файлы, в свою папку да бы юзер точно был спокоен что оригинальные атласы не пострадают.
2. Кнопка выбора папки куда складывать результат, щас она так же прописана статично в коде.
3. Кнопка нарезки всех звуков имеющихся в атласе сразу, без разбору.

Мне эти три функции не оч нужны в моем случае, а их реализация это тоже время а значит и деньги, поэтому мне и так сойдет но это очевидно важные функции для удобства большинства юзеров, поэтому любой желающий на энтузиазме может дописать ,не для меня или себя а просто на общак.
Я отдал за этот скрипт 1,5к р. и шарю для всех.

AS-cutter_orig - первый вариант скрипта, который делает ровно все что я описал в задаче, но я забыл описать два важных моммента, это возможность игнорить параметр true в .json который указывает что звук должен воспроизводиться зацикленным, и второй нюанс что в тех .json с которыми работаю я в начале файла в строке где указываются пути к самим аудиофайлам аудиатласов вместо стандартного "src" написано "urls" , хз почему в моих файлах так от чего это зависит от нашего движка или от версии AudioSprite , ну не суть сразу знал что есть этот нюанс а почему он есть нет времени разбираться.
AS-cutter_fix - собственно вариант с этими двумя фиксами которые по сути нужны только мне, хотя фикс для зацикленных звуков полезен будет всем, тут в итоге уже играющий звук и прерывается запуском другого звука не зацикленного и есть галочка игнора зацикливания.
Да и фикс для src/urls сделан так что он будет читать и то и другое.
AS_Cutter - это мой окончательный архивчик который буду использовать сами поделюсь с коллегами, отличие только в том что добавил .bat для запуска на винде что бы еще пару секунд времени экономить, и переложил app.js в папку bin что бы максимально все красиво было(переложил конечно же с нужными правками в его коде что бы все работало, ну там кода одна строчка так что я этим смог справиться сам, прост указал верный путь который становится верным после перемещения).
Пользуйтесь на здоровье.
Исполнитель данного заказа позже мб выльет его на гитхаб.

Ах да чуть не забыл еще важный моммент, у скрипта в итоге есть зависимость - node.js , но это не проблема, я не программист и поэтому не подумал что это важная инфа(что у меня стоит само собой node.js) что это тоже зависимость, но не мешающая мне ;) Все остальное что надо для работы скрипта есть в его папке.

upd: Исполнитель залил на github как я и просил исходники, что бы любой желающий мог их стянуть и доработать на общак или под свои задачи.
https://github.com/Danila-Developer/AS_cutter


Часовой пояс GMT +3, время: 20:40.