Make Tracker Tunes in the Browser

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • haxe

    Haxe - The Cross-Platform Toolkit

  • It is nice to see that finally this can be done in the web. I worked a bit in web-based sound around 2008 for the music playback in some Flash games[0] i was working on and at the time sound was woefully limited.

    I wanted to use MOD music because of their much smaller size (i wanted to keep my games less than 1MB in size because at the time many people had slow connections and really you didn't want people to wait regardless - Flash games were put in places where there were like 289347823 alternatives next to it).

    There wasn't any usable MOD player (there was one but used GPL which was impractical for games and had some technical issues in playback) so i made my own and since there wasn't really an audio API beyond "play that sound file" ("sound file" being wav or mp3), what i did was to generate a SWF file in memory with the MOD file converted into a WAV (infinite looping commands weren't supported) and play that (for some reason Flash had an API for doing that, probably to allow for custom SWF encryption).

    That was during Flash Player 9 times. Later FP10 added some better audio API but by the time it became as widespread as FP9 i had already lost interest in Flash.

    Later when HTML5 got audio APIs i considered porting the player to HTML5 (it was written in HaXe[1] which supported a bunch of target platforms and languages, including JavaScript) but at the time the HTML5 audio APIs were a mess with every browser doing its own (and some weren't that great - e.g. IIRC Chrome didn't had a callback for streaming/generating audio but instead expected you to "race" the playback and put data ahead of the time) and then was the last time i checked audio in a web browser.

    [0] http://runtimeterror.com/tech/demo/flashdemos.html

    [1] https://haxe.org/

  • BassoonTracker

    Webbased old-school Amiga music tracker in plain old javascript - Plays and edits Amiga Mod files and FastTracker XM files

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • jssynth

    Javascript audio synthesis library

  • Back when the Web Audio API's were still very fresh I had similar goals and ideas. I wasn't overly impressed at the usability of the web audio API's, especially for things like beat-accurate triggering for music playback, so I wrote my own multi-channel mixer/sampled synth library, and a MOD/S3M player on top of it. [0] (It's since been basically abandoned). It was both a proof of concept as well as a journey back through time for me, and at the time I remember being amazed at how unreasonably well it all worked. It felt wrong that an interpreted language like JS could be fast enough to real-time mix multiple audio streams.

    As an aside, the MOD format is one of those things that's surprisingly easy to describe, but surprisingly difficult to get all of the edge cases to behave the same as the original trackers, and I quite enjoyed the process of critically listening to things and going back and fixing issues as they came up.

    I had also written a MOD player much earlier in my life, targeting my first PC, an old 10MHz 286 with a sound blaster card. At the time I had to hand optimise things in assembler to get to the point where I could play 8-channel MOD's reliably. And that was pushing it. Nowadays an interpreted language running in a browser on a low-spec PC is more than enough to do a ton more channels without even breaking a sweat. Progress is amazing.

    Kudos to the authors of this tool. It looks amazing!

    [0] https://github.com/gundy/jssynth

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts