MIDI to M64 Tool 1 2 3 »
Users browsing this thread: 1 Guest(s)

Update 8/3/2016

The repo is now live: M64 Lab, its got some test code in there commented out to show usage. This desperately needs a UI, so if someone does that PLEASE talk to me first so you don't miss/misuse features.

​New Stuff
  • Note values match up to SM64. So MIDI C5 will play a C5 in SM64 if the instrument is sample rates and keys match (no more fiddling with transpose values)
  • Added variable pitch bend range. You can now pitch bend through any number of octaves, there is functionality to automatically re-articulate and re-factor pitch bend events to accommodate any source pitch-bend range.
  • Added velocity scaling. Scale all velocity events if you don't want to mess with the source volume scaling.
  • Added Source Cloning. Good for multiple tracks sharing the same source that you want to modify separately.

And a treat, here's a demo track showing off the latest features:
Last Impact Electro



​Summary

This should be a big game changer, I've finished writing a tool (unfortunately its UI-less) that converts MIDI files to m64 maintaining all pitch-bend events, volume, pan, etc... (any continuous controller, like tempo, is included). Finally, it gives us the power to write tracks that take the capabilities of the SM64 sound module to the limit.

No more plodding through a hex editor changing individual track values and no more musicXML (as long as you're willing to compile it from source or leave the conversion unchanged as again, it doesn't have a UI). This actually should produce slightly smaller files (or the same size but actually correct) than the musicXML tool as it properly utilizes the duration bytes for note data.

​Features
  • ​Notes/rests/events are accurate down to the minimum tick size (unlike the musicXML tool): this down-converts and intelligently squashes smaller MIDI pulse lengths automatically attempting to maintain audio quality.
  • ​You can reroute ANY continuous controller (including pitch and tempo events) to any parameter of any track. This way, while you normally don't have an "Echo" or "Vibrato" controller from a MIDI, you can reroute any unnamed or known controller type to these parameters and automate away! This makes for sick soloing if you modulate vibrato!
  • ​You can offset / amplify any controller: if you don't feel like busting open the ROM sample data to change the root pitch, just use the offset, or if you want to increase the volume range of a track (i.e. for volume mastering effects), amplify the volume source controller.
  • ​All velocities are preserved and are scalable.
  • ​(untested) tempo automation? O_O

Wheres the download? Eh, not yet, if you're desperate to find the source just dig around github. I don't want to properly release this until it has a UI (if someone wants to knock this out let me know).

What You Really Came Here For
​Your demo song awaits...

"U R A LIAR..." Nah go home. This ROM has the demo track inserted in the file menu: SM64 (HD Music- DotStarMoney).z64

Click here to hear it on Soundcloud fresh from Mupen64.


Oh... and it uses all custom samples. Can we all agree to start doing that?

This demo (debug) track (I promise its good) uses the rerouting feature to get dat cruisin' vibrato on the lead, and obviously there are ample pitch bends. Another neat (heh, like took half of the effort) thing here you may notice is it sounds somewhat "produced." The volume is automated to reflect the volume changes from ducking and limiting (music boiz u no wat I mean) that I recorded from the audio in a DAW then converted to midi events before rerouting to volume. This takes up a ton of space, but I'll add a pairing down feature if you want to do this but can't afford the bytes.

The first half of the track has no volume mastering tricks, the second half does. While both kick-ass, you'll definitely hear the difference! (remember, this is all on an unmodified code SM64 Rom)
(This post was last modified: 03-08-2016, 09:35 PM by Christopher Brown.)

If you put the SM64 rom into a zip file it's gives it a much smaller file size to have to download.

Also I think I found your github but the repository for the tool is empty.
(This post was last modified: 06-07-2016, 06:48 PM by LuigiXHero.)

Would this tool have support for other N64 games with the M64 format? (Mario Kart 64, Ocarina of Time, etc)

(06-07-2016, 06:34 PM)LuigiXHero Wrote: If you put the SM64 rom into a zip file it's gives it a much smaller file size to have to download.

Also I think I found your github but the repository for the tool is empty.


