composing nes music back in the 80's?

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
composing nes music back in the 80's?
by on (#58036)
I was just thinking this morning how impressive it is that such excellent music was written for the NES back in the 80's. But, I know that midi keyboards and sequencers were certainly around back then, and it made me wonder if most companies had a composer write music with such a keyboard, and then have a programmer write something that would translate MIDI into values readable by a custom nes music driver? That would seem to make the most sense, since sequencing keyboards were probably the most sophisticated tools available back then for writing computer oriented music.

If that is true, it would tempt me to invest in some kind of advanced keyboard for the purpose of composing nes music. I do use my electric piano with a midi cable and famitracker at the moment, but the setup is leaving me wanting for some more advanced capabilities that could make arranging the music I write more efficient than jumping between the keyboard and famitracker and making dozens of edits.

by on (#58040)
- Ask Mr. Baldwin for a tip. I believe he already did a comment before though.

by on (#58041)
The distinction between musician and programmer wasn't so sharp back then. There's a talk that Rob Hubbard gave where he explains how he and other musicians used to work on the C64: youtube video

That doesn't mean they didn't use keyboards while composing tunes. And it certainly doesn't mean you can't use one. That's one of the advantages of doing music now compared to 20 years ago; you've got a lot more advanced tools available now than they had.

by on (#58044)
thanks for the link, I'll have to listen in more detail later.
I thought the bit about looping 4 bar chunks was really interesting. I was trying to do something similar in famitracker the other day, I made the pattern (correct term?) size be about 16 rows long, so I could make changes while it was running. it would be cool if there was a way to delete notes using a signal from my piano, so I could basically compose everything from the piano and then make edits in famitracker for effects, etc.

by on (#58068)
I think the way I do it may be similar to how it could have been done back then.

The idea is that, because I coded the engine myself, I'd be comfortable with working in an assembler, and I wrote everything up with the intention that it would be compiled alongside the engine. As such, I use plain labels and pointers and such within the music data, with the expectation that the compiler will fill in the pointers correctly and whatnot, just like asm code. Alongside that, the data is just a bunch of numbers, and I can assign some mnemonics to make them prettier than just simple numbers. :P

Either way, I don't use any GUIs in order to write the music itself, I just simply fill in the bytes, compile, and see if it sounds right. If I wanted to, and had the proper equipment, I could set up the pointers in my engine such that it reads from some ram, and I download the song to the ram for prototyping (using some kind of serial connection to tell the code to poke the bytes in, I suppose). That would save me from needing to recompile the whole thing each time I need to test a song out.

I do it this way because, and I'll be honest, I really don't like trackers very much. They're easy to use, yes, but they all come with limitations, such as the notes needing to be locked to the grid, one command per row, per channel, etc. Easy to understand, but not as flexible as I like. Plus, I'm more used to MIDI, and piano rolls, rather than spreadsheets. :P

by on (#58069)
There was a pretty good article on Hirokazu Tanaka somewhere. On this shorter one it says there were sound tools for Famicom, but he continued writing his own assembly code.
http://www.japan-101.com/art/art_hirokazu_tanaka.htm

by on (#58074)
Drag wrote:
I do it this way because, and I'll be honest, I really don't like trackers very much. They're easy to use, yes, but they all come with limitations, such as the notes needing to be locked to the grid, one command per row, per channel, etc. Easy to understand, but not as flexible as I like. Plus, I'm more used to MIDI, and piano rolls, rather than spreadsheets. :P

In a tracker, there are supposed to be 24 "ticks" in a quarter note, which are combined into "rows". Some trackers have a controller to delay a note-on or note-off several ticks from the start of the row: for example, SCx or SDx in ScreamTracker and Impulse Tracker. A standard MIDI file (.mid) makes a similar use of "ticks" in the delta-time before each event. MIDI devices supporting sequencer sync are supposed to send or receive a clock message ($F8) 24 times per quarter note, and the "Song Position Pointer" command ($F2) even uses sixteenth notes to denote a song position, just like a tracker. (Source: midi.org)

So what you want is a tracker that supports piano roll view and easier access to the delay-by-n-ticks command.

by on (#58086)
tepples wrote:
Some trackers have a controller to delay a note-on or note-off several ticks from the start of the row: for example, SCx or SDx in ScreamTracker and Impulse Tracker.

You sacrifice your ability to set a note decay or a pitch bend on that same note by doing that though, which, again, is one of the problems with nearly every tracker I've come across. And then again, good luck having tripolets if your "speed" is set to anything more than 3.

tepples wrote:
So what you want is a tracker that supports piano roll view and easier access to the delay-by-n-ticks command.

FLStudio <3

by on (#58096)
I don't think trackers are that much abstracted from the assembler method though, GUI aside. You generally still need a mild understanding of hexadecimal, tables and addressing and indexing. Even if you don't realise, you're still actually programming the music.


Anyway, I digress. Cheap Yamaha keyboard, pencil and paper and an assembler was how I always did it.

That was even how Nijuu ended up too, 20 years later! Though I did make a MIDI-to-text tool to turn short MIDI sequences into assembler labels/tokens.

Of course, NTRQ is totally different and is a radical departure for me. I have to admit to having a dislike for trackers in the past, I just didn't get them at all. I always thought they were too rigid and too restrictive but with a little creativity you can overcome that. Mostly. It is a very fast way to work though, back in the day I would've killed for something like NTRQ!

:)

by on (#58104)
neilbaldwin wrote:
I don't think trackers are that much abstracted from the assembler method though, GUI aside. You generally still need a mild understanding of hexadecimal, tables and addressing and indexing. Even if you don't realise, you're still actually programming the music.


Anyway, I digress. Cheap Yamaha keyboard, pencil and paper and an assembler was how I always did it.

That was even how Nijuu ended up too, 20 years later! Though I did make a MIDI-to-text tool to turn short MIDI sequences into assembler labels/tokens.

Of course, NTRQ is totally different and is a radical departure for me. I have to admit to having a dislike for trackers in the past, I just didn't get them at all. I always thought they were too rigid and too restrictive but with a little creativity you can overcome that. Mostly. It is a very fast way to work though, back in the day I would've killed for something like NTRQ!

:)


For folks with no music skills like me, Do you still have the MIDI converter, source and docs? Please do share.

by on (#58108)
Ah, don't get too excited. It's use was very, very limited and it outputs text sequences that were totally specific to Nijuu.

It's not some magic MIDI-to-NES converter by any stretch of the imagination! There's still a lot of work to do by hand to create music in Nijuu.

:)

Anyway, the tool is included with the release package which you can get here;

http://dutycyclegenerator.com/nijuu/nijuu.html

by on (#58113)
Isn't there a MIDI->MML tool already? I'm assuming that there's still some manual editing involved, like creating patches, deinterleaving drums from other channels and merging or deleting channels in cases where the MIDI uses more than 4 channels.

by on (#58115)
Drag wrote:
tepples wrote:
Some trackers have a controller to delay a note-on or note-off several ticks from the start of the row

You sacrifice your ability to set a note decay or a pitch bend on that same note by doing that though, which, again, is one of the problems with nearly every tracker I've come across.

I seem to remember that Famitracker has a mode allowing four controllers on the same row.

Quote:
And then again, good luck having tripolets if your "speed" is set to anything more than 3.

"Balloon Fever", a cover of the "Balloon Trip" theme from Balloon Fight in the style of "Maximizer" from DDR Extreme (U), uses triplets in the drum fills with the SD2 and SD4 commands. It looks something like this:
Code:
C-5 05 v32 ---
C-5 05 v20 SD2
C-5 05 v20 SD4
--- -- --- ---
C-5 05 v32 ---
C-5 05 v20 SD2
C-5 05 v20 SD4
--- -- --- ---

by on (#59106)
Triplets aren't hard at a speed setting higher than 3, take Tepples' example, but also with FamiTracker, the note delay function allows you to delay notes larger than the speed setting (unlike traditional trackers), as long as you don't go over G0F. What does that mean? Very fast triplets are possible at a speed of 6...so long as you have the empty rows.

BTW, a speed of 04 is great for triplets, and you can even do regular quarter notes too (of course you have to delay half your speed setting to get them to play properly)

It always baffled me why it was so hard for people to do triplets in trackers. There's always ways.