Code written by Damien Otis on 11/8/14 - 11/9/14.
See the demo at http://www.damieno.com/test/Splice
Based on the coding challenge https://github.com/mattetti/sm-808/
Splice Evaluation
How much time did you spend on the exercise, what parts took longer?
About 22 hours over 2 days, including full documentation. The most time consuming was using the Web Audio API features, because I had not previously used them and had to learn it while coding.
What were the hard parts, what parts did you enjoy most?
The hard parts were dealing with the Web Audio API. I had to learn a bit before I got it working well enough. I enjoyed using this the most becauase it let me tap into the raw audio data, which I plan to use in other projects.
Data modeling - How did you model the concepts of songs and tracks/patterns, can you explain why?
This is a limited demo, and the concept of songs is not modeled, only tacks/patterns. If I had more time I would create a playlist editor with multiple patterns, and arrangements of patterns.
Simplicity vs Flexibility - How flexible is your solution?
It is both simple and flexible. Volume knob control for each step, BPM is adjustable, it has all of the "extras".
Can a user define patterns of different lengths?
Yes.
Can they play at the same time?
Yes.
Can the patterns be changed in real time?
Yes.
Can the velocity be set?
Yes. Right-click on each note to edit the velocity with a knob control.
None of these features are expected, what is needed for you to add support for these?
They are supported.
Is your code tested? Why/why not?
No. Not enough time, after 22 hours of coding I'm tired and I need some rest.
How would you test it (or better)?
I would probably have to develop a new kind of test to deal with web audio to fully test this.
Try to keep external dependencies to a minimum.
No external dependencies, it was hand-coded from scrach in a weekend.
