Skip to content

Chip Player JS, an online music player

Technical discussion about the VGM format, and all the software you need to handle VGM files.

Moderator: Staff

  • User avatar
  • mmontag Offline
  • Posts: 24
  • Joined: 2019-05-16, 8:27:23
  • Location: San Francisco, CA
  • Contact:

Chip Player JS, an online music player

Post by mmontag »

Hi friends,

I want to share a project I have been working on. Chip Player JS, a web-based music player:

https://mmontag.github.io/chip-player-js/

It supports NSF, NSFE, SPC, VGM, VGZ, XM, MOD, S3M, IT, AY, KSS, SGC, and last but not least, MID.

It includes a large music catalog, and also provides drag and drop playback. The player supports tempo control and channel muting across all formats. It's meant to function as a long-session music player similar to Spotify.

I am excited to get some feedback on the project and invite your suggestions.

Thanks,
matt
Listen to VGM ♫ https://chiptune.app (libvgm/VGM 1.71)
  • ctr Offline
  • Posts: 492
  • Joined: 2013-07-17, 23:32:39

Post by ctr »

Well, you're using Game_Music_Emu. Coming here and showing off your player using it is like coming to a Mac forum and demonstrating your new Windows application. Besides, as you'll notice many of the packs on vgmrips (especially ones using exotic sound chips) will play incorrectly or not at all with GME.
  • User avatar
  • ValleyBell Offline
  • Posts: 4746
  • Joined: 2011-12-01, 20:20:07
  • Location: Germany

Post by ValleyBell »

Apparently it's using kode54's branch of GameMusicEmu, so it's supporting a decent part of the vgmrips library. YM3812 and YM2608/2610 work fine.

And I like how it looks like a terminal program.
  • User avatar
  • mmontag Offline
  • Posts: 24
  • Joined: 2019-05-16, 8:27:23
  • Location: San Francisco, CA
  • Contact:

Post by mmontag »

Hahah, nevermind showing off then.

I was attempting to support the most formats with the fewest dependencies (and smallest compiled size). Originally I wanted to go further with support for PSF/USF/GSF etc, and may get back to that if I ever figure out bundle splitting with emscripten.

Anyway, now I'm forced to wonder.
What are the most significant chips I'm missing out on with kode54's game-music-emu branch?
What does the overlap between game-music-emu and vgmplay look like?
Listen to VGM ♫ https://chiptune.app (libvgm/VGM 1.71)
  • User avatar
  • ValleyBell Offline
  • Posts: 4746
  • Joined: 2011-12-01, 20:20:07
  • Location: Germany

Post by ValleyBell »

Supported sound chips:

Code: Select all

VGM 1.71     GME/org GME/k54 VGMPlay
SN76496         x       x       x
YM2413          x       x       x
YM2612          x       x       x
YM2151          x       x       x
SegaPCM                 x       x
RF5C68                  x       x
YM2203                  x       x
YM2608                  x       x
YM2610                  x       x
YM3812                  x       x
YM3526                          x
Y8950                           x
YMF262                  x       x
YMF278B                         x
YMF271                          x
YMZ280B                 x       x
RF5C164                 x       x
32X PWM                 x       x
AY8910                  x       x
GameBoy DMG             x       x
NES APU                         x
YMW258                          x
UPD7759                         x
OKI6258                 x       x
OKI6295                 x       x
K051649                 x       x
K054539                 x       x
HuC6280                 x       x
Namco C140              x       x
K053260                 x       x
Pokey                           x
QSound                  x       x
SCSP                            x
WonderSwan                      x
VBoy VSU                        x
SAA1099                         x
ESS5503                         x
ESS5505/6                       x
Seta X1-010                     x
Namco C352                      x
Irem GA20                       x
GME/org (4 chips) = original Game Music Emu - It has full support for VGM v1.50, because that was the current version back in 2006.
GME/k54 (24 chips) = kode54's fork - It has a fair number of changes compared to the original GME, IIRC. It supports most of VGM v1.60.
VGMPlay (41 chips) = what VGMPlay/in_vgm supports (basically everything supported by VGM v1.71, which is the current version)
  • User avatar
  • mmontag Offline
  • Posts: 24
  • Joined: 2019-05-16, 8:27:23
  • Location: San Francisco, CA
  • Contact:

Post by mmontag »

Hi ValleyBell, thanks for the incredibly detailed reply.
I'll have to do some homework on these missing chips.

Another noob question: what kind of glue code is needed to use the YMF262 as a MIDI device? Any good examples you know of?
I'm looking at bisqwit's ADLMIDI [1] and malicex's opl3-synth-driver now. It looks...scary. [2]

What tool was used to produce the vgmrips of OPL3 PC games, such as Tyrian and Duke Nukem?

matt

[1] https://github.com/bisqwit/adlmidi/blob ... ay.cc#L837
[2] https://bitbucket.org/djtubig-malicex/o ... #lines-716
Listen to VGM ♫ https://chiptune.app (libvgm/VGM 1.71)
  • Shywolf Offline
  • Posts: 41
  • Joined: 2015-11-01, 22:18:27

