Tu as déjà ta réponse mais je me permets de compléter.
Dans un navigateur tu n'as pas accès au système de fichiers, même si y'a eu une ébauche d'accès au système de fichiers (dans une sorte de sandbox, donc tu ne pourras pas taper directement dans le dossier de musiques), mais ça n'a été implémenté que par Chrome et ce n'est pas en voie de standardisation. http://www.html5rocks.com/en/tutorials/file/filesystem/
Avec Node.js tu as le module `fs` pour accéder au système de fichiers, mais du coup tu sors du navigateur, il faut que l'utilisateur installe Node.js sur son PC pour faire tourner ton script, comme une application système à part entière.
Brackets n'utilise pas Node.js pour accéder au système de fichiers, tu peux voir leur implémentation ici : https://github.com/adobe/brackets-shell/blob/c4734a5083d8c42d13398ca09430b8277aa2b861/appshell/appshell_extensions.js
Ici les `native function` sont des fonctions importées d'une API native (en général C++ ou Objective C, Brackets fournit une une implémentation pour chaque OS supporté). Il me semble que le mot-clé `native` est spécifique au moteur V8.
Enfin, pour revenir à ce que tu veux faire (en admettant que tu veuilles faire tourner ton lecteur dans un navigateur), à défaut d'accéder directement au système de fichiers, tu peux demander à l'utilisateur de sélectionner un ou plusieurs fichiers, ce qui te donnera un accès en lecture à ces fichiers, avec la possibilité par exemple de les utiliser comme source d'un élément `<audio>`. Regarde en particulier l'évènement `change` d'un `<input type="file" multiple>` (le `multiple` est optionnel), surtout `event.files`, et la fonction `URL.createObjectURL`.