OpenMPT User from MIDI World

Started by RyanBram, February 07, 2015, 12:43:20

Previous topic - Next topic

RyanBram

Hi, Saga and OpenMPT community members,
My name is Ryan and I am new in Tracker world.

I love music, but cannot ever become a great musician. I like instrumental music, but never really like song (music with vocal). I am collecting video game music, because there are many video game which have very good sound track. There are many game OST in the form of Standard Midi Files (.mid) on internet, but I rarely see them in the form of module format (.it, etc).

The first time I jump into music creation is because I try to mimic the music from my favorite video game and the tool that I use is MIDI sequencer. I am trying to use OpenMPT, because I saw that module format somehow sounds more realistic. As a non-technical person I am just curious with several questions in  my mind:

1. What is the technical difference between MIDI and Module format? Isn't Module just MIDI with sound?
2. Are there features from MIDI which are not available in Module format and features from Module format which are not available in MIDI? Why exact translation from MIDI to Module and vice versa seems non trivial (or maybe impossible?) than translating from one module format to another module?
3. Why MIDI is composed using piano roll, but Module is composed using tracker? Is it because piano roll cannot offer some feature of Module format and tracker cannot offer some feature of MIDI or it just because nobody interested enough to jump and make them?

If my question sounds stupid, you don't need to answer it, but I hope I can get clever answer here as it seems that Module person know MIDI better than MIDI person know Module.

Cheers  ;D

LPChip

Quote
I love music, but cannot ever become a great musician. I like instrumental music, but never really like song (music with vocal). I am collecting video game music, because there are many video game which have very good sound track. There are many game OST in the form of Standard Midi Files (.mid) on internet, but I rarely see them in the form of module format (.it, etc).
Old games from the DOS era may have module music. Sometimes you may need to rip it, other times it can be in the data folder, but usually you can download them. Games such as Jazz Jack Rabbit, Unreal Tournament, Unreal 1 uses module music. Just search for mod, s3m, xm or it and game music.

Quote1. What is the technical difference between MIDI and Module format? Isn't Module just MIDI with sound?
Quite a bit actually. Let me first explain what MIDI is. Midi is a language. It is used to communicate between a source and sound device. For example, a keyboard can be a source, and a sound generator can be a sound device. The midi language and interface was created so one keyboard can control other keyboards at the same time so you don't have to keep running around to various keyboards etc. For example, you setup that midi channel 1 goes to synth 2 and midi channel 2 goes to generator 4. Both are controlled from synth 1. You play from synth one some notes, then switch to midi over channel 1 and suddenly synth 2 is making the sounds. Then you switch over to midi channel 2 and generator 4 is making the sounds.

This is already neat, but the industry went a step further, and created hardware that would allow you to program simple patterns and send them out over different midi channels simultaniously. You no longer needed more people to control different sources to get a song played. This is how the sequencer was created.

The language you are sending between devices are simple text messages. You capture those text messages, dump it into a file, name it .mid and suddenly you can play it back. (sort of)

