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.

8 ResponsesLeave a Reply

  1. This is my favorite site. I love the look.
    I have so much fun changing the midi soundfont on the fly. Are features like that not on the mobile version? Its probably for the best.

  2. Yeah, I was lazy and just hide some controls when there's not enough room. But you might see them if you rotate your phone to landscape 🙂

  3. Hey Matt, seriously loving this.
    I'm pretty sure I'm being dumb here, but I'm having trouble trying to download the midi files. I've downloaded a few from copying the link into a new chrome tab but sometimes it doesn't work at all and the link sends me back into ChipPlayer. Other times it downloads them in other file formats such as miniusf.

    Can some not be downloaded? Do some only support miniusf? Any help would be greatly appreciated.

  4. Edit: stupid question, my bad.

  5. Hi Matt,

    This app is awesome! I was wondering if artists are allowed to sample these files in their own works.

    Also, you may want to know the "Feedback" link on this site may be effectively broken. As an "unverified" Twitter user, I either have to become verified or follow you before I can send you private messages. Even after following you I still get the same error message, but this could be a bug on Twitter's part.

    Anyway, thanks for making this, and I'd love to sample some of these sounds in my own music if possible!

    -- JP

  6. Whatever

     /  July 24, 2023 Quote

    I usually never comment on blogs, but, mate, this software is MAJESTIC.

    Thanks a lot. Absolutely Love it.

    Btw when you say "These formats offer the ability to visualize note data on a piano roll" can this be done in Chip Player JS? Can't find it.

  7. Thanks for the kind words. There is no piano roll in Chip Player, but it's on the list https://github.com/mmontag/chip-player-js/issues/91. In the meantime, the constant-Q spectrogram comes close.

Leave a Reply to Jay