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)