Module music is a new format made from scratch, with the sole purpose of having small sound clips (samples) and manipulate them by playing them at different speeds together. Unlike midi that does not store anything related to the actual sound (only an identification number) modules store all their sounds. The more modules were evolved, the less it actually needed to store sounds, but references to virtual instruments (VSTi's) instead.

QuoteAre there features from MIDI which are not available in Module format and features from Module format which are not available in MIDI? Why exact translation from MIDI to Module and vice versa seems non trivial (or maybe impossible?) than translating from one module format to another module?
That depends on several things. Which module format are we talking about? Given that they're two different beasts, the most evolved format (mptm) can definitely do most, if not all, that midi can do although it may not be as midi was designed, as it tries to emulate the same behavior. Midi on the other hand, can't play specific sounds, given that it doesn't store it. But when modules were created, people were looking for ways to accomplish the same with midi, and as such, it is possible with modern sequencers to play samples too. But if you then save a song, it is no longer a .midi file, only using its language.

Quote3. Why MIDI is composed using piano roll, but Module is composed using tracker? Is it because piano roll cannot offer some feature of Module format and tracker cannot offer some feature of MIDI or it just because nobody interested enough to jump and make them?
Technically speaking, its not. Most midi sequencers use the piano roll orientation because midi is focussed on creating a song on instrument basis. You record one or more instruments at the same time for the total duration of a song usually. With trackers, it was meant to focus on small sections of the song, where it didn't matter where you stored your data. Module music was not meant to be the same as midi and as such, the developers found it more logical to use a spreadsheet kind of interface, to give total overview of what happens at the same time in one small section of the song, rather than to view one instrument at the time.

Hope this information was helpful.
"Heh, maybe I should've joined the compo only because it would've meant I wouldn't have had to worry about a damn EQ or compressor for a change. " - Atlantis
"yes.. I think in this case it was wishful thinking: MPT is makng my life hard so it must be wrong" - Rewbs

Saga Musix

In addition to what LPChip said, here are some more gory details. First off, you have to distinguish between two kinds of MIDI:

MIDI, the data protocol
That's what LPChip is talking about. It's a relatively simple but also very limited language for musical devices to talk to each other. In many ways, the world of modules and MIDI do not map well into each other:
- In MIDI, you can have a practically infinite amount of notes per channel. In modules, you typically have control over exactly one note per channel (yes, you can let a "past note" play while a new note is already being triggered in some formats, but you lose control over these past notes - you can just stop them altogether if you want). Thus, it is very difficult to import a MIDI file into a module tracker because you never really know beforehand how long notes will last and how many channels you will need.
- MIDI has a very different concept of volume. Notes have a velocity, which is the initial volume at which the note is being hit. After the note has been triggered, there is no standardzied way to modify this volume. You could use the widely understood channel volume MIDI CC, but that affects all notes on the same channel, or you could use polyphonic aftertouch messages, which few synthesizers understand, and even among those the behaviour is not standardized.

MIDI, the file format
And this is what most people refer to when they talk about MIDI, showing that they have no idea about the complexity of the whole matter.
Standard MIDI files contain the previously explained MIDI commands, but they also contain the timing information that tells you how long notes last and such. This timing information is very different from how modules work and is the reason why you will never find a perfect MIDI to Module converter. I won't go into the details here, you simply have to understand that these two concepts do not translate into each other very well.
MIDI files basically have very fine-grained note timing, allowing for very natural recordings simply through their concept. Module files were "invented" to consume as little memory and CPU processing time as possible, hence they are fixed to very coarse timing intervals (rows). Playing an original MOD file on the Amiga consumes virtually no CPU time, which was the goal back then. Parsing a MIDI file would consume significantly more CPU time.

Quote3. Why MIDI is composed using piano roll, but Module is composed using tracker? Is it because piano roll cannot offer some feature of Module format and tracker cannot offer some feature of MIDI or it just because nobody interested enough to jump and make them?
This should be clear from the technical standpoint after reading my previous paragraph: A piano roll naturally allows for "infinitely" small timing details, which is incidentally how MIDI timing works. A tracker typically has a note grid, which incidentally coincides with the way module timing works. Makes sense, doesn't it?

It's a bit like comparing Photoshop and GIMP files - sure, both contain images that are synthesized through means of layers, but you can be very sure that they internally work very differently and that it's nearly impossible to do a perfect conversion between the two formats.

Also, I'm not sure where you have been looking, but tons of games from my childhood feature module music. After all, this is how the module format was born! You may ask yourself "but why are there so many MIDI rips of games and not module rips", and that may come from the fact that MIDI is kind of a universal language that's understood by many programs, so if you want to rip some custom game music format into some commonly understood format, then MIDI is usually the way to go. Many games used custom music formats which were again delay-based instead of row-based (even though the original music was written in a module format and not a MIDI file), so ripping them to a MIDI file would be much easier.
» 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.

LPChip

Nice addition Saga_Musix. Well said.
"Heh, maybe I should've joined the compo only because it would've meant I wouldn't have had to worry about a damn EQ or compressor for a change. " - Atlantis
"yes.. I think in this case it was wishful thinking: MPT is makng my life hard so it must be wrong" - Rewbs

RyanBram

#4
WOW, :o I never expect such detailed answer.
Thank you very much, LPChip and Saga. ;D

I am trying to understand your explanation in every detail. But to satisfy my curiousity, please allow me to ask one more question:

While Standard MIDI File and Module Format has many technical difference, is it possible to create an intermediate format as a bridge between both format?

This format should able to store all of the information from them and then exported to Standard MIDI file or Module format as prefered by musician without loss of quality. (Just like Adobe .pdf or GIMP .xfc as intermediate format between many image format).

I am asking here, because I want to know about possibilities to work with piano roll or musical note, but exporting the result as module. I just try to think pragmatist, musician should able to work with tools or interface they are familiar with, but also able to export their work to the format they prefer.

Regards,
Ryan

LPChip

You're welcome.

Let me again explain that midi amd modules are 2 different beasts.

You can compare this to a car vs a motorcycle. Both are made to drive on the highway (both are music apps) but both have their own strengths and weaknesses. As in, they both can do things the other just simply cannot.

To elaborate: a car has 4 or more seats, so 4 people can drive in one vehicle, a motorcycle can only hold 2. But a motorcycle is smaller and can accellerate much faster than a normal car can, so technically speaking, a motorcycle can go to places a car cannot (even though a motorcycle is not allowed to go there).

So short answer to your question:
Quote
While Standard MIDI File and Module Format has many technical difference, is it possible to create an intermediate format as a bridge between both format?
No, this is impossible because one format can do things the other cannot, and even though there is some overlap in what both can do, you would basically limit a format which means you lose over gain.

Now as with my motorcycle vs car comparison, there are methods to bridge both worlds into making things a bit more exchangable. For example, you can buy a trailer and place your motorcycle on it, have the advantage of the car with 4 seats, yet being able to continue to ride your bike from that point on. Or if you have more motorbikes and 2 or more persons with a license, you could also drive with more passengers. Of couse, a motor doesn't have a roof, so there's never a 100% bridge.

Neither is there with music.
Theoretically speaking, you can render all channels to wav from either format, and use that wav in the other program and continue to work. Also, you can load sequencers as VSTi, and OpenMPT also can be loaded as VSTi in a sequencer, so you can sort of include one world into the other. It doesn't work perfectly, and if you want to go that road, you often are better off just using that program al-together.

So the question would rather be, why would you need to bridge that gap. Is it really that necessary, or are you just trying to avoid learning one of the two?

For your information, I both run OpenMPT and EnergyXT on my system. EnergyXT is a sequencer for midi usage. Why? Because sometimes I want to make a song where a sequencer is more suited than a tracker. I think you should head into the same direction. Use both for when they are suited for different songs, not try and combine both for the same song.
"Heh, maybe I should've joined the compo only because it would've meant I wouldn't have had to worry about a damn EQ or compressor for a change. " - Atlantis
"yes.. I think in this case it was wishful thinking: MPT is makng my life hard so it must be wrong" - Rewbs

Saga Musix

Quote from: RyanBram on February 08, 2015, 09:25:39
I just try to think pragmatist, musician should able to work with tools or interface they are familiar with, but also able to export their work to the format they prefer.
The problem here is that the format is inherently bound to the way you edit it.
The problem here is that you want to convert between source formats, which is often not really possible. I'm really not sure how to explain this because it's terribly obvious to me, but what you basically want is Cubase to perfectly work with Logic song files, or ProTracker to support Impulse Tracker files perfectly. There are target formats which you can simply export to, e.g. WAV, MP3, OGG, etc... just like you can export both Gimp and Photoshop files to e.g. PNG. However, there is no such thing as a perfect Gimp to Photoshop converter or vice versa, simply because these source formats are too different from each other. I'm not sure what kind of advantage you hope to get from converting your MIDI composition to modules, but if it's really just about "MIDI with samples", then you may want to consider using MIDI with soundfonts. I heard that this is currently for example a very popular approach on iOS game development, because there's a native MIDI + soundfont player, so you can just compose using whatever MIDI software you want, put the MIDI file in your game and then ship some soundfont with the game. That's essentially the same as converting your MIDI file to a module and add samples, except that you don't try to square a circle.
» 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.

RyanBram

Ok. Now I really understand that MIDI and Module are both editable source format just like the analogy of .psd and .xfc. And OGG, MP3, are target format just like PNG and JPG. All of your explanation is very clear to me. I thought my question is very common from MIDI user (at least I heard it from my friends), but I never expect that I will get a very detail answer here. So thank you very much for both of you ;)

