Инструкция: Как изменять музыку в Worms 4 - Страница 3 - Форум
W4Tweaks
Меню сайта
Последние файлы
Последние темы


Вход



Мини-чат
 
500

Статистика
Онлайн:

Сегодня заходили: firsacho, Joker, KaMiKaZe, 4erveR, Unaited, agent007, Renny, ivan210303mitenkov


Друзья сайта

Если вы хотите увидеть в этом спиcке свой сайт загляните сюда

Наш баннер:



· Регистрация · Вход
[ Новые сообщения · Участники · Подписки · Поиск · RSS ]
Страница 3 из 4«1234»
Форум » Worms 4 Mayhem » 0.1. Остальные уроки » Инструкция: Как изменять музыку в Worms 4 (Инструкция от Woitek'а, перевод Firsacho)
Инструкция: Как изменять музыку в Worms 4
firsacho
Дата: ПН, 24.01.2011, 11:26:07 | Сообщение # 1
firsacho
ICQ = 453-163-541
Группа: Админы
Сообщений: 3636
Репутация: 71
Статус: Offline
Чтобы изменить Музыку в Worms 4, необходимо знать в каком файле находится музыкальная тема.
Она хранится в mufronte.sab и вспомогательном файле mufronte.sob , которые можно найти в директории:
WORMS 4 MAYHEM\data\Audio\WXSoundBanks\PC\

Но для начала надо узнать как устроен Sab-файл.

Смотрим на рисунок выше.
1 - Здесь указан формат. Если стоит 06 - это музыкальный формат, если 02 - звуковой.
2 - Коррекция звука. 03 - лучшее значение.
3 - Скорость проигрывание. Если число меньше - то скорость больше, если больше - то меньше... 00 00 00 7D - дефолтная скорость.
4 - Время звучания, если в пункте 1 был указан тип "Музыка" (06), если указан тип "Звук", не используется.
5 - Время звучания, если в пункте 1 был указан тип "Звук" (02), если указан тип "Музыка", не используется.
Максимальное время звучания: 4:25 (FF в 16й СС = 255 в 10й, 255/60=4,25)
6 - Повтор. Если 01 - повтор выключен, если 00 - включен.

Теперь, если вы поняли как устроен Sab, можете попробовать импортировать свою музыку.
Для этого ее надо конвертировать в .wav PCM Signed 16bit, стерео RateHz 16000 .

На картинке показано как это сделать, при помощи программы GoldWave.


1 - Add Files - открывает ваш файл, который вы хотите конвертировать.
2 - Во вкладке Folder указать папку, в которую сохраниться конвертированный файл.
3 - Выставите настройки звука как в красной рамке.

Посмотрите какое время в секундах имеет ваша музыка. Прибавьте к этому времени несколько секунд, чтобы при зацикленном проигрывании после музыки было несколько секунд паузы.
В примере музыка имеет время проигрывания 3:41, так что 3*60+41 = 221, при переводе в данное число в шестнадцатеричную систему счисления получится DD.

Чтобы переводить числа в 16ю СС проще всего воспользоваться Windows калькулятором. Включите Вид-Инженерный, введите число в 10й СС, потом выберите вид-Шестнадцатеричный и число автоматом переведется в новый формат =) (прим. пер.)

Теперь надо запустить Шестнадцатеричный редактор (Я использую HxD) и переместить wav в него wav.
Ниже на картинке выведен 16й код wav-файла:

Если проделали все как на картинке выше, осталось изменить время звучания и сохранить, как mufronte.sab

Конечный файл должен выглядеть как на картинке ниже: =)

Ссылка на sab-файл: http://www.sendspace.com/file/i84ath
Ссылка на музыку (из видео): http://www.sendspace.com/file/qjlfrv





Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005)
Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)

www.w4mod.tk - моя модификация для worms4

www.fir-st.narod.ru - моя домашняя творческая страничка

