VRC7 to MIDI (if it's possible)

Discuss NSF files, FamiTracker, MML tools, or anything else related to NES music.
Nazzzz
Posts: 2
Joined: Tue Jun 17, 2025 3:04 pm

VRC7 to MIDI (if it's possible)

Post by Nazzzz »

I'm currently trying to port a banger I heard for some time into a more compatible format, but here's the thing: the song is made in VRC7 format and there are little to no converters for it.

If it's possible, what software/steps should I take for a VRC7 song to be converted to MIDI?
Bavi_H
Posts: 250
Joined: Sun Mar 03, 2013 1:52 am
Location: Texas, USA

Re: VRC7 to MIDI (if it's possible)

Post by Bavi_H »

I have sometimes converted video game music to MIDI format, but I have never investigated VRC7 before. I'd like to know some more about this, here are several discussion questions:


1. What is the name of the piece of music?

2. What format do you currently use to listen to it? (Such as an NES file, an NSF file, a tracker file, or something else.)

3. Have you searched online to see if anyone else has made a MIDI file version of this music?

4. You mentioned there are "little to no converters". Have you found any VRC7 to MIDI converters?

5. You mentioned you want to "port" the music into "a more compatible format". Did you specifically want to make a MIDI file, or do you also have some other end goal in mind? (Such as converting the music to another kind of video game format, or to a melodic ringtone format, or to a doorbell or a music box or something?)

6. Do you want to use the MIDI file with a specific MIDI player app or visualizer, or with a specific hardware synthesizer, software synthesizer, or soundfont?

7. Are you interested in (A.) viewing the MIDI file in a sheet music notation view or a piano roll view, or playing it with a metronome click? Or are you more interested in (B.) creating a MIDI file that sounds as close as possible to the original music even if the musical notation aspects of the MIDI file become less useful?

8. If we can't find a converter, another possible workflow might include reading about how the VRC7 audio generator works, then use an emulator to investigate the music while it is playing from a NES file or NSF file by using the emulator debugger tools or scripting tools. Does this sound like (A.) something you would be interested in doing yourself or (B.) something you would want to recruit someone to do for you?
Nazzzz
Posts: 2
Joined: Tue Jun 17, 2025 3:04 pm

Re: VRC7 to MIDI (if it's possible)

Post by Nazzzz »

Apologies for my tardiness, but I'm here to respond to some of your questions:
1. Aquarius by Tappy
2. It's in .nsf format
3. Recreations of it exist
4. I said "little to none" cause I believe there's a VRC7 converter around here, it's just that either I didn't find it or it doesn't exist.
5. As a MIDI enthusiast, I wanted to hear that song in different soundfonts just for fun, though I'm thinking of releasing the MIDI to the public.
6. It would be fun to test it in programs that use MIDI
7. If I had to practice piano, piano roll.
8. I would leave it to the experts; they know best.
User avatar
Ben Boldt
Posts: 1513
Joined: Tue Mar 22, 2016 8:27 pm
Location: Minnesota, USA

Re: VRC7 to MIDI (if it's possible)

Post by Ben Boldt »

I will tell you what I have done but it is by no means an automatic converter.

1. In your NSF player, mute all but 1 channel and make a recording of the whole song
2. Repeat for each channel so you have separate recordings for each channel.
3. Load them all up into an audio program like GarageBand or Logic, etc.
4. If necessary, make adjustments so they all line up properly and it sounds like normal when you play them all at the same time.
5. Create a MIDI channel corresponding to each recording and transcribe the notes by ear.

This has worked very well for me but it is a completely manual process and prone to some errors. Tricks that can help:

A. Use a program that can stretch the audio slower without changing the pitch. You can do that to all of your recordings to make your transcription more precise, then when you’re done, just increase your MIDI tempo by the same amount to bring it back to normal time. I have used an old program called “Amazing Slow Downer” that worked very well but I have not seen what is available in modern times.

B. Use a frequency spectrum analyzer on the original audio. You can visually compare that with your MIDI piano roll in order to spot mistakes.
GreyRogue
Posts: 55
Joined: Fri Dec 08, 2017 5:12 pm

Re: VRC7 to MIDI (if it's possible)

Post by GreyRogue »

Ben Boldt wrote: Wed Jun 25, 2025 8:41 pm 5. Create a MIDI channel corresponding to each recording and transcribe the notes by ear.
In the unlikely event you have a MiSTer FPGA you can use the nsf/midi player to see its guess of the notes being played:
https://www.youtube.com/watch?v=FaMxp_9uAS4&t=90s
Sorry for the poor focus on the video. The column on the right shows what it thinks each note is (e.g. #C4). If you hold down down on the dpad it will run at half speed. e.g. The notes might not always match though. If the wave sample has 2 cycles of the sample, it will be display one octave lower than the actual note.

It would be possible (but not trivial) to modify an emulator to do this using the same method (tracking writes to the audio registers).
Bavi_H
Posts: 250
Joined: Sun Mar 03, 2013 1:52 am
Location: Texas, USA

Re: VRC7 to MIDI (if it's possible)

Post by Bavi_H »

Nazzzz, thanks for answering all of my questions.

I found a copy of the NSF file here: archive.org - Aquarius by Tappy, under the "Download Options", click "Show All", then download the NSF file.

Here are some things I've played around with so far:

My first idea was to look at it in Mesen's NSF player and debug tools. Unfortunately, it looks like Mesen's NSF player doesn't play it properly, it just plays silence for a few seconds. I tried the most recent development version of Mesen and it behaves the same way. (Mesen 2.1.0, build date 2025-06-26 06:53:00, runtime .NET 8.0.16 AOT.)

Update 2025-07-02: The most recent development version of Mesen can play this NSF file now. (Mesen 2.1.0, build date 2025-07-02 13:22:13, runtime .NET 8.0.17 AOT.)

FCEUX's NSF player does play it. (FCEUX 2.6.6 win64 binary) FCEUX Download page, adblocker recommended.

While the NSF is playing in FCEUX, I also ran some lua scripts that display sound information and visualizations. (My own Scrolling Pitch Display script, and the SoundDisplay.lua and SoundDisplay2.lua scripts that come with FCUEX in the luaScripts folder.) It looks like this music uses the NES's internal sound channels.

For comparison, if you want to hear just the sounds the VRC7 is making, in FCEUX, you can go to the Config menu and choose Sound, then in the Sound Configuration dialog box, you can lower all the volume sliders except for "Master" to mute all of the NES's internal sound channels.

To help make a MIDI file, one possible idea is to adapt one of those music visualization lua scripts to also support VRC7 registers (or look for a similar lua script that someone else may have already written that already supports VRC7 registers), then either use the information the script shows to help manually transcribe the music into a MIDI file, or further adapt the scripts to log information (...?) to help convert data to a MIDI file (...?).

Or maybe if the NSF file can be converted to a simple NES file, then maybe using Mesen debug tools and lua scripts could also be investigated...

(I might explore these ideas further...)
Last edited by Bavi_H on Wed Jul 02, 2025 7:43 am, edited 1 time in total.
GreyRogue
Posts: 55
Joined: Fri Dec 08, 2017 5:12 pm

Re: VRC7 to MIDI (if it's possible)

Post by GreyRogue »

Ran the nsf through the MiSTer visualizer at normal speed in case you wanted to see it.
https://youtu.be/Oi-LyleOjqM
jmr
Posts: 49
Joined: Tue Jul 28, 2015 2:38 pm
Location: Ontario, Canada

Re: VRC7 to MIDI (if it's possible)

Post by jmr »

A couple of years ago I wrote my own perl script for converting famitracker txt files with a small subset of effects to midi, for the purposes of converting my own famitracker compositions for playback on a midines cart. It's horrible and throws errors on tracks with more than 5 channels (sloppy code! i should fix it...) , but it generally still works.

http://jmr.us-east-1.linodeobjects.com/ ... xt2mid.zip

I tried it on this tune, here's the output. Warning - everything is Acoustic Grand Piano!
https://drive.google.com/file/d/17ie94s ... drive_link

Original FTM file is here:
https://archive.org/details/aquarius.7z

Just for future reference, famistudio also supports opening FTMs (and NSFs!) and can export midi directly. It gives significantly different results, but I've found it useful at times.
https://famistudio.org/
Bavi_H
Posts: 250
Joined: Sun Mar 03, 2013 1:52 am
Location: Texas, USA

Re: VRC7 to MIDI (if it's possible)

Post by Bavi_H »

Update: The most recent development version of Mesen can play this NSF file now. (Mesen 2.1.0, build date 2025-07-02 13:22:13, runtime .NET 8.0.17 AOT.)