Hacker News new | comments | show | ask | jobs | submit login
Show HN: 8-bit Sounds – Studio2600 for the VCS (Atari 2600) (masswerk.at)
78 points by masswerk 7 months ago | hide | past | web | favorite | 14 comments

For a bit of technical background see the project blog (it's about a game): http://www.masswerk.at/rc2018/04/

Wow, that's really neat.

I knew the sounds to be wrung from the VCS were quite varied, but they really did hit a pretty good set from pureish tones to heavy distorted noise.

This is excellent - thank you for sharing! Is there any (easy) way to make it play through each variation automatically? Maybe a "demo mode" you could trigger? Ideally, I'd like to sample each sound and create a instrument in Ableton that allows me to select tone and frequency (and then pitch shift). Not sure how I'll do it yet, but getting high quality samples would seem to be the first step! (Obviously I can just do it manually, but I thought it was worth asking!)

This is really just a tiny test application made to find sounds for a game, and about similar to what you describe, but to be run directly on the Atari 2600 . However, if you want to sample the sounds, best get a native emulator like "Stella" [1] and run the ROM-file in this one (see the downloads section).

The best way to get a full walk trough of the tones and pitches would be to write a tiny Atari ROM file for this. (It's really just about setting three registers.)

[1] Stella documentation and downloads (Win, Max, Linux, and sources) https://stella-emu.github.io/

That sounds like a good plan, thank you. I'll run it in Stella and grab the audio output from that. Not quite sure I'm up to the coding of the ROM TBH, so I'll do it manually :)

Go to row E, pick a spot in the left fifth of the row, lean on the spacebar while using the left and right arrow to slide the dot left and right a few spots.


The description of some of the tones is a bit cryptic.

I'd be interested in a deeper explanation of div 15 -> 4 bit poly and 5 bit poly -> 4 bit poly

I'm making a fantasy console, so I ended up spending quite a bit of time designing my own 8 bytes to describe a full range of tone/freq/volume/envelope/bend. Packing expressiveness into a limited number of bits is quite a fun game.

The "TIA-1A Hardware Manual" [1] states: "This circuit contains a nine bit shift counter which may be controlled by the output code from a four bit audio control register (AUDC), and is clocked by the frequency select circuit. The control register can be loaded by the micro- processor at any time, and selects different shift counter feedback taps and count lengths to produce a variety of noise and tone qualities."

[1] https://www.atariarchives.org/dev/tia/

There is an "about 30KHz" base frequency, so "div 15" suggests a 2KHz waveform; "4 bit poly" and "5 bit poly" are probably two of the "feedback taps", "and" a logical multiplication of these signals. But this is just my interpretation.

[Edit] For technical details see: https://alienbill.com/2600/cookbook/music/stolberg.txt

Row #3, column #11 is the sound of Lex Luthor's flying propeller backpack in Superman.

Fun track based on the 2600 sound set: https://www.youtube.com/watch?v=2rKkpHLl1Ew

Can this chip only use the harmonic series as the tuning, or is it only specific to this rom's interface?

All frequencies are derived from an "about 30KHz"* base frequencies, which is divided the number of times given by the value in the 5-bit frequency register. (30KHz, 15KHz, ..., 30KHz/32) This "scale" is defined by hardware in the TIA Television Interface Chip (an Atari custom chip designed by Jay Miner), which is where all the "magic" of the VCS happens.

Edit: *) There is a 31,440 Hz clock frequency used to produce NTSC signals and 31,200 Hz for PAL consoles. This is probably also what is described as "about 30 KHz" in the manual.

This is extremely fun to play around with! My coworkers are looking at me funny, but it's worth it!

this doesn't work in Chromium 66.0.3359.117.

I imagine it must be something wrong with the underlying emulator, but there's no audio output. visuals work, but not much else, which is sad for this bit of interesting code!

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact