Jake Kaufman was kind enough to release the entire Shovel Knight OST as an NSF under creative commons, meaning we're allowed to host it and do cool stuff with it. So I'll take this opportunity to plug an NES visualizer I've been working on. Did you know the Shovel Knight OST can and will run on a real FamiCom, using Konami's VRC6 mapper? Knowing that, I can look at the register writes as they're being made, work out the appropriate frequency on the keyboard, and show a piano roll in realtime:
But I don't have a slick interface or a way to browse chiptunes, so...
chiptune.app: 1
zeta: 0
Clearly I need to get to work :) (At the very least, you can load up most NSF files and even NES games, and the visualizer will still run. If you want to know what notes the "coin" sound in SMB makes, now you can.)
FX3 [0] is one of my fav albums from Virt, but I don't think he ever released the source? If I get it right it was composed as .nsf files too.
I saw there was a MIDI file for at least one of the songs (Choppastyle [1][2]), so maybe there's a chance to get the rest of them from somewhere? I'd love to hear a version with modern synth instruments to compare and contrast (although my dream is for a cover of the whole album by www.paulgilbert.com and friends hahah).
NOTE: the redirect from links like [2] is a bit jarring, it would feel more natural if the URL remained (instead of the redirect to [3]). It would also make it easier to share a specific song by just copying the URL.
I had a rationale for this redirect behavior, but not sure it matches user expectations. The URL will reflect the browse location, but not the playing track...otherwise the URL gets too clunky. You can always copy the playing track from the link icon.
The piano/waveform visualizer is great, and there's a ton of fun to be had here by turning on and off different instruments. It would be nice if the interface were more discoverable/documented though. :)
(EDIT: also, it looks like chiptune.app does have a sort of piano-like visualizer available from the top-right corner, but it doesn't look quite as nice as yours.)
I hadn't realized (or maybe just forgot) your visualization was publicly available, super cool to see the Shovel Knight OST in it! I love seeing your music come up on YouTube/Twitter, the retro piano roll and the waveforms are so satisfying to watch.
OPs project is obviously much more impressive, but it's cool to me that the aesthetics are similar and both come from similar places. A nice reminder that the internet is actually pretty small I guess.
Also, I'd like to introduce people who may not be familiar with Chiptunes and trackers to Tim Follin. Tim has a legendary status among NES composers. His music doesn't even sound like it could be coming from an NES sound chip:
I actually find that Spotify is super buggy. If I switch devices it doesn't work (I have to select the new device at least five times), when I go underground with my phone it's super slow to realise that I've lost connection, and I usually have to restart the app for it to continue playing music.
I think the point is that "all modern software" has all kinds of delays and buffering before playing, in contrast to this site where the audio just plays instantly and reliably.
They don't though? I just clicked between two tracks a few times. Each time I switch there is a very clear delay between the click and the playback starting. You can even visually tell there's a delay because the row only becomes highlighted when playback of that track starts.
When you click, you download packages between 30kb and 300kb (roughly speaking); the player is surely already in memory - that is your latency. For systems that run immediately on machines with a fraction of power.
This comment makes zero sense considering that mod/XM type tracker files are mere kilobytes in size as opposed to a streamed OGG or MP3 file which is megabytes.
Btw I just want to say that I tried CANYON.MID and it sounds worse in GarageBand. I guess like using retina display to see old JPEG files, the imperfections now visible.
You're right! Why is that? Shouldn't regardless of the app (Chrome vs GarageBand) the sound be the same? I mean the underlaying player should be the same right?
That's the nature of MIDI files. They don't encode audio, they encode a set of instruments with a list of notes. It's up to whatever's playing them to provide what those instruments actually sound like.
Here's an example of the same MIDI file being played back on several different devices: https://youtu.be/eiMP-PlL6VM?t=954 It's clearly the same song on all of them, but it sounds slightly different.
Modern browsers do not support MIDI playback on their own, so chiptune.app is presumably doing it on its own with its own (likely intentionally retro) sound font providing the instruments.
Additionally even if macOS had its own system-level MIDI synthesis (not sure if it does), GarageBand would actually probably still be different since it's main purpose isn't MIDI playback -- it's to be a DAW.
MIDI does not have a sound. It's just instrument data. The classic "MIDI sound" that you recognize is the Roland GM soundkit shipped with Windows (an early version of Roland's Virtual Sound Canvas product).
This website uses a different instrument set. You can actually select which one it uses in the Settings panel, but by default it uses Kenneth Rundt's GMGSx.sf2 (which does sound quite a bit Roland-y to me), as shipped by SynthFont.
I don't know what instrument collection GarageBand uses.
MIDI files only contain a description of (simplifying somewhat) the rhythm and base pitch of notes, and which instruments they should be played on, so the realisation can vary drastically depending on the particular system and configuration (e.g. soundfont choice) it's played back with.
In the scene people always set SIDs and tracker chiptunes apart, because of how technically different the two are. There's an enormous technical complexity of having to emulate not just the SID chip (which still isn't 100% understood) but also the 6510 CPU and even some of the C64's CIA timers to accurately replay SIDs, whereas almost all sample-based tracker music from the Amiga and PC need none of that effort. Replaying SIDs is even more complicated than emulating e.g. SPC700 of the SNES, the PSG sound of the SMS, or the YM/OPN2 synthesizer of the MegaDrive.
> also the 6510 CPU and even some of the C64's CIA timers
yes, but also the VIC timers and the PLA. So basically you need all of the c64 chips emulated, at least in part :)
I wrote a simple SID player for fun and I feel like it's 20% shy of being a full c64 emulator, all it needs is video output and keyboard/joystick input.
Sample based tracker formats shouldn't be considered chiptunes. The latter is supposed to mean sound generated by dedicated hardware with automatic waveform generation, envelopes, and filtering. Doing it all in software by mixing samples isn't the same.
May I recommand to you the High Voltage Sid Collection? It is a collection of curated SID songs in a neat package, and it is updated regularly!
https://www.hvsc.c64.org/
To be fair, nobody called c64 music "chip music", it was just "music/tunes" because c64 music is really just code so in a way all of it was chip music (excepting some digi tunes).
The term chip music was coined on amigas and newer computers to differentiate it from regular sample based music.
Now you get an entire thread of nerds explain you the etymological history of sound chips and the huge differences between a sid program and the mid format despite having perfectly working converters in both directions.
I don't know much about the MIDI format, but there was one song [1] that I used to love listening to on Windows 9x. I guess the file took advantage of some 9x quirk, because the orchestration is completely busted in modern Windows and macOS. I'm so happy because this site plays it just the way I remember it!
MIDI has no sound on its own, so it depends on the thing playing it. Windows' MIDI synthesis might have gotten worse, or you remember it on the particular sound card you had with 9x.
What a good demo! Yeah, I think I has to do with "updated" MIDI synthesis logic. The issue involves some of the harmonies; on modern devices, they start but never stop, then begin to layer on top of themselves, making it a total cacophony haha.
Try the settings in the player, it has loads of soundfonts to try, they all sound very different. If it's a midi file, it all depends on what sound card or installed soundfont you had at that time.
What is playing this back? When using the inspector, I see it actually downloads the .mid file. I didn't grant Chrome access to my MIDI devices (not that I'd have any connected) and it was still playing the audio.
Is it playing it back with some internal samples and a playback feature, relaying it to the OS, or is this a Javascript player?
--
Oh wait, I just turned on the Visualizer, which makes me think that this is all done in Javascript, including the audio rendering?
I'd guess the hard work is done by the WebAssembly blob. There are open libraries written in C and C++ for the rendering of just about any audio format into a sample buffer. For General MIDI playback you could use e.g. the TiMidity++ or FluidSynth libraries, which use instrument data from SoundFont files.
https://rusticnes.reploid.cafe/wasm/?tab=jam&cartridge=Shove...
But I don't have a slick interface or a way to browse chiptunes, so...
chiptune.app: 1
zeta: 0
Clearly I need to get to work :) (At the very least, you can load up most NSF files and even NES games, and the visualizer will still run. If you want to know what notes the "coin" sound in SMB makes, now you can.)
I saw there was a MIDI file for at least one of the songs (Choppastyle [1][2]), so maybe there's a chance to get the rest of them from somewhere? I'd love to hear a version with modern synth instruments to compare and contrast (although my dream is for a cover of the whole album by www.paulgilbert.com and friends hahah).
NOTE: the redirect from links like [2] is a bit jarring, it would feel more natural if the URL remained (instead of the redirect to [3]). It would also make it easier to share a specific song by just copying the URL.
--
0: https://virt.bandcamp.com/album/fx3-remastered
1: https://virt.bandcamp.com/track/choppastyle
2: https://chiptune.app/?play=Contemporary%2FVirt%2Fv-choppasty...
3: https://chiptune.app/browse/Contemporary/Virt
(EDIT: also, it looks like chiptune.app does have a sort of piano-like visualizer available from the top-right corner, but it doesn't look quite as nice as yours.)
"Wait why is my website on the front page of HN? I thought I let the domain expire."
I don't mean to piggyback, but I want to show what I had hosted here before:
https://www.youtube.com/watch?v=7pEvu_nC2LQ
OPs project is obviously much more impressive, but it's cool to me that the aesthetics are similar and both come from similar places. A nice reminder that the internet is actually pretty small I guess.
Also, I'd like to introduce people who may not be familiar with Chiptunes and trackers to Tim Follin. Tim has a legendary status among NES composers. His music doesn't even sound like it could be coming from an NES sound chip:
https://chiptune.app/browse/Nintendo/Silver%20Surfer
When you click, you download packages between 30kb and 300kb (roughly speaking); the player is surely already in memory - that is your latency. For systems that run immediately on machines with a fraction of power.
Deleted Comment
• Amiga Music Collection (SOAMC=) <https://www.paula8364.com/>
• Authentic SID Collection (SOASC=) <https://www.6581-8580.com/>
Here's an example of the same MIDI file being played back on several different devices: https://youtu.be/eiMP-PlL6VM?t=954 It's clearly the same song on all of them, but it sounds slightly different.
Modern browsers do not support MIDI playback on their own, so chiptune.app is presumably doing it on its own with its own (likely intentionally retro) sound font providing the instruments.
Additionally even if macOS had its own system-level MIDI synthesis (not sure if it does), GarageBand would actually probably still be different since it's main purpose isn't MIDI playback -- it's to be a DAW.
This website uses a different instrument set. You can actually select which one it uses in the Settings panel, but by default it uses Kenneth Rundt's GMGSx.sf2 (which does sound quite a bit Roland-y to me), as shipped by SynthFont.
I don't know what instrument collection GarageBand uses.
yes, but also the VIC timers and the PLA. So basically you need all of the c64 chips emulated, at least in part :)
I wrote a simple SID player for fun and I feel like it's 20% shy of being a full c64 emulator, all it needs is video output and keyboard/joystick input.
The term chip music was coined on amigas and newer computers to differentiate it from regular sample based music.
Of course these are indeed modules, arrangements by someone else than the original composer, and not SID tunes per se.
I don't know much about the MIDI format, but there was one song [1] that I used to love listening to on Windows 9x. I guess the file took advantage of some 9x quirk, because the orchestration is completely busted in modern Windows and macOS. I'm so happy because this site plays it just the way I remember it!
[1]: https://chiptune.app/?play=vgmusic.com%20MIDI%2Fconsole%2Fse...
Here's a video I found of one of my favorite games sounding completely different from how I remember it: https://www.youtube.com/watch?v=inn7IE6-wgY
Is it playing it back with some internal samples and a playback feature, relaying it to the OS, or is this a Javascript player?
--
Oh wait, I just turned on the Visualizer, which makes me think that this is all done in Javascript, including the audio rendering?
This is wild. Anyone who’s more into this space than I am have any editorial comments on the various SoundFont options?
…listening to Space Quest III…