How NES Music Was REALLY Composed
Moderator: Moderators
- Doommaster1994
- Posts: 162
- Joined: Mon Jun 21, 2010 10:23 pm
- Location: Seattle, WA
- Contact:
How NES Music Was REALLY Composed
Hello,
I thought I'd share something interesting with all of you. I have talked to countless NES composers and they've told me how they wrote their music. I'll share them with you guys:
Composer(s) - Program
Akito Nakatsuka - Family BASIC
Alberto Gonzalez - Compact Editor (ZX)
Barry Leitch - MODTracker (Amiga)
Brad Fuller - Hex Code
Charles Deenen - Hex Code
David Hayes - Cakewalk
David Warhol - Cakewalk
David Wise - Hex Code
Earl Vickers - Hex Code
Ed Bogas - Atari Music Studio (Atari ST)
Elliot Delman - Digital Performer
Frank Klepacki - Dr. T (Amiga)
Gavan Anderson - Hex Code
George Sanger - Digital Performer
Hirohiko Takayama - Hex Code
Hirokazu Tanaka - Family BASIC
Jeroen Tel - Hex Code
Jonathan Dunn - Hex Code.
Kinuyo Yamashita - Hex Code.
Koji Kondo - Family BASIC
Mark Knight - CuBase (Atari ST)
Mark Van Hecke - Dr. T (Atari ST)
Marshall Parker - Hex Code
Neil Baldwin - Hex Code.
Paul Webb - Hex Code
Paul Wilkinson - Cakewalk and Hex Code
Paul Webb - Hex Code.
Rob Wallace - Digital Orchestrator
Russell Ginns - Mastertracks (DOS)
Steven Samler - Digital Performer
Tania Smith - Hex Code
Zap Ajisai - Music Maker
I thought I'd share something interesting with all of you. I have talked to countless NES composers and they've told me how they wrote their music. I'll share them with you guys:
Composer(s) - Program
Akito Nakatsuka - Family BASIC
Alberto Gonzalez - Compact Editor (ZX)
Barry Leitch - MODTracker (Amiga)
Brad Fuller - Hex Code
Charles Deenen - Hex Code
David Hayes - Cakewalk
David Warhol - Cakewalk
David Wise - Hex Code
Earl Vickers - Hex Code
Ed Bogas - Atari Music Studio (Atari ST)
Elliot Delman - Digital Performer
Frank Klepacki - Dr. T (Amiga)
Gavan Anderson - Hex Code
George Sanger - Digital Performer
Hirohiko Takayama - Hex Code
Hirokazu Tanaka - Family BASIC
Jeroen Tel - Hex Code
Jonathan Dunn - Hex Code.
Kinuyo Yamashita - Hex Code.
Koji Kondo - Family BASIC
Mark Knight - CuBase (Atari ST)
Mark Van Hecke - Dr. T (Atari ST)
Marshall Parker - Hex Code
Neil Baldwin - Hex Code.
Paul Webb - Hex Code
Paul Wilkinson - Cakewalk and Hex Code
Paul Webb - Hex Code.
Rob Wallace - Digital Orchestrator
Russell Ginns - Mastertracks (DOS)
Steven Samler - Digital Performer
Tania Smith - Hex Code
Zap Ajisai - Music Maker
Well personally I prototype with Cakewalk and convert it manually to .db statements (that you call hex code).
With appropirate definitions, this is not too much a pain.
Of course I could also write a MIDI->binary converter but it would take at least as much time.
PS : You really TALKED to all those guys ?
With appropirate definitions, this is not too much a pain.
Of course I could also write a MIDI->binary converter but it would take at least as much time.
PS : You really TALKED to all those guys ?
Useless, lumbering half-wits don't scare us.
Wow, that's absolutely fascinating! The composers that used Family Basic, I wonder if they also wrote their engines with it, or just used Family Basic as a front-end for composing. (Or maybe the music engine was built into Family Basic? )
Heh, if you'd like, you can add me to that list -- I compose using raw hex code, and then I rely on my assembler to insert pointers (for jumping, looping, etc).
Sometimes, I'll "sketch out" a song using any number of tools (ModPlug, FLStudio, etc) before converting it to my engine, but most often, I'll simply compose directly in hex, assemble the music engine + data to an NSF file, and hear my work from that.
Heh, if you'd like, you can add me to that list -- I compose using raw hex code, and then I rely on my assembler to insert pointers (for jumping, looping, etc).
Sometimes, I'll "sketch out" a song using any number of tools (ModPlug, FLStudio, etc) before converting it to my engine, but most often, I'll simply compose directly in hex, assemble the music engine + data to an NSF file, and hear my work from that.
- Doommaster1994
- Posts: 162
- Joined: Mon Jun 21, 2010 10:23 pm
- Location: Seattle, WA
- Contact:
I would love to have a MIDI>NES converter. David Warhol has one but he's too lazy to try getting the disks to run. Every time I've asked, he's given me some excuse.Bregalad wrote:Well personally I prototype with Cakewalk and convert it manually to .db statements (that you call hex code).
With appropirate definitions, this is not too much a pain.
Of course I could also write a MIDI->binary converter but it would take at least as much time.
PS : You really TALKED to all those guys ?
I talked to about 95% of those guys. Hirokazu and Koji and a few others I haven't found a way to get a hold of. The rest of them I've got a hold of on Facebook.
Drag: Have you tried ripping those GBS files for me yet? Haha.
If you have done music for a game then I'll put on you there, though I'd prefer your real name on the list, but if you don't want that, that's fine. I wrote music for an NES game too for Gil-Galad. I'm just not sure if he's actually going to try and complete the game or not.
- Doommaster1994
- Posts: 162
- Joined: Mon Jun 21, 2010 10:23 pm
- Location: Seattle, WA
- Contact:
Oops, I finally got around to it just now.Doommaster1994 wrote:Drag: Have you tried ripping those GBS files for me yet? Haha.
Hmm... I'm not sure if I'm ready to have my real name on the internet just yet. At any rate, I still have yet to complete a game that uses music I wrote, so I guess I'll hold off for now.Doommaster1994 wrote:If you have done music for a game then I'll put on you there, though I'd prefer your real name on the list, but if you don't want that, that's fine. I wrote music for an NES game too for Gil-Galad. I'm just not sure if he's actually going to try and complete the game or not.
-
- Posts: 160
- Joined: Fri Sep 22, 2006 9:52 am
- Location: philly
Sweet list! You've found a lot more than I have.
I was interesting in putting something similar together, something written in layman's terms to give a basic understanding of how NES music was made to someone who's curious but not already knowledgeable.
http://theshizz.org/forum/index.php?/to ... -was-made/
Sorry for the huge post, but I figure I might as well copy/paste it here.
- - - - - - - - - - - -
1 - Neil Baldwin
2 - Alberto Gonzalez
3 - David Wise
4 - Tommy Tallarico
1. Neil Baldwin - link
Composer of Magician, James Bond Jr, Lethal Weapon 3, Ferrari Grand Prix Challenge, The Jungle Book, Dropzone, and Hero Quest + Erik the Viking (both unreleased).
In short - He wrote most everything out in text files that were subsequently compiled with Eurocom's own 6502 assembler. A Yamaha keyboard and graph paper were some of the physical tools that assisted in the composition and transcription process, although the keyboard was in no way actually interfaced with the system.
Detailed explanation-
Composer of Asterix and The Smurfs.
In short - He wrote his own tracker for the ZX Spectrum, titled Compact Editor, and sequenced out the basics of the music (notes, lengths) on there. Then after it was converted to source code most of the percussion, instrument details, and other nuances were all done in a plain text file. Data was transferred across platforms using a piece of hardware known as the P.D.S.
http://www.worldofspectrum.org/infoseek ... loadpics=1
Detailed explanation-
Composer / Sound Design for Battletoads, Wizards and Warriors, Marble Madness, Ironsword, Taboo: The Sixth Sense, Pin-bot and many others. http://en.wikipedia.org/wiki/David_Wise_(composer)#1987
The explanation is a bit short to summarize, so I'll skip the 'in short' here and go straight to the quote-
Composer for Color a Dinosaur (NES), as well as many more post-NES soundtracks.
In short - Working with a limited sound driver, and approaching the NES from more of a musical background than a programming one, Tallarico used a midi (.mid) -> ascii (.asc) converter. The converter was programmed by Virgin vice president Dr. Stephen Clarke-Wilson. Music was initially sequenced with Cakewalk. The sounds were edited and finalized using a custom NES cart- a gutted copy of what was formerly a test version of Golf Power, replaced with "Tommy T's Play Me Sound Editor"-
http://www.youtube.com/watch?v=XoD0ERZntFI
(note that the video is about the discovery of the item, which is why the speaker didn't know much about it at the time)
Detailed explanation-
I realize some of the links don't work right on this forum. That's ok.
I was interesting in putting something similar together, something written in layman's terms to give a basic understanding of how NES music was made to someone who's curious but not already knowledgeable.
http://theshizz.org/forum/index.php?/to ... -was-made/
Sorry for the huge post, but I figure I might as well copy/paste it here.
- - - - - - - - - - - -
1 - Neil Baldwin
2 - Alberto Gonzalez
3 - David Wise
4 - Tommy Tallarico
1. Neil Baldwin - link
Composer of Magician, James Bond Jr, Lethal Weapon 3, Ferrari Grand Prix Challenge, The Jungle Book, Dropzone, and Hero Quest + Erik the Viking (both unreleased).
In short - He wrote most everything out in text files that were subsequently compiled with Eurocom's own 6502 assembler. A Yamaha keyboard and graph paper were some of the physical tools that assisted in the composition and transcription process, although the keyboard was in no way actually interfaced with the system.
Detailed explanation-
Further anecdotes on working with the NES-NB: There were no tools to speak of so everything was entered as numbers in the assembler/editor. Later on I turned the numbers for command codes into macros to make entering and reading the sequences of notes a little easier but that's as sophisticated as it got. I worked out tunes on a little Yamaha keyboard and typed in the pitches and durations. Often I'd work out timings on some squared graph paper, mostly by trial and error.
- - -
Dennis: 'My big question is what kind of software you eventually fell into using, and if it resembled a tracker of any sort?
NB: All of my music was entered in text files and compiled with our own in-house 6502 assembler. I'd messed around with tracker-style programs on the Amiga but it's not a format that I ever really got on with. I did write some simple MIDI-to-text utility later on but it's use was very limited so 90% of the time I just typed everything in.
2. Alberto Gonzalez - linkNB: We had no development hardware just half-a-dozen Famicom consoles and a badly photocopied hardware specification that was 99% written in Japanese! What we lacked in resources, we clearly made up for in boundless determination.
Luckily for us, our parent company (at the time) employed the skills of a really talented electronics engineer, Richard Alton, who managed to reverse engineer (and build) some flash-ROM cartridges and together with an old 6502 editor/assembler, "PDS", we had ourselves a rudimentary development kit!
I remember myself and Tim Rogers (now Technical Director at Eurocom) visiting the languages department at Sheffield University with the photocopied Japanese NES manual and with the help of two Japanese girls we deciphered a lot of the technical information. They're uncredited in the history of Eurocom but looking back, I'm not quite sure how we'd have progressed without their help!
Composer of Asterix and The Smurfs.
In short - He wrote his own tracker for the ZX Spectrum, titled Compact Editor, and sequenced out the basics of the music (notes, lengths) on there. Then after it was converted to source code most of the percussion, instrument details, and other nuances were all done in a plain text file. Data was transferred across platforms using a piece of hardware known as the P.D.S.
http://www.worldofspectrum.org/infoseek ... loadpics=1
Detailed explanation-
Further anecdotes on working with the NES-B: Wait, so you even wrote NES music, for example, on the ZX Spectrum! Tell us a little bit more about your program Compact Editor, and how it basically functioned. Was it capable of tracking / composing a complete song from start to finish for the rest of your non-ZX 8-bit soundtracks?
AG: Compact Editor was a simple music sequencer, based on tracks, blocks, and instrument definitions, inspired by some Amiga computer trackers like NoiseTracker. A complementary PC program named “The Sourcer” was used to transform the binary data created with Compact Editor into raw source code, as a text language that I could understand (basic notes, lengths, etc). This way I could then edit the songs into its fullest detail.
- - -
AG: My entire process of making music for 8 bit consoles can be elaborated as such- First I used the Compact Editor to compose the basic idea of the song, with its different parts. Later the song was transformed into source code using The Sourcer, and then as a plain text file I put the small details and riffs into the song, as well the drum track and the final sound for each instrument. This process was done by changing the source code, compiling, sending it to the console, listening, and so on again and again until it sounded as I intended (or I ran out of time!). Finally, if required (most of the time), the compression stage took place, which consisted of finding and reusing small fragments of the song to make it use the least amount of memory possible.
Many times I adapted the sound driver for each game, adding new commands and effects, drum sounds or whatever. It was an evolving thing. I don’t know how the other musicians did their soundtracks, I’m still wondering, but don’t think it would be much different.
3. David Wise - linkAG: ... The NES had something special. The triangle wave channel was a good source for percussive sounds and boomy basses, although it wasn’t very usable for other kind of sounds. I really enjoyed doing the music of Asterix & The Smurfs. Solstice by Tim Follin was my inspiration at that time. I had to learn 6502 and I liked it much more than I would have imagined.
AG: ... When I was writing Asterix for the NES and learning the sound chip, I didn’t find information about the right frequency values to use for the notes (the frequency table), and the values of my Game Boy driver didn’t work. So what I did was create a small program for the Game Boy to play each note (12*8 notes if I remember correctly), and another program in the NES to lower and raise the sound frequency with the controller. Then I played each note in the Game Boy and tried to mach its frequency on the NES “by ear”, to find the right value for the registers. How brute is that? Well it worked, but now when I listen to my NES soundtracks I notice that some notes are a bit out of tune.
Composer / Sound Design for Battletoads, Wizards and Warriors, Marble Madness, Ironsword, Taboo: The Sixth Sense, Pin-bot and many others. http://en.wikipedia.org/wiki/David_Wise_(composer)#1987
The explanation is a bit short to summarize, so I'll skip the 'in short' here and go straight to the quote-
4. Tommy Tallarico - link 1, link 2OCR: What was the first week on the job like?
DW: Good - interesting. Video games were still in their infancy, and learning that the sound chip on the NES - the Nintendo Entertainment System - was somewhat compromised, compared to a Roland D-50, certainly made things challenging. But I like a challenge!
OCR: What was the most difficult thing to learn?
There was no MIDI, instead, notes were entered data style into a PC. I typed in hex numbers for pitch and length and a few commands for looping subroutines. And this method of writing video game music continued right through to the end of the SNES development.
Composer for Color a Dinosaur (NES), as well as many more post-NES soundtracks.
In short - Working with a limited sound driver, and approaching the NES from more of a musical background than a programming one, Tallarico used a midi (.mid) -> ascii (.asc) converter. The converter was programmed by Virgin vice president Dr. Stephen Clarke-Wilson. Music was initially sequenced with Cakewalk. The sounds were edited and finalized using a custom NES cart- a gutted copy of what was formerly a test version of Golf Power, replaced with "Tommy T's Play Me Sound Editor"-
http://www.youtube.com/watch?v=XoD0ERZntFI
(note that the video is about the discovery of the item, which is why the speaker didn't know much about it at the time)
Detailed explanation-
Further anecdotes on the NES sound editor-TT: I had never done music and sound fx for an NES game before...
The sound driver for the NES was horrid!! Before the G.E.M.S. tool for the Sega Genesis you pretty much had to be a computer programmer in order to do sound for video games, especially the NES. [Dr. Stephen Clarke-Wilson] who was not only a talented musician and programmer in his own right created a small conversion program in Cakewalk which enabled midi files (.mid) to be converted to ascii (.asc) files. With .asc files I could get the NES to sound like something as long as I stayed within the proper note ranges. As far as sound fx went I could tweak a bunch of numbers and make some interesting albeit annoying sounds...
I created the simplest midi files I could in the time I had and ran them through the midi to ascii converter...
There were all sorts of tweaking tricks one could do to get it to sound “not horrible”. Composer/programmers could write their own tools and incorporate things like vibrato and pitch bend. I mean lets face it the most memorable and popular songs in the entire history of the video game industry were created and performed on the NES! Of course I’m talking about the music from Mario Bros. Well, when it came to the NES I was no Kojii Kondo!! Especially considering I had a beat up piece of crap audio driver and a day to learn it and compose for it.
- - - - - - -TT: I saw the pics of the carts in a forum. Yeah... those were my carts from almost 20 years ago. And the "Tommy T." label is my handwriting. The "Golf Power" was an old cartridge casing that I erased over... I was a game tester for Golf Power so when the game was completed I used the cart to put an NES sound engine on it for when I was working on Color A Dinosaur!
I realize some of the links don't work right on this forum. That's ok.
Grab samples out of your Windows directory, use Audacity to convert them to 33500 Hz mono, and run them through this converter.
Nice thread
Hi everyone! I thought I could share some vintage chiptune code with you.
This is the source code for the NES Game Over song of Asterix. All was written with macros. Each macro corresponds to an hexadecimal value or chunk of assembly code, this way it was much easier to program since you could write real words that had some meaning, instead of numbers and raw assembly code.
-------------------------
If there is enough interest I could write some comments and details about what does all that code mean.
Cheers,
Alberto
Hi everyone! I thought I could share some vintage chiptune code with you.
This is the source code for the NES Game Over song of Asterix. All was written with macros. Each macro corresponds to an hexadecimal value or chunk of assembly code, this way it was much easier to program since you could write real words that had some meaning, instead of numbers and raw assembly code.
-------------------------
Code: Select all
GAMEOVER INCHA GOMEL
INCHB GOCHRD
INCHC GOBASS
RTS
GOMEL DW GOMEL1
DW 0,GOMEL
GOCHRD DW GOCHRD1
DW 0,GOCHRD
GOBASS DW GOBASS1
DW 0,GOBASS
GOBASS1 DB L10,VIB,0,4,5,TRA,-2
PERC 10,GOPERC
DB L40
DB a1,__
DB __,g1
DB e1,__
DB __,e1
DB a1,__
DB __,g1
DB e1,__
DB __,g1
DB d1,__
DB __,d2
DB a1,__
DB __,a1
DB d1,__
DB __,d2
DB e1,__
DB gs1,B1
DB XM
GOCHRD1 DB L10,SENV,$D1,3,$64,W1,EF1
DO2
DB P9,a2,P3,c3,e3,a3,c4,a3,e3,c3
LOP
DO2
DB P9,e2,P3,g2,b2,e3,g3,e3,b2,g2
LOP
DO2
DB P9,a2,P3,c3,e3,a3,c4,a3,e3,c3
LOP
DO2
DB P9,e2,P3,g2,b2,e3,g3,e3,b2,g2
LOP
DO2
DB P9,d2,P3,f2,a2,d3,f3,d3,a2,f2
LOP
DO2
DB P9,a2,P3,c3,e3,a3,c4,a3,e3,c3
LOP
DO2
DB P9,d2,P3,f2,a2,d3,f3,d3,a2,f2
LOP
DO2
DB P9,EF5,e2,P3,gs2,b2,e3,gs3,e3,b2,gs2
LOP
DB XM
GOMEL1 DB L10,SENV,$39,5,$90,VIB,20,1,4,W1,REL,5,$02
DB e3,__,a3,__,c4,__,__,__
DB __,NN,a3,b3,c4,__,d4,__
DB b3,__,__,g3,e3,__,__,__
DB __,__,__,__,__,f3,e3,d3
DB e3,__,a3,__,c4,__,__,__
DB __,NN,a3,b3,c4,__,d4,__
DB b3,__,__,a3,g3,a3,b3,__
DB __,__,e3,__,__,__,f3,g3
DB a3,__,__,g3,f3,__,e3,f3
DB __,__,e3,__,d3,__,c3,__
DB d3,__,e3,__,e3,__,d3,e3
DB __,__,__,__,__,nn,f3,g3
DB a3,__,__,g3,f3,__,e3,f3
DB __,__,e3,__,c4,__,b3,__
DB e3,__,e3,__,d4,__,c4,__
DB c4,__,__,__,B3,__,__,__
DB XM
GOPERC DB 1,0,6,5,2,0,6,5
DB 1,0,6,5,2,5,1,5
DB END
Cheers,
Alberto
I do the exact same in my unfinished project, I use .db statements but with definitions instead of using plain hex numbers. In the end it looks like that :
Of course if you don't understand french you won't understand it, but the notes are called Do Re Mi Fa Sol La Si instead of C D E F G A B (it's just very much easier to me to make them in my language).
So basically each .db satatement is either a command followed (or added) with an argument, or a note (or silence) added with a duration. This is just how my format works though.
PS : A second NESdev comeback from a former NES musician, that's great, welcome !
Code: Select all
SucessTri
.ifndef PAL
.db SetTempo, $88
.else .db SetTempo, $a3
.endif .db SetAttack+6
.db Duty
.db SetVolume+2
.db SetSustain
.db SetRelease
.db SetOctave+4
.db DblCr+Mi, DblCr+Mi, DblCr+Sil, DblCr+Mi, DblCr+Sil
.db DblCr+Solb, DblCr+Sil, DblCr+Lab, Bl+La
.db Stop
So basically each .db satatement is either a command followed (or added) with an argument, or a note (or silence) added with a duration. This is just how my format works though.
PS : A second NESdev comeback from a former NES musician, that's great, welcome !
Useless, lumbering half-wits don't scare us.
- neilbaldwin
- Posts: 481
- Joined: Tue Apr 28, 2009 4:12 am
- Contact:
While we're throwing our hats in the ring, here's a 'sequence' from Nijuu. The principles were very similar to my old NES drivers back in the day;
Code: Select all
S14 I 8
SI DCM_MODE,NOTE_LOOP
SI DCM_SPEED,1
SI DCM_START,0
V 10
D 16
db C5,_,_,_,Ds5,_,_,_,C5,_,_,_,G5,_,_,_
db C5,_,_,_,Ds5,_,_,_,C5,_,_,_,As5,_,_,_
db C5,_,_,_,Ds5,_,_,_,C5,_,_,_,G5,_,_,_
db C5,_,_,_,Ds5,_,_,_,C5,_,_,_,F5,_,_,_
ES