@camlorn: No, no, surely I won't do that. In fakt, why the hell would I want to sell an audiogame engine that's...just made for the blind? I won't get any money worth my efforts anyway, so might just offer it for free, and open source as well! I only said that, as an example with bass and the part of the license I didn't quite understand. Yeah, of course I'll give you credit for it, as will, I think, any dev in this community competent enough to use the lib, we know it's not our work, so I see it only as bad fate for someone not crediting you, as I'd say if someone would use my as yet non-existing engine without at least saying they used it, just bad fate.
yeah, I knew in a way that the more advanced things in the API would be more complicated, but I really hope there won't be too many structs and such, since those constructs are abit hard to bind, or at least for languages that don't have that concept or if they do, most of them don't pack them correctly in memory so that they are understandable by C. From what I herd, even rust, though it uses structs and compiles to native code, doesn't respect C conventions for field alignment by default, unless you prepend the struct with some attribute I forgot the name of. Python, for example, needs a class with a dictionary inside denoting the fields of the struct or something like that, what I know for sure is that it uses the struct module and has...quite enough boilerplate to deal with for a binder.
the .net, however, must do almost nothing for that, because, like in rust, you just have to specify an attribute from the System.Runtime.InteropServices namespace since the struct type already exists in the cls, so an attribute in front of the declaration. Well, it seems I don't need to fight with the language so much with those structs, but please, if you can, try to keep the API as simple as possible.
btw, is it supported to load in a decoded byte array of samples and have it played, as if the decoder had already ran and it's output would be those bytes? because if so, you won't need to integrate all file formats directly into synthiser, rather aditional formats besides the core ones would be considered pluggins, then you could decide whether or not they would be included in the main repo or create a new pluggins section in your documentation. Bass does this, too, and now they have all sorts of weird formats and stuff, even midi, made by the community, I think?
and yeah, it seems that bass doesn't have that buffer cashing/sharing capability directly implemented, but one could create a channel with the file loaded, then use BASS_ChannelGetData to get the buffer data, then you could, I suppose, cash that. Though for that buffer to be complete and ready for cashing, e.g. the channel handle is not a streamming channel, the file must completely be loaded into memory, so BASS_SampleLoad needs to be used, but that has limitations regarding file sizes, encoding, and samplerate, obviously. So, if nothing changed since I last used it, then I don't think such a thing exists in bass, perhaps with an add-on?
so yeah, I think that, with alittle time, synthiser will become the next bass, if not better, and I could see that happening in the near future.
now, to another thing:
how many platforms has this support to build against out of the box? windows, what else? mac OS, linux? uwp? android, iOS, wach OS, XBOX?
for example, monogame, the basis for my future engine, is able to deploy games on android, iOS, uwp(through xamarin), as well as several consoles, including the play station, dreamcast, nintendo switch(I believe), and Dk others off the top of my head, I'd have to look them up to find all of them out. Thing is, I really could care less about those weird consoles and stuff, but I'd like to not include anything that would make the game unbuildable on platforms monogame would run on, even though I won't support them explicitly, that's why I'm trying to put on the list as close to only .net core libs, if not only microsoft components and nuget packages, like grpc for networking, for example, since there's a nuget package that's inheritly cross-platform, because it says it runs on .net standard. Another such thing would be the bullet sharp library, a wrapper around the bullet physics engine. That, too is written in c++, but I hope it builds at least on android, iOS, and uwp(x64/arm).
so, how easy is it to compile and link synthiser against new platforms? for example, any part that I know it's cross platform as far as compilers go, and any single one where I know most of the platform specific stuff resides, like playing sounds and stuff? if it's too hard to port to consoles and such, I sincerely could not care less, since I don't have one anyway, but I'd like to know if such portings are possible and what platforms are already supported