Yeah, Saga is true. I like the ease of use MIDI editor, but want to take advantage of Module format which contains samples with it. :P But MIDI with soundfont seems impractical for me, because most of high quality .sf2 will take hundreds of megabyte from hard disk space, so the total space which is required still bigger than module. It is also impractical if I distribute .sf2 just for sharing single .mid file.

Exact conversion between MIDI and Module may never happen, but Benjamin Rosseaux  prove that he can get as close as possible to perfect conversion with his BeRo Tracker. It is also valid for GIMP developer who are trying to import .psd as close as possible or LibreOffice developers who are trying to read .docx format.

After all,...
just like LPChip said, maybe I just need to start learning about how to use tracker properly and get familiar with it. It is very nice to have discussion with both of you and I am proud to become this forum member.  :)

Best regards,
Ryan

LPChip

You're welcome. A tracker is actually quite easy to learn, especially OpenMPT because its interface looks and feels windows, a program you already know a lot about.

I've made a tutorial that is easy to follow and does more than just telling you to place some notes and how to do it. It tells you why you do it and teaches some small tricks along the way. Most people if not all, that followed the tutorial were then able to make music with OpenMPT. Given that you already have experience with a sequencer, you should have a headstart, because learning the tool is one thing, learning music is another. The tutorial is learning the tool, and that's all you need.

