bobuss / LegacyPlayer

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Nostalic player

Implementation using AudioWorklet: https://developer.mozilla.org/en-US/docs/Web/API/AudioWorklet

Tested on Chrome and Firefox. Got some partial results on Safari.

Supported backends:

  • sc68: sndh, sc68 (needs replay *.bin files)
  • openmpt: mptm mod s3m xm it 669 amf ams c67 dbm digi dmf dsm dsym dtm far fmt imf ice j2b m15 mdl med mms mt2 mtm mus nst okt plm psm pt36 ptm sfx sfx2 st26 stk stm stx stp symmod ult wow gdm mo3 oxm umx xpk ppm mmcmp
  • ahx: ahx
  • ft2: xm
  • st3: sm3
  • pt: mod
  • sid: psid
  • vgm: vgz

Note: Openmpt backend gives the best results, but it does not support vumeters by channels.

How to use

import { LegacyPlayer } from './legacy_player.js';

const songUrlSC68 = 'http://modland.com/pub/modules/SNDH/Jochen%20Hippel/wings%20of%20death.sndh'
const songUrlFT2 = 'http://modland.com/pub/modules/Fasttracker%202/Jugi/onward%20(party%20version).xm'

const audioContext = new (window.AudioContext || window.webkitAudioContext)();

const player = new LegacyPlayer(audioContext)

const loadsc68Button = document.getElementById('loadsc68');
loadsc68Button.addEventListener('click', async (e) => {
    await player.load(songUrlSC68);
    player.play()
});

// by default xm files are played with ft2 backend
const loadFT2Button = document.getElementById('loadft2');
loadFT2Button.addEventListener('click', async (e) => {
    await player.load(songUrlFT2);
});

// you can force to use openmpt instead
const loadFT2WithMTPButton = document.getElementById('loadft2withmpt');
loadFT2WithMTPButton.addEventListener('click', async (e) => {
    await player.load(songUrlFT2, {"processor": 'openmpt'});
});

Inspirations

Original work by by Juergen Wothke:

OpenMPT: Almost unchanged from official repo:

AHX backend by Bryc:

Native javascript origin backends for Protracker (pt), ScreamTracker3 (st3) and FastTracker 2 (ft2) by electronoora:

More format (old Soundtracker mods) by krzykos:

TODO

  • UI
  • more formats

About


Languages

Language:JavaScript 97.9%Language:CSS 1.5%Language:HTML 0.6%