Hopefully you still got it, but I just updated the link to be a zip instead. Also yeah I see that I think VS github integration is being dumb.


(06-07-2016, 07:43 PM)PablosCorner Wrote:
Would this tool have support for other N64 games with the M64 format? (Mario Kart 64, Ocarina of Time, etc)


Yeah most first party titles though I would need to rigorously guarantee that statement. Also thanks for the soundcloud comment, the custom samples really take it all the way.
(This post was last modified: 06-07-2016, 09:54 PM by Christopher Brown.)

Quote:Yeah most first party titles though I would need to rigorously guarantee that statement. Also thanks for the soundcloud comment, the custom samples really take it all the way.

No problem! I honestly cannot wait to try this program out once I guess it's more user friendly, lol.

...why does this tool need a UI? isn't it just a converter? i don't see what options there could be that are too complicated to be passed as command line options.

also custom sample use is kinda impractical if you want to actually share your shit with other people cuz we don't have any sort of sample bank tool yet. unless there's some way to import/export sample banks in subdrag's tool that I didn't know about (aside from the ctl/tbl export which just crashes the program on my computer). if you're looking for your next project tho there's an idea Wink

tool looks pretty promising tho. personally I don't really like working with midi since my DAW of choice (renoise) doesn't have good midi export but I might give it a try anyway. nice work. should hopefully make moderating the m64s over at smwc a lot less tiresome... i'm so fucking sick of hearing 0x33 reverb on every channel in every port. props.

(07-07-2016, 12:35 AM)ergazoobi Wrote: ...why does this tool need a UI?  isn't it just a converter?  i don't see what options there could be that are too complicated to be passed as command line options.

also custom sample use is kinda impractical if you want to actually share your shit with other people cuz we don't have any sort of sample bank tool yet.  unless there's some way to import/export sample banks in subdrag's tool that I didn't know about (aside from the ctl/tbl export which just crashes the program on my computer).  if you're looking for your next project tho there's an idea Wink

tool looks pretty promising tho.  personally I don't really like working with midi since my DAW of choice (renoise) doesn't have good midi export but I might give it a try anyway.  nice work.  should hopefully make moderating the m64s over at smwc a lot less tiresome... i'm so fucking sick of hearing 0x33 reverb on every channel in every port.  props.


If you check up the ol' post up there you can get an idea of why a UI would be... "nice." Here's a screeny of the settings used in the sample conversion:

[Image: y3mBsQJxReACTAanmlFJgQNVHw99ol7QzvgdwLsX...pmode=none]

Doing this by hand is complete ass. It's also non-intuitive, and save for like 4 of us nobody is going to use a command line tool or something they compile by source.

Not impractical at all! You just can't share your m64s heh. Yeah, this is only as good as you have access to MIDIs, its just MIDI is a way better format for this than musicXML which is a terrible format if you want to do automation (or really anything other than sheet music).
(This post was last modified: 07-07-2016, 02:55 AM by Christopher Brown.)

your image link is broken.

and ya musicxml sucks too, idk I just prefer working with a tracker type interface so I can see everything thats going on at once. faster note input too. basically I'm prolly gonna keep working on my own mml based tool tho, working on getting some sort of text-based format simliar to what SMW custom music uses. idea is to make it useful for making quick edits to existing m64s as well tho, its not just for the few sticklers who dont like working wiht midis (which as of right now is probably literally just me). and to support looping so we can cut down the sizes. for midi-based shit it should compliment your tool quite well actually.

also your test song is p impessive. im not a huge trance guy tbh but its defs impressive, nice work.

Fixed the link I think.

Never worked with MML before, honestly I wish there was a more modern format most DAWs supported (the big ones Logic, Pro Tools, FL Studio, none support MML). It looks cool though.

Ha me neither but it started as a track for Kaze's hack. He then ended up making the level for which it was written slower paced so it kinda hung around as my test track to get all the features working.

I dug around at github but the only page I can find about midi to m64 conversion is this one https://github.com/Zamaster/M64Convert
Could you provide a link to the page?

MIDI to M64 Tool 1 2 3 »
Users browsing this thread: 1 Guest(s)