Page 1 of 1

repeat NSF player

Posted: Fri Oct 02, 2015 3:23 am
by Rahsennor
Repeat is a lightweight NSF player for Linux and Windows. Requires SDL2.

Controls
  • Left/Right: change track
  • Enter: restart track
  • Space: pause
  • Tab: cycle display modes
  • Esc: quit
It also supports rendering to WAV files via the command line; type repeat -help for more information.

Re: Yet another NSF player

Posted: Mon Oct 05, 2015 6:33 pm
by Rahsennor
Updated to version 0.03. VRC6 and MMC5 audio are (mostly) implemented.

Re: Yet another NSF player

Posted: Thu Oct 08, 2015 1:33 am
by Rahsennor
Updated to version 0.04. Added Namco 163 and Famicom Disk System audio. Neither of them are 100% accurate; the N163 is overclocked, as seems to be the norm for the other emulators/players I tested, and the FDS lacks a low-pass filter.

I also implemented the MMC5 hardware multiplier, so MMC5 rips actually work now. :roll:

Re: Yet another NSF player

Posted: Thu Dec 03, 2015 7:59 pm
by Rahsennor
Updated to 0.07. More or less everything is implemented now, bugs notwithstanding; it plays every NSF I have.

It also has command-line options for rendering to files, briefly documented in the OP.

Re: Yet another NSF player

Posted: Thu Dec 03, 2015 8:18 pm
by lidnariq
Since you've already got SDL in the mix ...

Just as a random thought (not even as strong as a "request"): I've been kinda wanting an NSF player that mimics vspcplay's memory usage display.

Re: repeat NSF player

Posted: Sat Feb 13, 2016 5:34 pm
by Rahsennor
Updated to 0.08.

All hardware-inaccurate hacks have been moved to "fancy" mode, detailed in the OP. N163 now uses time-division multiplexing by default.
N163 channel count is now displayed.
N163, 5B and FDS have been rebalanced. N163 volume is scaled by the number of channels.
STP opcode no longer closes the emulator for debugging purposes. It was making some tracks of e.g. Solstice inaccessible.
5B noise frequency should now be accurate.
Several bugs in the FDS emulation have been exterminated. It sounds much better now.
A realtime piano/register display mode has been added.
lidnariq wrote:Just as a random thought (not even as strong as a "request"): I've been kinda wanting an NSF player that mimics vspcplay's memory usage display.
I'm taking suggestions for useful stuff to display, but I'm afraid I don't know what that is.

Re: repeat NSF player

Posted: Sat Feb 13, 2016 6:03 pm
by lidnariq
VSPCplay.

It's a SNES SPC player, and not terribly accurate, but the pertinent detail: the visualization is of what portions of memory have been read as data (CPU)/written (CPU)/executed/echo buffer/read as samples how recently.

Obviously with NSFs, there's the complication of how to best represent bankswitching.

Re: repeat NSF player

Posted: Sun Jul 24, 2016 8:01 pm
by Rahsennor
Updated to 0.09. Changelog:
  • Major APU code refactoring, fixing numerous bugs (and probably adding some new ones).
  • DMC cycle stealing added (highly experimental).
  • VRC6 emulation fine-tuned, $9003 implemented (untested).
  • VRC7 segfault and phase reset bugs fixed.
  • MMC5 no longer shares the APU frame counter, and is displayed correctly in piano view.
  • Sunsoft 5B envelope implemented, volume ramp fixed.
  • Silenced spurious notes when switching tracks.
  • Fixed VRC7 and Sunsoft 5B not being synchronized before writes to their respective ports.
  • Added a first-order lowpass filter at 14 kHz to everything but the VRC7 and FDS.
  • Fancy mode now only affects the Namco 163; all other effects have been removed.
I've now implemented everything I can find sufficient documentation for; the only feature missing is the unused MMC5 PCM channel. It plays every track I can find correctly, except for some homebrew NSFs that don't work on real hardware anyway. If you find anything that doesn't sound right, please report it.

On that note, has anyone even got it to run? I can't test the Windows version, so if it's crashing or something, let me know.

Re: repeat NSF player

Posted: Mon Jul 25, 2016 5:20 pm
by aLaix
Hello Rahsennor. This looks very good! Idk about windows but it works on wine..
I have a question for you, Is this open source?

Re: repeat NSF player

Posted: Mon Jul 25, 2016 7:46 pm
by Rahsennor
aLaix wrote:Is this open source?
It's meant to be eventually, once I get rid of all the dangerous programming practices. The emulation and DSP code is okay, if you really want it, but the UI could poke someone's eye out.

Re: repeat NSF player

Posted: Tue Jul 26, 2016 9:18 am
by Zepper
Uh... Do you use Allegro library?

Re: repeat NSF player

Posted: Tue Jul 26, 2016 10:16 am
by lidnariq
Nope, it's just SDL2.

Re: repeat NSF player

Posted: Tue Jul 26, 2016 8:58 pm
by Jarhmander
Cool, an NSF player for Linux! Will try when I get a chance.

(Also, by replying, I can find this thread faster)

Re: repeat NSF player

Posted: Mon Nov 07, 2016 12:23 am
by Rahsennor
Updated to 0.10. Changelog:
  • Started on the massive task of cleaning up the GUI code.
  • Fixed several glitches related to pausing.
  • Removed the 14 kHz lowpass, replacing it with a lower resampler cutoff and tap count - faster.
  • Sample rate is now adjustable with the -rate option, and defaults to 48 kHz instead of 44.1 kHz.
  • Removed fancy mode. Stop making 8-channel N163 songs, they sound awful.
  • FDS write protect status now displayed.
  • Non-bankswitched NSFs now converted to bankswitched instead of being special-cased.
  • VRC7 emulation rewritten from scratch.
The new VRC7 implementation is based on the much-better-documented OPLL, with six channels and rainwarrior's patch set. Lagrange Point sounds much better, but a few homebrew NSFs sound wonky or downright broken. I'm working on it.

Bug reports welcome, as usual.

Re: repeat NSF player

Posted: Tue Aug 01, 2017 1:30 am
by Rahsennor
Updated to 0.11. Changelog:
  • Added -raw option for unfiltered and unresampled output.
  • File loading rewritten, NSFe support added (no metadata yet).
  • Fixed writes to $4003 and $4007 resetting the period counter.
  • Fixed writes to certain APU registers not taking effect immediately.
  • Misc APU optimizations and cleanups.
  • APU fixes also applied to MMC5.
  • Audio output rewritten; Linux version uses ALSA, Windows uses SDL 2.0.5 queues.
All that stands between this version and a source release is the GUI and emulator threads clobbering each other's stack space without synchronization or atomics. I'd rather not put that anywhere other people can copy it, because it's a really dumb thing to do, even if it does work perfectly.