www.demoscene.ruenglish version
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация   ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Всё об *.XM
На страницу Пред.  1, 2, 3
 
Начать новую тему   Ответить на тему    Список форумов DemoScene.Ru -> Музыка
Предыдущая тема :: Следующая тема  
Автор Сообщение
RavenHeart



Зарегистрирован: 09.03.2010
Сообщения: 18


СообщениеДобавлено: Пн Мар 15, 2010 09:32    Заголовок сообщения: Формат инструментов XI Ответить с цитатой

Подскажите где найти инфу по формату инструментов XI? Хочу написать небольшой конвертер sf\sf2 в XI. Пользовался Awave - все замечательно, но полная версия программы сильно дорога для своих функций. Зато есть опенсорсная утилита sfxload под линукс и насколько знаю под виндой.
Если кто нить кинет ссылку на сабж буду признателен
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
BiTL
DOS lover


Зарегистрирован: 22.09.2007
Сообщения: 2950


СообщениеДобавлено: Пн Мар 15, 2010 09:44    Заголовок сообщения: Re: Формат инструментов XI Ответить с цитатой

RavenHeart писал(а):
Подскажите где найти инфу по формату инструментов XI? Хочу написать небольшой конвертер sf\sf2 в XI. Пользовался Awave - все замечательно, но полная версия программы сильно дорога для своих функций. Зато есть опенсорсная утилита sfxload под линукс и насколько знаю под виндой.
Если кто нить кинет ссылку на сабж буду признателен


А помоему Skale умеет загружать всякие саунд-фонты, и соответственно сохранять в XI. Покрайней мере я какието фирмачие синтезаторые фонты помнится грузил, и они успешно после сохранялись в ХМ-е, хотя некоторые модули приходилось загрузить и пересохранить в реальном FastTracker2, чтобы ХМПлеер не сходил с ума.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
RavenHeart



Зарегистрирован: 09.03.2010
Сообщения: 18


СообщениеДобавлено: Пн Мар 15, 2010 11:01    Заголовок сообщения: Re: Формат инструментов XI Ответить с цитатой

BiTL писал(а):

А помоему Skale умеет загружать всякие саунд-фонты, и соответственно сохранять в XI. Покрайней мере я какието фирмачие синтезаторые фонты помнится грузил, и они успешно после сохранялись в ХМ-е, хотя некоторые модули приходилось загрузить и пересохранить в реальном FastTracker2, чтобы ХМПлеер не сходил с ума.


Попробовал действительно грузит правда не сохраняет корректно прямо в XI но можно накидать фонтов и сохранить xm. Потом милки его замечательно открывает. Спасибо)

Но идея таки нужная - поковыряюсь может что получится надо будет слить идею разработчикам milkytracker. а там и до ladspa эффектов недалеко. был правда помнится ответ на запрос поддержки VST на форуме поддержки... послали лесом, что то вроде "это не тру")
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
BiTL
DOS lover


Зарегистрирован: 22.09.2007
Сообщения: 2950


СообщениеДобавлено: Пн Мар 15, 2010 11:29    Заголовок сообщения: Re: Формат инструментов XI Ответить с цитатой

RavenHeart писал(а):
был правда помнится ответ на запрос поддержки VST на форуме поддержки... послали лесом, что то вроде "это не тру")


Ну я тоже невижу смысла в VST в МилкиТрекере Этоже только в wav тогда рендерить. В итоге от сути трекерной музыки остается только способ записи партитуры. Кому хочется сочинять музыку с крутым звуком и поддержкой VST есть ведь ModPlug, есть Renoise, да и в Skale эффектов встроенных есть чучуть. Нужна микро-музыка с синтезом и продвинутыми эффектами для 64кб-интро или 32-ехе музыки? Пожалуйста, есть Protrekkr, V2 и другие сценерские тулзы нового поколения для музыкантов.

А Милки как и Шизм пусть остануться всетаки win32-клонами своих классических DOS-прототипов, для сочинения именно трекерной музыки.

