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 <jpcarnemo...@gmail.com
<mailto:jpcarnemo...@gmail.com>> 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
<sm.ever...@gmail.com <mailto:sm.ever...@gmail.com>> 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:* blind-gamers@groups.io
<mailto:blind-gamers@groups.io> <blind-gamers@groups.io>
<mailto:blind-gamers@groups.io> *On Behalf Of *Chris
Norman via groups.io <http://groups.io>
*Sent:* Sunday, February 14, 2021 6:20 AM
*To:* blind-gamers@groups.io <mailto:blind-gamers@groups.io>
*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> <immigrant328=verizon....@groups.io
<mailto:verizon....@groups.io>> 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.