www.botarena.by.ru - мой сайт об игре robot arena 2 (битвы роботов)
 
Lex-Serest
Дата: ВТ, 01.02.2011, 18:41:59 | Сообщение # 31
Lex-Serest
Onecake-man
Группа: Админы
Сообщений: 828
Репутация: 83
Статус: Offline
я нашел способ конвертации из sab в wav, когда заплачу за инет, выложу

:3
 
Lex-Serest
Дата: СР, 09.02.2011, 20:10:13 | Сообщение # 32
Lex-Serest
Onecake-man
Группа: Админы
Сообщений: 828
Репутация: 83
Статус: Offline
Воитек ошибся по фрейду, он ошибся в "1 - Здесь указан формат. Если стоит 06 - это музыкальный формат, если 02 - звуковой.", и где располагается длина проигрывания

Так же я почти разобрал файл *.sob


:3
 
Lex-Serest
Дата: СБ, 02.04.2011, 15:14:13 | Сообщение # 33
Lex-Serest
Onecake-man
Группа: Админы
Сообщений: 828
Репутация: 83
Статус: Offline
ыыы решил дописать конвертор, поэтому решил декомпелировать прогу от k^2 для экспорта и импорта
ыыыы надо было еще изучать ассемблер


:3
 
^_[RUSS]SPORE[PRO]_^
Дата: ЧТ, 30.06.2011, 13:41:00 | Сообщение # 34
^_[RUSS]SPORE[PRO]_^
Только что регнулся
Группа: Новички
Сообщений: 3
Репутация: 0
Статус: Offline
сяп помогли :D :D :D
 
AlexBond
Дата: СР, 26.06.2013, 02:56:29 | Сообщение # 35
AlexBond
Легендарный червь
Группа: Админы
Сообщений: 1029
Репутация: 105
Статус: Offline
Так как я добавил в новый XomView проигрывание sob /sab звуков, то могу сказать со 100% уверенностью урок данный можно выкинуть в топку, он не верен на корню!!!
например числа в уроке:

00 7D 00 00 = (freq) - частота 32000Hz
00 3F DD 00 = (size) - размер 14 499 584 байт

В общем структура sob файла такая:
Код

    TSOB_HEADER = packed record
          id : array[0..3] of char; //   CTF2
          ver: array[0..3] of byte; //01 00 00 02
          numsamples: Longword;
          unknown: Longword;
          end;

    TSOB_SAMPLE = packed record
          id : array[0..3] of byte;// 01 01 00 00
          FF : Longword; // ffffffff
          zeros: array[0..5] of Longword;
          items: longword; //01
          dummy: array[0..1] of Longword;
          end;

а sab файла следующая:
Код

   TSAB_HEADER = packed record
          id : array[0..3] of char; //   CSW2
          ver: array[0..3] of byte; //01 00 00 02
          numsamples: Longword;
          unknown: Longword;
          offset: Longword;
          nSlotNumber: Longword;
          end;

    TSAB_SAMPLE = packed record
          is_file: Longword;
          chan: Longword;
          freq: Longword;
          size: Longword;
          loopstart: Longword;
          loopend: Longword;
          offset: Longword;
          end;


Сам процесс считывания sob информации идет так:
Код

   SOB.LoadFromFile(filename);

    SOB.ReadBuffer(sobh,sizeof(sobh));
    num:=sobh.numsamples;
    SOBChunks.Count:=num;

     for i := 0 to  num-1 do begin
         SOB.ReadBuffer(sobs,sizeof(sobs));   

         if sobs.FF<>$ffffffff then begin
          Showmessage(format('Error reading SOB stream[%d] 0x%x',[i,SOB.Position]));
          goto closep;
          end;
         if (sobs.id[0]and 1)>0 then SOB.Seek(64,1);
         case sobs.id[0] of
         0,1,5: AddSoundItem;     //     101B
         8,9: AddSequeenceItem;   //    1001B
         32:  AddInterleavedItem; //  100000B
         65:  AddMatrixItem;      // 1000001B
         end;

     end;

     // читаем названия
     for i := 0 to  num-1 do begin
       SOB.ReadBuffer(id,4);
       SOB.ReadBuffer(namesize,4);
       FillChar(cname,255,0);
       SOB.ReadBuffer(cname,namesize);
       SOBChunks[i].Name:=cname;      
     end;


