Only nsfplay/nsfplug can slow down music an see notes?

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Only nsfplay/nsfplug can slow down music an see notes?
by on (#48688)
I like the option of nsfplay/nsfplug to slow down the music so I can see which note/frequencies are played.

In general, the option is fine but for some sound fx/quick note etc, x8 is not slow enough for me. I'm a perfectionist (i.e. nuts) and if some pitch are not the same... It drives me crazy since I can hear the difference even though most people won't care but I do (don't ask me to re-make maze of death.. I will go insane ;))

Any other player can go slower with the same keyboard/note interface or I will have to find how to modify nsfplug?

by on (#48691)
I just output stuff to a WAV/AIFF file (from Game Music Box) and then listen to it in a sample editor. You could immediately get double the slow down by setting the sample playback rate (not resample) to half the original file, though the pitch will be an octave below the original of course.

I use "Amazing X" when working out guitar parts (not NES related) and that has a great slow-down-while-maintaining-pitch feature which could be useful.

by on (#48692)
neilbaldwin wrote:
I use "Amazing X" when working out guitar parts (not NES related) and that has a great slow-down-while-maintaining-pitch feature which could be useful.


I don't know about this software. I will check about it. Guitar... Didn't touch one for a while. I think I should. I miss that a little bit.

Edit:

I checked the website sample and this seems like a nice software. They have a windows version too. I will try it tonight.

The only thing is that with a software like nesplay/plug, I can check the exact frequencies of the original channel and after that I can confirm if my result is the same. I find that useful (maybe I'm the only one, who knows).

by on (#48702)
I've also used nsfplay slowed down as much as possible to figure out parts. It was to recreate a Mega Man tune just for the sake of it. You can check it out here-
http://8bitcollective.com/music/bucky/M ... ecreation/

Now all of the voices in that tune are fairly simple, this would've been a different story if I tried doing one of Neil's tracks or something, but I was still able to match almost all parts parts exactly (vibrato may be slightly off).

When you see a blur of numbers counting down for the volume in nsplay, you don't really have a reference point for how many frames or 60ths of a second each one is lasting for. You can ballpark it and generally see all the numbers at the slowest speed, but if there's question as to if one volume lasts for 4 or 5 60ths of a second, for example, there's no obvious way of knowing.

So after some guessing (I was able to get everything quite close the first time), I would sample the original voice with audacity at the slowest speed in nsfplay. I would then sample the same part from my famitracker recreation, and visually compare the samples. I was then able to fix anything that was wrong using that as a reference.

This method can ensure that you nail volumes, duty cycles, and arpeggios. Though getting vibratos or pitch bends exact this way can be much trickier.

by on (#48703)
- Your NSF version isn't playing correctly in RockNES and NotsoFatSo players. A complete mess.

by on (#48704)
What on earth...! Let me take a look.
I sampled the nsf to get what you hear streaming on that page so it should be good...

edit: ack, you're right! how did that happen? maybe it got corrupted while zipping it? is that possible? Try exporting another nsf from the ftm file. I just did that again and that one works just fine. Very strange. (plays fine in notso, nsfplay, and nestopia)

I'll have to update that link later on.

by on (#48705)
I've done this sort of thing before with Mega Man sound effects.. though x8 / NSFPLUG was slow enough for me.

http://4x86.com/sommat/boom.nsf
http://4x86.com/sommat/explode.nsf
http://4x86.com/sommat/roll.nsf




In another thread, Memblers wrote:
Obviously this isn't any good for Megaman 9, but my NSF player can be useful for analyzing output from NSFs. Because my player has crappy speed controls though, it's best to use zSNES and the 'inc frame' option (with F1).

by on (#48706)
bucky o'hare wrote:
What on earth...! Let me take a look.
I sampled the nsf to get what you hear streaming on that page so it should be good...

edit: ack, you're right! how did that happen? maybe it got corrupted while zipping it? is that possible? Try exporting another nsf from the ftm file. I just did that again and that one works just fine. Very strange. (plays fine in notso, nsfplay, and nestopia)

I'll have to update that link later on.


Yeah I exported the NSF from the FTM file and it works just fine in NotSo.

That's funny though, the other file is like a GLITCH REMIX MM3 WILY 2

by on (#48725)
bucky o'hare wrote:

Now all of the voices in that tune are fairly simple, this would've been a different story if I tried doing one of Neil's tracks or something


I try to keep you on your toes.

There's an easier way though: you can ask me.

:)

by on (#48733)
- The "explode.nsf" fails in my emu. Plays fine on NotSo.

by on (#48744)
bucky o'hare wrote:
So after some guessing (I was able to get everything quite close the first time), I would sample the original voice with audacity at the slowest speed in nsfplay. I would then sample the same part from my famitracker recreation, and visually compare the samples. I was then able to fix anything that was wrong using that as a reference.

This method can ensure that you nail volumes, duty cycles, and arpeggios. Though getting vibratos or pitch bends exact this way can be much trickier.


For now I'm still new to famitracker so it's not always easy to reproduce. The notes shown in nsfplay are not the same of famitracker so I can only rely on my ears.

For pitch, what I do is check the frequencies made by the original song in nsfplay then check after that my song is exactly the same in some situation. I'm very picky on pitch.

One example that I was trying to do recently is to remake the simple song of mm2 when you get a weapon (track #17 of the nsf). Kick drum could be remade in FT with a pitch of | 15 (learned that from Tssf examples) and it will sound similar BUT not the same if you listen closely: The pitch is wrong and you cannot adjust it manually for the complete song. Why is that so? Because the pitch counter is not constant and change based on which frequency it start.

Here's what I got so far by trying to read the very fast frequency change even at x8:

Code:
First kick:

Frequency : 244, 228, 214, 201, 190, 181, 172, 164, 156
Pitch slide:     16,  14 , 13 , 11,   9,  9,   8,   8

Second kick:
Frequency: 559, 482,  423,  377, 341, 310, 285, 263, 245,  229, 215,  202, 191, 181 , 172, 164, 157, 150, 144
Pitch slide:     77    59    46   36   31   25   22   18    16   14   13    11   10    9     8    7   7    6



This is what I found so far. And in that, the sound seems cut too. Maybe you would say "why do you care so much, |15 sounds good enough no?". Yes, it can sound good enough for some but it's not perfect. I hate to be a perfectionist some time.

For now I took a break on this specific song. At least I go the exact notes but not pitch perfect yet. If I focus only on that small details, I will never finish to remake the songs I need for my project..

Maybe I will modify the source code of nsfplug and see if I can make it slower.

@RushJet1:
Cool, some megaman fx! I need some of them ;)
Re: Only nsfplay/nsfplug can slow down music an see notes?
by on (#48755)
Banshaku wrote:
Any other player can go slower with the same keyboard/note interface or I will have to find how to modify nsfplug?


I don't know why I hadn't thought of this before, but you could also hex edit the NSF header to use a different play rate (assuming the player doesn't ignore it). Modify the part that is $1A,$41 which represents $411A (NTSC playback rate).

by on (#48761)
I didn't know about that. I will give it a try and see how it react. This could be useful when trying to re-track some songs in FT.

For some sound fx, I thought about an idea but I'm not sure yet how difficult it will be to implement. I'm thinking to check the code for an existing nsf player like nsfplug and add some debug logs when writing to the registers. This way, I can re-use the real raw data inside my code. I know some of the players you can see the memory but that's a pain to look at it and write down the data by hand. I will see if I can make the process simpler (if I can find the time).

That will be useful for one of my project. I don't know (if I made it), if it can be useful for other people.

by on (#48762)
I've used my NSF player in ZSNES to make a few guitar tabs. It was easiest with ZSNES's "increment frame" feature. I should have put that feature in the player itself, but didn't.

Logs may be useful. There is also the NESA format, which was a logged music format before NSFs took over.

I hacked Festalon NSF plug-in once, I'm a C newb but it was pretty easy (I redirected sound writes to the PC serial port for my NES to play in realtime).

by on (#48780)
Fx3 wrote:
- The "explode.nsf" fails in my emu. Plays fine on NotSo.


I tried out your emulator, and it has a downright trippy NSF playback screen :) However, it doesn't play a lot of arp effects in my older songs correctly, and this is why explode.nsf also failed. I tried running those songs through PPMCK and the issue is fixed. However, a real NES doesn't have those errors with those older songs, so the problem is the emulator oddly enough.

by on (#48781)
RushJet1 wrote:
However, a real NES doesn't have those errors with those older songs, so the problem is the emulator oddly enough.


- If the NES runs them fine, it's another history. ^_^;; Thanks.
- By the way, any hints about what could be causing the errors?

by on (#48786)
Well I remember there being a glitch originally with MCK that didn't allow arpeggio macros above a certain point, maybe A5 or something. Probably something to do with high writes. There was a "fixed" version but knowing the original MCK it was likely a small patch to a gaping hole of a problem.

On another note the version of Notso that I have plays them fine (including explode). It's version 0.851.