OK, so this is actually an area where Earwax's documentation is sadly
lacking.
Behind the scenes, Earwax uses Synthizer
<https://synthizer.github.io/> for its sound needs.
When creating a sound, you can use three types of positions: You can
set the position to ``None``, which is Python's answer to ``null``, or
``nil``. This unpans the sound, so it's completely unaffected by
anything spacial.
You can slo set the sound to a float value between -1.0, and 1.0. This
pans the sound left and right (with 0 being centre), as you'd expect.
Finally, you can set it to an earwax Point
<https://earwax.readthedocs.io/en/latest/api/earwax.point.html> instance,
which gives you full 3d capabilities.
Also, the earwax ``BufferCache`` class is a LRU cache (least recently
used), so you can get buffers from it, and it'll remove the buffers
which were used longest ago.
For more information on sounds, check the earwax.sound
<https://earwax.readthedocs.io/en/latest/api/earwax.sound.html> module
documentation.
As for behind the player processing, it would depend what you mean.
There's a whole raft load of scheduling features, from the earwax.Task
<https://earwax.readthedocs.io/en/latest/api/earwax.task.html> class,
to two different promise
<https://earwax.readthedocs.io/en/latest/api/earwax.promises.html> types,
to the scheduling features provided by pyglet.clock
<https://pyglet.readthedocs.io/en/latest/modules/clock.html>.
What there *isn't* yet, is filters. This is because they're not yet in
Synthizer.
There is reverb and delay though, so you've got your two main fx covered.
Take care,
Chris Norman
On Mon, 15 Feb 2021 at 11:29, john <[email protected]
<mailto:[email protected]>> wrote:
I've also recently been looking into various game engines myself
(mostly rust-based), but this sounds pretty interesting as well.
My current conundrum is around getting something that has actual
genuinely accurate sound panning; how is Earwax for that? Ideally
I'd like to be able to pass it either a degree value (from
centered) or use a linear scale that actually maps itself directly
to degrees, so that when an object is directly left, there's
*zero*! audio in the right speaker, and when the object is at a 45
degree offset, one side is at half volume. Most games I've played
seem to struggle with this so I've been figuring I'm going to have
to get into decibels and logarithms, but since we're on the topic
of game engines here, it can't hurt to ask.
Additionally, significant bonus points will be awarded for real
handling of behind-the-player processing, but at least in that
case I can pretty easily make up the difference in an audio editor
if needed.
Best,
John
On 2/15/2021 5:42, Chris Norman via groups.io <http://groups.io>
wrote:
I'm it's primary (and currently soul) developer, so if you do try
it, I'd love to know how you get on. Also, please submit issues,
so I can fix 'em! :)
Take care,
Chris Norman
On Sun, 14 Feb 2021 at 22:47, Shaun Everiss <[email protected]
<mailto:[email protected]>> wrote:
I have heard of earwax but I haven't really looked at it.
On 15/02/2021 4:41 am, Immigrant via groups.io
<http://groups.io> wrote:
Thanks. I heard of Lucia, and could not find any
documentation for it.
*From:* [email protected]
<mailto:[email protected]> <[email protected]>
<mailto:[email protected]> *On Behalf Of *Chris Norman
via groups.io <http://groups.io>
*Sent:* Sunday, February 14, 2021 6:20 AM
*To:* [email protected] <mailto:[email protected]>
*Subject:* Re: [blind-gamers] Introduction, and programming
questions
Hi,
There are a few different audio game engines for Python,
these include Earwax <https://earwax.readthedocs.io/> (beta),
Lucia <https://github.com/luciasoftware/lucia> (which is
supposed to be more familiar to those coming from BGT,
Framework
<https://forum.audiogames.net/topic/38239/framework-my-new-set-of-tools-for-audiogame-creation-in-python3/>
(for
want of a better name), and pyAGE
<https://forum.audiogames.net/topic/38941/pyage-yet-another-python-audio-game-engine/>
(which
is still very much in its early stages).
If you'd rather go the mainstream route, and don't mind a
little more work, there's Godot Accessibility
<https://forum.audiogames.net/topic/33909/migrated-godot-accessibility-to-github/>.
Finally, for some subjective comparisons, see this thread
<https://forum.audiogames.net/topic/38995/python-and-audiogame/> on
the audiogames.net <http://audiogames.net> forum.
There are others, namely MonoGame
<https://www.monogame.net/>, and probably some other stuff in
C# too.
Other than that, please just do everyone a favour (mainly
yourself), and don't use BGT. It's like deciding to dig
yourself a swimming pool, using a plastic bucket and spade
for digging, wattle and dorb for lining, and stiff prayer for
water purification.
HTH,
Take care,
Chris Norman
On Sun, 14 Feb 2021 at 02:42, Immigrant via groups.io
<http://groups.io> <[email protected]
<mailto:[email protected]>> wrote:
Hello, everyone I have just joined the group, and I hope
the distinguished
gamers and writers in this gaming community understand
that I am very much a
beginner, trying to write perhaps a couple of simple dice
or card games. I
wrote a dice game script in BGT, and the script doesn't
generate any
compilation errors. However, the game window stays open
only for a couple of
seconds, and then disappears, so none of the program's
keystrokes can be
executed. I realize that BGT is no longer supported, but
it does work under
Windows 10, and it is the only engine where I know how to
implement
keystrokes and add and manipulate sounds. I checked basic
tutorials for a
few programming languages, and realized that game logic
can be programmed in
any of the languages but none of these tutorials
addresses keystroke-driven
implementation, or addition of sound. And even in the BGT
tutorial, I have
not found answers to some of my questions. The game I am
currently trying to
write is a dice roller, but if one tries to create, for
example, a card
game, how do you make a card playable? If cards exist as
strings, or parts
of an array, or even instances of their own class, they
are just abstract
logical structures. But cards need to be manipulated -
picked up, discarded,
etc. If I have a hand with 5 cards, how do I program a
way to navigate the
list of cards and then perform an action on a card
currently in focus? How
to make it an element of interface so it can be selected?
I hope I clearly
expressed my questions, and I am grateful in advance for
any clarifications.