ЗЫ: Но грузить саунд-фонты в Милки не помешало бы, это всетаки отвечает принципам и структуре XM-формата. Я бы сказал, трекерщики какраз и придумали "саунд-фонты" Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
RavenHeart



Зарегистрирован: 09.03.2010
Сообщения: 18


СообщениеДобавлено: Пн Мар 15, 2010 11:55    Заголовок сообщения: Re: Формат инструментов XI Ответить с цитатой

BiTL писал(а):

ЗЫ: Но грузить саунд-фонты в Милки не помешало бы, это всетаки отвечает принципам и структуре XM-формата. Я бы сказал, трекерщики какраз и придумали "саунд-фонты" Smile


Посмотрю что смогу своими силами сделать - sfxload раскладывает sf в wav (можно с доп опциями http://www.opennet.ru/man.shtml?topic=sfxload&category=1&russian=2) .. дальше вопрос собрать это в инструмент, задача несложная в принципе (учитывая что есть сорцы милки под гпл), но я в си не гуру, поэтому может и на долго затянуться. думаю надо будет таки седня закинуть запрос в саппорт форум.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
radpzc



Зарегистрирован: 24.09.2007
Сообщения: 238


СообщениеДобавлено: Пн Мар 15, 2010 14:02    Заголовок сообщения: Re: Формат инструментов XI Ответить с цитатой

RavenHeart писал(а):
Подскажите где найти инфу по формату инструментов XI?


Вот. В своё время любезно поделился NightRadio. Ну или тут: http://www.filewatcher.com/p/soundtracker_0.6.7-5_mipsel.deb.414816/usr/share/doc/soundtracker/xi.txt.html
--------------------------------------------------------------------------
XI format description
(FastTracker II Extended Instrument)
reverse engineered by KB / The Obsessed Maniacs / Reflex
--------------------------------------------------------------------------
C = Chars, B = Byte, W = Word, D = Double word

Pos(h) Len(h) Meaning
-------------------------------------------------------------- file header
0000 C15 "Extended Instrument: "
0015 C16 Instrument name, padded w/ spaces

002b B01 $1a
002c C14 Tracker name, padded w/ spaces
0040 W02 Version Number (current $0102)

-------------------------------------------------------------- inst header
0042 B60 Sample number for notes 1..96

00a2 W30 12 volume envelope points:
+0 Time index for Point 1 (ticks since note)
+2 Volume for Point 1 (00..40)
+4 Time index for Point 2
+6 Volume for Point 2
[...]
00d2 W30 12 panning envelope points
(Same structure as volume envelope)

0102 B01 Number of volume points
0103 B01 Number of panning points
0104 B01 Volume sus

012a D04 Sample Length
012e D04 Sample loop start
0132 D04 Sample loop length
0136 B01 Volume
0137 B01 Finetune (signed)
0138 B01 Sample Type; b0,1=loop: 0=none 1=fwd 2=bidi
b4=16bit sample
0139 B01 Panning
013A B01 Relative Note (signed, 00=C-4) (call it Transpose)
013B B01 Sample Name Length
013C C16 Sample Name, padded w/ zeroes

And so on w/ samples 1 to x
Length: $28 bytes for each sample

------------------------------------------------------------- sample data

$012a+(number of samples)*$28 : sample data for all samples in delta values
(signed)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
BiTL
DOS lover


Зарегистрирован: 22.09.2007
Сообщения: 2950


СообщениеДобавлено: Пн Мар 15, 2010 14:38    Заголовок сообщения: Ответить с цитатой

radpzc, круто, только гдето с часик назад RavenHeart эту инфу уже сам нарыл Smile Я перепостил на всяк случай тут:
http://www.chiptown.ru/XI.TXT
http://www.chiptown.ru/XM.TXT
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
RavenHeart



Зарегистрирован: 09.03.2010
Сообщения: 18


СообщениеДобавлено: Пн Мар 15, 2010 15:14    Заголовок сообщения: Ответить с цитатой

вот еще формат xm с небольшими примерами кода:
прицепите туда же плиз, а то мне разместить негде)
еще на sourceforge.net остался проект soundtracker'a с исходным кодом, документацией и рассылкой. Так что информация есть)

