I realize this is an old question, but I recently ran into the same problem and found a solution.
The problem seems to stem from the pre-loading of tracks in Tidal. Since you are not using pulseaudio Google Chrome creates a new audio controller every time a track starts playing from your playlist. Tidal's player expects the same audio controller to be in place when the next song starts playing, leading to the hang-up.
The way I fixed the problem was by debugging Tidal's javascript player code by injecting my changes through a `man in the middle'-proxy (look up mitmproxy, great software). By doing so I could change the behavior of the player. By changing the following function:
function m(t) {
t || w.pause(), g(), e.trigger("track:switched", A), I = void 0, S && x === A ? (o.player !== o.preloadPlayer && (o.player.stop(), o.setMediaPlayer(o.preloadPlayer)), u(T, S, t), x = void 0, T = void 0, S = void 0) : f(A, p, k)
}
to
function m(t) {
t || w.pause(), g(), e.trigger("track:switched", A), I = void 0, S && x === A, f(A, p, k)
}
I got rid the of the issue. The last function will always call the `f' function, thereby creating a new player, avoiding the pre-load issue.
The steps you need to go through is:
- Install mitmproxy and its certificates
- Setup your browser to use the mitmproxy (you can find the setting under Menu->Settings->Advanced->Change Proxy Settings
- Run mitmproxy like this: mitmproxy -p 8888 --script tidal.py
Tidal.py's contents is below. Note that you'll have to download the .js file and make the changes, and put it in a place where it can be loaded, e.g. in the same directory as the tidal.py file. Good luck!
import cStringIO
from libmproxy.protocol.http import decoded
def response(context, flow):
if flow.match("~u http://listen.tidal.com/v1.6.4-p-5/app.js") and flow.response.headers.("content-type", "").startswith("application/x-javascript"):
with decoded(flow.response):
try:
injected_script = cStringIO.StringIO(open('./app.js', 'rb').read())
flow.response.content = injected_script.getvalue()
except Exception as e:
print e
pass