Post by Shywolf »

Not really a helpful reply in itself, but that UI looks very nice!
My only concern is that the logo might look too much like Winamp's...

(Also, it's time to add Pico 4 entries to the database.)

Post by vampirefrog »

I also like the UI, including the spectrogram
  • User avatar
  • mmontag Offline
  • Posts: 24
  • Joined: 2019-05-16, 8:27:23
  • Location: San Francisco, CA
  • Contact:

Post by mmontag »

Shywolf wrote:Not really a helpful reply in itself, but that UI looks very nice!
My only concern is that the logo might look too much like Winamp's...

(Also, it's time to add Pico 4 entries to the database.)
The logo is shamelessly ripped off in deference to Winamp (in a similar vein as projects like webamp.org)...but if it's not well received, I'll ditch it.

Thanks for the tip on Pico 4! I love Famicompo. (is there a similar competition for FM/Adlib chips??)
Listen to VGM ♫ https://chiptune.app (libvgm/VGM 1.71)
  • User avatar
  • ValleyBell Offline
  • Posts: 4746
  • Joined: 2011-12-01, 20:20:07
  • Location: Germany

Post by ValleyBell »

mmontag wrote:Another noob question: what kind of glue code is needed to use the YMF262 as a MIDI device? Any good examples you know of?
I'm looking at bisqwit's ADLMIDI [1] and malicex's opl3-synth-driver now. It looks...scary. [2]
In order to play MIDIs on OPL2/3, you need to write an additional abstraction layer that does the conversion between MIDI commands and the OPL chip.
I'm afraid this is not a trivial task, as that layer has to take care a few things, like:
- choosing an "instrument" on a MIDI channel requires you to load OPL register settings from a table (or file) and write them to the chip
- MIDIs have 16 polyphonic channels, OPL chips have only monophonic channels, so you need to remap the MIDI notes to whatever OPL channel is free
- MIDI channel 10 is for drums, which require you to load separate settings per note
mmontag wrote:What tool was used to produce the vgmrips of OPL3 PC games, such as Tyrian and Duke Nukem?
Those were logged with DOSBox. Most of those older logs were done by logging DRO files (with a custom DOSBox version that produces more verbose DRO logs) and converting them to VGM.
These days the recommended way to log VGMs from DOS games is to use the DOSBox VGM mod. (see the [pack] VGM Creators topic for links)

Post by vampirefrog »

I also have a simple MIDI FM toy here https://github.com/vampirefrog/fmtools

it takes MIDI, and each channel is an FM chip. It limits polyphony to whatever the chip supports.
  • User avatar
  • mmontag Offline
  • Posts: 24
  • Joined: 2019-05-16, 8:27:23
  • Location: San Francisco, CA
  • Contact:

Post by mmontag »

I went ahead with libADLMIDI. It's a very nice and configurable project.
This only increased my compiled wasm by about 90kb.
So now you can choose between SoundFonts and OPL3 for MIDI.

There are ~25 OPL3 banks included, with automatic bank selection implemented for a few games.

Here is a Descent 2 track that pushes OPL3 pretty hard:
https://mmontag.github.io/chip-player-j ... GAME02.MID
Listen to VGM ♫ https://chiptune.app (libvgm/VGM 1.71)
  • brownfox Offline
  • Posts: 3
  • Joined: 2019-04-11, 7:45:50

Post by brownfox »

Hi. I deployed it to my own server to enjoy my personal chiptune collection easily.
The UI is nice as it reminds me of VGA grafix. ;)
It would be more cool if you could add more formats support like psf, gsf, etc...
  • User avatar
  • MaliceX Offline
  • Posts: 226
  • Joined: 2012-09-29, 11:45:48
  • Location: Australia
  • Contact:

Post by MaliceX »

That player looks impressive.

Also, FARBRAUSCH V2 ON WEB????? COOL!
-dj.tuBIG/MaliceX
  • Drewish Offline
  • Posts: 1
  • Joined: 2019-11-01, 7:44:23

Post by Drewish »

Hey, I'd like to say that I have LOVED these classic chiptunes you are offering on your site. And when I have it hooked up to the speakers it sounds phenomenal!
I regularly come to your site to find inspiration from old video game music.
And I just realized your visualization option actually SHOWS the notes being hit! This is also very useful to me.

The only thing I would ask to change is the option to change the waves on the visualization on/off. Or at least dim it down so that I can actually study the notes without having my eyes warp things in front of me when I move away after 3 minutes of watching. Lol.
EDIT: As it turns out, the heavier songs with more noise are harder to decipher, but classic NES and Game Gear are easier to read. Can't wait to keep studying the notes that play.. it's a good way for me to learn and pick up patterns in music.

Great work, thanks. Please keep it up, I would have no idea where else to look for to get this kind of stuff other than playing the game itself VIA emulator or Console.
Post Reply