As I said, it is a problem of the emulator, so if it does not sound maybe the emulator has the same bug. The VGM files also will no sound lower than A1, I reported this (among other things) to the VGM developer and he will release an updated in_vgm with lot of fixes.
Btw, the NES could go as low as A-0?, did someone test this?. Maybe actually this could be a bug of Famitracker.
I tested on hardware. It works. The triangle goes all the way down to A-0 as well so it effectively goes one octave lower than the squares.
I'm not sure I understand what you mean by "a bug in the emulator" though. I thought you wrote the driver yourself? I'd imagine it'd be an easy fix for you. Care to enlighten me on this?
I'm not sure I understand what you mean by "a bug in the emulator" though. I thought you wrote the driver yourself? I'd imagine it'd be an easy fix for you. Care to enlighten me on this?
The emulator that I'm using has a freq limiter in the squares, and that value was wrong.
1. Inserting a volume event in the volume column of the tracker resets a square's duty cycle to 0 (to get around this I had to loop the duty cycle envelope even though it was just "2"). Inserting 1202 on the same row doesn't help either, nor does inserting the instrument number.
2. The NSF doesn't play all the way through (stops after 28 seconds then hangs).
3. There's no PCM in the VGM (at least in VGMPlay; I don't know of any other VGM player that supports NES). Is this normal?
4. I'm not sure how to access the top 4 frequencies for noise. It seems like it tops at 12 because it wraps at each C. Am I missing something?
1. Inserting a volume event in the volume column of the tracker resets a square's duty cycle to 0 (to get around this I had to loop the duty cycle envelope even though it was just "2". Inserting 1202 on the same row doesn't help either, nor does inserting the instrument number.
I will fix this.
jrlepage wrote:
2. The NSF doesn't play all the way through (stops after 28 seconds then hangs).
I will check this.
jrlepage wrote:
3. There's no PCM in the VGM (at least in VGMPlay; I don't know of any other VGM player that supports NES). Is this normal?
VGMPlay do not support RAW PCM, an update is coming soon supporting it, I talked with the VGM developer.
The lack of A0 and RAW PCMs in output files are related to the program that plays the files, because DefleMask sends freqs under to A1 and the PCM samples.
The lack of A0 and RAW PCMs in output files are related to the program that plays the files, because DefleMask sends freqs under to A1 and the PCM samples.
My NSF clearly doesn't play sub-A1 frequencies, though (neither does the VGM).
My NSF clearly doesn't play sub-A1 frequencies, though (neither does the VGM).
I don't know what emulator are you using in order to play the NSF, but they will not sound in VGMPlay because the emulator used by the VGMPlay/in_vgm has the same bug. You will NEVER hear a note lower than A1 in NES squares using VGMPlay/in_vgm.
In short, I fixed LOT of things in the emulator used by in_vgm and added the PCM RAW support, DefleMask generated VGMs are one step fordward than the official support itself, almost the same for NSF & RAW PCM playback, some emulator can emulate it, others not (but they run perfectly on the actual hardware).
About your file that stop at 28 seconds, it is due to the high count of commands sended, if you remove the duty loops (because you are sending per tick a new duty change), the song will stay long. However, I will done some changes to the NSF exporter because seems that it can't handle very long NSFs.
Ok, fair enough, VGMs won't play sub-A1 frequencies. But frankly I don't really care about VGM export. I'd much rather have working NSFs, and right now, none of the players which support your NSFs seems to accept sub-A1 frequencies, which leads me to believe that the issue originates from Deflemask's NSF exporter itself. Looking at the keyboard view in rainwarrior's new NSFPlay build, it seems like the channel is disabled and 0x501 is written to the frequency register.
As for the hanging, I suppose that issue will resolve itself when the duty cycle-resetting bug is fixed (because that will make looping single-value duty cycle envelopes redundant).
EDIT: Apparently, even after removing the loop on the blank instrument's duty cycle, it looks like the NSF hangs 35 seconds in. Maybe it is necessary to tweak the engine a bit then...
The problem of the NSF play time is a bankswitching bug, I will upload DefleMask tomorrow with all of the bugs fixed. Thanks a lot for the feedback, specially to jrlepage.
Just to be sure, did you catch my bug report/inquiry about missing noise frequencies?
Lastly, in the dmf I attached, the crash cymbal instrument at the beginning seems to be playing in looped mode during playback. In jam mode it sounds fine, but during playback it doesn't. I think this is a bug.
EDIT: I don't know if you've worked that out, but volume envelopes screw duty cycle macros up too, so it looks like any volume event provokes this bug.
I will fix all of this things tomorrow, I'm not in home right now and I dont have the source of DefleMask here. I will add another octave to control the rest noise freqs, fix the bank switch of the nsf exporter and fix the duty thing. Regards.
NEWS:
Fixed a bankswitching bug in the NSF Exporter.
Fixed a bug in the change volume command in NES that was causing a change in the duty cycle.
Fixed a bug in the noise channel mode of the NES.
Now you can listen to sub-A1 frequencies in the exported files of the NES.
Now you control the noise of the NES using 2 octaves to reach all possible frequencies.
Added some checks to prevent redundant writes to the output files.
Demo Song added to SEGA Genesis: Devo - Gates Of Steel.
Both Linux and Windows builds updated.
I am extremely amazed at your ability to come up with quick fixes like this! Amazing.
The last thing I have to report is that while the extra noise octave fixes the missing frequencies issue in the tracker, in the arp macros you still only get 12 frequencies out of the 16. :\