mid2smps

Discussion in 'Utilities' started by ValleyBell, Jun 26, 2013.

  1. ValleyBell

    ValleyBell Well-Known Member Member

    Joined:
    Dec 23, 2011
    Messages:
    166
    Latest build:
    mid2smps 0.3.5 binary, source (Visual Basic 6), MIDI driver, MIDI driver source


    Original post
    It's about time that I release mid2smps 0.3 final. Really.

    Since the release of mid2smps 0.3 beta on Sonic Retro, I've been using it very regularly and fixed another bug every few weeks.

    Also, in October 2012 I wrote a special tool for mid2smps that is very nice - a MIDI driver that runs a recreation of an SMPS sound engine including all of its possibilities and limitations.

    Now the important things, the features of mid2smps:
    • converts MIDIs to Sonic 1 SMPS format
    • full support for Volume, Pan, PitchBend and Tempo changes
    • per-channel looping
    • programmable modulation, no-attack and Note Fill effects
    • dynamic switching between melody and drum mode on all FM channels
    • a mappings editor that allows you to assign GM drums to DAC, FM and PSG channels and instruments
    • range limiter to prevent notes outside of the SMPS frequency limit
    • built-in 2612edit instrument editor
    Finally, the download links: binary, source (Visual Basic 6), MIDI driver

    The mid2smps package includes 2612edit, Midi Splitter and SMPS Optimizer (updated since last release).

    If you want to preview the converted SMPS files, you can download this package.

    Enjoy and happy music making!

    EDIT: If you need example MIDIs, the original mid2smps 0.1 release has some included. (only with YMX instrument banks though)

    EDIT2: Added SMPS preview package.
     
    Last edited: Nov 1, 2018
  2. Crash

    Crash Well-Known Member Member

    Joined:
    Jul 15, 2010
    Messages:
    302
    Location:
    Australia
    The MIDI driver is awesome, you can use it in whatever midi editing program you're already comfortable with (Pro Tools, Cubase, Reaper, Anvil Studio etc), it's probably far easier to create SMPS music with this than anything Sega had back in the day.
     
  3. JoenickROS

    JoenickROS ROS (bug fixing in progress) Member

    Joined:
    Feb 5, 2012
    Messages:
    929
    You should make a guide on how to use it, because when I did it no DACS saved or PSGs so all I heard was fuss, I could hear the instruments though. Also it doesn't loop.
     
  4. nineko

    nineko I am the Holy Cat Member

    Joined:
    Mar 24, 2008
    Messages:
    1,902
    Location:
    italy
    There are readme files included. If you read them you'll find out how to set up the drums and how to make it loop. Change attitude, be grateful for the tools you get.


    To clarify, you CAN post comments and suggestions, but read the documentation first. Saying "the drums doesn't work and it doesn't loop" when both of those features are implemented means that you're doing it wrong. Redo from start. Should you still fail, ask more politely, and someone (maybe even myself) will gladly help you. I have to admit some features aren't that intuitive, but there are better ways to ask for help.
     
    Last edited by a moderator: Jun 26, 2013
    astroblema likes this.
  5. JoenickROS

    JoenickROS ROS (bug fixing in progress) Member

    Joined:
    Feb 5, 2012
    Messages:
    929
    I wasn't trying to be rude. Sorry.

    Edit: I read them, guess ill try again. :/
     
    Last edited by a moderator: Jun 26, 2013
  6. nineko

    nineko I am the Holy Cat Member

    Joined:
    Mar 24, 2008
    Messages:
    1,902
    Location:
    italy
    It's ok. Now I feel like giving you a tip.


    The loops are set up by placing a specific MIDI controller in every channel at the proper place. To do that you need a good MIDI sequencer (or my MIDI Event Editor). From mid2smps_Ctrls.txt:


    6F/111 [undefined] Loop Control
    00 - Loop Start
    01 - Loop EndWhat does it mean? Say, your song has 4 measures of intro, then measure 5 is the first one of the section that loops, and measure 9 is identical to measure 5.

    Measure:Beat:Tick (in this example I'll assume the ticks per beat are 480, but it can vary)


    1:1:0 MIDI begins here


    4:4:479 intro ends here


    5:1:0 loop section begins here: add a Controller 111 with a Value of 0 here


    8:4:479 loop section ends here: do nothing here


    9:1:0 add a Controller 111 with a Value of 1 here


    xxx:4:479 MIDI ends here. Have a nice day.


    The per-channel loop definition is useful in case a channel is more "repetitive" than another one, e.g. if it always repeats 4 chords, or the same drum pattern, while the melody changes. Think Star Light Zone drums. This saves space in the converted SMPS. Otherwise, for simplicity, you can set the loop points for all the channels at the same place (but still, a pair of Controller 111s in every channel), and run the song through smpsOpt afterwards. It won't be as optimised as it could be (because of how smpsOpt deals with F7s and F6s, but let's not get technical), but it would still be good. When you take more confidence with loops and Controllers there's always time to do it better.
     
    Last edited by a moderator: Jun 26, 2013
  7. JoenickROS

    JoenickROS ROS (bug fixing in progress) Member

    Joined:
    Feb 5, 2012
    Messages:
    929
    Ok I know how to work it now except that, I don't understand how to use the Tempo Calculator.
     
    Last edited by a moderator: Jun 28, 2013
  8. ValleyBell

    ValleyBell Well-Known Member Member

    Joined:
    Dec 23, 2011
    Messages:
    166
    The Tempo Calculator shows you how the tempi in the MIDI will end up after the conversion.

    You need to adjust the "Ticks/Quarter" in the main window until you get a after-conversion-BPM (that's the rightmost "BPM" column in the "Used Tempi" list) that fits approximately.

    If you need very high BPM, you may need to set "TempoDiv" to 1.

    Also: Although mid2smps allows them, you better don't use Ticks/Quarter values that aren't multiples of 4.

    I usually use 12 (with TempoDiv set to 1), 16 or 24. And sometimes 32 for slow songs.
     
  9. Spanner

    Spanner The Tool Member

    Joined:
    Aug 9, 2007
    Messages:
    2,570
    By the way, when are you going to add exporting to ASM with this tool? I've actually started to use mid2smps now so it would be quite handy rather than having to run it through s1smps2asm separately.
     
  10. ValleyBell

    ValleyBell Well-Known Member Member

    Joined:
    Dec 23, 2011
    Messages:
    166
    Options for post-processing (like SMPSOpt and smps2asm) are planned for the next release.

    I also have support for global loops on my TODO list.
     
  11. ValleyBell

    ValleyBell Well-Known Member Member

    Joined:
    Dec 23, 2011
    Messages:
    166
    I just updated mid2smps. I noticed tiny bug where it wrote "Set FM instrument = $FF" commands on the DAC channel at loop start.

    It was just one line, so I didn't change the version number. I updated both, binary and source. Please redownload from the OP.

    I also updated the MIDI driver archive a bit. The original archive had a slightly outdated driver (5 minutes older than the real "final" build, I dunno what I changed though) and Windows Vista/7 won't ask for extra permissions for the configuration tool anymore. (It needs administrator rights to un-/install the driver, but the configuration is per-user.)
     
  12. amphobius

    amphobius spreader of the pink text Member

    Joined:
    Feb 24, 2008
    Messages:
    970
    Location:
    United Kingdom
    I made a video for people wanting to easily have a working loop point within FL Studio. It's not the best, but it covers the basics and is of use for people wanting to get their stuff done with ease without worry of optimisation.



    One thing I'll need to say about this though is that if the loop point goes to an instrument change or through one you'll either need to define the instrument again or just move the loop point before the instrument change but before note data, but that should be of relative ease with smps2asm and the like. Oh well, FL's broken midi export isn't much of a problem to most users anyway, doubt a small thing like this'll get changed haha
     
    Last edited by a moderator: Jul 11, 2013
  13. Spanner

    Spanner The Tool Member

    Joined:
    Aug 9, 2007
    Messages:
    2,570
    If it wasn't for this method I'd still be refusing to use mid2smps. So you should probably give this a try and save yourself further issues.
     
  14. Cris

    Cris Well-Known Member Member

    Joined:
    Jul 25, 2013
    Messages:
    53
    This mid driver is very good.I was looking for this a long time. thank you very much
     
  15. GrandMasterGalvatron

    GrandMasterGalvatron Let's get Legendary Member

    Joined:
    Aug 14, 2007
    Messages:
    53
    Location:
    Hampton, Virginia
    Oh great, more things for me to learn. Hate you all, etc.
     
  16. ValleyBell

    ValleyBell Well-Known Member Member

    Joined:
    Dec 23, 2011
    Messages:
    166
    In order to make it easier to preview songs made with mid2smps, I made a small package with SMPSPlay v2 and the config files required to play the exported SMPS files.

    You can download it here.

    Aside from the most recent SMPSPlay, it includes:

    • config files to play SMPS files for Sonic 1 and Sonic & Knuckles
    • PSG files for S1, S2, S3K and S1+S3K (used by some S3K->S1 song porting tutorials)
    • DAC configurations for Sonic 1 (original DAC driver, jman2050, MegaPCM), Sonic 2 Clone Driver (jman2050, MegaPCM) and Sonic 3 (original, MegaPCM)
    By default, it loads definitions for both, Sonic 1 and S3K. You can disable loading of either by editing config.ini in the root directory..bin files are assumed to be Sonic 1 SMPS (defined with .smp extention). You can change that behaviour in config.ini as well.

    In order to choose the DAC driver and DAC drum set, you edit Definitionsconfig_S1.ini. The "DAC" entry sets the respective .ini file that defines all that.

    If you need a custom drum set, I recommend to make a copy of one of the existing DAC.ini files (choose the one with settings for the DAC driver used in your hack) and modify that with your custom DACs. Valid values for the "Compr" setting are "DPCM" (compressed) and "PCM" (uncompressed), the rest should be self-explanatory.

    If you need help, you can read the "documentation" or send me a PM.

    Logged VGMs always go to the "dumps" folder and have the same file name as the original SMPS files with a .vgm extention. If you want to log VGMs, you should leave the SamplesPerSec setting at 44100 (or use a multiple of it), because that's the native sample rate of VGMs.

    If you log the sound to a WAV file, keep in mind that everything you play goes to the same file. But dumping a VGM and converting that to WAV is the recommended way anyway.

    I wish you a happy SMPS and VGM making!
     
  17. Altair

    Altair Newcomer In Limbo

    Joined:
    Apr 25, 2015
    Messages:
    10
    Location:
    Anadyr
    It is a very good utilite. I downloaded the MIDI tracks from the website Emu-Land and convert them into SMPS. And the tracks I turn out just great. So thanks for the tool.
     
    Bluestreak likes this.
  18. Spiritmaster

    Spiritmaster Megadrive-kun Member

    Joined:
    May 11, 2009
    Messages:
    61
    Location:
    Krasnodar, Russian Federation
    I have an interrupting instruments(except for DAC) with MD_MidiPlayer in Anvil Studio. I use Win8 with built-in soundcard. Should I buy the cheapest soundcard or do something?

    View attachment TestSMPS.mp3
     
  19. ValleyBell

    ValleyBell Well-Known Member Member

    Joined:
    Dec 23, 2011
    Messages:
    166
    mid2smps (and its MIDI driver) expect you to do things in a certain way.

    The first thing to note is that all channels (but the drum channel) have to be monophonic, i.e. no chords, because it simulates the limitations of a real MegaDrive. (If you need chords, you need to split the notes to play on 3 different channels. If you play multiple notes simultaneously on the same channel, they will cancel each other out.)
    Secondly, MIDI channels 1-6 go to the FM chip, channels 11-14 go to the PSG chip. (using channel 14 is not recommended until you know exactly what you're doing though)
    MIDI channel 10 is the drum channel and can play various drums, depending on your mappings file. It's also the only channel that accepts multiple playing notes. (but only if they're mapped to different channels. DAC snare + PSG hi-hat works for example, but DAC kick and DAC snare cancel each other out)

    Also, if you want to use PSG hi-hats, you need to keep channel 13/14 free.
     
  20. Spiritmaster

    Spiritmaster Megadrive-kun Member

    Joined:
    May 11, 2009
    Messages:
    61
    Location:
    Krasnodar, Russian Federation
    I used your smps2mid to extract MIDI for testing(it was Bishoujo Senshi Sailor Moon from your SMPS research pack). So I just mapped it wrong so it interrupts?