Compare the recommendation by gdsports to what you have... Each server.on line needs to be complete. The error messages are confusing if you don't know C programming constructs that well.
server.on("/T01", []() { <-- Start of server.on statement
Lines of inline code that you want, in your case startPlaying and server.send
}); <---- rest of server.on. I think you are leaving this line out each time
server.on("/T01", []() {
startPlaying("T1.mp3");
server.send(200, "text/plain", "playing T1.mp3");
});
// handle "/"
server.on("/T00", []() {
startPlaying("T0.mp3");
server.send(200, "text/plain", "playing T0.mp3");
});
server.on("/T01", []() {
startPlaying("T1.mp3");
server.send(200, "text/plain", "playing T1.mp3");
});
server.on("/T02", []() {
startPlaying("T2.mp3");
server.send(200, "text/plain", "playing T2.mp3");
});
server.on("/T03", []() {
startPlaying("T3.mp3");
server.send(200, "text/plain", "playing T3.mp3");
});
server.on("/T02", []() {
startPlaying("T4.mp3");
server.send(200, "text/plain", "playing T4.mp3");
});
server.on("/T02", []() {
startPlaying("T5.mp3");
server.send(200, "text/plain", "playing T5.mp3");
});
server.on("/T02", []() {
startPlaying("T6.mp3");
server.send(200, "text/plain", "playing T6.mp3");
});
server.on("/T02", []() {
startPlaying("T7.mp3");
server.send(200, "text/plain", "playing T7.mp3");
});
server.on("/T02", []() {
startPlaying("T8.mp3");
server.send(200, "text/plain", "playing T8.mp3");
});
server.on("/T02", []() {
startPlaying("T9.mp3");
server.send(200, "text/plain", "playing T9.mp3");
});