LoginLogin
Nintendo shutting down 3DS + Wii U online services, see our post

Exporting MML sounds

Root / Programming Questions / [.]

jamieyelloCreated:
So I'm working on my interpreter and sooner or later I've got to get to sounds, but I'm wondering how to do it. I've never worked with any kind of wavelength editing software, but what I need to do is somehow extract the data to convert into some format that windows can use. The easy way would be to just record all the sounds through the audio jack but of course I don't want to do that. Tl;dr I need a way to extract audio data from Petit Computer's (and later 3ds SB) default sounds using any way possible.

Why not just record through the audio jack? I'm not sure why you wouldn't want to do that. Making a direct connection with an auxiliary cable will give you pretty good sound quality.

Why not just record through the audio jack? I'm not sure why you wouldn't want to do that. Making a direct connection with an auxiliary cable will give you pretty good sound quality.
The problem with doing that is if I recorded from the audio jack, I wouldn't be getting the exact perfect data. I would probably be getting it at a much higher quality format, which ptc doesn't support, then I would have to convert that to a lower quality and then it would sound worse. I'd much rather have a way to actually get the sound data. It's like ripping sprites you recorded from a snes's component output, converting them to a lower bit image (256 colors to 16), and then using those sprites. They would be imperfect. My problem is I'm not familiar with creating or editing wavelengths in ptc, I have no idea if there's any way to actually get the data from default sounds. If there is no way I can either open up the rom and look for the data or I can take the easy route and record from the audio jack. I've never used any of the wavelength editing commands. If there's a way to set them as MEM files I can export them.

There's the command BGMPRG but what I'm looking for is a "get" version of the command that returns waveform character strings. It doesn't look like there is one. That's good because that means the program has no way of detecting inaccurate sounds, which means that nothing will break. Maybe I can do a hacky workaround.

And for that matter I didn't even realize there's no way to get default song MML data either. I've already written a ripping program that handles playing MML sounds in PTC. Now the music is a headache because I don't think there's a way to disable auto looping songs. Bleh.

Well don't let this get you too discouraged. An interpreter that does everything but sound would still be awesome. You can worry about that last!

Well don't let this get you too discouraged. An interpreter that does everything but sound would still be awesome. You can worry about that last!
It's fine, I've already got it all figured out mostly. It's just I'll have to do a couple hacky fixes for the sound. Most of the times with these things sound is saved as one of the last things that's done but I'd like to get it down earlier rather than later. For MML sounds I've made a ptc program that plays BEEP 0-263, all the MML sounds with 5 second intervals (beep actually goes to 263, all MML included dispite being defined otherwise in the manual), the user will have to use that program to record every sound in one big 20 minute wav file through the audio jack and the interpreter will use that as a database for sounds. The same program will rip all default graphics and color palettes and the user will have to save all of them to the sd card and then move it to a folder in the same directory as the interpreter. Music will be a little trickier since I will have to define the exact end time of every song manually but it'll be done the same way. If the files aren't detected it'll spit out some errors but still attempt to run, games that use all custom graphics and sounds won't have an issue.