Skip to content

Problems working with DOSBox-VGM

Technical discussion about the VGM format, and all the software you need to handle VGM files.

Moderator: Staff

  • redfish Offline
  • Posts: 5
  • Joined: 2018-04-18, 16:02:38

Problems working with DOSBox-VGM

Post by redfish »

Hello,

I just found these forums trying to look for ways to convert PC Speaker beeps to a music format and found DOSBox-VGM, but have been having a few problems with it.

First of all, I've found the outputted VGM files only work on some players and not others, and I'm not sure why. So, it won't work in SonicPlayer, but it'll work in VGMPlay and a web VGM player, I've found. Most disappointingly, as I'm trying to get it transcribed into music, it doesn't seemed to be read by vgm2mid, since the program transcribes no notes and makes useless mid files. I've tried taking down some ripped VGZs from your site and it doesn't transcribe them either. There's also a dro2midi program I could try, if I could get the PC Speaker output in DRO.

But even testing it out with some of the players that they do work with, it doesn't seem to log all the sounds correctly. So for example, I've tried to log the intro music to Might and Magic I, and it sounds at first like it skips a few beats. Then I tried Heroes of the Lance, and there is a background beat to the main score and it doesn't seem to log it as strong notes, but you can hear soft ticks. Going back to the MMI theme, you can make out soft ticks, too, where the notes should be.

At any rate, thanks for whatever help you can give me with this. It will help me with the project I'm doing, and I'll also be sure to upload some rips for you at your site.

Post by NewRisingSun »

The VGM format does not support the PC speaker directly, so the AY8910 chip is used as a substitute, which SonicPlayer does not emulate, but most other players do.

As for the games you mentioned, try my current DOSBox build which includes updates to PC speaker logging, along with other things not related to VGM logging. I have checked it against the two games you mentioned, and it logs them correctly.

I have not posted that update to the VGM logging code since I was not seriously considering that anybody would actually want to log PC speaker music, and making a new patch against the current DOSBox SVN repository is a major pain. The originally-posted version's PC speaker logging feature worked well enough for the games it was designed to log, namely, Distinctive Software games which use the PC speaker as a fourth voice along with the Tandy 1000's SN76489 chip.
  • redfish Offline
  • Posts: 5
  • Joined: 2018-04-18, 16:02:38

Post by redfish »

Thanks, your update worked... the notes all are logged correctly. Now I'd only need to figure out a way to convert it to MIDI, which was my original intent. The vgm2midi program doesn't seem to work with the files.

In the mean time, I've also found a different patch someone else created to log PC Speaker data, along with an app he also made to convert it to DRO format, which I've then been able to use with a dro2mid program. The patch I found on vogons.org and the converter on GitHub, by someone with the user handle IllidanS4.

I've been able to do a couple conversions that way, although there is one thing I've been trying to convert -- the bard's camp tune in the DOS version of Ultima V -- which it isn't able to convert correctly. I emailed him about it; he says the tool can't do it because its not a square wave.

DOSBox-VGM seems to be able to convert it correctly to VGM format, though, although I have the same issue of converting to MIDI here that I had with the other music.

In the end, all was not lost, in that I'd earlier been able to record it as a WAV and then directly to MIDI using different WAV-to-MIDI tools. It required a lot of cleanup of extra notes, but I ended up with something serviceable. I was just hoping to get something with a little better fidelity.

At any rate, again thanks for your help -- its much appreciated. Yes, its true, I'm fond of a lot of the old PC Speaker music and am trying to do a bunch of different things with it. One thing I'm trying out is that after conversion to MIDI, I then take the MIDI and convert to ABC or MML. There are several MMOs that allow you to take ABC/MML files and play them on instruments in the game, so it allows me to take take tunes from old DOS RPGs and play them in modern MMO RPGs for a bit of retro magic. :>
  • User avatar
  • ValleyBell Offline
  • Posts: 4768
  • Joined: 2011-12-01, 20:20:07
  • Location: Germany

Post by ValleyBell »

The 2013-09 version of vgm2mid can convert AY8910 data to MIDI. It's probably a bit unstable though - I only tested it with Final Fantasy MSX.
  • redfish Offline
  • Posts: 5
  • Joined: 2018-04-18, 16:02:38

Post by redfish »

I have that update installed... But I had problems with the different files I tried.

I downloaded the VGZ from the Ultima V pack you have on your site, ran it through and it produced an empty MID with no notes (1KB in Explorer).

And I tried running it through with VGMs produced by DOSBox-VGM, before the new update linked in this thread, and it didn't produce any files at all.

If there's something I need to do in order to get it to work, let me know though.
  • User avatar
  • ValleyBell Offline
  • Posts: 4768
  • Joined: 2011-12-01, 20:20:07
  • Location: Germany

Post by ValleyBell »

The only "Ultima V" pack we have is for Apple II and uses 4x AY8910.
I'm afraid multi-chip support is highly broken in vgm2mid and doesn't work properly. (Everything is treated as it would go to the same sound chip and getting it working would require a rewrite of vgm2mid.)

For example "Ultima III", which uses only 1 AY8910, works. (Tandy 1000 Castlevania sort of works as well, except that both PSG chips use the same MIDI channels.)
  • redfish Offline
  • Posts: 5
  • Joined: 2018-04-18, 16:02:38

Post by redfish »

Thanks for your help at, any rate. I have multiple means to get what I need so I'm getting by for the moment.

Just as a suggestion, it would be nice if the DOSBox patch could output both VGM and DRO, including for the PC Speaker output, and have this toggled as a switch in the config file. It would make sense to me since the only implementation needed for DRO would be for the PC Speaker output, as everything else is handled by DOSBox, and would give the patch a little more versatility for people working with converters.

Not really important mind you, but it might come in useful for people.

Also, I'll be happy to upload a bunch of rips I'm doing to your site, not just PC Speaker but also from Sound Blaster / Ad Lib / etc.

Post by NewRisingSun »

redfish wrote:Just as a suggestion, it would be nice if the DOSBox patch could output both VGM and DRO, including for the PC Speaker output,
No, DRO is an inferior format, and it does not support the PC speaker, so logging PC speaker writes to DRO is impossible. The utility chain you described involves first logging PC speaker writes into a proprietary format, then using PCSCONV to translate PC speaker writes into YM3812 OPL2 writes and to then save these translated writes to a .DRO file. Such a translation has no place in an emulator that is merely designed to log sound chip register writes.
  • redfish Offline
  • Posts: 5
  • Joined: 2018-04-18, 16:02:38

Post by redfish »

NewRisingSun wrote:
redfish wrote:Just as a suggestion, it would be nice if the DOSBox patch could output both VGM and DRO, including for the PC Speaker output,
No, DRO is an inferior format, and it does not support the PC speaker, so logging PC speaker writes to DRO is impossible. The utility chain you described involves first logging PC speaker writes into a proprietary format, then using PCSCONV to translate PC speaker writes into YM3812 OPL2 writes and to then save these translated writes to a .DRO file. Such a translation has no place in an emulator that is merely designed to log sound chip register writes.
Oh ok just was a suggestion ;)
Post Reply