Differences between XM and IT playback of midi files

Started by chris82, March 08, 2016, 10:59:49

Previous topic - Next topic

chris82

Hi,
I would like to use OpenMpt to import midi and convert them to XM. It all works fine, but I noticed that the note sounds slightly different on XM, like if they are disconnected and not connected to each other, more abrupt.
Can you tell me why this is happening? What kind of feature is XM lacking to cause this? And is there a fix? Even if it may be against XM original format compatibility.
In my music tracker I can't use IT modules, so I would like to stick to XM.

Saga Musix

Quote from: chris82 on March 08, 2016, 10:59:49
I would like to use OpenMpt to import midi and convert them to XM.
Whyyyyyyyyyyyyyyyy.
Quote from: chris82 on March 08, 2016, 10:59:49It all works fine, but I noticed that the note sounds slightly different on XM, like if they are disconnected and not connected to each other, more abrupt.
That's because XM does not have New Note Actions to continue a previously playing note, and there is no way to "fix" that unless you manually rewrite the entire module, and at this point you could just write the entire module from scratch without having to rely on bad MIDI imports.
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

chris82

Thanks for the reply!

I am using midi, because I find it easier to work on the piano roll of FL Studio than using the tracker interface.
And I am using XM, because I am using a c# library that only support xm and s3m.
I saw there are c# binding for libopenmpt, but I  would like to stay totally managed. By the way the code on the svn doesn't compile without vst and directx  sdk even if you define the macros to not use it, there is a lot of code that is ignoring these macros.

As for these new actions, can you tell me more? Maybe I may be able to hack them in the c#library. How are they defined?

EDIT
Ok, I had a look at the IT specs. So basically every instrument define how to behave when there is a note play on a channel that already has a note playing?
I guess that's why I didn't see changes in the patterns.

Saga Musix

Quote from: chris82 on March 08, 2016, 14:45:57
I am using midi, because I find it easier to work on the piano roll of FL Studio than using the tracker interface.
And I am using XM, because I am using a c# library that only support xm and s3m.

There are so many good MIDI players out there, why do you make things more complicated that necessary? Use e.g. BASSMIDI and you won't have any conversion troubles, and the result will sound much better too.

Quote from: chris82 on March 08, 2016, 14:45:57I saw there are c# binding for libopenmpt
Where? :)

Quote from: chris82 on March 08, 2016, 14:45:57By the way the code on the svn doesn't compile without vst and directx  sdk even if you define the macros to not use it, there is a lot of code that is ignoring these macros.
The libopenmpt code definitely compiles without them, but OpenMPT itself did not. I just fixed that, thanks. You only need to define NO_VST btw, since the DirectX SDK comes pre-installed with any modern VS version anyway. And by the way, you can simply run build\download_externals.cmd to automatically retrieve the VST and ASIO SDKs, then you don't need to disable VST and ASIO support.

Quote from: chris82 on March 08, 2016, 14:45:57As for these new actions, can you tell me more? Maybe I may be able to hack them in the c#library. How are they defined?
No, I do not support doing such a perverted thing to an XM player, especially since it would most likely require you to rewrite a large part of the player anyway - at which point it would be much simpler to use an actual MIDI player library, as said.
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.