Will that say that bass choose or auto-free or speakers-front or both ? If yes, why does it not work with AND ?
Logical AND bitwise operand is mutually inclusive. Example...
$FF00FF00 AND $FF0000FF = $FF000000;
In the example above, both flags had the following bits (value)...
$FF000000
On the other hand, Logical OR bitwise operand is mutual and exclusive accumulating. Example...
$FF00FF00 OR $FF0000FF = $FF00FFFF;
Bitwise operand AND allows you to test the existence of, or exclude specific flags, while bitwise operand OR allows you to include additional flags.
Delphi equivalent is the SET type. But this Delphi type is cumbersome and not useful when using API.
Off subject, a very useful but often overlooked bitwise operand is XOR...
Enabled := (Chkbx1.Checked and FileExists) XOR
(ChkBx2.Enabled and AllowCreate)