Код:

  XM




Okay this is supposed to cover the xm format (Extended Module) created
by Triton a swedish demo group. (now commonly known as Starbreeze Studios)

XM (Extended Module) and XI (Extended Instrument). XM was and still is
one of the most popular module formats nowadays, because of its compact
and well compressible file structure. This document will guide you
through the file structure of the XM file format, and hopefully also
show you how to open and play it. With this said and done, I think it's
time to start coding.


Variable explanation

Uword is an "short"

Dword is an "unsigned long"

Ubyte is and "unsigned char"

Sbyte is an "signed char"


/Presumably these types are assuming the usual x86 architecture. More
likely Uword is a uint16_t, Dword is a uint32_t, and the assumption is
that CHAR_BIT==8./


    Contents

[hide <javascript:toggleToc()>]

    * 1 Headers
          o 1.1 General Header
          o 1.2 Pattern Header
          o 1.3 Note Header
          o 1.4 Intrument Header
          o 1.5 Second Instrument Header
          o 1.6 Sample Header
    * 2 How to use




  Headers




    General Header

     
Offset    Length    Type   EXPLANATION
******    ******    *****  ***********

0         17        char   should always contain the string "Extended Module:", Fasttracker reports the file as corrupt if not
17        20        char   stores the name of the song
37        1         char   dunno what this is or does, thou it seems as it always is 26 ??????? (See note below table)
38        20        char   usually stores the name of the tracker used to create the xm file
58        2         Uword  version of the file , hi-byte major and low-byte minor. The current format is version $0103
60        4         Dword  stores the size of this header
+4        2         Uword  the length of the song (in patterns).
+6        2         Uword  restart position
+8        2         Uword  number of channels (2,4,6,8,10,...,32)
+10       2         Uword  number of patterns (max 256)
+12       2         Uword  number of instruments (max 128)
+14       2         Uword  flags 0 = amiga frequency table, 1 = linear frequency table
+16       2         Uword  Default tempo (number of ticks)
+18       2         Uword  Default BPM (Beats Per Minute)
+20       256       Ubyte  Pattern order table (0,1,5,2,34....)

Char 26: It's an "escape char". If you cat the file on your terminal it
will stop after printing "Extended Module:" and the name of the song.
Otherwise your terminal will fill up with garbage (works for Windows/Dos
at least)




    Pattern Header

