A little question for the chiptune-inclined (rushjet1, Memblers, et al):
For years there has been a burgeoning interest in original 8-bit chiptune music, with sites like 2a03.org and 2a03.free.fr (Chiptune Up!) acting as hubs for artists to share their work. But where is all the original SPC700 music? Why isn't there a SPC scene the way there is an NSF scene?
Obviously the 2A03 has a more distinctive, unique sound to it than the SPC700, but for the life of me I can't figure out why with hardware that has been hacked and documented almost as much as the NES', there aren't more people interested in producing original music in the same vein as Super Mario World, Mega Man 7, or any of the epic Squaresoft RPGs from that era. And I guess the same could be said for Genesis music as well. Am I missing something, or is no one interested in creating 16-bit chiptunes?
Thanks in advance to anyone who responds.
It's pretty easy to define why there's no "SPC700 scene":
1) The SPC700 is a separate CPU and a lot of musicians really don't have the time/interest to learn its assembly (plus have to be semi-familiar with 65816 to upload their SPC700 code),
2) Documentation on the SPC700, historically, has been fairly lacking -- emulators still haven't gotten the audio completely correct, for example,
3) Lack of development tools. As I understand it, there are a limited number of SPC700 assemblers, and the only way to test your music is to assemble it into a .SMC or equivalent and try on an emulator (or SNES/SFC via copier (e.g. SWC DX)),
4) Lack of musician-friendly tools (read: sequencers, samplers, etc.). For example, doing NES music was basically non-existent until MCK/MML came out, and still wasn't that simple. Once FamiTracker came out we started to see an increase in home-made NSFs.
I realise I'm going to sound like a pompous jerk saying this, but I refuse to see it any other way -- those really are the reasons.
koitsu wrote:
3) Lack of development tools. As I understand it, there are a limited number of SPC700 assemblers, and the only way to test your music is to assemble it into a .SMC or equivalent and try on an emulator (or SNES/SFC via copier (e.g. SWC DX)),
Since this is a decent place to ask, are there any viable SPC assemblers outside of spcas and the one included with WLA? I don't care for WLA's quirks and spcas is very limited. If spcas was on par with xkas feature set it would be great for larger projects. I've used spcas so far and it works, but it was for tiny SPC drivers where the lack of features isn't a big deal.
Quote:
and the only way to test your music is to assemble it into a .SMC or equivalent and try on an emulator (or SNES/SFC via copier (e.g. SWC DX)),
Assembling into .SPC and playing it in winamp is a lot easier IMO.
smkd wrote:
are there any viable SPC assemblers outside of spcas and the one included with WLA? I don't care for WLA's quirks and spcas is very limited. If spcas was on par with xkas feature set it would be great for larger projects. I've used spcas so far and it works, but it was for tiny SPC drivers where the lack of features isn't a big deal.
NovaYoshi mentioned an assembler for CHIP-8 (I think) that he wrote as a macro pack for ca65. I imagine that something similar might be possible for SPC700.
Once you have a wavetable synthesizer, you just don't care anymore. SNES, N64, GBA, MOD FILES, it's all the same. Unless you're making music for a homebrew SNES game, you don't need to make SPC700 stuff.
smkd: Another option is to use old Table Assembler. One of the SPC docs I think came with an spc700.tab file which works with it. That assembler works with anything. it doesn't have .incbin, and you also have to type any 16-bit address like !address, but it seemed good enough other than that, when I used it. something like what tepples said is probably better, as it's not all that different from the 6502. though there would be a pretty decent amount of setup work, heh.
Dwedit wrote:
Once you have a wavetable synthesizer, you just don't care anymore. SNES, N64, GBA, MOD FILES, it's all the same. Unless you're making music for a homebrew SNES game, you don't need to make SPC700 stuff.
Yeah pretty much, you have to really know the SPC700 pretty well and be able to write code for it to take advantage of any of the unique features.. otherwise it is just an 8 channel MOD file but with compressed samples, limited sample memory (which is compounded by a really low resolution on setting sample loop points). It's challenging enough to make sample loop points that sound decent, but even worse when it has to be looped in blocks of 32 samples or whatever it ends up being (I'm not sure, anyone know off-hand?). If I was going to make my own samples, I would probably write a separate program just to weed out all the unusable loop points.
I tried converting some of my .XMs into SPC, some of them were small enough to fit, but many of them don't. I haven't released any because there aren't many that are all that good, it's all really old stuff and I can just listen to the better-sounding (and familiar to my ears) XM anytime.
I seem to remember it's 16 samples (one BRR block). But the trick is to resample all your waves such that the period is a multiple of 16 samples. For example, resample them such that middle C plays at 4186, 8372, 16744, or 33488 Hz, and all your loop lengths will be a multiple of 16, 32, 64, or 128 samples respectively.
I know of
SNESMod by mukunda, which converts IT files into SPC files and usable music for your game. It was used in Skipp and Friends.
By the way, have you heard of
SNESMusic.org? They do mainly game SPC sets.
And here's a little SNES music gift from me:
Download
This is actually an IT file. This should successfully convert to a real SPC file when run through SNESMod. I'm using the wrong OS to be able to properly see if it works... I'm using a Mac (it is not an Intel Mac).
I am one of the few that would be glad to make SNES music for a future SNES game... of course I don't know what that future SNES game is, so I'm making some music that might be able to come out one day and get used.
Does a Snes tracker need to be just sampled instruments, or can somebody invent a synthesizer that can easily be emulated on the spc700 and use THAT to make music with?
The VGM to SPC conversion a pretty good idea and a step in the right direction, but I don't quite find SMS music the best fit for a Super Nintendo game. Something I always wanted to do was to use the echo delay as a phaser and make distorted sounds with that. I doubt anyone could make a Donkey Kong Country soundtrack just by sampling a bunch of random stuff. They made creative use of hardware features and gave the APU a little software work to do.
KungFuFurby wrote:
By the way, have you heard of
SNESMusic.org? They do mainly game SPC sets.
And here's a little SNES music gift from me:
Download
I never knew about SNESmusic.org. They seem to have a larger selection than Zophar's Domain, which is where I usually download SPCs. Thanks!
Oh, and the music---very Chrono Trigger-like!
psycopathicteen wrote:
Does a Snes tracker need to be just sampled instruments, or can somebody invent a synthesizer that can easily be emulated on the spc700 and use THAT to make music with?
If you've heard of SIDMania, then they've done it, although by streaming the musical data. However, I personally prefer to use samples instead of a syntheizer.
I have a collection of pulse waves sampled at 16 different witdths, 32 length each (for a total of 512) in an IT file that should convert over fine, if you want some small samples to try to get that synth-sounding feel.
What does the pitch modulation feature on the spc700 do? Is it similar to FM synth on the Sega Genesis, or is it an LFO modulation? It sounds like you can make some cool synth sounds with that feature.
The Genesis' FM synth is much more than just pitch modulation. Each channel has 4 operators, which in turn can be configured individually and as a group with lots of different settings.
This is more like the PC-Engine's pitch modulation feature; channel N-1 modulates the pitch of channel N. So it shouldn't necessarily need to be an LFO, but simply an O. I guess you'll just have to experiment with it to see if it's useful for the style of music you'd like to create.
Dang it! I want to play with that feature!
Whoever said a Snes tracker can't be done? Have a program where you can take a WAV file or draw one, lets you manually squash it down as much as you like so everything can fit in 32k, and tells you how much memory you have left. Allow pitch modulation and echo delay as instrument parameters on every channel track and there you go!
Actually, 64k of memory, not 32k, unless you want to allowcate some memory for sound effects.
One guideline: Try to fit your .xm file in 96 KiB (assuming 8-bit waves) including sound effects. If you can do that, it should fit after all the samples are converted to BRR and a player is added.
But you can't do FM and echo delay on a MOD or MX or IT file. That's why it should have it's own tracker. I really don't understand why nobody made tracker for the Snes yet.
Doesn't modlite (the IT converter) support echo and such through the IT effect commands? You just can't hear them until you play the tune on a SNES (or in an emulator).
But noone's stopping you from writing a tracker if you want one.
I know it may come as a shock to a lot of people but ASM is all I know, and even for that I have to rely on other people's tools.
The Command Prompt never works on my computer either.
Yeah it would be cool if someone made a tracker for it. But that also entails fully emulating the SPC, for a long time (I don't know about now) it seemed like there was always a small percentage of games that just didn't sound right. It seems like kind of a case where if a musician has a real SNES and can hear their stuff there, but then 99.9% of anyone who has an SPC file is going to use whatever emulator they want (and never know if it sounds wrong).
Anyone know if SNES sound emulators are any better now? Maybe bsnes?
Actually that's a big problem with .XM files, as well. A Castlevania cover I did ended up on youtube, but it was played by something that got 90% of the pitches wrong (out of tune and awful) because I was using the 3xx effect. A while after I whined about it someone else actually uploaded a proper recording of it, which was cool to see.
So you can release any tracked file, but when it comes to the more advanced or rarely-used effects, the only way to know everyone will hear it the way it's supposed to play is to release an MP3, unfortunately.
SPC-700 is a more strictly-defined system though, if everything is documented and info is verified, ideally it wouldn't be a problem.
psycopathicteen wrote:
The Command Prompt never works on my computer either.
Sounds weird, what OS? I'd have a hard time managing without it. Have you tried creating a shortcut to it (cmd.exe), and editing the properties?
BTW for programming I've used ASM exclusively for I guess 12 years, and only recently started using C. I got by one way or another, heheh.
I have WindowXP. The command prompt stuff and all this confusing .bat and .bin file stuff is preventing me from both programming the spc700, and using the .IT to .SPC conversion tool. I wish people would stop skimping on user-freindliness when it comes to development tools. Just because we're into tech doesn't mean we can easily figure everything out.
There's a popular tool called
GNU Make that takes a list of files A that can be translated from other files B, with a list of the command lines needed to translate each set of files B to a file A. For example, it could have a rule to translate each .s (assembly language source code) to a .o (object file) and another rule to translate each .xm to an .spc. Then when you change multiple .xm files in your tracker, GNU Make notices that you changed them and automatically calls the command-line program to translate each of them to .spc. But GNU Make works only with command-line programs. It can't script clicks on GUI buttons.
There's a difference between "easy to learn" and "easy to use". But once you learn Make, you can just set it for your game project and forget it.
Quote:
The Command Prompt never works on my computer either.
What is it about it that doesn't work? I use cmd frequently in Windows 2000, Vista and on multiple XP machines.
Some things just make more sense to have as command line utilities, because you want to automate their use through scripts (e.g. batch files or makefiles), rather than having to press a bunch of buttons and dialogs.
Warning, an error occured and the command prompt is now closing!
Closing? Are you running the bat files by double-clicking them? I always start cmd, then cd to the directory containing my bat file, and run the bat file from the prompt. That way the command line window remains open and I can read all the output from the commands I run.
mic_ wrote:
Some things just make more sense to have as command line utilities, because you want to automate their use through scripts (e.g. batch files or makefiles), rather than having to press a bunch of buttons and dialogs.
How is memorizing and typing a ton of random puncuation that you have to do perfectly or else the computer will crash, easier than pressing a single button?
I've never seen any random punctuation involved. And I've never had my computer crash from doing a cd at the prompt.
Long paths are no problem either since you've got tab completion at the prompt in XP and later. In XP you can even drag&drop folder paths to the prompt IIRC. In Vista I think they removed that feature for some reason, but you can still right-click the folder in the explorer address field and select "copy address as text" and the paste it at the prompt.
Is there any Command Prompt for dummies? Because everytime somebody tries to explain how to the command prompt, they either tell me stuff I either already know, or stuff that requires knowledge that don't have. After so many times of failing, I've gave up.
The only way for me to learn to use the command prompt is if somebody is sitting right next to me does it.
There are probably lots of sites that explain Windows command line arguments. Google for "windows command line".
But for building your own programs you really only need to know one command, and that's cd (to go to the right directory).
If you open up a new prompt and it's initial location is at C:\Documents and Settings\Username and you wanted to go to C:\NES\Projects you'd type:
cd \nes\projects
(or cd \n[press tab until you get to nes]\p[press tab until you get to projects])
or if you wanted to go to E:\SNES you'd type
cd /d e:\snes
All the other stuff is application-specific, like what kind of options it accepts. Usually you can get a list of options for an application by running it without any arguments or with -h, /h or /?.
I just discovered why it never worked! I've been using the wrong slash key the whole time!
psycopathicteen wrote:
Is there any Command Prompt for dummies?
Windows Command Prompt is a clone of MS-DOS Command Prompt. The
very first Dummies book was
DOS for Dummies in 1991.
Quote:
I've been using the wrong slash key the whole time!
The DOS and Windows file system APIs accept both forward slash (/) and backslash (\) as folder separators, and a lot of programs will take both because they use the UNIX convention of starting options with a hyphen (-) (e.g. ls -l for list files in
long format). But commands built into the command prompt (e.g.
cd) and programs written by Microsoft (e.g. the Visual C++ compiler) assume / is only for options. This dates back to when MS-DOS 2.0 introduced folders. It used \ as the folder separator because / was already taken for command-line options, such as
dir /s to list files in all
subdirectories or
dir /b to list in
bare format with only filenames and not size or modification date. MS-DOS 2.0 tried to maintain compatibility with MS-DOS 1.0, which originally was a clone of Digital Research's CP/M, which also used / for command-line options.
cd works just fine with forward slashes in paths starting with XP (maybe even earlier).
mic_ wrote:
cd \nes\projects
(or cd \n[press tab until you get to nes]\p[press tab until you get to projects])
Woah, that's news to me. I usually don't even put a space between cd\directory which stops that from working.
Another thing I'd suggest too, if you need to get the command prompt whenever you work on your project, create a shortcut to cmd and for the "start in" field put the directory there. My desktop has several cmd shortcuts like that to save me time for my active projects.
You can also put a batch file in the project's directory that opens up a new prompt with everything set everything up properly when you double-click it. This one I use for building 32X/Saturn stuff.. It opens up a new prompt located in the batch file's directory with the SH2 toolchain temporarily added to the path.
Set PATH=C:\PROGRA~1\KPITCU~1\GNUSHV~1\sh-elf\bin;C:\PROGRA~1\KPITCU~1\GNUSHV~1\OtherU~1;%PATH%
Set MAKE_MODE=unix
Cmd "cd\" /k
Hi guys. I've been on vacation so I missed this thread but I wanted to say that I'm very interested in SPC music.
It's true it's "just" wavetable music so it's less unique, but the SPC 700 has unique features when it comes to ADSR enveloppes, noise, echo and pitch modulation. BTW the SPU inside the Playstation has extremely similar features, just 24 channels instead of just 8.
Pitch modulation takes the output of a channel, envelope-adjusted but not volume adjusted, and use it to modulate next channel's pitch. Squresoft games used it a lot in their sound effects, but I don't remember any other games using it. It sounds extremely cool IMO, just hear the how the most powerful attacks of Chrono Trigger sounds and you'll see what I mean.
Another "feature" is to have unstable-looping samples to create white-noise like samples. Again, Squaresoft used it a lot for their sound effects, Capcom too, but most companies never used this awesome feature.
Like someone here said, samples should be resampled if they loop so it's an integer # of BRR blocks which is looped (a BRR block is 16 samples). I think the Playstation has something very similar, but blocks of 28 samples instead, which at first sound "even worse". Games still managed to sound good on this system - resampling first is just needed. I wrote a java program called BRRTools that is able to encode .wav samples into SNES BRR, test their stability and resample them in a few different ways so this should be no problem anymore. Go to
http://www.romhacking.net to find it.
The problem tough is likely the assembler. I have written some playback code for the SPC700 once with wla-dx, and I lost the source altough I still have one compiled .spc of it. I remember the SPC700 version of wla-dx really had a lot of bugs, sometimes it just didn't assemble what you told it to, sometimes you had to add parenthesis arround your expressions for it to work (like something like MOV A, Table+X didn't work but something like MOV A, (Table)+X worked), and this sucks. This was definitely troublesome.
Actually it's MOV A,[Table+x] for indirect addressing and MOV A,Table+x for absolute addressing
The one thing I had problems with was the BBC/BBS instruction, until someone here pointed out that for some strange reason wla-spc700 expects a space between the variable and the dot. I don't recall any other big problems. If I was unsure about some syntax I looked it up in the opcode listing on the wla-dx website.