VOGONS


First post, by Great Hierophant

User metadata
Rank l33t
Rank
l33t

The tempo of the captures I have made of MT-32 and FB-01 music is slower than the actual game playback. It seems that I have to increase the tempo by 1.1x to 1.2x to get the proper playback speed in the sequencer. I was wondering if there was an acknowledged speed by which the data should be increased.

http://nerdlypleasures.blogspot.com/ - Nerdly Pleasures - My Retro Gaming, Computing & Tech Blog

Reply 1 of 6, by ripsaw8080

User metadata
Rank DOSBox Author
Rank
DOSBox Author

Which game and which sequencer? I tried the MT-32 title music from Viking Child, which is 5 minutes long in the game. With the issue you describe, I would expect a length of 5.5 to 6 minutes when playing the capture in GSPLAY, but it's 5 minutes in length.

Reply 2 of 6, by Great Hierophant

User metadata
Rank l33t
Rank
l33t

I made the attached recording from the game Codename : ICEMAN, but the issue does pop up in other Sierra recordings I have made. I am using Cakewalk Pro 3.01 in Windows 3.1, which is currently my go-to sequencer for editing MT-32 and FB-01 captures. I removed the embedded MT-32 sysex patch information from the MIDI file as it gives players on real hardware no end of trouble, so the bank is included separately. The issue also appears for the FB-01, although in that case the voice bank dumps have to be removed because DOSBox only captures the first 1024 bytes of each bank where it should capture 6,208 bytes.

Attachments

  • Filename
    MIDI.zip
    File size
    18.63 KiB
    Downloads
    68 downloads
    File license
    Fair use/fair dealing exception

http://nerdlypleasures.blogspot.com/ - Nerdly Pleasures - My Retro Gaming, Computing & Tech Blog

Reply 3 of 6, by Great Hierophant

User metadata
Rank l33t
Rank
l33t

The second song (credits) in that recording gives a run-time of approximately 58.5 seconds in the game, but when played back on the sequencer, takes 70 seconds to finish. Accounting for my less than precise time measurement, this gives a 1.2x speed up for the sequencer.

http://nerdlypleasures.blogspot.com/ - Nerdly Pleasures - My Retro Gaming, Computing & Tech Blog

Reply 4 of 6, by ripsaw8080

User metadata
Rank DOSBox Author
Rank
DOSBox Author

Have you tried GSPlay?

I'm not sure about Cakewalk for Windows, but Cakewalk for DOS definitely uses the MPU-401 Conductor. You could try experimenting with the MPU401_TIMECONSTANT in mpu401.cpp -- dunno how the current value was chosen.

Reply 5 of 6, by NewRisingSun

User metadata
Rank Oldbie
Rank
Oldbie

There is a simple answer to this problem: DosBox' MIDI capture does not write a tempo event into the resulting Standard MIDI File. This means that the playback sequencer will play the file at whatever tempo it considers the default tempo. Cakewalk assumes 100 beats per minute as the default tempo. hardware.cpp has a comment in the midi_header array that reads "Bit16u, Timing, 2 beats/second with 500 frames". Two beats per second equals to a tempo of 120 beats per minute. Therefore, the correct solution would be for DosBox to write a Set Tempo meta event into the resulting Standard MIDI File at the beginning of the first (here: only) track: FF 51 03 07 A1 20. 0x7A120, or 500.000, is the Standard MIDI File value for 120 beats per minute (it is written as microseconds per quarter note).

Reply 6 of 6, by ripsaw8080

User metadata
Rank DOSBox Author
Rank
DOSBox Author

I suppose it wouldn't hurt to add a tempo change event like you describe as a workaround for some sequencer/player software, but according to the MIDI standard:

NOTE: If there are no tempo events in a MIDI file, then the tempo is assumed to be 120 BPM