A very rough first attempt at combining MIDI with a 3D model of a piano. Despite the issues outlined below, the code is well structured to facilitate future enhancements.
The issues fall into three broad categories, appearance, sound, and usability:
- Appearance — The lighting is horrible and shadows are disabled by default for the present.
- Sound — This implementation plays all the tracks in the MIDI file. That's fine if there is just a piano track, but a song like Dear Mr. Fantasy with several instruments plays like a jumbled mess.
- UI — Please accept my apologies! The UI has gotten only the most superficial treatment here. There is no error checking and several basic features (like tempo) are missing.
The MIDI issues are going to require some serious effort to fix given the complexity of the MIDI standards./p?
The model, on the other hand, can be fixed with a few hours of tinkering: In fact, it used to look much better, but I futzed it up along the way and unfortunately, I don't have the patience right now to tweak the settings. Maybe in a few weeks!
From a coding perspective, I have been building a set of classes for working with three.js that will allow for rapid development and more ambitious implementations
Most of the example three.js code is very unstructured. What I prefer to call scripts rather than apps.
This is a good test app for my library, as it attacks a very different problem than the astronomical and mathematical examples that currently have my attention. But, using a new code base for several diverse purposes inevitably leads to a more solid implementation.