Offline
Philadelphia

Over the past eight years that I've been using MidiNES to make chiptunes, I've occasionally searched for tutorials and documentation detailing the specific use of all of the parameters but have only ever found demos and the original manual which simply outlines the CC signal designation and contains, at best, a brief explanation of their implementation. What all of the resources seemed to lack was a comprehensive explanation of how these parameters can be used in conjunction with one another and how this can translate into creating better sounds and maximizing the limitations of the sound chip. I've been considering writing a tutorial of sorts for years but just never got around to it until now.

What I'm hoping is to post in this thread regularly with each 'entry' highlighting a different topic. For example, some will cover technical aspects such as how to set up a MidiNES compatible file in your DAW, programming all of the CC's, which of those CC's to implement for different styles of note, etc., while others will cover topics related to composition and how to achieve certain results with the available parameters, and so on. I'm hoping for some decent responses so the time isn't wasted but I'll play it by ear. As long as people are interested, I'll continue adding to the guide! I'm not too concerned about having others post between my own since mine will be quite long in comparison so anyone who's browsing will be able to find them easily. Plus, I'll try to answer questions that pop up which will add to the overall usefulness of this thread as a comprehensive guide. If this continues on for long enough, I'll probably just end up transferring all of the text to a guide on my own website but for now, this is a good place to begin.

For starters, I'm going to focus on the bare bones basics for complete beginners - if you have a MidiNES cart, a NES, USB MIDI interface and a DAW (Digital Audio Workstation) that can send programmable MIDI control signals, the following will show you how to set everything up to get started. I realize most people with a MidiNES cart in their possession may already know the basics but it's better to explain too much than not enough!

Personally, I use FL Studio, so that will be in all examples but I'll try to use terminology universal to all DAWs and go into more detail to cover alternative methods when there may be differences between them.

Here is a brief description of my setup for reference:

- MidiNES with prosound modded NES (two 1/4" audio out jacks)
- Tascam US-122mkII midi interface to connect the MidiNES (via output cable) to my computer (via USB)
- Alesis USB Multimix8 (optional, but preferable to a direct line from the NES to speakers)
- M-Audio AV30 Speakers (not the best but sufficient for this)
- FL Studio 11 Producer Edition

Hooking Everything Up

Firstly, be sure your NES is fully functional, the MidiNES cart is inserted and secure, and the system powers on to the MidiNES title screen properly. If you're like me and you don't have a display hooked up to the NES, you can turn the volume on your mixer/speakers up a bit higher than you would to listen to music at a comfortable volume and listen in - whether you have a prosound modded NES or are working from the stock system, there will be some degree of hum. If it's consistent, then press the select button on the controller. This is a MidiNES feature which disables the visuals and trades the more noticeable hum for a subtle, solid, high pitched frequency. Pressing select again should return to the hum. If all these results are as expected, you have a good connection between the cart and 72-pin connector in the system and I recommend never removing the cart. This is your dedicated MidiNES system now!

Next, connect the MIDI out cable coming from the MidiNES cart to the MIDI OUT on your MIDI interface. You can also connect the USB cable from the interface to your computer now but I've found it can be finicky depending on what interface you're using. My previous Tascam US-122L interface almost always needed to be plugged in after I started up FL Studio (otherwise the program would freeze) but the US-122mkII has been much more reliable and FL Studio only freezes once in awhile (in which case I would unplug the USB, force close FL Studio then reopen the program before plugging the USB in again). I honestly don't know the underlying cause of this issue but that's been my fix thus far.

NOTE: Depending on what interface you're using, there may be a latency setting. Latency determines how quickly the MIDI data is sent to the interface (and therefore how close to 'real time' the NES responds to them), so the lower the latency, the better. For mine, it's an option within the software that installed with the driver for the interface but you may have a plug and play device with no associated software in which case the latency may be controlled via a knob or switch on the device itself. Regardless, latency isn't much of an issue if you aren't using additional synths that need to keep time with each other.

Now, open up your DAW and find the MIDI settings. In the settings options, there should be a list of MIDI INPUT and MIDI OUTPUT devices. The OUTPUT is what is important to us here. Plug in your device if it isn't already plugged in. If you don't see your specific interface listed in the outputs, there may be a 'refresh list' or 'rescan devices' button somewhere that will look for it. Once it pops up, select it and locate the 'PORT' option. I have this set to 1 but it really doesn't matter exactly what you set it to. What's important is that you use the same port number you select here later on when setting up the five MIDI output channels.

At this point, your DAW should recognize the interface and be able to send MIDI CC's to the MidiNES cart to make sound on the NES. You may have to enable MIDI output from another location but worry about that if it's not working later on. We'll set up the five channels now but you can test it after setting up the first.

Creating MIDI Out Channels

Okay, we're getting there! The next step is basically knowing how to do a few things then repeating the process a number of times. For reference, these are the five channels we'll be creating:

1) Pulse 01
2) Pulse 02
3) Triangle
4) Noise
5) DPCM

