Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /storage/content/49/145849/famitracker.com/public_html/forum/classes/dbHandler.php on line 29
The config option to suppress the DPCM volume counter reset doesn't seem to do anything. The setting saves/loads properly, but doesn't have an effect on playback. This applies to 0.3.7b as well as 0.3.6, and looking at the source, the line in CDPCMChan::ClearRegisters() where it writes 0 to $4011 is in an if statement that looks like this:
if (/*!m_bKeyRelease ||*/ !theApp.GetSettings()->General.bNoDPCMReset || theApp.IsPlaying())
So... theApp.IsPlaying always applies, trumping everything else, but this condition seems just about the opposite of what I'd expect:
if ((m_bKeyRelease && !theApp.GetSettings()->General.bNoDPCMReset) || !theApp.IsPlaying())
I made a set of two looping DPCM ramp samples to test their effect on triangle volume. So, in this FTM D-3 should ramps up to 3F, and C-3 ramps down to 00 (you can take the halt off the triangle to hear it working on its volume).
The halt after D-3 will have a huge pop as the volume jumps to 00, but what I find weird is that the C-3 after that will have a small blip. Does halting leave the last sample still sitting in the shift register? (Maybe changing "if (!m_iEnabled || m_bSilenceFlag)" to just "if (m_bSilenceFlag)" would take care of this, so the DMC will always run out the last byte?)
As another bonus, you can year a quiet buzzing from the loop of D-3, showing that erroneous 9th sample from the shift register (coming up as a 0 among the correctly decoded 1s) which I mentioned in another bug report.
The option is only used when editing and not when playing back the song. The purpose is to remove the noise when releasing a key after previewing a sample, as released keys generates note off events.
Regarding the second question, inspecting the delta counter reveals that it's not entirely reset to zero on note offs. I'm not sure what's going on and will check this further.
Edit: Ok, I got it now. Loop mode was on so yeah, the remaining bits will be played when stopping the channel and this alters the counter after it was set to 0. I also noticed the other bug where the remaining bits in the last byte never was played, thanks for pointing that out.
Okay, so it was working as intended, but it does the opposite of what I would have expected. Hmm.
I think the ability to halt the DPCM without causing the click to zero would be useful though, especially for looping samples. Maybe note-release could be used for this purpose?
Did you happen to catch this thread? [url=http://famitracker.shoodot.net/forum/posts.php?id=2298]http://famitracker.shoodot.net/forum/posts.php?id=2298
There's another problem with looping samples in which it skips the last byte of DPCM data, but also inserts one sample of 0 into the bitstream before the loop.
You can year the extra 0 bit in the example I posted above as a faint buzzing when you play back the tri_up.dcm sample (D-3).
The missing byte you can tell by using the importer on [url=http://www.zophar.net/music/nsf/immortal.html]The Immortal - Track 2, where the bass DPCM note will play back out of tune (comes out fine if you export back to NSF though).
I explained what I think is going on in the other thread.