Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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-формата. Я бы сказал, трекерщики какраз и придумали "саунд-фонты" |
|
Вернуться к началу |
|
|
RavenHeart
Зарегистрирован: 09.03.2010 Сообщения: 18
|
Добавлено: Пн Мар 15, 2010 11:55 Заголовок сообщения: Re: Формат инструментов XI |
|
|
BiTL писал(а): |
ЗЫ: Но грузить саунд-фонты в Милки не помешало бы, это всетаки отвечает принципам и структуре XM-формата. Я бы сказал, трекерщики какраз и придумали "саунд-фонты" |
Посмотрю что смогу своими силами сделать - 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
|
|
Вернуться к началу |
|
|
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
|
|
Вернуться к началу |
|
|
radpzc
Зарегистрирован: 24.09.2007 Сообщения: 238
|
Добавлено: Пт Мар 19, 2010 13:49 Заголовок сообщения: |
|
|
Давно пора модель плагинов реализовать. А потом клепай что хочешь
Но по-моему просить что-то сделать в milky tracker'е - тухлая затея. Времена не те. Проще написать конвертор с командной строкой, сконвертить свою базу семплов sf2 и забыть. |
|
Вернуться к началу |
|
|
RavenHeart
Зарегистрирован: 09.03.2010 Сообщения: 18
|
Добавлено: Пт Мар 19, 2010 14:42 Заголовок сообщения: |
|
|
radpzc писал(а): |
Давно пора модель плагинов реализовать. А потом клепай что хочешь
Но по-моему просить что-то сделать в milky tracker'е - тухлая затея. Времена не те. Проще написать конвертор с командной строкой, сконвертить свою базу семплов sf2 и забыть. |
я и так уже наконвертил мама не горюй)) вопрос в то чтобы все было под рукой. Да разработчики не очень то ведутся на всякие нововведения - у них где то было по поводу того что MT - классический трекер. Я думаю сам попробовать написать утилиту для конвертации - если идея будет хорошая почему бы и не включить код в проект. Трекер хороший и ему надо развиваться) Расти есть куда даже без перехода на другие форматы модулей и принципы работы.
Сторлек (разраб. Shism) например не отказывается от нововведений насколько я знаю и прогресс в проекте не хилый. Мне милки больше по душе поэтому я хочу чтобы там появлялись новые фишки, а учитывая gpl лицензию это скорей вопрос желания что то сделать.
Сейчас смотрю как обстоят дела с sf2 в линуксе (моя основная рабочая ось) - нашел проект swami - неплохой проект по разбору, тюнингу и созданию своих "шрифтов". У них есть готовые библиотеки для операций с sf - их можно использовать в своих проектах. вообще разговор уже выходит за рамки сабжа) Если будет что то получаться- открою тему в "инструментарии демомэйкера" |
|
Вернуться к началу |
|
|
f0x
Зарегистрирован: 23.09.2007 Сообщения: 498
|
Добавлено: Пн Май 26, 2014 23:30 Заголовок сообщения: |
|
|
зафиксил в минифмоде сброс панорамы на новой ноте (теперь по сути работает канальный паннинг), и пофиксил баг (вот тут уже вопрос - баг шизма или баг минифмода с лупом огибающих громкости. кому врдуг надо (в 2014-то году) - обращайтесь. А то сделать музон для скажем 32кexe в шизме это был ад и израиль... _________________ кто сделал демку тот и выиграл (с) uncle night (?) |
|
Вернуться к началу |
|
|
BiTL DOS lover
Зарегистрирован: 22.09.2007 Сообщения: 2950
|
Добавлено: Вт Май 27, 2014 01:32 Заголовок сообщения: |
|
|
f0x писал(а): | зафиксил в минифмоде сброс панорамы на новой ноте (теперь по сути работает канальный паннинг), и пофиксил баг (вот тут уже вопрос - баг шизма или баг минифмода с лупом огибающих громкости. кому врдуг надо (в 2014-то году) - обращайтесь. А то сделать музон для скажем 32кexe в шизме это был ад и израиль... |
Вот если бы ты занялся багфиксом ufmod ( http://ufmod.sourceforge.net/ ). было бы ещё круче Во-первых он мультиплатформ, во-вторых он поддерживет DirectSound-эффекты, что позволяет улучшить звучание определенного рода треков. В ufmod меня добил баг с вибратто (которое вообще будто не работает), остальные баги обходяться так или иначе. |
|
Вернуться к началу |
|
|
f0x
Зарегистрирован: 23.09.2007 Сообщения: 498
|
Добавлено: Вт Май 27, 2014 04:43 Заголовок сообщения: |
|
|
ufmod от моего трека оставил рожки да ножки правильно звучало процентов 30, ну его!
Битл, ну тут уже или мультиплатформ или директсаунд)) Можно покурить еще исходники минифмода, может малой кровью прикрутится процессинг какой. В XAudio есть какой-то мегауниверситетский ревер и параметрика EQ из коробки.
Я честно говоря глубоко в эту тему не собираюсь лезть, надо свой синт колупать, но пока радость что минифмод играет правильно трек и не надо с бубном танцевать. А микширует он лучше чем шизм, так что звуком я на ближайший месяц очень доволен))) _________________ кто сделал демку тот и выиграл (с) uncle night (?) |
|
Вернуться к началу |
|
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|