Let's create the Pulse 01 channel.

Add a MIDI Out channel to the instruments/voices/channels, wherever they may be located. This is done in a wide variety of ways in different DAWs so you may have to familiarize yourself with the specifics first. If you're working in a MIDI specific program (as opposed to a sequencing or pattern based sampling program like FL Studio), it will probably be easier to find and may be readily visible in the default interface layout. In FL Studio, there is a panel called 'Step Sequencer' which contains channels and a channel is added by going to CHANNEL>ADD ONE>MIDI OUT. You can name it whatever you like but for the sake of consistency and accuracy, I name it "Pulse 01". Upon adding it in FL Studio, the options for the newly created channel are opened (alternatively, clicking on the channel label does the same). Within these settings, you'll be looking for a few things:

CHANNEL - this determines which of the five available channels on the NES will be controlled by this MIDI Out. Set this to '1' (and the rest to 2-5).

PORT - set this (as well as every other channel) to the same number as you set in the MIDI settings. As I have my port set to '1', I've also set all of the channel ports to the same.

After setting these two parameters, open up the piano roll and lay a note or two down to see if you're getting sound from the NES. Be sure to add a note somewhere above A#2 as that is the lowest note the pulse channels can play. Assuming the results are as expected, continue! If not, then trouble shoot the connections, double check the MIDI settings, etc. until you've identified the problem.

Programming Midi Controls

