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.