💾 Archived View for nanako.mooo.com › gemlog › 2024-05-30-a.gmi captured on 2024-06-16 at 12:30:08. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
WOO! Benben v0.5.0 is now basically "finished", minus testing bug fixes. I've placed it into a soft feature freeze, with a hard feature freeze scheduled for 17 June 2024, and a tentative release date scheduled for 29 July 2024. The soft freeze is just in case I forgot to add something I really wanted, or deem something so easy that it's trivial to add. So basically, it's all testing from here on out. I've given myself extra time just because there's SO MUCH to test in this release.
Unless some last-minute feature gets added (highly unlikely), this is what the final NEWS will look like for v0.5.0.
One thing that did NOT make it in was the VRC7 support in YunoSynth. This is a low priority for me, so I've decided to just move this to the eventual v0.6.0.
Regarding the change in maximum sample rate... well, I feel that one needs some explanation. There's basically two reasons for it, where the first is that libxmp and Opus are both limited to a maximum of 48KHz. More specifically, libxmp (which handles its own resampling internally) has a maximum output rate of 48KHz. Meanwhile, Opus files just have a flat maximum rate of 48KHz, and so even though we handle Opus resampling ourselves, no Opus file will ever go above 48KHz. Now I could add logic to detect a desire to go above this, and then just resample to a higher sample rate. But doing so doesn't make so much sense in libxmp's part since it's then being resampled twice in a row. Additionally, and this is my second reason for making the maximum 48KHz, you really don't need to go above 48KHz for good audio. Human hearing generally goes from 20Hz to 20KHz, and so, using the Nyquist–Shannon sampling theorem, that means any audio that we want to reproduce within that range needs a sampling rate of at least 40KHz. CDs go over this a bit with a 44.1KHz sample rate, and 48KHz gives even more padding room. While there are some arguments that things like harmonic distortion and whatnot at even higher frequencies interact with lower frequencies, it's so minor that it's imperceptible. Basically, anything above 48KHz is effectively pointless for audio. In fact, during my audio engineering days, I quickly learned that sampling rates above 48KHz were a useless waste of resources, and that the recommendation was to master at 48Khz, and past that, increasing the _bit depth_ was the proper way to raise quality instead (48Khz 32-bit float was what I learned to use when mastering, and to never go below 48KHz 24-bit signed integer audio[1]). Given all of this, I've decided to limit the output rate to 48KHz, as it's a good reasonable upper limit for high quality audio. Benben already uses 32-bit float when playing (64-bit when rendering), so that doesn't need changing.
Anyway, with this release, Benben becomes an all-purpose music player. VGM support is still in it, is still a first class citizen (and still done entirely in Crystal), and will never be removed. It's just a much more fleshed out program now.
Oh, and there's a FAQ page for Benben on the wiki now:
Benben Frequently Questioned Answers (Benben wiki)
So yeah, Benben v0.5.0 comes with theme support! You can read about the format, as well as where themes are stored, here in the wiki:
The format is not 100% set in stone yet, but I can already assure you that nothing will be removed from it before v0.5.0 comes out. Currently themes mainly change text colors, and also are where the VU meter gets customized. I _may_ add a dash of color to the progress bar before release as well (*cough* "soft feature freeze"), but that's it.
The theme format has a `version` field so that I can (hopefully) not break themes in the future should I modify the format, like what's happened with the configuration format.
I already have a few milestones for v0.6.0 and the eventual v1.0.0 listed in the wiki. Basically the plan from here on out is just to make Benben more awesome by polishing the user experience, adding formats (or porting them to native Crystal), and making it look more flashy. I have no idea when I'll get around to v0.6.0, let alone v1.0, but it'll probably be before the end of the year. Heck, I dunno how many more v0.x releases between now and v1.0.0 there will be, but it feels like that's something that's now visible in the horizon.
I also kinda sorta want to play around with an alternate UI (Nuklear? imgui? Dunno) before v1.0.0, but don't hold your breath on that one, as it may not ever happen. I prefer TUI stuff in general anyway, it's just a cool thought that it could potentially also be graphical.
So yeah... I kinda feel like v0.5.0 is the point where Benben is no longer just a fun toy, but a real tool that people can use everyday. Basically, v0.5.0 is the "big one" that forever changed Benben. I'm stoked as heck for it.
--------- Page served by Aya https://nanako.mooo.com/fossil/aya/ Aya is under the GNU Affero GPLv3 license