Making a song with MID2SMPS (Detailed tutorial w/images)

Discussion in 'Tutorials' started by KaikeKTH, Sep 30, 2019.

  1. KaikeKTH

    KaikeKTH See you in 6 Months. Trialist

    Dec 19, 2016
    Anywhere City, Land of Ooo.
    So, a lot of people may have difficulty in creating a successful SMPS song, due to the lack of up-to-date tutorials, because they can't understand the current tutorials or simply because they just can't get the things right.
    So, because of that, i'll be making this step-by-step tutorial, so anyone can be making their own songs.

    First of all, you'll need MID2SMPS. You can download it here. After that, you're going to need a MIDI tracker. Any tracker will work, but i use FL Studio. So we'll be working with that here.
    You also want to download the Midi Driver, since it emulates how your project would sound in the Genesis. You can download it here.

    After you got everything, you'll want to set the Midi Driver first, so you won't have any problems when making a song. Go into the Mid2SMPS Midi Driver folder and open MDMidDrvCfg.exe.
    You'll need to load the files into the driver. If you wanna make SMPS for a specific Sonic game (EX: Sonic 2), you'll need to choose the correspondent files. In our case, we'll be making a Sonic 1 SMPS. So let's load the corresponding files for Sonic 1.
    The full path to the MIDI Driver must not exceed 80 characters. So keep in mind that if the MIDI Driver and the DLL is inside something like "C:\Users\Mamma Mia\Wolfeschlegelsteinhausenbergerdorff\llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch\MDMidiDrv.dll", it won't work.

    Now, the file loading should be like this:

    GYB Ins.-Lib File ==> Instruments.gyb
    PSG Envelope File ==> S1_PSG.lst
    Mappings File ==>
    DAC Data File ==> S1_DAC.ini

    All of these files can be located inside the mid2smps folder.

    If you don't have the mappings, you can either get it from ValleyBell's SMPSPlay, or download them here.
    After that, click on the Un-/Install button. Mark all the check boxes, and press Install Driver. After that, press Apply Changes and it's done. The Midi Driver is ready for use.
    If you get an error, try opening the Midi Driver as Administrator, since the program makes registry changes.

    After that, open FL Studio. Go into Options -> MIDI settings. Select "mid2smps MIDI Driver" and set the port to anything you find better.


    After that, you're ready to compose your first MIDI to be converted into SMPS. Your new project should have a maximum of 10 MIDI Outputs, and all of them should be set with the port you set for Mid2SMPS and it cannot repeat channels. Notes in the same channel cannot overlay theirselves. Instead, you're gonna need to put them in a separate channel, because if you try to overlay notes in the same channel, only one of them is going to play. So a note section of "===" is not allowed, you're going to need to split this in two (¯¯¯ and ___).
    Channels 1-6 is FM 1-6 (General instruments)
    Channel 10 is DAC (Drums, Samples)
    and Channels 11-13 is PSG 1-3 (Square waves).
    However, if you use DAC, that means you cannot use FM 6 (Or else they will conflict), and hi-hats often use PSG3. Also, you can expect FM4 and FM5 to be muted by SFX a lot, as these two channels are used to play sound effects.
    Let's take a look on how an output should be configured.
    This is the output configuration for FM4. The channel is 4. So that means this output is meant to act like FM4. The port is 1, the same port that i set for the MIDI Driver. That means the output is going to play like if it was being emulated on the real hardware.

    After setting up your template, you're ready to work! You don't wanna make your project have more than 130 of tempo, or else you're going to have to fix it manually at the Mid2SMPS. In this tutorial, i'll be making a short version of Megalovania, since it's a known melody.
    After that, go into File -> Export -> MIDI File and save your MIDI wherever you want.
    Now you must be thinking "Let's convert it straight into Mid2SMPS!" Wrong. To convert it properly, we need to load some things first.
    First of all, open mid2smps.exe (the program, not the driver), and press Load Ins. Lib. Search for Instruments.gyb and load it.
    After that, go into Instruments & Mappings -> Open Mappings Editor.
    Alright, now what are we gonna do here? Well, first of all, you need to load things first. The order is essentially the same as we did for the MIDI Driver, except for the DAC, so we'll load it like this:

    Load PSG Envel.==> S1_PSG.lst
    Load mappings ==>
    Load DAC Names ==> S1neko_DAC.lst

    Now your Mapping Editor window should be looking something like this:
    Now you can convert your MIDI and turn it into a SMPS with no major problems! Press File -> Open Midi File and select your MIDI File. After that, File -> Save SMPS, and it's done!
    You can also use Quick Convert, where you'll be converting your MIDI straight into SMPS, with no alterations of the program. It's essentially the same thing as opening the Midi and saving it as SMPS.
    Now let's put it into the disassembly and build the ROM.

    It was successful! However, you must have noticed that the song doesn't loop. That's easy to solve! Let's go back into FL Studio and let's open one of the Outputs configuration. Just click at the output name.
    Oh look, there's 9 empty controls here. Choose one of them, and at the configuration, set the name as Loop(Or anything you want, you can even call it John if you want to), set the controller to 111 and the range to 1.
    It should look like this:
    After that, right click on your new "Loop" controller, and select Edit events.
    Now, to make a working loop, you'll need to find where you want the loop to start, and where do you want it to end.
    Now that's something only you can do. But to find the place where i want to loop, i'll listen to my song, and try to pause the song where i want the loop to be, always observing the piano roll. After that, i'll go to the top of the events window, and try to be the most accurrate possible when making the event. I don't wanna place it two segments before the end of the song, or else the transition won't be smooth, and it'll sound like trash.
    Keep in mind that a note cannot pass the loop limit, unless there's another one at the loop start, that will give continuation to this one.
    See? The red represents the loop, and the G4 note is out of the limits. That's not allowed.
    After you find where do you want the loop to start, you click at the top from where do you want it to start.
    You should be getting something like this:
    Now, unless you want your song loop from the start, you can now copy and paste these events and place it in all of the remaining channels. If not, then let's continue the tutorial.

    After you find where do you want it to start, you now need to find where your loop is going to lead. The process is essentially the same, but now you wanna click at the bottom instead of the top. This should give you a very thin line, about a pixel high.
    Here it is an example.

    After that, repeat the same proccess with all the other outputs that aren't empty. All the outputs should have a controller with a controller set to 111 and the range set to 1. As for the event, you can just copy and paste it.
    After setting your loop, export the MIDI and convert it to SMPS.
    Now... Let's see how it sounds.

    Another successful work.

    Now... What if you just wanna to convert some MIDIs? Well, that's not a problem, because that's also possible! Open a midi from your preference on FL Studio. I'll be using Earthbound's Megalovania again.
    Whoa, we got a lot of outputs here! What do we do? First of all, we're going to need to delete unnecessary outputs. These outputs are things such as duplicates and background noise.
    In my case, there's 10 of them, and SMPS can only support 9 at a time. So i'll delete the last one.
    I'll be also changing their channels, so they won't conflict when playing. I also decided to rename them, to make my life easier.
    You must have noticed that i deleted the song start, thus leaving a big gap. But if you take the pattern your song is, and put them in a Track, the program will export it from the track. That means you can also do MIDIs with patterns, and have them converted into SMPS. Muted patterns also won't export when saving your MIDI, so if you're unaware if you should delete a output or not, just mute it. It won't export.

    After you make the changes you want in the song, convert it into SMPS and it's done. If your song is not at the right tempo, go to Mid2SMPS, then Extras and open the Tempo Calculator.
    "Whoa, how do i use this thing?"
    It's trial and error. What you need to do is to keep adding +1 to the Tick Multiplier. Let's focus our attention at the right part of the window.
    There's two BPM's, one on the left(marked with green), and other one on the right(marked by red). The green BPM represents the MIDI tempo. My converted MIDI had 118 of tempo, while the red BPM represents what Mid2SMPS detected and will convert if you turn your MIDI into SMPS.
    As i said, to change that, you need to keep adding +1 to the Tick Multiplier, until you get something approximate to the original. In my case, i didn't needed to do anything, since my tempo is already close enough to the original.
    After you get the correct tempo, File -> Save SMPS. As you can see, i don't need to do any changes, since my tempo is already close enough to the original, so i'll just export it with Tick Multiplier as 0.

    Now that you know the basics of doing SMPS, show the world the potential you got. Be free to do whatever you want, be it a fully original song, or just a MIDI conversion.
    If you'd like to suggest something, like additions or edits, please comment below and i'll update the tutorial and add your name to the contributors.

    MGHACKS November 9th 2019 is something... Member

    Aug 7, 2019
    Great tutorial. Now people can finally use other music rather than the same repeated music or remixes.
  3. Dj. Joker 27

    Dj. Joker 27 Known as "Mr. Joker 27" Member

    Aug 26, 2016
    With this tool I've made it songs with more of 50 instruments and don't forget MID2SMPS export the songs without optimising, SMPSOpt is a great tool for optimize your SMPS.

    This is my last SMPS done with MID2SMPS, this song uses the max instrument limitation 128 partially.
    Full panning and pitch effect.
  4. ValleyBell

    ValleyBell Well-Known Member Member

    Dec 23, 2011
    Just a few nitpicks from my side:
    • I would prefer it if you would just link to the mid2smps topic instead of doing direct links to the files. (Just in case I happen to update the links, because your links would be outdated/broken then.)
    • Modifying the Ticks per Quarter and Tick Multiplier values is not just trial-and-error. There is a system behind it. It requires some basic knowledge about musical theory regarding note durations though.
      I made a summary about it here.

    Dj. Joker 27: The most recent version of mid2smps doesn't have a 128 instrument limit. GYB files support about 32000 instruments and you can assign them to 128^3 MIDI instruments. Your MIDI editor must be able to use Bank Select MSB/LSB MIDI controllers though. (That's what the GS and XG standards use to access more instruments as well.)
    Dj. Joker 27 likes this.
  5. Dj. Joker 27

    Dj. Joker 27 Known as "Mr. Joker 27" Member

    Aug 26, 2016
    I said that because, I can't add more instruments on my 2612 Instrument editor, and I use an old version, that is, I mean about the limit of instruments. I added all instruments and assigned all in MID2SMPS (old version), the Title Track song from X-Men Mind Games, uses more instruments of 128, I'm get accustomed to use the old ver about MID2SMPS. Also I don't tested the last version of MID2SMPS, but well, is good to know that I can add more instruments passing the max limitation (128).
  6. kenny0989

    kenny0989 Well-known idiot Member

    Aug 19, 2016
    For ticks per quarter, I suggest you use mutiple of 4.
    EMK-20218 likes this.