I’ve made some more progress with my game engine. I’m currently using OpenAL directly (without ALUT, I might add… >_>), and am trying to create a cross-platform threading interface in order to spawn sounds/music off of the Main Thread. This way it can focus on Drawing instead.
As I’ve begun learning about Windows threads and PThreads (POSIX), I’ve noticed that they both have practically identical interfaces. So, it made me wonder… what’s the point of Windows?
And of course, it hit me. Windows is a reaction to UNIX in the same way that GNU/Linux & FreeBSD are a reaction to UNIX & Windows. I realized that the redundancy served a purpose if it made computers more accessible, which it has.
Even if you’ve got a grudge against Microsoft, you cannot deny that they’ve helped make computers more mainstream. Today’s issues, however, stem from an overabundance of control/monetization (how Microsoft/Apple are acting) in the face of even more-accessible/free alternatives.
So, let me tie this back into a discussion about audio; where the redundancy actually made things less accessible (strangely enough).
At first, I tried using several 3rd-party tools, “CAudio” and “OpenAL Soft”, to name a few. One failed to compile, and the other had a complicated interface. At this point, I decided to simply roll my own wrapper around OpenAL (the implementation of which was far less dense & confusing than when compared to OpenGL, thankfully), and I haven’t looked back. This is why I preach the fundamentals to other computer scientists/software engineers I meet. If you become too reliant upon the work of others, you will eventually encounter an obstacle too daunting for shortcuts.
I implore you to at least make and effort to learn native tools so you can always understand what’s being abstracted, instead of immediately relying upon a 3rd-party solution. More often than not, the problem is something that can be easily overcome if you just do a little bit of homework.
With that said, don’t hesitate to reach out if you’re still trying to learn LMMS, Blender, or GIMP (or any other open-source tools)!
(P.S. I’m currently building my engine so that it will be compatible with Windows, GNU/Linux, & FreeBSD. Expect some articles on how to use FreeBSD in the near-to-distant future.)