Looked around for a while and FINALLY found one soluction using wavesurfer.js
This approach is not the best solution but simply solve this head-aching issue for me.
Working both on Safari and IOS Safari.
1) Including JS library.
<script src="//cdnjs.cloudflare.com/ajax/libs/wavesurfer.js/1.0.52/wavesurfer.min.js"></script>
2) Normally you don't need the waveform so you can just hide it.
<div id="waveform" style="display:none"></div>
3) Just put some default settings for the hidden waveform.
var wavesurfer = WaveSurfer.create({
container: '#waveform',
waveColor: 'violet',
progressColor: 'purple'
});
4) Now you can use a filename without extension.
wavesurfer.load('12'); // '12' is my mp3 file name
5) At last, you have to define your own control bars using their API Docs.
$(some_button).on('click', function() {
wavesurfer.playPause();
});
By the way, if you found the waveform feature interesting this plugin is a plus LOL.