Based on

 - zohararad/audio5js#46
 - zohararad/audio5js#47
 - zohararad/audio5js#48