В зависимости от типа меняется длинная считываемого контейнера, краткое описание функций считывания:

Код


    procedure AddSoundItem();
    var
    k:integer;
    begin
       Node.Text:='soundItem';
       for k:=1 to sobs.items do begin
            INode:=Tree.Items.AddChild(Node,'entryItem');         
            SOB.Read(val,4); // index;
            AddReadVal(INode,'sampleBankIndex');
            AddReadVal(INode,'sampleObjectIndex');
            SOB.Seek(4*4,1);
          //  AddReadVal(INode,'level');
          //  AddReadVal(INode,'cents');
         //   AddReadVal(INode,'randomCents');
         //   AddReadVal(INode,'randomLevel');
            end;
    end;

    procedure AddSequeenceItem();
    var
    k:integer;
    begin
       Node.Text:='sequenceItem';
       for k:=1 to sobs.items do begin
            INode:=Tree.Items.AddChild(Node,'trackItem');
            SOB.Read(val,4); // index;
            AddReadVal(INode,'soundBank');
            AddReadVal(INode,'soundName');
            AddReadValf(INode,'time');
            end;
    end;

    procedure AddMatrixItem();
    var
    k:integer;
    begin
       Node.Text:='matrixItem';
       SOB.Seek(32,1); // matrixItem 2(matrixItem)
       for k:=1 to sobs.items do begin
            INode:=Tree.Items.AddChild(Node,'matrixItem');
            AddReadVal(INode,'sampleBankIndex');
            AddReadVal(INode,'sampleObjectIndex');
            SOB.Seek(4*2,1);
            end;
    end;

    procedure AddInterleavedItem();
    var
    k:integer;
    begin
       Node.Text:='interleavedItem';
       for k:=1 to sobs.items do begin
            INode:=Tree.Items.AddChild(Node,'sampleItem');
            AddReadVal(INode,'sampleBankIndex');
            AddReadVal(INode,'sampleObjectIndex');
            SOB.Seek(4*2,1);
            end;
    end;


Для sab файла:
Код

      SAB.LoadFromFile(filename);
      SAB.ReadBuffer(sabh,sizeof(sabh));
      num:=sabh.numsamples;
      baseoffset:=sizeof(sabh)+sizeof(sabs)*num;
      SABChunks.Count:=num;
      for i := 0 to  num-1 do begin    
          SAB.ReadBuffer(sabs,sizeof(sabs));
          oldpos:=SAB.Position;
          SAB.Position:=baseoffset+sabs.offset;
          // выделяем место в памяти под wav дату и копируем туда инфу
          SAB.ReadBuffer(p^,Size);
          SAB.Position:=oldpos;
          end;
     end;


P.S. может данная инфа будет кому полезна =)


 
AlexBond
Дата: СР, 26.06.2013, 03:07:57 | Сообщение # 36
AlexBond
Легендарный червь
Группа: Админы
Сообщений: 1029
Репутация: 105
Статус: Offline
А вот музыку все таки проиграть у меня не получилось... там странная система кодирования каналов... все звуки отлично играются, а музыка с глюками...

 
Woitek
Дата: СР, 26.06.2013, 14:36:14 | Сообщение # 37
Woitek
Его узнают в чате
Группа: Проверенные
Сообщений: 521
Репутация: 56
Статус: Offline
Heh =). Now smarter than 2years ago :P. Good work.
 
