Ahh.... the WTV variant...
I would still check out the USABER github version of the lightsaber project.. I believe her used that initially/or always in his development..
others couldnt get to seamlessly loop, so they transitioned to the DFPlayer if I recall correctly.
So I -believe- there is a support/code/library for that variant of sound player. I have some WTV boards... but not the microSD versions.. (so I never did anything with them).
the DFPlayer (while a couple annoyances)... were nice to work with.
Cons:
* Required naming conventions for the DFPlayer (they tell you to name things like 001.wav, 002.wav..etc) this is because if you drag-n-drop the files as suggested to do.. it will write the files to the SD card in the named order. The DFPlayer doesnt care about names really.. what is DOES care about is the order the tracks are copied to the SD card..
So if the file was named ABC123.wav if it was the first file written to the SD card.. you would always reference that file as .play(1)
* I guess this is library dependent,. but if using the widely suggested default DFRobot library.. there is an additional reset() command that makes the speaker POP when powering on/off the project (fixable though, by commenting out that line in the .cpp file)
* Detecting when a track playback has completed.
- They have a 'busy pin' that you can poll to check this... but its not very responsive (slow).. and not really worth it.
- There are some software (library dependent) actions that query the DFPlayer to see if a file is still playing or not.... however, its a bit buggy. If a file was called in a .loop() command.. you can detect when a file is complete, easily and accurately every time!.. However, in my results, I found that when you just .play() a file... the calls to query if a file was complete. triggered IMMEDIATELY.. (which was obviously incorrect)...
If you did an enabledLoop() action after a .play() call.. the query to check if a file was complete worked... however... when you disabledLoop().. it would sometimes error out.. and keep the initial file looping.. (when it shouldnt.. like the internal pointer couldnt keep up or something)..
If I was a better programmer.. I'd dig into the DFRobot library and see what 'internal watch dog' is set/turned on when a loop() command is called (as the chip has to knwo when the song is complete so it can loop it again).. and turn this on for just regular .play() commands..
I think if you already have the hardware.. then checkout the open source project on github or Arduino forums.. even if you do NOT use the project files.. it may yield to some code snippets that help you along the way.. they also (I believe) have wiring diagrams...etc.. for all these components..
Still plenty of things to tweak and play with in the open source project.. especially if going the DIY route.. and not buying one of the pre-made project boards