As usual, before diving into the code, let's study the structure of the project. The aim of the project is to be able to do the following:
- Play and record a sound track from a drum machine
- Save this track to a file and load it to play it back
To play a sound, we will lay out four big buttons that will play a specific drum sound upon being clicked (or upon a keyboard event): a kick, a snare, a hi-hat, and a cymbal crash. These sounds will be .wav files that are loaded by the application. The user will be able to record their sequence of sounds and replay it.
For the serialization, we do not just want to save the track to a single file format—we would rather save it to the following three file formats:
- JavaScript Object Notation (JSON)
- eXtensible Markup Language (XML)
- Binary
Not only is it more fun to cover three formats, but...