Quote:
Because I've done this and compiler now complains that it can't use the new function as the callback.

The function you use as the callback must have exactly the right signature (type). If the callback system doesn't allow you to pass the pointer to the class to your callback, you're stuffed, as then the static ("this"-less) C++ function can't call a nonstatic (with "this") member, because it can't come up with the value of "this". Fundamentally, if you've got two sets of callbacks in your program, how does the callback know which instance it's being called for?

Without looking at JACK, I can't be more specific, but alternatively, if you've only got one set of these callbacks in your program, you could keep the MP3Play pointer in a global.

Either way the callbacks you pass to jack_xxx must be either static members or not members of any class.

Peter