What I would like to achieve is some way of calculating the difference in time between two events - such as opening and closing the audio player window and possibly expand that to include the timings for an event between these two actions relevant to an __pk/fkAudioID.

Below is an example table of data taken from the Playback History Event table.

For some reason I can't seem to get my head around this - i have tried all sorts of scenarios today with relationships etc. What's confusing me is the fact that a user my open and play the audio player for the same track on a number of occasions, with additional events in between, and how to differentiate each __pkPHID relative to the _fkAudioID - so that I can say User X opened audio Y on Z date and played the track for Z minutes (the difference between opening and closing the player window AND/OR during this time they liked/disliked the track).

I have clearly have a lot to learn but all help appreciated as always.

A self join could auto-enter the previous record's time so that you can subtract the two values, but it looks like you need to add a field that distinguishes one session from another to use as a match field in that relationship.

Take a look at the rows of data boxed in red and compare them to those boxed in blue. There is nothing in your data that makes the one group different from the other. If you added another field that stored a value unique to each such groups of records--some kind of "session ID", you could tell the groups apart and this field could be part of a relationship that self joins only records of the same session.

You could create a record number in a related table once for each such session and use an auto-entered serial or UUID to get such a value.