Forums

Sega Master System / Mark III / Game Gear
SG-1000 / SC-3000 / SF-7000 / OMV
Home - Forums - Games - Scans - Maps - Cheats - Credits
Music - Videos - Development - Hacks - Translations - Homebrew

View topic - VGM2MID2MMF (probably only of interest to people called Paul Jensen)

Reply to topic
Author Message
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 14751
  • Location: London
Reply with quote
VGM2MID2MMF (probably only of interest to people called Paul Jensen)
Post Posted: Thu Oct 24, 2002 11:56 am
To explain:

I have a spangly new mobile phone with what they call "polyphonic ringtones". What that means is, it actually has a YMxxxx FM chip in it (yay!) and can play back music in SMAF format. SMAF is a kind of enhanced subset of General MIDI for mobile phones, which supports embedded waves and pictures and the like as well as the usual 128 instruments, and tools exist to convert from MIDI to SMAF files, which just to add to the confusion have the extension .mmf.

So anyway... I went over to vgmusic.com and leeched out their SMS and GG sections (which aren't that big anyway) and converted some over. The conversion isn't great, in particular some of the instruments are not good on the phone, and 2/4-op FM isn't going to compare well with tunes designed for wavetable synths. But certain tunes transfer well. Ys sounds as orchestrally magnificent as ever and I have plenty of WB3 tunes (Monster's Lair rocks as always).

On to my point. This gave me a good excuse to try out VGM2MID. I grabbed the latest non-.net version and batch converted a few dozen - PSG, FM and the Japanese BIOS mixed VGM; somewhat disconcertingly it seemed to lock up, causing me to kill it a few times before finally giving it a chance to complete. Then I played the converted MIDIs in Winamp and was amazed at the quality of the conversion - they sound great.

Then I ran them through PSMPlayer, which is a Japanese MIDI/MMF tweaker/convertor (it's excellent for changing instruments in a MIDI and bringing music down by octaves if anyone's interested to do this with a converted VGM). This is where the problems appeared. Every now and again, it'll play a note completely wrong. I'm not sure if this problem is with the convertor (it has no such problems with any regular MIDI file I send at it; it otherwise converts the converted VGMs fine), the limitations of the target format (doesn't happen with other MIDIs) or with VGM2MID (which people were saying produced somewhat funky MIDIs in the past). Anyway, here's an example - I converted it back from MMF to MID. If there's still some format strangeness to blame, then please feel inspired to have a go at it. I suspect the pitch wheel changes a little, because it seemed to crop up in sections with vibrato. How about an option to convert tunes into perfect pitch, ie. removing any mean offset from perfect pitch (exact MIDI notes)? I don't know if that will fix it but it seems like a good idea anyway :)

Maxim
  View user's profile Send private message Visit poster's website
  • Joined: 12 Jul 1999
  • Posts: 891
Reply with quote
Post Posted: Fri Oct 25, 2002 3:51 am
I suspect the pitch wheel changes a little, because it seemed to crop up in sections with vibrato. How about an option to convert tunes into perfect pitch, ie. removing any mean offset from perfect pitch (exact MIDI notes)? I don't know if that will fix it but it seems like a good idea anyway :)

Quote
> Maxim

I know that some SMS tunes just use padded notes and use the pitch wheel to reach the desired note...

Alex Kidd comes to mind, and it's really annoying =(

That is all..
  View user's profile Send private message
  • Joined: 29 Jun 1999
  • Posts: 254
  • Location: California, USA; Hiroshima, Japan
Reply with quote
Post Posted: Fri Oct 25, 2002 4:34 pm
vgm2mid (since v04, I think) calculates MIDI notes as floating-point values. The integer part is used for the note, and the decimal part for the pitch wheel. If the pitch wheel is greater than 0.5 (i.e., closer to the note above the calculated note), vgm2mid adds 1 to the note value, then converts the pitch wheel value to a negative inverse.

That's only for new notes, though. Some games (notably the ones in the Bare Knuckle series) make drastic changes in pitch while notes are playing. The standard maximum for midi pitch change is +/- 2 semitones, so if a piece of music contains, say, an octave sweep, vgm2mid will have to create new notes about 6 times to compensate.

I've made great strides to increase MIDI compatibility over previous versions of gym2mid and vgm2mid. The files should be 100% compatible with even the most basic of MIDI hardware.

I don't think I can really explain the anomalies, but the only thing I can think of is to remove the pitch wheel events from the MIDI files. Unfortunately, vgm2mid 0.5 doesn't have the ability to turn off pitch wheel events, so... I'll think of something.

Paul
  View user's profile Send private message Visit poster's website
  • Joined: 12 Jul 1999
  • Posts: 891
Reply with quote
Post Posted: Sat Oct 26, 2002 1:30 pm
Quote
> vgm2mid (since v04, I think) calculates MIDI notes as floating-point values. The integer part is used for the note, and the decimal part for the pitch wheel. If the pitch wheel is greater than 0.5 (i.e., closer to the note above the calculated note), vgm2mid adds 1 to the note value, then converts the pitch wheel value to a negative inverse.

> That's only for new notes, though. Some games (notably the ones in the Bare Knuckle series) make drastic changes in pitch while notes are playing. The standard maximum for midi pitch change is +/- 2 semitones, so if a piece of music contains, say, an octave sweep, vgm2mid will have to create new notes about 6 times to compensate.

> I've made great strides to increase MIDI compatibility over previous versions of gym2mid and vgm2mid. The files should be 100% compatible with even the most basic of MIDI hardware.

> I don't think I can really explain the anomalies, but the only thing I can think of is to remove the pitch wheel events from the MIDI files. Unfortunately, vgm2mid 0.5 doesn't have the ability to turn off pitch wheel events, so... I'll think of something.

> Paul

Sibelius lacks the ability to handle pitch whell events in MIDI files, so Alex Kidd in Miracle World sounds quite strange whenever I open it up in Sibelius....
Is tehre a way around this by using the VGM2MID that came before the .NET one?
  View user's profile Send private message
Reply to topic



Back to the top of this page

Back to SMS Power!