There is a problem when looping music files. It creates a gap/pause before it loops if you choose “play a music file on a channel.” When choosing “play a sound on a channel” for the same track, the gap/pause is not there. This is a bug that has existed since last year. See here: Looping Music Gap [Solved]
The “play music” events use a different method of sound buffering. It doesn’t buffer the same way you would want for looping music files. It is less a bug and more the way that system is designed. This system is basically there for specific use cases only.
There used to be a note about this in the wiki but it seems like it got removed in an edit. I’ll get it added back.
You can and should use the “play sound” events for all types of audio, including music if you need it to loop. To ensure better performance, also make sure you check “Preload as sound” in the resources panel.
(Edit: Updated with info for 2023 since people are finding this old post)
The performance considerations section of this page has been updated with more detail. Audio [GDevelop wiki]