AlexBond
Дата: СР, 26.06.2013, 16:24:46 | Сообщение # 38
AlexBond
Легендарный червь
Группа: Админы
Сообщений: 1029
Репутация: 105
Статус: Offline
В общем попытался анализировать музыку и нашел взаимосвязь.. в sab файле каналы чередуются через определенное количество байт, которое я еще не смог вычислить...
Вот картинка волн, на ней оригинальная музыка со стерео дорожками и дорожка взятая из файла sab как моно канал, как видно тут идут блоки левый канал, правый канал...


 
AlexBond
Дата: СР, 26.06.2013, 17:07:11 | Сообщение # 39
AlexBond
Легендарный червь
Группа: Админы
Сообщений: 1029
Репутация: 105
Статус: Offline
Раскодировал!!! В общем в TSAB_HEADER неизвестное значение это SampleAlign т.е. длинна семпла одного канала
Код
TSAB_HEADER = packed record    
             id : array[0..3] of char; //   CSW2    
             ver: array[0..3] of byte; //01 00 00 02    
             numsamples: Longword;    
             aSampleAlign: Longword;    
             offset: Longword;    
             nSlotNumber: Longword;    
             end;    

Теперь все работает!!!

ссылка на XomView

При импорте стереомузыки нужно менять это значение на ту длину семплов на канал, который у вас в аудиофайле!!!!


 
53454546
Дата: ПТ, 28.06.2013, 17:08:40 | Сообщение # 40
53454546
Сделал сайт чуть живее
Группа: Проверенные
Сообщений: 42
Репутация: 0
Статус: Offline
Why do not you unused?

Sample voclassi.sab is unused (preview wormsx.cpf)

  • captured
  • flawless
  • jump1
  • kamikaze
:( Missing!
 
AlexBond
Дата: ПТ, 28.06.2013, 22:52:00 | Сообщение # 41
AlexBond
Легендарный червь
Группа: Админы
Сообщений: 1029
Репутация: 105
Статус: Offline
Цитата (53454546)
captured
flawless
jump1
kamikaze
Missing!

"captured" have index 5 and not used in sob... but exist in sab!!! Team17 not used this sounds in game!

captured - 5
flawes - 16
jump1 - 23
kamikaze - 26

XomView can play only sounds what included in SOB library...


 
007Shum
Дата: ВС, 25.08.2013, 22:46:38 | Сообщение # 42
007Shum
Только что регнулся
Группа: Новички
Сообщений: 2
Репутация: 0
Статус: Offline
Как заменить наборы звуков? Более-менее подробную инструкцию может кто даст.
Есть идея заменить слова червей в Worms 4 Mayhem (при прыжке, попадании и т.п.), например, итальяно и франсе на русский и украинский из локализированных Worms 3D (*.wav).
Может мод какой чтоб звуки "подхватытвались" из папки?
 
Woitek
Дата: ПН, 26.08.2013, 00:13:31 | Сообщение # 43
Woitek
Его узнают в чате
Группа: Проверенные
Сообщений: 521
Репутация: 56
Статус: Offline
I can write tutorial how replace worms 4 Soundbanks if want.
 
007Shum
Дата: ПН, 26.08.2013, 10:05:10 | Сообщение # 44
007Shum
Только что регнулся
Группа: Новички
Сообщений: 2
Репутация: 0
Статус: Offline
[quote=Woitek]I can write tutorial how replace worms 4 Soundbanks if want.[/quote]
Да, конечно, буду ждать.
 
Woitek
Дата: ЧТ, 29.08.2013, 22:36:31 | Сообщение # 45
Woitek
Его узнают в чате
Группа: Проверенные
Сообщений: 521
Репутация: 56
Статус: Offline
sorry you must wait little more if want good tutorial.
 
Форум » Worms 4 Mayhem » 0.1. Остальные уроки » Инструкция: Как изменять музыку в Worms 4 (Инструкция от Woitek'а, перевод Firsacho)
Страница 3 из 4«1234»
Поиск:

Copyright W4Tweaks™ 2008-2016 Хостинг от uCoz