Thought I'd share this here. After numerous weeks of research, parts acquisition, hardware modding and software coding, I've got a fully functioning foundation for a way to use an NES console as a hardware synth using MIDI over a USB connection.

In a nutshell: I wrote a custom desktop MIDI driver that holds all 2A03 register state information and contains all the logic to translate MIDI notes, CCs, etc. to appropriate APU register changes ($4000 ... $4017). The only data being transmitted over USB is the actual register bytes being received on an interrupt in real-time, so it's almost zero-latency and very responsive. (It's utilizing a USB CopyNES installed in the system as a way to write to the APU registers.)

The goal is to make all features of the 2A03 chip available as MIDI CCs so you can emulate the behavior of trackers in a MIDI-compatible DAW (Logic, Cubase, Pro Tools, Reaper, Ableton Live, etc.) and to aim it towards power-users (surpass the basic feature set of the midiNES / Chip Maestro).

I haven't done any extensive tests yet but based on this setup, when it's fully coded it __should__ (I hope!) be able to:

- stream NSF files from the desktop without requiring a RAM cart or side-loading/buffering
- have potential to receive real-time direct APU output stream from Famitracker or a modded NES emulator for the sound registers
- have software-driven volume/pitch/pulse width envelopes available
- have software-driven macros (akin to Plogue Chipsounds' Sequencer section) so note triggers can execute complex sets of user-programmed APU events. these presets can be stored in your DAW session as MIDI SysEx data so they are portable and platform-agnostic, and uploaded into the MIDI driver when it receives the SysEx at the start of a project's playback, for example

Eventually, it may be possible to use some of the onboard RAM or a custom RAM cart to store DPCM samples for triggering on the DMC channel.

Here's some preliminary videos demonstrating that it works: … 1755319296

Last edited by orchetect (Oct 18, 2018 5:46 am)