See also: OpenMPT Wiki english / Tutorial: Getting Started
"Heh, maybe I should've joined the compo only because it would've meant I wouldn't have had to worry about a damn EQ or compressor for a change. " - Atlantis
"yes.. I think in this case it was wishful thinking: MPT is makng my life hard so it must be wrong" - Rewbs

Saga Musix

Quote from: RyanBram on February 08, 2015, 13:49:35
But MIDI with soundfont seems impractical for me, because most of high quality .sf2 will take hundreds of megabyte from hard disk space
If you loaded hundreds of unused samples into a module, it would be the same effect.
Naturally you would need to use a tailored soundfont file, just like you remove any unused samples from a module. That's how SF2+MIDI in games usually works. Since you mention distribution of the song, well, there are similar problems in both the MIDI and module world: In the MIDI world, you have to tell which synthesizer or soundfont to use, and in the module world, you often have to tell people which player to use, since not all players will play the file correctly. And to go sure that everyone can hear the song "as intended", you can always provide an MP3/OGG render.

I am aware of BeRo's MIDI importer, but it is also not perfect. Eventually I will try incorporating it into OpenMPT, but it would require translating old Pascal code to C++, and it would require me working on something I am not particularly interested in.
» 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.

Harbinger

I was also originally a MIDI musician back in the late 80s until as late as 2004. I understand the differences between the two formats and have found that using tracking instead of sequencing is far better because of one simple characteristic: control.
MIDI files do not have the same sample control as tracking. In tracking files, loop points can be set, various tweaks can be applied to the sample (before or during playback), etc. In MIDI files, you are stuck with the sounds the instrument or VSTi has.

ModPlug Tracker has some very strong sequencing capabilities as well as a lot more control over sound output by VSTi's, which are the same as onboard hardware. These changes have only been added in the past 5 years or so, and make Modplug extremely competitive with other applications which aren't free. Plus the fact that you can IMPORT so many different tracking formats, ModPlug is your Swiss Army knife if you're used to handling other file formats.

There are ways to import MIDI files into Modplug, but the import is not perfect and you'll probably have to go back and do a lot of editing to get to a workable project. You'll have to see use trial-and-error to import into OpenMPT, and determine if editing an imported MIDI file is going to be more work than just inputting the song into MPT -- which is relatively easy.

FreezeFlame(Alchemy)

QuoteI am aware of BeRo's MIDI importer, but it is also not perfect. Eventually I will try incorporating it into OpenMPT, but it would require translating old Pascal code to C++, and it would require me working on something I am not particularly interested in.
And i though that you were done making General MIDI more compatible with OpenMPT.
Nice that you wish to better it anyway, but isn't Pascal hard to convert to C++, and wasn't that MIDI importer from BeRo Tracker originaly in Delphi?
QuoteMIDI files do not have the same sample control as tracking. In tracking files, loop points can be set, various tweaks can be applied to the sample (before or during playback), etc. In MIDI files, you are stuck with the sounds the instrument or VSTi has.
You gave me an interesting idea, Harbinger. How about there being an option to set loop points 'on-the-fly' with tracker commands on an pattern?
Blue Flames of the Night.

Was known as Alchemy before(with an Dialga picture).

LPChip

Quote from: FreezeFlame(Alchemy) on February 13, 2015, 17:43:47
but isn't Pascal hard to convert to C++, and wasn't that MIDI importer from BeRo Tracker originaly in Delphi?
Yes and yes. Borland Delphi uses the Pascal programming language. ;)
"Heh, maybe I should've joined the compo only because it would've meant I wouldn't have had to worry about a damn EQ or compressor for a change. " - Atlantis
"yes.. I think in this case it was wishful thinking: MPT is makng my life hard so it must be wrong" - Rewbs

Saga Musix

Quote from: FreezeFlame(Alchemy) on February 13, 2015, 17:43:47
And i though that you were done making General MIDI more compatible with OpenMPT.
I never did something like  this? And how should I make a standard compatible with OpenMPT? Doesn't it have to be the other way around? :P
Quote from: FreezeFlame(Alchemy) on February 13, 2015, 17:43:47Nice that you wish to better it anyway, but isn't Pascal hard to convert to C++, and wasn't that MIDI importer from BeRo Tracker originaly in Delphi?
Go educate yourself, Delphi is a Pascal dialect. And err, the differences between Delphi and C++ are mostly of syntactic nature. In the end, all of it has to be translated to machine code anyway, so most programming languages are to some extent very similar. I wouldn't say it's hard or complicated, it's just a tedious job.
» 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.