VOGONS


First post, by Peter Swinkels

User metadata
Rank Oldbie
Rank
Oldbie

Some games apparently store plain *.mid files in their data files:

Full Throttle (1995)
Prince of Persia (1990)
Prince of Persia 2: The Shadow & The Flame (1993)
SimLife (1992)
Solid State PINBALL Tristan (1992)
Star Wars: Dark Forces (demo) (1994)

This program can extract them:
https://github.com/PeterSwinkels/MIDI-Extractor/tree/main

EDIT:
A more detailed explanation can be found in my second post.

Last edited by Peter Swinkels on 2026-05-15, 08:27. Edited 1 time in total.

My GitHub:
https://github.com/peterswinkels

Reply 1 of 8, by twiz11

User metadata
Rank Oldbie
Rank
Oldbie
Peter Swinkels wrote on 2026-05-14, 17:49:
Some games apparently store plain *.mid files in their data files: […]
Show full quote

Some games apparently store plain *.mid files in their data files:

Full Throttle (1995)
Prince of Persia (1990)
Prince of Persia 2: The Shadow & The Flame (1993)
SimLife (1992)
Solid State PINBALL Tristan (1992)
Star Wars: Dark Forces (demo) (1994)

This program can extract them:
https://github.com/PeterSwinkels/MIDI-Extractor/tree/main

thats nothing new, you can open tracker files in OpenMPT, files from that era like unreal tournament

I wonder now if DN3d used MIDI because you can play the music using General MIDI

Reply 2 of 8, by RetroGamer4Ever

User metadata
Rank Oldbie
Rank
Oldbie

Yes, DN3D used MIDI, which is why we always use the theme song for Wavetable/soundbank MIDI testing.

Reply 3 of 8, by Peter Swinkels

User metadata
Rank Oldbie
Rank
Oldbie

I tried importing the files for which I wrote my extractor in OpenMPT as a MIDI library. None of them worked. I probably should have explained this more clearly in my initial post. But:

The program I wrote isn't meant for any specific kind of MIDI library. It should work on any file containing any type of data provided there're any *.mid files embedded somewhere in whatever other data there may be. Basically it scans for the "MThd" signature, interprets the header processes the data track by track ("MTrk") until what should be the end of the MIDI data is reached.

If OpenMPT can already do what my program does, I haven't figured it out yet.

My GitHub:
https://github.com/peterswinkels

Reply 4 of 8, by RetroGamer4Ever

User metadata
Rank Oldbie
Rank
Oldbie

Don't fret. The fact that you actually bothered to look into it and put in the work to learn and make a program puts you above anyone who would razz you for doing it.

Reply 5 of 8, by DracoNihil

User metadata
Rank Oldbie
Rank
Oldbie
Peter Swinkels wrote on Yesterday, 08:26:

I tried importing the files for which I wrote my extractor in OpenMPT as a MIDI library. None of them worked. I probably should have explained this more clearly in my initial post. But:

The program I wrote isn't meant for any specific kind of MIDI library. It should work on any file containing any type of data provided there're any *.mid files embedded somewhere in whatever other data there may be. Basically it scans for the "MThd" signature, interprets the header processes the data track by track ("MTrk") until what should be the end of the MIDI data is reached.

If OpenMPT can already do what my program does, I haven't figured it out yet.

What they were talking about is OpenMPT can sift through and load modules contained within the "Unreal Package" format without you needed to open up UnrealEd and export it yourself. (or use UCC's batch export commandlet if present)

OpenMPT also understands some "intermediate" module formats like the one for ASYLUM Sound System (Crusader: No Remorse / No Regret), and Digital Sound Interface Kit. (a lot of indie one person dev MS-DOS games used this one)

"MIDI Libraries" in OpenMPT refer to loading and mapping either a Downloadable Sounds, or Sound Font 2.0 bank so that when you go to import a MIDI as a project file, OpenMPT knows what samples and instrument data to pull into the resulting module.

“I am the dragon without a name…”
― Κυνικός Δράκων

Reply 6 of 8, by BinaryDemon

User metadata
Rank Oldbie
Rank
Oldbie

Hi Peter,

Thanks for all the source code you share. As some who tinkers with various flavors of basic, it's been interesting to examine the projects you have posted.

Related to this project I was thinking - you should add support for MUS files. From what I've read the standard is very similar to MIDI and then you could dump music from any of the Doom engine games/mods. Not that there aren't tools for that already, but it would just add bunch of games to your supported games list.

Reply 7 of 8, by leileilol

User metadata
Rank l33t++
Rank
l33t++

what twiz11 replied with was just irrelevant "Why did you do this who cares i can do this already" stuff (ut isn't even midi....) and an obvious question that can be answered by 1 second of research. i'd just brush that aside.

my biggest question though... full throttle had MIDIs?!

apsosig.png
long live PCem
FUCK "AI". It is a tool of fascism. We do not need it. We do not use it.

Reply 8 of 8, by twiz11

User metadata
Rank Oldbie
Rank
Oldbie
leileilol wrote on Today, 01:42:

what twiz11 replied with was just irrelevant "Why did you do this who cares i can do this already" stuff (ut isn't even midi....) and an obvious question that can be answered by 1 second of research. i'd just brush that aside.

my biggest question though... full throttle had MIDIs?!

Many games of that era used midi for file size reduction. I'm sorry for my answer it was irrelevant because it's not even a good app that can play midis From data files let alone extract them.

After you extract them what are you going to do with the files? Archive them?

I remember having to extract a bink video file from an executable. All I used was a hex editor and looking for the start and end headers.