View Single Post
Old 04-02-2008, 08:16 PM   #4
Ten
Главнокомандующийp2ambassador
 
Ten's Avatar
 
Faction:
Стражи Садов Кадеша

Join Date: Feb 2004
Location: Great Nebula
Posts: 2,508
Восклицание Достаём музыку из Homeworld, Cataclysm и Homeworld2

Пока нету, точнее, не было. Соорудил было такую же консольную примочку, как к ХВ2, но как-то кривовато оно смотрится. Достал из заначки свой старый проект, поморщился, сдул пыль... и решил переписать заново, добавив заодно поддержку ХВ2. Ну, а что оно получилось...

Итак, предлагаю вашему вниманию инструмент, позволяющий извлечь музыку из игр серии Homeworld и сохранить её на диск в форматах AIFR, WAV и/или MP3:


Экстрактор прост как три копейки, интерфейс программы интуитивно понятен, сама она универсальна, т.е. подходит для всех игр серии, и для запуска процесса извлечения достаточно:
  1. выбрать игру на панели инструментов;
  2. указать файл с музыкой:
    • для Homeworld или Homeworld Beta – HW_Music.wxd
    • для Homeworld Demo – DL_Music.wxd
    • для Homeworld OEM – OEM_Music.wxd
    • для Cataclysm (все версии) – Music4Cat.wxd
    • для Homeworld2 (все версии) – Music.big (находится в папке Data)
  3. нажать кнопку «Извлечь все».
После этого экстрактор создаст папку (HW1_Music, HWC_Music или HW2_Music для полных версий, либо с добавками Demo / Beta / OEM) под музыкальные файлы и сохранит их в формате MP3. Разумеется, установкой переключателей можно выбрать любой другой формат, а папку назвать по своему вкусу. Также отмечу, что указывать исходный файл не придётся, если выбранная игра была установлена родным инсталлятором – экстрактор самостоятельно отыщет файл с музыкой.

Для преобразования AIF в WAV используется реликовский AIFR decoder, а для сжатия WAV в MP3 – легендарный LAME, один из лучших в мире MP3-кодеков, к тому же бесплатный и распространяющийся в виде исходников. Обе программы – консольные, и запускаются по мере надобности.


НАСТРОЙКИ

Экстрактор уже настроен на максимальное качество, но для любознательных пользователей приведу краткое описание установок программы.
Режим. Может быть Stereo (по умолчанию), Joint stereo, Forced joint stereo, Dual channels или Mono.
  • Stereo (стерео) – в этом режиме LAME не использует зависимости между левым и правым каналами, но может сжимать их с разным битрейтом, если один из каналов проще в плане кодирования (например, содержит тишину).
  • Joint stereo (усреднённое стерео) – в этом режиме LAME пытается использовать зависимости между каналами. Сигнал при этом делится на "общий" (L+R) и "дополнительный" (L-R), причём основное внимание уделяется качеству "общего" сигнала. Такой подход позволяет достичь большей эффективности сжатия и при одинаковом объёме файла даёт лучшее качество звучания, если левый и правый каналы не имеют существенных различий. В противном же случае могут появляться уловимые ухом искажения, да и постоянное переключение между обычным стерео и усреднённым качеству звучания не способствует.
  • Forced joint stereo (принудительное усреднение стерео) – эта настройка предписывает энкодеру принудительно использовать режим Joint stereo для сжатия всех кадров (имеются ввиду кусочки MP3-файла). Он чуть быстрее обычного Joint stereo, но имеет смысл лишь при очень небольших различиях левого и правого каналов.
  • Dual channels – этот режим похож на обычный Stereo, но битрейт делится между каналами поровну. Данный режим разработан для мультиязычных приложений (например, английская речь в одном канале, французская в другом), и использование его для обычных стереотреков может привести к ухудшению качества.
  • Mono – ну, моно есть моно – элегантным движением брюки превращаются... пардон, два канала превращаются в один. Не думаю, что найдётся много желающих использовать этот режим, оставил его лишь полноты ради.
Качество кодирования. 0 (по умолчанию) – лучшее качество / низкая скорость, 9 – худшее / высокая соответственно. Не вижу смысла ставить отличное от нуля значение – много времени не сэкономить, а разница, незаметная между 0 и 5 в наушниках, может оказаться ощутимой на хорошей акустической системе.

