Hey guys, sorry if this has been covered before. New here… just did a quick search and came up empty handed!
I’ve been curious as to what exactly the Virtual Boy had to offer in terms of audio. There seems to be little information on this, and since I’m not a programmer and I’m more curious from a sound synthesis aspect, a dev manual might be a bit heady for me.
It’s easy to break up some of the classic systems as follows-
NES – 5 channels
pulse / pulse / triangle / noise / samples
Game Boy – 4 channels
pulse / pulse / wavetable synth or samples / noise
Sega Master System – 4 channels
pulse / pulse / pulse / noise
Of course the limitations get a lot more specific, but I’ve had trouble finding anything more specific than this text file which states that the virtual boy has-
“4 voice 32×6 “chip” samples, 1 voice Sweep/Modulation. 1 noise source. 13-bit samples, 41.7KHz?”
With how he describes some other systems I may take the accuracy with a grain of salt, but given what I’ve heard this sounds like the right basic info. But that raises some more questions.
Are these “chip samples” something like preset voices that aren’t ‘customizable’ (perhaps outside of some basic things like dynamics) since they’re not actually synthesized? What does 32×6 mean? What types of sounds were there? Lots of varying pulse-width duty cycles probably, probably some sawtooth waves… maybe a triangle… anything fancier?
Are there 7 channels of sound, 4, or somewhere in-between? I’m wondering if the noise and samples had their own dedicated channels or if they ‘shared space’ with the first 4-5.
Any insight, especially in layman’s terms, would be greatly appreciated! Thanks! 🙂
I’m not very knowledgeable in music or synth terminology, but I’ve added an overview of the VB sound system to the (apparently highly under-publicized) Dev Wiki. If you have more questions or comments after reading that, come on back! I’m very interested in getting input from someone versed in VG music, synthesizers, etc. 😉
To answer your questions more directly, the 32×6 refers to a set of 32 6-bit PCM samples, of which sets there are five in the VB’s RAM, which can be used to generate the sawtooth, triangle, rectangle, etc. wave shapes you mentioned (as well as sine or any other wacky one you can come up with). Hope that helps!
(Maybe this post will help point other wayfarers to our hidden info oasis… ;-))
There are 5 waveforms, which are made up of 32 samples (6-bits). That means that the waveform output from the audio channel will be the selected waveform, repeated over and over at the selected frequency. The waveform can be completely arbitrary (triangle, sine, square, saw, pulse, random, etc), with values from 0 to 63 (or -32 to 31… it really doesn’t matter since it’s AC coupled).
Then there are 6 channels, which basically get added together to create the sound that goes to the speaker. Each channel gets to select which waveform to use, the volume, panning, and frequency… plus some special effects like interval and envelope.
The first 4 channels are plain, and just include those options. Channel 5 includes all of the features of those, plus two extra (Sweep and Modulation). This allows you to sweep through the frequency, or modulate the frequency with a sequence of 32 offsets (8-bit). That changes the frequency of the channel output at the specified interval by the value in the modulation RAM (+/- 127 values)
Channel 6 is the noise channel, which has several “random” noise sequences to select from. It’s pretty similar to channel 1-4 as far as options go, except rather than outputting a selected 32 sample waveform over and over, it outputs a noise waveform. The length of repetition on the noise waveform varies, depending which noise “tap” is selected.
I hope this info helps.
@Runnerpack: I just looked at the wiki you linked to… why do you claim: Channel 6 uses a “Mersenne Twister” PRNG to make noise? I assume you did it, since you basically run the wiki ;). I have to disagree, since the Wikipedia link you have says the Mersenne Twister was developed in 1997, and the VB was released in 1995 :P. There’s really nothing special about the PRNG… it’s just an LFSR with taps at locations determined by the configuration bits.
@Runnerpack: I just looked at the wiki you linked to… why do you claim: Channel 6 uses a “Mersenne Twister” PRNG to make noise?
I don’t know… I guess I just connected the “M-type” from the IntSys documentation and the “feedback shift-register” (although it’s “generalized”, not “linear”) in the MT wikipedia article… Thanks for catching that; it’s been fixed.
Ah… yeah, I assumed the M-type was referring to the maximal length sequence (many times referred to as m-sequence)… though only the first tap value (0) is actually a maximal length sequence. Options 1-7 are shorter (and IIRC option 7 is VERY short).
Wow, that was quick and informative, thanks guys!
The wikipedia article simply states “16-bit stereo”, along with some other sites, which of course doesn’t tell you anything. The audio overview in your wiki is exactly what I was hoping to see!
I’m not sure exactly why, I guess just as a fan of chiptune music I’ve become increasingly familiar with the audio of various systems. However, the Virtual Boy remained like a big question mark, and I find it interesting because it feels like one of the last consoles to have come out with that type of sound. So, just curious here really… 🙂
I think if it was a more popular system, people making music for the NES and Game Boy today would probably have an interest in the Virtual Boy as well. People are interested in utilizing the sounds of lots of old systems, but unfortunately the Virtual Boy is probably a bit too obscure. The best I could place it, by the little I’ve heard by ear, was that it sounded like a game boy and hu-card turbografx game thrown in a blender. 😛
It’s interesting to hear the resolution of the wave-table synthesis. It sounds like a halfway between the Game Boy’s wavetable, which is 32 sample 4-bit PCM, and the Famicom’s Floppy Disk System’s audio channel, which is 64×6-bit…
I’m also under the impression that pitch bends would’ve been possible in the first 4 channels, only with software and not hardware sweeps. Not certain, but just a hunch from the little I know about how hardware sweeps weren’t necessary on other systems. Anyways, just some random ramblings… 😀