Open mmontag opened 2 years ago
I can at least answer questions 3 and 4.
3: the emu
, audio
and utils
components use a C interface, while player
is C++
4: you'd probably just want emu
(edit: and possibly player
if you want to play back VGM files)
Thanks. Yep, I want to play VGM data. What is emu
by itself useful for?
What do you think of using C interface for the player as well?
As an aside, every "music player" library I have integrated so far with Emscripten (game music emu, libxmp, v2m, mdxmini, etc.) has been a C API. I was reading a bit and convinced myself that I prefer a C API.
The music player interface (in general) is simple enough that it doesn't seem to benefit much from a C++ API.
What is emu by itself useful for?
I can think of emulators, software synths for music sequencers, sound driver reimplementations, etc.
What do you think of using C interface for the player as well?
I was initially opposed to having player
written in C++, but that was Valley Bell's decision to make.
The C++ player implementation is great, but can we add a C API on top of it? might try this out myself.
Also, what is PlayerA? I see it doesn’t inherit from PlayerBase but the S98 and VGM do.
I have a similar desire since I've been toying with writing a gstreamer plugin that uses libvgm instead of libgme.
My understanding was that a C api was planned later for this type of use case. Was this or is this still the plan long term?
Yeah, sorry. There are a few things that are still on my TODO list, which are:
Both changes will be API breaking, as I'd like to do both at once. Unfortunately I haven't been working a lot on libvgm recently and I'm also stuck at how I should rename the "audio" part.
EDIT:
"PlayerBase" will be renamed to "BaseEngine" (or something similar), VGMPlayer -> VGMEngine, etc.
"PlayerA" is the "main player" class, in which you register multiple "engines" (DRO/S98/VGM) and which does volume control, loop counting and fading.
Nice, thanks for the explanation. I should probably wait until the dust settles. Would be happy to help with some smaller tasks.
I ended up writing my own C interface with voice names:
https://github.com/mmontag/chip-player-js/blob/master/libvgm/player/player_wrapper.cpp. (Code style may not be the best, any suggestions appreciated.)
@mmontag That's neat. I didn't have any luck on the gstreamer end of things myself.
Hi, I am considering replacing large portions of Game Music Emu (@kode54 fork) with libvgm in my project, but I'm confused about a few things.