It is currently Wed Oct 17, 2018 7:27 pm

All times are UTC - 7 hours

Post new topic Reply to topic  [ 4 posts ] 
Author Message
PostPosted: Tue Sep 25, 2018 6:21 pm 
User avatar

Joined: Mon Sep 03, 2018 12:25 pm
Posts: 1
Location: BC, Canada
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

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:

:beer: :D

Last edited by orchetect on Fri Oct 05, 2018 11:47 pm, edited 2 times in total.

PostPosted: Tue Sep 25, 2018 8:59 pm 

Joined: Thu Aug 20, 2015 3:09 am
Posts: 411
Would you believe it, just yesterday I thought "wouldn't it be cool if you could hook a MIDI keyboard up to a NES and play chiptune music live?" Awesome work. :beer: :D

(notices username)

...heh. Small world. Welcome to NesDev!

PostPosted: Tue Sep 25, 2018 11:10 pm 
Site Admin
User avatar

Joined: Mon Sep 20, 2004 6:04 am
Posts: 3569
Location: Indianapolis
Very cool to see something like this coming together! I've worked on some very similar stuff over the years. Register dumps do work really well over USB/RS232. By the time I had my whole MIDI control and channel-stealing priority system set up, I ended up having a lot of fun making my own soft synth with wavetable, phase distortion, etc, making a General MIDI instrument set and all that, I got way sidetracked from outputting it to NES.

The DPCM channel poses some challenges when using the controller port, but it can be done. If you're doing asynchronous communication, DPCM steals CPU cycles, if you're doing synchronous, DPCM inserts some spurious clocks. blargg had shown that async NSF streaming with DPCM can be done though. And I've been working on a synchronous USB adapter that should be able to filter out the bad clocks.

Flash memory would work about as well as RAM. If you wanted an existing board, there is GTROM which could hold as much as 256kB of DPCM samples.

PostPosted: Wed Sep 26, 2018 11:15 pm 
User avatar

Joined: Thu Sep 07, 2006 1:08 pm
Posts: 571
Location: United States
This looks very interesting! I always wanted a MIDI -> NES device but was always hesitant to buy midiNES / maestro do to their limitations.

Would it be feasible to have it play arps when 3 keys are hit at the same time?

Ruling the World One Bean™ at a Time...

Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 4 posts ] 

All times are UTC - 7 hours

Who is online

Users browsing this forum: No registered users and 2 guests

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group