Oh, yes, sorry. I was on the subway train, writing on my iPhone, thus the very brief reply 
In mAirList 2.2 a TTimer component was used, but that only works in the main thread. For mAirList 3, I need to find a totally different way to achieve periodic calls. For example using a dedicated timer thread, or using a central timed “callback” mechanism.
TPlayerState is implemented as an enumeration. It’s pretty much a list of constants as you would declare it in C++, but it can be declared and handled much easier. The bitwise combination you’re talking about is a “set” in Delphi. Again, it is implemented using constants (1, 2, 4, …) internally as you would do in C++, but accessing the values is much easier, because you can use operators like “in” or “+” (union) instead of using the binary operators AND, OR etc.
But, and that’s the point: There is no sense in making TPlayerState a set. Because a player can only be in (exactly) one state at a time. For example, it cannot be playing and paused at the same time. This is why TPlayerState is not a set but a simple enumeration. (Please ignore psPFL, psFlashEOF, and psNext for the moment, they are just a trick to speed up skin processing.)
Of course you could use the spare bits to store additional information (e.g. the loop and hook flags) in the same variable, but there’s no sense in that either, it would only mess up your code and make it unreadble to anyone else. This information should rather be stored in an extra variable. In this particular case, I decided to store the flags along with the other toggable player options in the “Options” variable, which is of type TPlayerControlOptions, declared as a “set of TPlayerControlOption”, where TPlayerControlOption is an enumeration (see the help file for the possible values).
And after all, we’re only talking about notification scripts getting notified about a change in the options, don’t we? Then the most feasible solution would be to introduce a new function for that, instead of squeezing the information into the parameters of another function, wouldn’t it?