https://www.mkelly.me/moseamp/
The progression of me building the app was (over a span of maybe 7 years):
- Prototype compiling GME[1] into asm.js, generating sound samples on a webpage, and piping them into the Web Audio API.
- Turning that prototype into a desktop app in order to learn Electron.
- Giving the desktop app a proper UI in order to learn React + Redux.
- Switching to a native node.js addon to fix slowdown/memory use during playback.
- Switching to musicplayer[2] so that I could play Playstation music.
- Adding a Windows build so I could listen to music while coding on my Windows computer with the same UI as on MacOS that I had by now grown accustomed to.
- Adding a visualizer to learn how, well, visualizers work.
- Adding a piano-roll visualizer for NES music and rendering-to-video because my friends who make chiptune videos on Youtube use an old, inflexible program to make their videos.
I would say the number one driving force is that I made a tool I use pretty much every day; tools I've made that are only occasionally used never really motivate me enough to bother fixing them up, but with Moseamp every fix is an _immediate_ improvement in my day-to-day.
[1] https://bitbucket.org/mpyne/game-music-emu/wiki/Home [2] https://github.com/sasq64/musicplayer/