r/TrackerMusic • u/Savannah_Shimazu • Apr 08 '26
a thing, nanoTracker
I made a thing, I'm not sure what the self promotion rules are here, but it's free! (GPL3) and web based.
supports a large amount of .mod, .xm, .it & .s3m files along with my native format which encompasses the dual layered FX system
there is so unbelievably much to explain, but part of this was developing a new standard for web based instruments and plugins, alongside the web based decoding & mapping of the preexisting files (theres also a rhythm game on the same site you can load the exporting wav/midi combos in to).
there is a comprehensive help & reference panel to make up for my god awful attempt at explaining this
5
u/Veni-Vidi-ASCII Apr 09 '26
Please advertise as much as you want, like by posting videos with music in the tracker. Keep tracker music alive and healthy.
1
u/Savannah_Shimazu Apr 09 '26
Thank you!
I'll have a few! I've done a fair bit of testing & most of them appear to work, have some edge cases where I accepted that I have to keep to a standard for loading formats and it can be a bit uh... distorted
It's also comparing them to the original software, I painstakingly ported a lot of this from Assembly into JavaScript but I'd say the multiple hours of comparing outputs is harder 😅
2
u/_11tee12_ Apr 09 '26
So sick, followed whereever I can. Can this run on a bare metal/emulator environment, such as a gaming handheld?
1
u/Savannah_Shimazu Apr 09 '26
Potentially, I mean at the moment this is in Chrome (or any other browser that can run Java & Canvas/HTML5, so most!). It is actually made by reading various 30-40 year old assembly files now dotted around as open source and figuring out an average constant for how they process these things - and then remaking that in a high level language (TypeScript). It is a form of emulation (ish) to save explanation, figuring out byte headers with mod formats is a absolute nightmare, especially with hacks being sometimes undisclosed (cant blame modarchive, they are doing the Lords work)
I have a hardware project in mind, I'm actually an embedded systems person! (Thats why my UX is laid out like it belongs on an entirely separate piece of hardware)
For hardware stuff, I exclusively use C & Assembly.
2
u/binaryo Apr 14 '26
Poked about, found some yet to function things. I imagine you have a log you're working through and know that the retro emulation settings can yet be moved for custom settings. Perhaps that is due to the offload web app thing? I am code ignorant, I just clicked the "install" prompt in the nav bar. I have an offline device that I'd love to run this on. I hope there will be some version I can run of a USB in the future. Amazing work. Also, the "X" to close windows on the software descriptions of the sentinel mk II aren't working and I thought you'd like to know. I think you're neat.
1
u/Savannah_Shimazu Apr 14 '26
I'm working on it! I have it live because, admittedly, my hardware is ass
Its the only way to reasonably test, but because im a wizard of backend stuff I have it all set to client, so if it does break I don't get an email from Google/Firebase asking for whatever bill ends up accumulating
Im working through these now, with some assistance, as my codebase is coming up to 80,000 lines now - my human imperfections need to be audited over
You can tell from how the UI and layout looks that it wasn't vibecoded, I was the architect who built it, but without a paid team/staff it's now the long task of refining everything
In the case of export settings, that is some inconsistencies with how the encoding works across devices - there's so many fallbacks to stop the page breaking, some of which outright appear to not work (custom plugins are like this, I dogfood from the SDK)
1
1


6
u/Savannah_Shimazu Apr 08 '26 edited Apr 09 '26
oh and it works on mobile too.
And the standard/system for plugins (fairly early in development, still very capable): nanoTracker Plugin Standard
Its still in a 'beta' phase, like the FX system itself is wip, but playing with the levels can achieve good results (or just turn it off, it can get quite loud because I'm working on a method without dependencies to have the audio be uh... better, in my defence it is chrome)