themodelplumber 10 years ago

Oh man. Huge flashback to downloading FastTracker 2 back in '93, excitedly hitting "play" on e.g. Chillzone.xm by Norfair (edit, actually that tune wasn't released yet in '93, but there were so many great tunes) and seeing 32 waveforms going at the same time, sending amazing sounds through the Pro Audio Spectrum 16 I had gently installed in my ZEOS 486 DX/2 66 MHz.

Amazing to see it all there in JS today...wow. Thanks for sharing the article.

(Wait...where is Nibbles?)

  • onyxraven 10 years ago

    Makes me wonder if ScreamTracker3 is doable too.

    • themodelplumber 10 years ago

      I always wished I knew how to work ST3. I ended up instead mailing away for a copy of Modedit shortly before the really user-friendly FT2 was released.

    • a1k0n 10 years ago

      Of course it is. It's actually a lot easier, as there are no envelopes and just one sample per instrument. Firehawk/TDA wrote this excellent player a while back: http://mod.haxor.fi/Purple_Motion/2nd_pm.s3m

      • camperman 10 years ago

        Damn, that playback is as good as I used to get on the old GUS.

  • a1k0n 10 years ago

    Hmm, I appear to have a sample loading overflow bug somewhere... http://www.a1k0n.net/code/jsxm/#nf-chill.xm

    Edit: pushed a fix... something is goofy with the sample data in instrument 4.

    • themodelplumber 10 years ago

      Whoaaa! Thanks, worked great here. That is terrific to see it running like that. :)

rzzzt 10 years ago

Works great in Chrome without underruns.

(Is ScriptProcessorNode here to stay, though? Mozilla's documentation marked the feature as deprecated for quite some time now [1], suggesting the use of Audio Workers instead; in turn, the same documentation states that these are not yet implemented in any browser. At some point I got very confused about the one true way of generating audio using Javascript.)

[1] https://developer.mozilla.org/en-US/docs/Web/API/ScriptProce...

  • a1k0n 10 years ago

    It got renamed from JavaScriptNode to ScriptProcessor when it switched from webkitAudioContext to AudioContext, and it seems to be the best-supported way to do it. I don't see why not. But of course IE doesn't support it at all and I don't think iOS Safari does either (it's a big question mark on mozilla.org anyway)

    • a1k0n 10 years ago

      On second thought you're probably right; this API will probably break in a couple years and my player won't work anymore, just like everything else that tried to use createJavaScriptNode in the past is now broken.

      Hopefully the web workers transition is the last...

    • greggman 10 years ago

      iOS safari supports it just fine and has since it first came out.

      http://games.greggman.com/game/html5-bytebeat/

      The issue on mobile is you can only start playback of sounds in a user gesture event and I think on iOS the first sound can't be a ScriptProcessorNode (maybe that bug was fixed). I just play an oscillator for a moment to get things started. Once the first note is played it just all works.

      I'd be surprised if they removed it at this point. Many many pages use it. Many many native->emscripten apps use it. I think just no one has updated MDN in a while. Unity->HTML5 uses it. Unreal->HTML5 uses it. Pico8->HTML5 uses it. Voxatron->HTML5 uses it.

      • a1k0n 10 years ago

        edit: THANK YOU! That was the issue; I had to make a dummy oscillator. And, separately, there was a CSS issue which made the buttons black on black. Now it works on iOS.

sjs382 10 years ago

This is awesome. I'm going to incorporate this into http://Artpacks.org soon, if you don't mind!

Now, only if there was a reliable JavaScript RIPScript interpreter. :)

0x4a42 10 years ago

Fasttracker was the program that made me understand I have not talent at all to compose music. :)

fapjacks 10 years ago

Oh wow I spent so many nights playing and making MODs and chatting with my other nerd friends on BBSes of the day trying to share knowledge. This is truly a much-appreciated work of art! On another note, I think the people commenting in this thread would be really great together in a room somewhere with beer and computers. It's a very specific cross-section of both a skillset and a point in time.

dogprez 10 years ago

Awesome, fasttracker 2 and qbasic were the most formative programs of my youth. I'll upvote anything to do with fasttracker 2 all day.

errozero 10 years ago

Great work. Nice smooth visuals too. Could you implement a html5 file reader to load any .xm file?

  • a1k0n 10 years ago

    Yep. Just added drag-and-drop to the player window; drag a local .xm file onto it to load it. Only tested in Chrome.

ryanmarsh 10 years ago

OMG spent so many hours late at night in my teens on FastTracker 2. This is incredible. Now I'll have to dust off those floppies.

abrkn 10 years ago

So... Nibbles?

  • a1k0n 10 years ago

    Sorry, haven't worked that in yet...