Author Topic: I just wanted to record some MIDI...  (Read 12356 times)

0 Members and 1 Guest are viewing this topic.

Offline ZvikaZ

Re: I just wanted to record some MIDI...
« Reply #30 on: October 31, 2020, 02:45:23 PM »
If you want to just record the MIDI, a simple option might be using the 'dump-midi' flag that I've added to ScummVM - it dumps all MIDI commands that the game creates during play, including SysEx.

Instructions:

Code: [Select]
scummvm --dump-midi
This will create a 'dump.mid' file in the local directory.
- If there is already such file, it will be overwritten
- The file will be created when quitting from the game, either from the game's menu, or from ScummVM's Global Menu (and not when quitting by clicking 'X' to close the window)

It will not automatically rip all sound tracks at once, as you might prefer, but it will create an exact recording of all MIDI commands created as you play.

Note however, that it will record only midi, and not other sounds such as digitized effects or voices, so it might be better to turn off options like "prefer digital sound effects", or "Mixed AdLib/MIDI mode".

Offline shadyparadox

Re: I just wanted to record some MIDI...
« Reply #31 on: November 01, 2020, 08:03:17 PM »
Me, I'm content to export the files from the games as MIDI. And if the tempo is incorrect, I can change it in a MIDI Sequencer/DAW.

This would be my preference as well. But the exported MIDI doesn't have any loop information. So how do you get accurate loop information into the project?

Offline shadyparadox

Re: I just wanted to record some MIDI...
« Reply #32 on: November 01, 2020, 08:05:56 PM »
If you want to just record the MIDI, a simple option might be using the 'dump-midi' flag that I've added to ScummVM - it dumps all MIDI commands that the game creates during play, including SysEx.

Instructions:

Code: [Select]
scummvm --dump-midi
This will create a 'dump.mid' file in the local directory.
- If there is already such file, it will be overwritten
- The file will be created when quitting from the game, either from the game's menu, or from ScummVM's Global Menu (and not when quitting by clicking 'X' to close the window)

It will not automatically rip all sound tracks at once, as you might prefer, but it will create an exact recording of all MIDI commands created as you play.

Note however, that it will record only midi, and not other sounds such as digitized effects or voices, so it might be better to turn off options like "prefer digital sound effects", or "Mixed AdLib/MIDI mode".

Thanks, I'll keep it in mind if the direct method fails. It sounds similar to the first method I tried, which was to use the MIDI recorder in DOSBox. The problem there was that the files didn't seem to quite import properly, as some notes sustained instead of turning off when they were supposed to.

The other problem with recording in-game is that some sounds aren't easily accessible in the game, if they're even available at all.

Offline Kawa

Re: I just wanted to record some MIDI...
« Reply #33 on: November 01, 2020, 09:04:36 PM »
This would be my preference as well. But the exported MIDI doesn't have any loop information. So how do you get accurate loop information into the project?
And exactly what would that loop information be? There's at least four different ways to include it.

Offline ZvikaZ

Re: I just wanted to record some MIDI...
« Reply #34 on: November 02, 2020, 03:23:06 AM »
Thanks, I'll keep it in mind if the direct method fails. It sounds similar to the first method I tried, which was to use the MIDI recorder in DOSBox.
Can you please elaborate? How did you record MIDI in DOSBox?
It could help me when debugging occasionally sound-related bug reports in ScummVM.

The problem there was that the files didn't seem to quite import properly, as some notes sustained instead of turning off when they were supposed to.
That's strange. I could think of few issues that might cause such mess:
- The initial SysEx commands weren't recorded
- You're trying to play a midi recording of MT32, in a "regular" (=GM) MIDI player instead through a real MT32, or Munt; or maybe vice-versa - DosBOX played a GM midi, and it's played now in Munt
- Bug in the DosBOX recording mechanism

Anyway, when recording with my method, I (and few others who told me that they used it) haven't encountered any such errors. (just to make sure to play through Munt, if the Audio is configured to MT32)
If there will be errors in the recording - I'd be glad to hear about it. (maybe as a bug report in ScummVM...)

The other problem with recording in-game is that some sounds aren't easily accessible in the game, if they're even available at all.
Well, that's indeed a problem.
However, if you'd like to, it's possible to trigger the missing sounds from ScummVM's debugger, during the game.

Offline MusicallyInspired

Re: I just wanted to record some MIDI...
« Reply #35 on: November 02, 2020, 12:13:09 PM »
The loop information is not a MIDI command. The aforementioned MIDI loop controllers that Kawa mentioned are for customized versions of MIDI. EMIDI, for instance, is only used for 3D Realms' Build game engines (Duke3D, Shadow Warrior). The others would also be proprietary. There wouldn't be any way to implement it for everything to understand. If you want it to loop, you have to program in the loop functionality yourself in whatever your project is (that's what game developers did, and that's why the SCI developers made it a specialized data cue entry specifically for SCI sound resources and not a standard MIDI controller event). If you want it to loop in some other kind of project, you could open it in a DAW like Cakewalk (free) and set loop points yourself at the proper MIDI events or just copy and paste the selection of MIDI events and repeat it manually. There is no one consistent universal MIDI loop command so as I see it this is not feasible to implement nor is it within the scope of what should be implemented IMO.

ZvikaZ, DOSBox has a built-in function to capture MIDI data into an outputted .MID file in the CAPTURE directory similar to its screenshot, audio, raw OPL, and video capture functions.
« Last Edit: November 02, 2020, 12:15:45 PM by MusicallyInspired »
Brass Lantern Prop Competition

Offline shadyparadox

Re: I just wanted to record some MIDI...
« Reply #36 on: November 09, 2020, 10:01:08 PM »
The loop information is not a MIDI command. The aforementioned MIDI loop controllers that Kawa mentioned are for customized versions of MIDI. EMIDI, for instance, is only used for 3D Realms' Build game engines (Duke3D, Shadow Warrior). The others would also be proprietary. There wouldn't be any way to implement it for everything to understand. If you want it to loop, you have to program in the loop functionality yourself in whatever your project is (that's what game developers did, and that's why the SCI developers made it a specialized data cue entry specifically for SCI sound resources and not a standard MIDI controller event). If you want it to loop in some other kind of project, you could open it in a DAW like Cakewalk (free) and set loop points yourself at the proper MIDI events or just copy and paste the selection of MIDI events and repeat it manually. There is no one consistent universal MIDI loop command so as I see it this is not feasible to implement nor is it within the scope of what should be implemented IMO.

OK, I'm willing to do that manually. Is there a way to extract the loop information from the snd file just so I have an idea where to put the loop in my MIDI project? I'd prefer to have a way to get some technical information on it rather than solely guessing.

Offline MusicallyInspired

Re: I just wanted to record some MIDI...
« Reply #37 on: November 09, 2020, 11:18:46 PM »
I don't think it's really that much guesswork involved. Most loop points land right on a measure, or at least a beat, or a note. If it's an "atmospheric" sound with no perceptible tempo, time signature, or BPM then I feel like a close enough guess is warranted. You can playback sounds in SCI Viewer WITH the loop points so in my feeling guestimating the loop point for these tracks is alright and close enough. In proper musical themes it's really no guess. It'll all land on at least a note event if nothing else. That's for all intents and purposes pretty exact.
Brass Lantern Prop Competition

Offline Spikey

Re: I just wanted to record some MIDI...
« Reply #38 on: February 17, 2021, 09:49:21 PM »
"The problem there was that the files didn't seem to quite import properly, as some notes sustained instead of turning off when they were supposed to."

Shady, the problem is for whatever reason, emulators seem to improperly produce MIDI rendering, or the recording process captures it incorrectly. Since the same issues happen with old hardware and MIDI recording, I'm guessing it's a game thing.

Basically, best practice seems to be - you need to use extracted MIDI files and loop that time-perfect data (there cannot be any false note duration or anything else from master data!), and loop them according to the loop point generated by the game (i.e. do the maths from recorded files). Extracted files have loop points notated - but I've found they work faster then in game, and loop "too fast" if you follow them exactly. Any questions, send me a PM, or contact me at Sierra Music Central.
Sierra Music Central
Keeping Sierra's music alive in the digital age!


SMF 2.0.19 | SMF © 2021, Simple Machines
Simple Audio Video Embedder

Page created in 0.051 seconds with 21 queries.