Recently, I released spc2midi-tsuu, an open-source SPC-to-MIDI converter.
spc2midi-tsuu converts SNES SPC sound files to Standard MIDI Files (SMF). It is strongly inspired by the classic spc2midi by GIGO and Hill. I respect the original spc2midi very much, but I wanted to make a new converter with a workflow that makes MIDI editing easier. VGMTrans is also an excellent tool, but for SPC files I wanted to explore a different conversion approach, especially around pitch slides and the MIDI editing workflow.
spc2midi-tsuu is based on SPC playback emulation and focuses on MIDI editing, especially easier MIDI program assignment.
The tool is open source and available here: removed link
Please note that spc2midi-tsuu does not provide or distribute SPC files, ROMs, commercial game data, or converted MIDI files.
Questions, suggestions, and bug reports are welcome.
😍😍😍
I will definitely be testing this out as soon as I can. If you haven't read this forum, I've been using spc2midi since early 2021 for my SNES MIDI Remaster Project.
As you probably know, it was never finished and has many issues with the exported MIDI files. A huge chunk of time spent on this project is figuring out how to correct the problems to get good sounding playback.
I even considered writing my OWN version of spc2midi, but don't have nearly enough knowledge about the inner works of the SPC700 to properly interpret the inner workings of the SPC files.
This is a very promising development, and I can't wait to try it out!
A couple of comments so far:
- Having the sample hex IDs like the classic spc2midi will be beneficial for visually identifying which instruments are currently playing in the GUI. I've built a collection of spreadsheets for the soundtracks I have completed and many that I plan to do. The hex IDs mostly carry between all of the songs in a soundtrack, making it much easier to see at a glance which instruments each song will be using. I see "3BC9" in this particular soundtrack? Chances are it will be "instrument X". I do see the hex IDs when clicking the EDIT button for a channel, but for channels with multiple instruments, edits to the channel often are being applied to the wrong instrument, and similarly, clicking edit for the channel will bring up different instruments if the instrument changed since last time clicking the channel edit. (I think I didn't understand how it was laid out at first and may have accidentally clicked the wrong edits)
- Related to this, a build-up list of instruments in the files will also be helpful, again like the classic spc2midi. It will add instruments to the list as it encounters them during playback. (Again I misinterpreted some of the layout... old habits...)
- MIDI instrument names should also include the patch number. Currently they are all listed in order by number, but only show the name. I'd like to be able to type instrument numbers to jump straight to them in the list.
- I'd like to be able to click a channel in the bottom section to open the edit for that instrument as well
- Scrollbars may be needed in areas where the visible items take up more space than available
- I scrolled in the instrument selection list with the keyboard, and the list does not follow the selection, so the selected item was eventually not on screen
- An option to restart the song without losing edits will be beneficial, especially on short songs or songs that have an intro bridge that does not repeat
- Perhaps having a "quick instrument" dropdown on the main window would be good. For what I am doing, I'd like to be able to set default options for most things and then for most future work just quickly set instrument patches without needing the full edit window. One thing that I do like about classic spc2midi is that the window is very compact
- An output file time length option is a must! And perhaps a "output this many loops" option? I generally do two loops, manually cut from a 5 minute export, and then need to manually add a 10-second fade out on the end.
Things that I really like so far:
- Being able to play both the MIDI and the SPC in the same program is very nice! I typically need to use both spc2midi and spcplay simultaneously and try to line things up by clicking at just the right time.
- I like the dynamics display in the lower right (though I haven't figured out what all of the symbols mean 😆 ) My guess is it is trying to use a font I don't have? I'll include a screenshot. I have things like a fish, a christmas tree, a flower...
- I like the quick mute/solo options
- I like the toggles for SPC and MIDI playback. Possible to add that for each channel?
There will be more feedback as I have some more time to mess with it. I have not yet analyzed to contents of the single file I exported, and I haven't yet tried any files with percussion.
I'm very happy that you have decided to work on this project! I wish I knew about it sooner 😀
I'm currently looking at the internals of the resulting MIDI file.
After some tweaking of octaves in my editor to match what I was already working on previously, I have to say it sounds pretty darn good.
- I do see that you have not included the GM System On SYSEX, perhaps that can be an option.
- Classic spc2midi also applies a reverb and chorus that you presently do not write to the MIDI file. Can those be added as well? I've completed 13 soundtracks thus far started with classic spc2midi, and would like to keep my releases fairly consistent.
- It may just be a fluke of this particular song, but the first note in each track does not have any sort of pitch bend until partway through. Can you check on that and see if it is accidentally being left out?
I also note that for expression, you are only using the MSB value, which I think is actually beneficial, since most devices ignore the LSB value. By not including it, the number of MIDI commands in the file drops quite a bit reducing both file size and data that would need to be transferred/processed in a live MIDI environment.
Using your new spc2midi-tsuu vs the classic version instantly eliminates some of the repetitive tedium at the start of each new soundtrack, including re-configuring my MIDI setup every time I start spc2midi, as well as then having to load each file in Anvil Studio to convert to MIDI type 1 and then manually delete all of the unused tracks/channels.
Another thing that I really like so far is that the resulting file is a much higher resolution than classic spc2midi. It typically creates files with 31.5 BPM, which some editors can not properly handle. Your version, with my test file, is doing 240 bpm which should give much finer control.
And final observation for now, your pitch bends and volumes seem to be more accurate. Classic spc2midi does all pitch bend in increments of 50, no matter what. It also has very strict step levels of volume that don't always work out well, especially with lower volume levels. Yours seem to be ... normal!
I'm including both versions of the file I tested out.
The "classic" version has undergone a significant amounts of post-conversion work. It has been loaded and saved with my editor after various other edits and such. (not the final version)
The "tsuu" version was exported, and all I've done is loaded it with my editor, converted to GS, and changed patches and adjusted octaves on a few instruments (all of which were also done on the classic version).
First of all, thank you very much for your detailed comments and feedback!
- An output file time length option is a must!
You can change the SMF output length from the "Option" menu > "MIDI Output Configuration". You can also change the BPM there.
Please note that automatic loop-length detection for arbitrary SPC files is extremely difficult, so for now, please set an appropriate output length manually in the configuration.
- MIDI instrument names should also include the patch number. Currently they are all listed in order by number, but only show the name. I'd like to be able to type instrument numbers to jump straight to them in the list.
- I'd like to be able to click a channel in the bottom section to open the edit for that instrument as well
I agree with these ideas! I added these features in spc2midi-tsuu version 0.2.41. Could you try the new version?
- Having the sample hex IDs like the classic spc2midi will be beneficial for visually identifying which instruments are currently playing in the GUI.
Thank you for pointing this out. As you mentioned, the hex IDs in classic spc2midi appear to represent the starting address of each wave sample. I will consider showing this hex ID in the GUI, possibly together with the current SRN display.
- An option to restart the song without losing edits will be beneficial, especially on short songs or songs that have an intro bridge that does not repeat
- Perhaps having a "quick instrument" dropdown on the main window would be good.
Thank you for these useful suggestions. I will consider adding these workflow improvements in a future release.
- I do see that you have not included the GM System On SYSEX, perhaps that can be an option.
That makes sense. I will consider adding an option to insert GM System On SysEx into the exported MIDI file.
- Classic spc2midi also applies a reverb and chorus that you presently do not write to the MIDI file. Can those be added as well?
Thank you for pointing this out. spc2midi-tsuu currently has an "Echo as Reverb" option, but it may not behave the same way as classic spc2midi. I will check the current reverb output behavior and consider adding a chorus send option in a future release.
- I like the dynamics display in the lower right (though I haven't figured out what all of the symbols mean 😆 )
The dynamics display is intended to show numeric information, so if it is showing symbols such as a fish, a Christmas tree, or a flower, that is probably a font or rendering issue in my tool. I will check the implementation of the dynamics indicator.
- I scrolled in the instrument selection list with the keyboard, and the list does not follow the selection, so the selected item was eventually not on screen
- Scrollbars may be needed in areas where the visible items take up more space than available
Thank you for reporting this. The keyboard scrolling issue appears to be a UI bug in the current tool.
For the scrollbar issue, could you tell me which part of the UI needs a scrollbar? For example, is it the instrument selection list, the edit window, or another area?
- It may just be a fluke of this particular song, but the first note in each track does not have any sort of pitch bend until partway through. Can you check on that and see if it is accidentally being left out?
This may be a bug. I will check whether the initial pitch bend before the first NoteOn is accidentally being omitted. If possible, please tell me the SPC/song name and the track/channel where you noticed this behavior.
Thank you again for the detailed feedback. It is very helpful for improving spc2midi-tsuu.