Битрейт:
  • Постоянный (CBR) – все «кусочки» трека сжимаются с одинаковым битрейтом, поэтому более сложные участки кодируются с большей потерей качества, чем менее сложные. Преимущество метода в том, что объём получившегося mp3-файла можно заранее рассчитать.
  • Средний (ABR) – в этом режиме указывается средний битрейт (любое целое число между 8 и 320), а энкодер самостоятельно подбирает нужное значение между минимальным и максимальным, в зависимости от сложности того или иного участка трека. В результате улучшается качество кодирования, а объём файла по-прежнему предсказуем, поэтому данный режим настоятельно рекомендуется использовать вместо CBR.
  • Переменный (VBR) – в этом режиме задаётся качество кодирования (по сути, степень отличия от оригинала), а энкодер сам выбирает нужный битрейт для поддержания этого качества. Данный режим позволяет достичь оптимального соотношения качество/объём файла, но рассчитать этот объём несколько проблематично. Впрочем, в нашу эпоху гигабайтов и гигагерцев плюс-минус 10Мб – цифра крайне небольшая. Этот режим нравится мне больше других.

Отключение всех фильтров. Вообще, опция отладочная , вынес её отдельной галкой исключительно для желающих получать максимально аутентичные копии треков. По умолчанию LAME отсеивает наименее значимые (с его точки зрения) частоты, чтобы выделить место более значимым. Что вряд ли даст ощутимый выигрыш при высоком CBR или использовании VBR. В общем, птичка на любителя.

Добавление ID3-тега позволяет дописать к каждой композиции название, исполнителя, год выхода, жанр... Тоже на любителя, но отключать не вижу смысла.

Дополнительные опции. Позволяют использовать любой ключ командной строки, который понимает LAME. К экстрактору прилагается документация по LAME, но учтите, что эта опция рассчитана НА ОПЫТНЫХ ПОЛЬЗОВАТЕЛЕЙ.

Группировка треков позволяет распределить их по подпапкам, а не складывать в общую кучу. Удобная штука, если извлекаете музыку сразу в нескольких форматах.

ПАРУ СЛОВ О ФОРМАТАХ

AIFR – реликовская разработка для сжатия звуковых файлов, использующая родной макинтошевый AIF-формат в качестве контейнера. Является вещью в себе, хотя существует плагин к Winamp'y версий 2.xx (от тех же Relic), позволяющий прослушивать файлы в этом формате. WAV, отражая своё название (wave – волна) хранит оцифрованную звуковую волну со стандартным для аудиодисков качеством. Файлы в формате WAV весят немало (одна минута – 10 Мб), что стало одной из причин появления формата MP3, который в представлении, думаю, не нуждается.


ИСТОРИЯ ВЕРСИЙ

[+] – добавлена новая возможность
[-] – убрана ошибка
[*] – изменения в работе программы

1.02
[+] – добавлена поддержка всех демо-версий, а также беты первого Homeworld и Homeworld: Raiders Retreat (она же OEM-версия). Пустые заглушки треков из демо-версии Cataclysm в списке не показываются.
[-] – при задании полного пути папки извлечения без завершающего обратного слэша этот слэш не дописывался;
[-] – смена формата извлечения могла включить кнопки «Извлечь выбранные» и «Извлечь все», даже если исходный файл не был задан;
[-] – не очищался список при смене игры, если файл с музыкой не был найден автоматически.
1.01
Первый релиз.



ВОЗМОЖНЫЕ ПРОБЛЕМЫ
  1. В процессе сжатия в MP3 гистограмма битрейтов может мелькать. Связано это с тем, что LAME не обновляет экран полностью, если это не нужно, а в перехвате консольного вывода проблематично узнавать позиции строк в окне.
  2. Рекомендуется заранее освободить хотя бы 300 Мб на диске, на который будут складываться извлечённые треки. Для одновременного получения треков в других форматах (особенно WAV) эта цифра может подскочить до 1.5 Гб. Конечно, экстрактор даст возможность продолжить прерванный процесс, но лучше подготовиться заранее.


В общем, надеюсь, что выложенная здесь тузла окажется полезной. Если же в ней найдутся баги, просьба сообщать в этой теме. Найдём, изловим, пофиксим

Last edited by Ten : 04-10-2008 at 09:55 AM. Reason: новая версия
Ten is offline   Reply With Quote