Web-based Amiga Protracker MOD Player [beta]

Hello Internet visitor, surfing the waves of the Information Super-highway. You have stumbled upon my browser-based Amiga Protracker Module player on the World-Wide Web!

The audio you are about to hear is rendered live on-the-fly. This is a performance and not a recording. Your device is synthesizing in real-time.

The music module files used in this player were mostly created in the late 1980s through the mid 1990s, and play back on the Commodore Amiga home computer that first debut in 1985. It had a really neat sound chip called Paula that could play up to four digital samples at once. It was capable of this because it had four independent voice channels, kind of like if you had four independent CD players going into a mixer. Each channel could have its sample rate chosen independently, so the samples could achieve different pitches by adjusting the playback frequency. In other words, the Commodore Amiga was basically a Fairlight CMI that could also do video editing and compositing, word processing, and really fun gaming, all for a fraction of the price! (of a Fairlight, that is, and actually, less expensive than less capable computers as well.)

Songs that are represented well with my MOD player include Macabra, Cosmic Brain, Back From Blue, You Must Learn, Nes-Tea Peach, Funk'n Jam, Mystified, Stoop-It, and my favorite, Trans Atlantic.
I suggest starting with those songs.
People really like the song Enigma, even though the rendering is not completely accurate.

I haven't yet implemented sample looping [Done], so samples that use looping are short, and don't play continuously like they should. [Now they sound sustained.] Also, I haven't yet implemented sample fine-tuning [Done], so if the song sounds out of tune, it's my player's fault and not the fault of the module composer. [Now Mystified and others are in tune!] Neither of these [were] hard to implement, luckily! I also haven't implemented portamento or pitch bending, so notes that are supposed to slide just sit at their initial value. This will be harder to implement. On the immediate TODO list, I will soon implement the effects that cause volume decay. Songs that have instruments that just stay loud will greatly benefit.

This MOD player was written from scratch, and uses both php and JavaScript. The php program on the server-side reads the MOD file and populates the HTML page. Then JavaScript embedded into the HTML on the client-side reads the sample and track data from the Document Object Model (DOM) of the webpage to know what to play. It resamples on-the-fly, and outputs the audio via the Web Audio API. I will make a tutorial on how I used Web Audio for continuous audio, as the official MDN documentation is lacking in that regard. But pretty much I used this orphaned page that used to be part of the documentation for HTMLAudioElement, before the moz functions were deprecated.

The only references used to make this were these three text files from the early 90s, time-stamped from 1993 and 1994:

The resampling function was written from scratch using my own knowledge of how resampling works, and knowing what values to use for interpolation and decimation came from my own intuition.
Both the Commodore Amiga and the Gravis Ultrasound could play samples back at different rates by merely changing the playback frequency in hardware.
I also used the MDN reference on the Web Audio API.

At first it was reported to me that there was no sound on iOS devices, but putting the start-button fixed playback for users of iOS devices.

Thank you to my beta testers: G.S., S.G., J.S., G."S.D."

Verified browsers are: Mozilla Firefox under GNU/Linux, Edge under Windows, Chrome under Android, Safari under OSX.
It no longer works for Safari under iOS, and I do not have a device to troubleshoot the issue.


Web MOD Player

Protracker on the Commodore Amiga

Hosting for this site is provided by

The SDF Public Access UNIX System

(c) 2020 pwh