The locations for the controls we'll be programming will be different for every DAW but in FL Studio, it's essentially a grouping of unidentified knobs and sliders with a blank drop down above it, all located in the channel settings. This area allows you to create groups of controls and then set the specific parameters of each control within (right clicking the knob brings up the available options). Whatever your setup gives you, you will need a total of 12 controls for the two pulse channels and less for the remaining channels. Access the settings/options for the first knob (for me, it's under "configure") and you should see the following among the options: Name, Controller # (be sure that, if given options between control types, 'CC' is selected), and a set of values determining the min and max possible value. Your program may have these organized in some fashion by CC# specifically but the same correlation of values will apply regardless.

Below are the settings I've chosen for all control knobs on this channel:

- Duty Cycle, CC#1, 0>127
- Mod Period, CC#6, 0>127
- Master Volume, CC#7, 0>127
- Fine Pitch, CC#8, 0>127
- Length Envelope, CC#9, 0>127
- Loop Envelope, CC#10, 0>127
- Volume Envelope,  CC#11, 0>127
- Mod Hack, CC#12, 0>127
- Enable Sweep, CC#13, 0>127
(the following apply to the sweep functions)
- Sweep Up/Down, CC#14, 0>127
- Sweep Period, CC#15, 0>127
- Sweep Shift, CC#16, 0>127

Truth be told, I only use a few of these controls regularly, but having them all programmed in for possible future use is probably the best practice. Generally, I prefer to manually create some of the effects that can be done with certain parameters but on a regular basis I implement the Duty, Length, Loop and Volume controls in conjunction with general channel controls that are standard in most DAWs (like channel pitch, channel volume, note velocity, etc). But I'll save all that for later. We have four more channels to create!

Fortunately, everything about the Pulse 02 channel is the same as Pulse 01, with one exception - the Channel #. Remember, all channels will have the same port # but the channel needs to reflect one of five available channels on the NES. So naturally, Pulse 02 will be on channel '2'. Hopefully, your DAW has an option to duplicate the MIDI Out channel you just created (after which you can change the channel # and name) but if not, just do everything you just did again changing the name and channel # as mentioned above.

For the next three channels, we'll repeat this process but the channels will be designated 3-5 and the custom MIDI controls will be as follows:

TRIANGLE (channel 3):
- Fine Pitch, CC#8, 0>127

NOISE (channel 4):
- Master Volume, CC#7, 0>127
- Length Envelope, CC#9, 0>127
- Loop Envelope, CC#10, 0>127
- Volume Envelope, CC#11, 0>127

DPCM (channel 5):
- Pitch, CC#3, 0>127
- Loop, CC#4, 0>127
- Bank Switch, CC#14, 0>127

While I've included all of the Pulse channel controls previously, I've not done the same for the DPCM channel. This is one of those features that is 'expandable' in the sense that with additional hardware/software you can load different sample sets and do crazy stuff with it, but for the vast majority of compositions, I use this strictly as a drumkit (in conjunction with the noise channel) and so you can feel free to explore the others on your own to see what you can do once you've learned the basics and a bit more after that.

Well, that's it for this tutorial.

I hope this will be informative for some people just starting out as I know a lot of people here already know most of this but we'll get into the more advances stuff down the road!

Last edited by Doctor Octoroc (Jan 17, 2019 6:08 pm)

Offline
Rhode Island

Great introductory write up! I look forward to reading more of your posts since I have been using the same setup (midiNes/FLStudio) for a long time as well. I have a couple setups I use with the DPCM beyond the normal drum kit too if you are looking to create a wiki or comprehensive midiNes/FL guide

Offline
Philadelphia
2PLAYER wrote:

Great introductory write up! I look forward to reading more of your posts since I have been using the same setup (midiNes/FLStudio) for a long time as well. I have a couple setups I use with the DPCM beyond the normal drum kit too if you are looking to create a wiki or comprehensive midiNes/FL guide

That would be great - I've found next to no documentation on implementing the CC#2 and 5-13 of the DPCM. I've played around with them but I couldn't quite get my 'bearings' enough to make use of them in compositions.

I guess as long as I have a known audience, I'll ask - what particular topics are you most interested in exploring? Are you more interested in the technical aspects or those related to 'achieving certain results' in terms of composition? I'm certainly no expert on the topic but nearly a decade of working with something will give a good level of insight!

Last edited by Doctor Octoroc (Jan 16, 2019 4:17 pm)

Offline
Rhode Island

Yes, I also haven't come across much out there. Most of what I have done has been through trial & error and experimenting. I have been using CC09 - CC12 to get some pretty killer bass frequencies but I have some issues with detuning when other channels are played along side it. I've also used CC05-CC08 in combination with CC03 to try to create custom speech but that's been more labor intensive than it's worth. Here's a track I did using only the DPCM channel for reference.

I am probably most interested in your instrument creation and process to see if there are things I can pick up that I haven't tried. Like how you set up your CC automation, lessons learned, sharing patches, etc.

Offline
Philadelphia
2PLAYER wrote:

Yes, I also haven't come across much out there. Most of what I have done has been through trial & error and experimenting. I have been using CC09 - CC12 to get some pretty killer bass frequencies but I have some issues with detuning when other channels are played along side it. I've also used CC05-CC08 in combination with CC03 to try to create custom speech but that's been more labor intensive than it's worth. Here's a track I did using only the DPCM channel for reference.

I am probably most interested in your instrument creation and process to see if there are things I can pick up that I haven't tried. Like how you set up your CC automation, lessons learned, sharing patches, etc.

That track is dope AF! Sounds like something Deadmau5 or Chemical Brothers would have put out. Yeah, my overall methods generally avoid any 'unpredictable' behavior that might kill a live play through. It took me a long time to finally get used to using the volume and loop envelopes in tandem with the channel/note volume to get the desired decay on notes - trying to figure out all the Wav Traveler parameters would probably drive me insane! But I would be most interested to learn a thing or two from your experiences!

Offline
Rhode Island

Thanks! If you're interested, I can send you the DPCM effects preset for it or the song itself. I don't play live but would still be interested in cutting down on unpredictable behavior.

I am still curious about CC02 and CC13 for PCM modulation as well. I have tried to feed CC02 samples/waveforms but I can't get a high enough resolution in an effects preset to get a clear/coherent playback. Know of anyone who has done this?

Offline
Philadelphia
2PLAYER wrote:

Thanks! If you're interested, I can send you the DPCM effects preset for it or the song itself. I don't play live but would still be interested in cutting down on unpredictable behavior.

I am still curious about CC02 and CC13 for PCM modulation as well. I have tried to feed CC02 samples/waveforms but I can't get a high enough resolution in an effects preset to get a clear/coherent playback. Know of anyone who has done this?

I don't really play live either but I want the option to do so with any of my tracks without all hell braking loose haha. I had one DJ gig at a video game art show awhile back and I often play new tracks for friends but that's the extent of it.

That would be cool, thanks! I honestly stick to more traditional composition and arrangement and haven't delved into the experimental side of MidiNES as much. I use lots of creative techniques to accommodate fuller sounding tracks but not to do crazy stuff with the modulation. I manually draw all CC control data in the event editor and opt to create arpeggiator effects in the piano roll with placed notes. It's probably more time consuming than utilizing the additional CC's but it allows a bit more precise control and affords me the ability to play through a MIDItrail visualizer when I play the tracks for others so they can see the notes play in real time. I also use the visualizer for YouTube uploads like this arrangement of Neutral Milk Hotel's "Holland 1945".

Offline
Rhode Island

Nice cover and great use of the visualizer! I'll send some stuff your way later tonight.

I was drawing the CC data in the event editor for a while but swapped over to use a layer, envelope controller and midi out. It made instrument creation more streamlined for me but there are still areas that I need to use the event editor for. It is easy to create issues with data output this way though if you send a lot of CC messages using a smooth curve instead of a stepped function (learned the hard way).

Offline
Sea of Souls

heart<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3v

Offline
Milwaukee, WI

Useful for the ultra-rich in 2019

Offline
Philadelphia
2PLAYER wrote:

Nice cover and great use of the visualizer! I'll send some stuff your way later tonight.

I was drawing the CC data in the event editor for a while but swapped over to use a layer, envelope controller and midi out. It made instrument creation more streamlined for me but there are still areas that I need to use the event editor for. It is easy to create issues with data output this way though if you send a lot of CC messages using a smooth curve instead of a stepped function (learned the hard way).

Yeah, I learned that the hard way as well drawing data with the brush instead of in step with the time signature. A good rule of thumb I've developed is to sequence it as close to a 'program' as possible. I general manipulate volume in 1/2 or whole step intervals since anything less won't really be noticeable with only 16 volume steps, and I use manual fades as often as possible because I see more note drops when utilizing automatic volume decay. I also hadn't been using the loop envelope before and that solved a lot of issues with funky notes (leaving it on for notes with decay and hearing a brief repetition before the very end of the note duration).

But these are also the sorts of things I'll cover in time.

Orgia Mode wrote:

heart<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3v

Thank you kindly!

TSC wrote:

Useful for the ultra-rich in 2019

I dunno, this one might not go too high:

https://www.ebay.com/itm/MIDINES-MIDI-N … SwwqVcO7If

Of course posting the link here might add a few more bidders to the mix...but $100 was honestly a steal for this thing. I know there are other options out there and emulation is pretty good but considering people spend hundreds or thousands on other synths, a few hundred still isn't too bad if you're willing to make the investment. As a 'fool around and have some fun' thing, it's pricey, but for anyone serious about making quality, authentic chiptunes using the NES, it's worth that much in my opinion.

Still, considering the lack of extensive documentation for MidiNES (hell, the video example used in the listing is from 2012), I've gotten the impression that a lot of people who got it back in the day gave up trying to figure out all the ins and outs and either sold it or it's collecting dust. I'm hoping this tutorial series can attract a lot of those people who already have it and haven't been able to use it to it's full potential!

Last edited by Doctor Octoroc (Jan 16, 2019 11:08 pm)

Offline
IL, US
Doctor Octoroc wrote:

Still, considering the lack of extensive documentation for MidiNES (hell, the video example used in the listing is from 2012), I've gotten the impression that a lot of people who got it back in the day gave up trying to figure out all the ins and outs and either sold it or it's collecting dust. I'm hoping this tutorial series can attract a lot of those people who already have it and haven't been able to use it to it's full potential!

Plenty of people just got tired of stability issues (especially for live use) & sold ours off on ebay. It seems likely the 3 carts i had are all collecting dust on shelves of people who don't use them. I decided I'd rather use mGB, though i miss the NES noise channel.
I'm sure there would be more vids and documentation, but lots of people who used midiNES heavily back in the day also weren't the sort who use tutorials themselves. Or remembered how the sabrepulse lsdj tutorials resulted in way too much lsdj stuff sounding similar for a long time & preferred that not happen with midiNES too

Offline
Philadelphia
e.s.c. wrote:
Doctor Octoroc wrote:

Still, considering the lack of extensive documentation for MidiNES (hell, the video example used in the listing is from 2012), I've gotten the impression that a lot of people who got it back in the day gave up trying to figure out all the ins and outs and either sold it or it's collecting dust. I'm hoping this tutorial series can attract a lot of those people who already have it and haven't been able to use it to it's full potential!

Plenty of people just got tired of stability issues (especially for live use) & sold ours off on ebay. It seems likely the 3 carts i had are all collecting dust on shelves of people who don't use them. I decided I'd rather use mGB, though i miss the NES noise channel.
I'm sure there would be more vids and documentation, but lots of people who used midiNES heavily back in the day also weren't the sort who use tutorials themselves. Or remembered how the sabrepulse lsdj tutorials resulted in way too much lsdj stuff sounding similar for a long time & preferred that not happen with midiNES too

I'm sure the 'behind the scenes' stuff related to the creator also soured some opinions of the cart.

I'll grant it has some issues for live playback (although personally, since I mainly do studio work, I've only ever had to re-record a track on one or two occasions due to stuck or skipped notes so long as it's in mode 1)  but I can't imagine that too large a percentage of the people who bought it were booking/playing shows and encountering issues that dissuaded them from using it at all. Given, anyone overly active in the chip-tune community back when MidiNES was initially released would likely be the type to not require a tutorial to learn the ropes as they were all experimenting on their own and sharing tips/tricks (I had to hit up 8BW for some myself) but I think that a much larger percentage made up people who had little or no knowledge of home-brew/mods and some that likely only knew the basics of composition, all who had a more casual interest in making chip-tunes and saw what they perceived to be a quick, easy way to create them authentically - at least quicker and easier than step sequencers and more intuitive for those who had some experience with MIDI composition software throughout the 80's and 90's like me. I used the crap out of Cakewalk in my teens!

But then they received it, tried to utilize it and found little to no support for the device (certainly none from the creator himself after a certain point). That would certainly cause many people, if not a good majority of them, who had spent the $100 for what they thought would be a simpler plug-n-play style device, to halt any efforts to uncover the 'mysteries' on their own.

Me personally, I don't know jack about home brew, modding, electronics, soldering, etc. I understand the terminology and can discuss the finer points but don't ask me to swap out a capacitor or add a back light to my DMG. I've supported those that can do these things with my hard earned money and put my own time and energy into that which I can do, and that's music performance, composition and arrangements. I did mess around with an Arduino for a week but it wasn't something I was about to pour years into in order to use it to the full potential. This is probably how many people felt about MidiNES after trying to figure out how all the features worked. But I decided to keep up with it over the years and gradually learned many of the features and that's why I started this thread, because I still see plenty of interest in chip-tunes and many people are using plug-ins that they probably wish were the real deal. Don't get me wrong, my first album was created with Tweakbench plug-ins, they're great for anyone without the means to use the original hardware but at some point, I wanted to use the actual NES and so I taught myself. But some people just require a bit of guidance and I don't see anything wrong with that.

I can understand the concern for similar sounding chip-tune tracks but, I mean, they're chip-tunes...made with the same limited hardware...there are only so many ways to utilize it on its own and I honestly think it's more a matter of over-saturation than lack of creativity because everyone watched the same tutorials. Maybe a bunch of people did just copy phrases and instrument parameters from sabrepulse tutorials but how is that any different from any other genre of music in that respect? You have a hot mess of noobs and amateurs playing the same tired thing, copying what they've heard, trying to get noticed, etc. Then you have a few who set themselves apart with some manner of unique style. It happened with '8-bit art' as well when everyone who downloaded Gimp thought they were a pixel artist and clogged up sites like Pixeljoint with sprite recolors and other garbage. A few artists were fantastic and the rest were not - that's just how every area of creativity evolves over time.

Last edited by Doctor Octoroc (Jan 19, 2019 7:48 pm)

Offline
Chicago IL

I been real into my MidiNES lately and uhhhh how does the wave traveler function work

Offline
Rhode Island

Others can correct me if I am wrong but this is my understanding of it. Basically, you are retriggering the sample at various pitches, speeds, and lengths as long as the note is held. First the CCs for reference:

DMC ADDRESS OVERRIDE
CC05 = DMC Sample start address
CC06 = DMC Sample playback length
CC08 = Toggle On/Off DMC address override

DMC WAVE TRAVELER
CC09 = Travel param tone
CC10 = Travel speed
CC11 = Travel loop size
CC12 = Toggle On/Off DMC wave traveler

  1. Turn on CC12 to enable the wave traveler and pick a sample from sample bank 1 or 2.

  2. Set your starting position in the sample by turning on CC08 and set the starting address with CC05. (This step can be skipped if and you just use the starting position)

  3. Define the loop size with CC11 to set when the sample is retriggered.

  4. Set speed and tone with CC10 and CC09.

When I mess around with it, I keep the loop size small to get a more predictable tone from the channel but there is some detuning that happens when other channels are on. I have experimented trying to get reliable pitches by fine tuning the speed and pitch to get a note but haven't gotten something that always delivers the same note yet.

If you have FLStudio, I'd be more than happy to share the song I linked above along with the envelope filters I created for it so you can see how I automated the CC values.

Offline
Philadelphia
Saskrotch wrote:

I been real into my MidiNES lately and uhhhh how does the wave traveler function work

This is a topic I unfortunately won't be covering as it's not related to more standard composition techniques. I put this more in the realm of 'glitching' than anything else because it's essentially manipulating the playback of the samples as opposed to operating the musical tones. Thankfully, 2Player has some good experience with this and has it covered!

I'll be posting the next section of my tutorial shortly, covering the basic operation of all of the CC's that I personally utilize.