Offline
San Francisco

I really want to know more about this chip especially about the sound engine. if you read about the chip on wikipedia it will tell you that it is a 4 voice machine with 3 square waves and 1 noise channel. it sounds pretty basic but if you actually listen to audio made by the machine it has a lot of quirks and a unique sound. in particular the noise channel most obviously sounds really weird. I have been trying to figure out how the noise generation is created by the chip.
it almost sounds like the noise is made with a filter thrown over it with a high resonance setting. i doubt very much that its wave is true noise or even pseudo noise.
http://en.wikipedia.org/wiki/MOS_Technology_VIC


if you dont know what the hell i am talking about take a listen to the sample below:
http://www.armagon.org/mods/warlord/201 … IC-20).mp3

the song is made by warlord. he has one of the few full vic-20 releases that i have found available called VICious cycle.

http://www.armagon.org/pages/index.php?page=chiptunes

Offline
Russia, Moscow

It is really basic, one of the most basic sound chips if not the most basic. Much simpler than AY-3-8910 and even SN76489.

The chip has four channels. Three of them are 50% square, fourth is white noise. The tone channels has very low freq. resolution, just 7 bits. However, they have different base clocks, so one channel is for low, other for middle, and last for high frequencies. Noise pitch also has 7 bits of resolution. Eigth bit enables/disables channel. There is 4-bit master volume, it affects all the channels at once, and it is not possible to have different volumes for the channels.

Of course it is still possible to get pretty good music despite the so limited capabilities through clever programming and music composition.

Offline
.FILTHadelphia

I don't know anything about it but I'd love to experiment with it. Sounds pretty gritty and raw.

Offline
Russia, Moscow

And regarding noise. Of course it is a LFSR, like usual. Haven't found the exact configuration, in the VICE they use a table with the whole sequence, which is 8192 bits long.

Offline

there are stacks of vic-20 demos here for download:

http://pouet.net/prodlist.php?platform[]=VIC%2020

(can't link it with the usual url link)  The chip isn't quite as basic as it appears, you can get extra waveforms out of the square channels with some trickery. (discovered by viznut iirc, have a listen to some of the PWP demos)   There are a few trackers around (like Aleksi Eeben's Fisichella and Vic-Tracker) or if you want to go source dirty I put my driver in with Orbtraxx1.

Last edited by 4mat (Mar 31, 2012 12:47 am)

Offline
Russia, Moscow

What kind of trickery?

From what I can see, the only thing that is possible is software channels modulation using the enable/disable bits, but this is not a special feature of the chip, as it would be all done by CPU; resulting sound would be similar to the 'phasing' 1-bit engines.

Offline

it's been a while since I've done any vic-20 stuff, but I think it's combinations of the channel pitch at $ff , $fe and then set to 'off' (<$80) give you about 13 different wave combinations.

you can hear an example in here, listen to the lead melody with it's bell tones:

Offline
San Francisco

ooo thanx for the info guys. vic-20 has been neglected by the chipmusic community for so long that its been driving me crazy.

Maybe the LFSR (Linear feedback shift register) has fewer states like that metallic noise channel sound in nintendo's devices did? or was that timber generated by going through the states faster? i dont know. is it a lower resolution or something? i am not totally in on pseudo random noise channels sound generation process.

about this square wave trickery.
so for us less tech inclined peeps let me clarify.
the square wave forms are added an extramodulation by inserting a quick off point at different intervals in the wave to create a different timber?

Offline

viznut wrote a doc about it and it's in with one of this demos I think.  but yeah, that's about right.  in my driver I just had a bit of code that would switch the note to $fe for a few cycles before playing the right one.  so I got the new waveforms but it was more of a "new waveforms on/off" than being able to choose what I got.  (see this )   each waveform requires a particular set of switching to get it accurate.

I don't think you'd be able to do it in an existing tracker though as each note would be potentially playing for a frame, which is probably too long.  (perhaps if it's done in an arpeggio table it might work)  Anyway coding music drivers in 6502 isn't particularly tough work so it's worth experimenting.

can't find the info on either of viznut's blogs but it is in one of the demo archives.

Offline

I might finish this one day but coding GUI is a bore.

Offline

aha, found the new waveforms doc

Last edited by 4mat (Mar 31, 2012 2:19 pm)

Offline
Russia, Moscow

Very interesting info. That's very strange that the chip acts like this, because it seems to be a hardware overcomplication without a reason. Typical square implementation would not have such quirks. So, it seems the VIC chip is a good candidate to decapping.

LFSR has less states than 'long' mode of the NES, but more than 'short'. I.e. NES long sequence has 32767 bits, short has 93 bits (so it is almost tone), and VIC has 8191 bits.

Offline
Milwaukee, WI
4mat wrote:

I might finish this one day but coding GUI is a bore.

INTEREST PIQUED!  I have a VIC, sitting around doing nothing.

Offline
Montreal
Shiru wrote:

Very interesting info. That's very strange that the chip acts like this, because it seems to be a hardware overcomplication without a reason. Typical square implementation would not have such quirks. So, it seems the VIC chip is a good candidate to decapping.

LFSR has less states than 'long' mode of the NES, but more than 'short'. I.e. NES long sequence has 32767 bits, short has 93 bits (so it is almost tone), and VIC has 8191 bits.

The table in vice is wrong, the pattern is 65535 bits long, I included the right pattern in chipsounds