I would use Apache Solr. Use the Data Import Handler to define an SQL query that joins all your tables together, create a fulltext index from the result of joined data.
The columns named as args to MATCH() must be the column(s) you defined for the index, in the same order you defined in the index. But you can't define any index (fulltext or otherwise) across multiple tables in MySQL.
So you can't do this:
WHERE MATCH (g.title, a.title, a.artist, t.title) AGAINST ('beatles')
It doesn't matter whether you're using boolean mode or natural language mode.
You need to do this:
WHERE MATCH (g.title) AGAINST ('beatles')
OR MATCH (a.title, a.artist) AGAINST ('beatles')
OR MATCH (t.title) AGAINST ('beatles')
You may also be interested in my presentation Practical Full-Text Search in MySQL.