Chip Player JS

Chip Player JS
Chip Player JS began in August 2018.

Ten years ago, I stopped using Windows and switched to Mac. But I held on to a Windows XP virtual machine – for the sole purpose of playing ancient music formats in Winamp. Even while I was working at Spotify, Winamp was running in the background.

Chip Player JS was built to replace this inconvenient way of playing chiptunes and MIDI files. There are other modern alternatives, such as Audio Overload by Richard Bannister. But nothing had the charm and configurability of the old Winamp plugins.

Sequenced Music

Why go to all this trouble? What's the big deal with chiptunes and MIDI files?

Since these files consist of raw performance data – not a flattened audio signal – they allow you to explore and interact with music in ways that aren't possible with recorded audio.

These formats offer the ability to visualize note data on a piano roll, adjust playback speed, mute channels, reassign instruments, and transform performance data. I believe a music player for sequenced formats should take advantage of these capabilities and provide interactivity. This is a major design goal of Chip Player JS.

Psychology of Limitation

Chiptune formats were born of technical limitations: 4 primitive waveform channels of the Ricoh 2A03 (NES), 128 fixed instrument sounds of General MIDI, 6 FM channels of the YM2612 (Sega Genesis), etc.

Each sound chip is a musical instrument in its own right, like a guitar or a violin. Each has a unique sound character and a basis of interesting contstraints that demand to be tested. Chiptune artists have developed a repertoire of performance techniques that work with the limitations of the chips, akin to stuff like artificial harmonics, whammy bar dives, and extended stretch tapping in the guitar world.

YouTuber explod2A03 has explained some of these effects for the NES in a series of cool videos. Check it out:

This post is a work in progress.

Leave a Reply