Jump to content

azure's Blog

  • entries
  • comments
  • views

Atari 2600 Music Explorer



I've been working on a Javascript web app for exploring the Atari 2600 music palette. My goal is to provide musicians a way to visualize and identify in-tune notes and chords producible by the TIA chip. I felt frustrated looking at static diagrams with fixed tuning. I imagined better note relationships could be found if it was possible to tune the piano scale and make various adjustments.


My app overlays Atari notes onto piano notes by matching up their frequencies. The point is to tune the notes up and down for discovering relative tuning relationships. It also has a function for subdividing the piano into microtonal notes. If you have a digital piano that allows for adjusting the tuning, then you could actually play notes on the piano that are similar to the TIA note frequencies.


My app is in very early development so half the functionality isn't working. It's a 3rd version prototype, so the code is still rough. The UI will change as I figure out what the app is going to be. I'm building it in Javascript, because it's easy to build user interfaces in Javascript, and it's highly cross compatible. I'm hosting it on Github for reliable hosting that won't disappear.


I'm blogging about it to let people know what I'm working on and haven't fallen off the face of the Earth. It'd be nice to gather some friendly suggestions. It's tested in Chrome and untested in other browsers. It also requires a modern browser version. FYI: If you press UP/DOWN arrow keys in the A4 frequency field, the updating looks neat.




Immediate TODO list:

  • Add a circle of 5ths diagram and some geometry diagrams (updating)
  • Finish the remaining options shown in the UI
  • Fix the major chord detection routine
  • Add detection for remaining chords
  • Thoroughly validate my frequency and cent calculations are correct and use best known values
  • Add a sound generator to play notes as a virtual piano
  • Add an option to flip text vertically for printing the piano layout
  • Think of more useful stuff to throw in
  • Speed up the rendering (it's re-building everything on every change)


I got into this because I discovered a new interest in music theory and the piano after thinking about writing some Atari 2600 tunes. I had zero prior music experience, so I am still learning.



Edited by azure

  • Like 1


Recommended Comments

I have updated the latest version to 0.2 and added a few things. I reorganized parts of the code and fixed some bugs. I still have much more to do. The current top features to implement are:

  • Transpose: transpose will work similar to A4 frequency tuning (Hz). It will allow tuning by a different unit (cents).
  • Enable Sound: I plan to make the piano keys clickable for emulated "piano" sounds. In the distant future, I envision incorporating Atari tone generation.
  • Circle of Fifth's geometry: I have many plans for this. Mainly diagramming various chords.
  • Chord recognition
  • Scales recognition
  • Revising the UI: I'm not satisfied with the UI. It needs work. Dumping the information on the screen isn't the best organization.


Link to comment

I discovered I broke the microtonal option on the last update. It's incorrectly calculating Atari note frequencies and cents when Microtones per key is greater than 1.


I'll fix that next time.

Link to comment

I implemented some more functionality (transpose, tuning sensitivity, and distribution charts). I also changed the design a little. I will be adding a 2nd selectable note that will be overlaid with the first note. I will work on the color wheel next.

Link to comment

I added rudimentary tone generation. You need to click Enable Sound and then click on the piano keys. The code is pretty rough and the tones are simple sine waves.  They do not sound like piano or Atari notes. It only plays the frequency from the piano column. I will be adding the ability to play the Atari frequency as well.


You will have to click Enable Sound every time you load the page. The option is not preserved in web storage, because Javascript audio requires user action to enable sound.


For the curious, the maximum polyphony is 2 in order to match the Atari's two audio channels. I will be fine tuning the UI interaction on this. I put it together quickly, so it's very prototype-ish.

Link to comment

I'm going to take a break from this for a couple weeks. I need to get back to regular piano practice and studying music theory. My Blackjack and Proton game projects are on pause until I get the Music Explorer app to a beta release state. I work on only one project for a span of a few weeks. When I get Music Explorer to beta I will post it in the forums.

Link to comment

I can't figure out music with bankswitching. It seems to work fine when all the code is in the same bank, but the timing gets thrown off and breaks when bankswitching. Does anyone have any sample .bas of a bankswitched game with tunes?

Link to comment
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...