Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NSFPlay 3.0+ roadmap #7

Open
bbbradsmith opened this issue Jun 3, 2018 · 1 comment
Open

NSFPlay 3.0+ roadmap #7

bbbradsmith opened this issue Jun 3, 2018 · 1 comment
Assignees
Labels
roadmap Official future plans for NSFPlay

Comments

@bbbradsmith
Copy link
Owner

bbbradsmith commented Jun 3, 2018

NSFPlay 2.6 will likely be the last version 2 release. NSFPlay 3.0 will be a huge rewrite to address many architectural problems due to the program's age. Cross platform support and performance improvement is the biggest goal here, but also trying to make future maintenance easier.

Work will be done in the nsfplay3 branch: nsplay3

  • rewrite all audio generation to potentially use floating point? (#definable)
  • Infinite playtime option
  • Seeking easier, seek when paused/stopped?
  • Sound device selection.
  • Bus/stack plugins: NSF validator, other export tools, trace logger?
  • Improve loop detection
  • APU debug pin emulation
  • better resampling options, libsoxr's readme has some good references, want to provide options for at least fast (iir?), default (fir?), and high/slow resampling
  • Mac/Linux versions?
  • Foobar2000 plugin
  • KB plugin
  • Visualizer plugin system. Full register view capability.
  • De-MFC GUI, change to a .lib, and build directly into plugin.
  • Remove plugin stubs from xgm, these belong in the plugin project itself.
  • Breakout window for info (nice for looking at NSFe text chunk).
  • NSFe metadata editor (maybe other people would start making NSFes???)
  • One click button for keyboard view?
  • Vertical stacking for multiple key dots on same pitch?
  • Other: Behaviour with 2 NSFs in a playlist is counterintuitive.
  • Always On Top > wxSTAY_ON_TOP on wxFrame?
  • ROM usage (CDL?) visualization for NSF rippers, other debugging tools?
  • Mirroring of chip registers
    -- create a "yoked" wrapper for multichip that responds to only lowest address?
  • VRC6 exhibits "vibrato click" at A-3, see: https://cdn.discordapp.com/attachments/239104268794200064/317404503986929664/test.nsf
    -- clicking does happen on hardware but seems to be exacerbated by NSFPlay, maybe this is a sampling granularity thing?
    -- this might be count-down vs count-up behaviour (i.e. reload "counter" to freq2 only when counter counts down to 0, also eliminates weird arbitrary need to clamp counter on 9001/2 writes)
    --- we could test this: play low frequency, do a $4011 pop to mark time, write a low frequency, see how long it takes (trigger at several phases, use enable bit to reset)
    --- test 2A03 and VRC6 and MMC5 and 5B this way! (can I make a multichip NSF for convenience?)
    --- 2A03 already went to countdown logic in 2020: eeff32d
  • "APU clock" square should be 8 part not 16, and the divider should never reset manually, see: https://forums.nesdev.com/viewtopic.php?p=185505#p185505 / https://forums.nesdev.com/viewtopic.php?p=186129#p186129
  • option to not disable bankswitch registers with bank 0 0 0 0 0 0 0 0
  • 5B does not support ImATrackMan's PWM envelope volume control (i.e. high freq square + env = half volume env)
  • MMC5 squares, are they nonlinear, does PCM affect them?
  • Battletoads track 10, noise sounds much duller on hardware.
  • Better anti-click fadeoff?
  • Play Metroid FDS 33 on hardware, make sure that wrapping is correct.
  • See thread: https://twitter.com/ImATrackMan/status/940851266191855616
    -- Summary: Phase reset clicks are suffering from lack of timing precision, should be fixed when moving to a timing method that has cycle synchronization of writes and emulator.
    -- Summary: 5B exhibits phase reset from $0FF to $100 but not $100 to $0FF transition? (Think this is expected behaviour if low byte is written first in both cases. Should be fixed by better timing precision.)
    -- counter[ch] > freq2[ch] etc. clamps for VRC6 frequency writes are probably wrong (should do immediate modulo, maybe? this is a wrong implementation clearly, but borne out of the many clocks per update problem)
    --- See VRC6 countdown note above.
  • Waveform visualizer
  • Expand info window to show all available fields (+text?) rather than one string for the whole thing
  • Play speed override option (keyboard adjustment should have more than just 1-8 integers), maybe allow CPU speed adjustment too?
  • NSFLive memory access viewer: visual map of memory usage (like FCEUX code data log)
  • DPCM ripper
  • Sesame Street Countdown does not play. Bad rip?
  • validation: VRC7 speed limit? (hard)
  • validation: illegal opcodes
  • validation: IRQ usage
  • validation: writes to register mirrors
  • linearity tests for APU especially and expansion audio as well, should be able to automate by playing a consistent frequency at different volumes, do RMS average over stable areas of the recording, etc.
  • Winamp plugin: hover over taskbar, play controls work but track select does not work properly.
  • N163 oversampling
  • VRC7 emulation rewrite (don't forget YM2413)
    -- https://github.com/0xJonas/VRC7-Sound
    -- http://www.smspower.org/Development/YM2413
    -- https://github.com/chocolate-doom/chocolate-doom/tree/master/opl
  • Jaleco sample playback emulation, maybe also develop an audio estimation technique? Should be similar to NEC UPD7759:
    -- https://github.com/mamedev/mame/blob/master/src/devices/sound/upd7759.cpp
  • Export multi-WAV individual channels
  • Export all tracks
  • Export PLS Ability to Mass Generate PLS Files #86
  • EPSM Request: EPSM Support #66

Other stuff that was on 2.5's wishlist:

Visualizer thoughts:

  • Would be nice to have a low volume note threshold, like a transparent dot, on the keyboard view.
@bbbradsmith bbbradsmith added the roadmap Official future plans for NSFPlay label Jun 3, 2018
@bbbradsmith bbbradsmith added this to the 2.5 milestone Jun 3, 2018
@bbbradsmith bbbradsmith self-assigned this Jun 3, 2018
Repository owner locked and limited conversation to collaborators Jun 3, 2018
@bbbradsmith bbbradsmith changed the title NSFPlay 2.5+ roadmap NSFPlay 3.0+ roadmap Mar 13, 2019
@bbbradsmith
Copy link
Owner Author

bbbradsmith commented Feb 4, 2025

NSFPlay3 development began in March 2024. Rough milestone goals for first release, this list is a work in progress. Please do not request a timeline.

  • Build and CI setup
    • Windows MSVC (32 + 64)
    • Windows MSYS2 (32 + 64)
    • Linux (Ubuntu)
    • MacOS (Intel + ARM)
  • Setup library dependencies
    • PortAudio (Cross-platform Audio)
    • WxWidgets (GUI)
  • Core
    • API
      • Playback controls
      • Extensible metadata system
      • Extensible settings system
    • INI file parsing
    • NSF and NSFe file parsing
    • Playback mechanism
    • NES CPU emulation
      • Emulation
      • Debugging
      • Logging
    • Sound Generators
      • Debug Test
      • NES APU
      • FDS
      • MMC5
      • Konami VRC6
      • Konami VRC7
      • Namco 163
      • Sunsoft 5B
      • OneBus VT+
      • EPSM
    • Audio resamplers
    • Audio output filters
    • Other file type support
      • BIN
      • NES
  • Cmd (Command line player/tool)
    • Command line parsing
    • Cross platform interface
    • Metadata display
    • Metadata editor
    • Settings controls
    • Playback controls
    • Render to WAV
    • Unit testing
  • NSFPlay (GUI player)
    • Property Grid
      • Settings controls
      • Metadata display
      • Metadata editor
    • Playback controls
    • Render to WAV
    • Keyboard view
    • Debug tools
      • Memory hex view
      • Disassembly and trace
      • Trace logging
  • Winamp plugin
  • Core examples
    • Sound FX board: loads an NSF and maps tracks to keys.
    • Lizard BIN music engine demo: play music and integrated sound effects.
    • No loaded NSF keyboard demo: play tones with keys.

@bbbradsmith bbbradsmith removed this from the 2.5 milestone Feb 5, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
roadmap Official future plans for NSFPlay
Projects
None yet
Development

When branches are created from issues, their pull requests are automatically linked.

1 participant