?         4         Dword  the size of this header (always 9)
+4        1         Ubyte  the pattern type. always 0 (don't think that xm files contain any other types of patterns)
+5        2         Uword  number of rows in this pattern
+7        2         Uword  the size of the pattern

/ Note that if the size equals 0, then that pattern isn't stored in the
actual module and therefore needs to be created. / Allocate 64(rows) *
(nr of channels) and set them to 128 //




    Note Header

?         1         Ubyte  stores notes from 0-96. 97 is note off
+1        1         Ubyte  stores the instrument used
+2        1         Ubyte  volume
+3        1         Ubyte  effect type      (arppegio,porta....)
+4        1         Ubyte  effect parameter (value)




    Intrument Header

?         4         Dword  stores the size of the header
+4        22        char   instrument name
+24       1         Ubyte  instrument type. should always be 0
+25       2         Uword  number of samples in instrument




    Second Instrument Header

?         4         Dword  stores the size of the header
+4        95        Ubyte  table refering to samples
+99       23        Uword  volume envelopes, stored as x,y .... x,y
+122      23        Uword  panning envelopes, stored as x,y .... x,y
+145      1         Ubyte  number of volume points stored in instrument
+146      1         Ubyte  number of panning points stored in instrument
+147      1         Ubyte  volume sustain point
+148      1         Ubyte  volume loop start point
+149      1         Ubyte  volume loop end point
+150      1         Ubyte  panning sustain point
+151      1         Ubyte  panning loop start point
+152      1         Ubyte  panning loop end point
+153      1         Ubyte  volume type: 0 = on ; 1 = sustain ; 2 = loop
+154      1         Ubyte  panning type:0 = on ; 1 = sustain ; 2 = loop
+155      1         Ubyte  vibrato type
+156      1         Ubyte  vibrato sweep
+157      1         Ubyte  vibrato depth
+158      1         Ubyte  vibrato rate
+159      2         Uword  volume fadeout




    Sample Header

?         4         Dword  sample length
+4        4         Dword  loop start
+8        4         Dword  loop end
+12       1         Ubyte  volume
+13       1         Sbyte  finetune  signed byte
+14       1         Ubyte  type 0 = no loop ; 1 = forward loop ; 2 = ping-pong loop ; 16 = 16-bit sampledata
+15       1         Ubyte  panning
+16       1         Sbyte  relative note signed byte
+17       1         Ubyte  reserved
+18       22        char   sample name




  How to use

Read patterns (pseudo code)

If the pattern size equals zero you have to create the pattern and
allocate (rows * (nr of channels)) and set the notes to 128


for(int i=0; i< patterns; i++)
{
   patternsize =  OpenDWord; // the size of the pattern.               
   type        =  OpenByte;  // always 0 (atleast should be)             
   Rows        =  OpenWord;  // this is the number of rows in this pattern
 
   if (patternsize == 0)
      {
      //create a empty pattern
      Rows = 64; // set rows to 64 by default
      // Allocate rows * (nr of channels) and set the notes to 128
      }
 
      for(int y=0; y< rows; y++)
      for(int x=0; x< channels; x++)
      {
          //readnote
      }
}

The notes are stored using a simple packing scheme, just so that the
patterns don't become too large. description of the compression
technique follows. Since the higher range of the note byte isn't used.
it is used for the compression. If the bit is set, then the other bits
are interpreted as follows:


bit 0 set: Open Note byte
  1 set: Open Instrument byte
  2 set: Open Volume byte 
  3 set: Open Effect byte 
  4 set: Open Parameter byte

Ubyte first;
first = openbyte // open up one byte to perform a little check on it to see if the note is packed or not.
 
if (first & 128)
   {         // the note is packed   
   
   if (first & 1) note       = openbyte; // the note number. Ranges from 0-96, 97 is note-off
   if (first & 2) instrument = openbyte; // the instrument used
   if (first & 4) volume     = openbyte; // the volume number
   if (first & 8) effect     = openbyte; // the effect number
   if (first & 16)parameter  = openbyte; // the effect parameter
   
   } else  { // the note isn't packed
 
   note       = first;
   instrument = openbyte;
   volume     = openbyte;
   effect     = openbyte;
   parameter  = openbyte;
   }

this document is not ready yet. More to come. Lars /If you notice
anything thats wrong, or just isn't clear. Then don't hesitate to drop
me a e-mail (lars_akesson_1(at)hotmail.com) or change the wrong part.
this is a wiki after all. :) /


Retrieved from "http://gpwiki.org/index.php/XM"


Вернуться к началу
Посмотреть профиль Отправить личное сообщение
RavenHeart



Зарегистрирован: 09.03.2010
Сообщения: 18


СообщениеДобавлено: Чт Мар 18, 2010 11:49    Заголовок сообщения: Ответить с цитатой

Тема на форуме milkytracker по sf открыта

http://modarchive.org/forums/index.php?topic=2718.new#new

заинтересованные лица - присоединяйтесь
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
radpzc



Зарегистрирован: 24.09.2007
Сообщения: 238


СообщениеДобавлено: Пт Мар 19, 2010 13:49    Заголовок сообщения: Ответить с цитатой

RavenHeart писал(а):
Тема на форуме milkytracker по sf открыта

http://modarchive.org/forums/index.php?topic=2718.new#new

заинтересованные лица - присоединяйтесь


Давно пора модель плагинов реализовать. А потом клепай что хочешь Smile
Но по-моему просить что-то сделать в milky tracker'е - тухлая затея. Времена не те. Проще написать конвертор с командной строкой, сконвертить свою базу семплов sf2 и забыть.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
RavenHeart



Зарегистрирован: 09.03.2010
Сообщения: 18


СообщениеДобавлено: Пт Мар 19, 2010 14:42    Заголовок сообщения: Ответить с цитатой

