Ok I think its best to start a new thread here rather than clogging up ifcaro repo. Even if this doesn't get merged with the offical repo i'm hoping to set up a kind of skeletal frame work in case someone more efficient/skilled comes along and wishes to finish it off/use it as reference. @TnA You've made some great suggestions and will do my best to implement them, majority of them seem doable for me. Please keep in mind this is my first real coding project and I'm doing it for fun and a learning experience. I'm nowhere near the level of real devs; sp193, uyjulian, docxyz, ifcaro, jimmikaelkael, maximus32, ffgriever, akuhak, krhacken etc etc the list goes on and on. First step is working with audsrv libs, problem i'm facing is pathing i'm hoping @sp193 is able to spare a minute to try and offer some advice. audsrv doesn't use memory pointers afaik which is great for me but it does use fopen. This is currently where i'm running into issues as I can't get it to find/read my wave file. wav = fopen("SOUND/UP_DOWN.WAV;1", "rb"); I would think this would look for the wave file at the current working dir (where ever your OPNPS2LDR.ELF is placed) go another folder deep 'SOUND' and then read the file but it never finds my file. I have tried many variants (./SOUND)(/SOUND) as well as having it compiled into OPL with similar pathing. I haven't tried a static path like mc0:\\ for obvious reasons this would not be a great idea, I don't want dupe code for every possible device. Any help or suggestions would be greatly appreciated.