💾 Archived View for nanako.mooo.com › gemlog › 2023-06-05-a.gmi captured on 2023-12-28 at 15:34:52. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2023-06-14)

🚧 View Differences

-=-=-=-=-=-=-

Plans for The Next Few Months

I figured I'd write up a gemlog where I mention the plans I have for the next

few months. Partially because my Mastodon/Misskey accounts are probably not the

right place, and also so that *I* have something to look back on ^_^

Where I'm At Now

So the first 1/3rd or so of last year was mainly spent writing CL-MeltySynth,

Haematite, and midi123. These turned out pretty well, I think, and while

CL-MeltySynth is currently a bit behind Haematite, and midi123 needs a bit of

love, all of them still in a good, working state.

CL-MeltySynth

Haematite

midi123

The first 1/3rd or so of this year was similar in that I spent it on a new set

of projects. YunoSynth is a VGM playback library that supports most of the same

chips that VGMPlay already supports (in fact, it's based on VGMPlay, but it's

cleaned up and OOP-ified). The emulation cores are mostly from the MAME

Project. Benben, meanwhile, is my new console-based player that uses YunoSynth.

It was initially based on midi123 internally, but was largely restructured to

have a much cleaner design. Both Benben and YunoSynth are written entirely in

Crystal. The only bindings that are used (and only in Benben) are to PortAudio,

PulseAudio, and ZStandard.

YunoSynth

Benben

The main things I want to do with CL-MeltySynth are bringing it up to speed with

Haematite, and removing some unneeded consing in the rendering loops. And for

both of those, I would like to make it so that the SoundFont isn't entirely

loaded into RAM at startup. With midi123, I basically want to restructure it so

that, internally, it's a lot closer to Benben.

I'm really happy with how all of these have turned out. Doing larger projects

like these in Crystal vastly improved my understanding of the language, and my

skill set in general. But none of these are my end goal.

Near-Term Plans

For the past two (three?) weeks I've been doing a Common Lisp equivalent of

YunoSynth called SatouSynth. Right now I've only got a few chips implemented,

but it's already performing *very* well, and I've got almost all of the core

framework ported, save for the DAC streaming bit. My reason for creating it is

actually the first of my goals for the near term: create a GUI player for VGM

files using McCLIM. Doing any sort of GUI program in McCLIM is something I've

wanted to do for a while now, because holy crap is that toolkit just wacky and

totally different from everything else. Also, I haven't found any GUI toolkits

that I'm personally happy with on the Crystal side, so that's another good

excuse to use Lisp and finally work with McCLIM.

Besides, I love both languages, and I'd hate to ignore one for the other <3

I'll likely be starting the design of the McCLIM GUI player this week now that

SatouSynth supports a small handful of chips, and focus on it for the next month

or so. I might also port a few other chips that are low-hanging fruit, like the

YMZ280b and OKI MSM62xx chips.

One thing to keep in mind is that SatouSynth does **NOT** replace YunoSynth, and

the GUI player does **NOT** replace Benben. I am fully committed to supporting

YunoSynth, and extending it further with new chips and features. More

generally, I'm fully committed to Crystal just as much as I am to Common Lisp.

I just need a break from Crystal for a bit.

Longer Term Plans

YunoSynth is still lacking a few chips, the big ones being the YM2612 and

SN76489 (aka, the ones the Sega Genesis use). These are looking like they'll be

a PITA to port, which is why I haven't tackled them yet. But I do want to

eventually, and I might just do that after I get the GUI player in a usable

state. So my primary longer term goal is adding more chips to YunoSynth, and

also SatouSynth.

Beyond that, I have a VGM player (soon two) and a midi player. I also have code

written that plays back FLAC and mp3 files. Why not combine them? That's one

of my more long-term goals. Whether this ends up being a command line player, a

GUI, or both is yet to be seen, but that's kind of where I want to end up with

all of this.

I'm also still wanting to port a game engine to either Crystal or Lisp. My port

of Doom for Crystal is still sitting around, and though it's not playable, it

does boot and show levels. But I'm honestly kinda burned out on Doom. I think

instead, I'll try to port another game, possibly OpenTyrian. If I do

OpenTyrian, then maybe I can also add modding features and turn it into an

actual good game, not just some euroshmup with good music :-P

In truth, I'll probably do the game port first before I tackle the all-in-one

player. For one, I don't have much need for an all-in-one player - I have emms

mode in Emacs, and that integrates with midi123 and Benben perfectly. Plus,

I'll probably want to take a break from all this audio stuff eventually.

So long-term will probably go roughly like this: more chips for YunoSynth and

SatouSynth, game port of some sort, and all-in-one player.

We'll see how it goes ^_^

---------
Page served by Aya https://nanako.mooo.com/fossil/aya/
Aya is under the GNU Affero GPLv3 license