radpzc писал(а):

Давно пора модель плагинов реализовать. А потом клепай что хочешь Smile
Но по-моему просить что-то сделать в milky tracker'е - тухлая затея. Времена не те. Проще написать конвертор с командной строкой, сконвертить свою базу семплов sf2 и забыть.


я и так уже наконвертил мама не горюй)) вопрос в то чтобы все было под рукой. Да разработчики не очень то ведутся на всякие нововведения - у них где то было по поводу того что MT - классический трекер. Я думаю сам попробовать написать утилиту для конвертации - если идея будет хорошая почему бы и не включить код в проект. Трекер хороший и ему надо развиваться) Расти есть куда даже без перехода на другие форматы модулей и принципы работы.

Сторлек (разраб. Shism) например не отказывается от нововведений насколько я знаю и прогресс в проекте не хилый. Мне милки больше по душе поэтому я хочу чтобы там появлялись новые фишки, а учитывая gpl лицензию это скорей вопрос желания что то сделать.

Сейчас смотрю как обстоят дела с sf2 в линуксе (моя основная рабочая ось) - нашел проект swami - неплохой проект по разбору, тюнингу и созданию своих "шрифтов". У них есть готовые библиотеки для операций с sf - их можно использовать в своих проектах. вообще разговор уже выходит за рамки сабжа) Если будет что то получаться- открою тему в "инструментарии демомэйкера"
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
f0x



Зарегистрирован: 23.09.2007
Сообщения: 498


СообщениеДобавлено: Пн Май 26, 2014 23:30    Заголовок сообщения: Ответить с цитатой

зафиксил в минифмоде сброс панорамы на новой ноте (теперь по сути работает канальный паннинг), и пофиксил баг (вот тут уже вопрос - баг шизма или баг минифмодаSmile с лупом огибающих громкости. кому врдуг надо (в 2014-то году) - обращайтесь. А то сделать музон для скажем 32кexe в шизме это был ад и израиль...
_________________
кто сделал демку тот и выигралSmile (с) uncle night (?)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
BiTL
DOS lover


Зарегистрирован: 22.09.2007
Сообщения: 2950


СообщениеДобавлено: Вт Май 27, 2014 01:32    Заголовок сообщения: Ответить с цитатой

f0x писал(а):
зафиксил в минифмоде сброс панорамы на новой ноте (теперь по сути работает канальный паннинг), и пофиксил баг (вот тут уже вопрос - баг шизма или баг минифмодаSmile с лупом огибающих громкости. кому врдуг надо (в 2014-то году) - обращайтесь. А то сделать музон для скажем 32кexe в шизме это был ад и израиль...


Вот если бы ты занялся багфиксом ufmod ( http://ufmod.sourceforge.net/ ). было бы ещё круче Smile Во-первых он мультиплатформ, во-вторых он поддерживет DirectSound-эффекты, что позволяет улучшить звучание определенного рода треков. В ufmod меня добил баг с вибратто (которое вообще будто не работает), остальные баги обходяться так или иначе.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
f0x



Зарегистрирован: 23.09.2007
Сообщения: 498


СообщениеДобавлено: Вт Май 27, 2014 04:43    Заголовок сообщения: Ответить с цитатой

ufmod от моего трека оставил рожки да ножки правильно звучало процентов 30, ну его!
Битл, ну тут уже или мультиплатформ или директсаундSmile)) Можно покурить еще исходники минифмода, может малой кровью прикрутится процессинг какой. В XAudio есть какой-то мегауниверситетский ревер и параметрика EQ из коробки.
Я честно говоря глубоко в эту тему не собираюсь лезть, надо свой синт колупать, но пока радость что минифмод играет правильно трек и не надо с бубном танцевать. А микширует он лучше чем шизм, так что звуком я на ближайший месяц очень доволен)))
_________________
кто сделал демку тот и выигралSmile (с) uncle night (?)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов DemoScene.Ru -> Музыка Часовой пояс: GMT + 3
На страницу Пред.  1, 2, 3
Страница 3 из 3

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах