Speaker volume (Whisper - Shout) #6
Comments
In the HN post I made, one used suggested a podium where a user could stand to be heard by everyone: https://news.ycombinator.com/item?id=22772800 I like the metaphor over an explicit configuration setting. What do you think? |
I like the metaphor, too. I think it aligns with our goal: reproducing the dynamics that exist in person. I still think it's appropriate to be able to whisper or shout though. I want it to be as organic as possible of course, so I don't love the idea of a slider, but not sure what alternative there might be. |
I just had a thought, though it's only tangentially related to this issue. Maybe the audio range should not be set directly, maybe it should be changed with the view zoom. So if you want to listen to a specific conversation, you just zoom in on it. If you want to hear the entire room, you zoom all the way out. |
First off, thanks for sharing this amazing project! Maybe this is too contrived, but this thread go me thinking on how "shouting" might work in a digital space like Lozya, and how it might be possible in a way that's analogous to an in-person space. I was hoping to share :) Technically, people can yell non-stop in a public space, but social norms kinda make it so that if you're going to yell at the top of your lungs, you can essentially only do it for a few seconds due to social pressure. So maybe to speak at "normal" volume, there could be a little replenishing bar that replenished in realtime (ie. you can talk at normal volume as much as you want), but if you choose to speak louder by yelling, then you only get a short burst. And maybe the podium, if it exists, just kinda bends the established rules a bit. Moderators could choose what sort of "social norms" exist in a space -- as in, a digital church service might have a different ability for loud-speaking, compared to an online hackathon or a simulated "movie night in the park". (e.g., "darren! you here?" or "i have an announcement.... if anyone's interested to talk about X, we'll be over by the well") Anyhow, thanks for considering! :) |
A possible way to consider this would be per-tile custom properties. You could have properties for both mic and speaker "decay"; the resulting volume adjustment to an audio stream would be the product of the distance, speaker decay of the source tile, and mic decay of the sink tile. Then a "podium" would have 0 source decay, an "observation tower" might have 0 mic decay, maybe a "nap corner" would have a very large mic decay, etc. If you want to get really fancy, you could consider the product of decays along each tile along the path between source and sink -- then would enable e.g. room walls that provide sound barriers. |
Yeah, there's definitely potential for doing all kind of things with tile metadata. I think it'd be cool to have some tiles be "walls" that define parameters for a low-pass filter to attenuate the sound. It'd be neat to have moderators be able to put bad users in a penalty box, where the bad user gets warped into a door-less room whose walls block sound from all users. Maybe certain tiles could be switches that people could operate to make things happen, like open doors or play music. For issue #35, there'd definitely be tiles that change the room you're in. I've also started thinking of alternative interfaces to Jitsi. A WebXR interface in full 3D. A more traditional teleconference interface with users spread around the edges of the screen, but still spatialized according to the center of the screen (or maybe even infer a listener position at a Z-axis distance away from the center of the screen!) It might make sense to split the repo into two: this one to be the default 2D RPG game interface, a second one is the spatialization protocol for Jitsi. Or maybe vice-versa, but I think people probably come here looking for the full package of what they find on the website. |
Other potential enhancements could be some form of one-way regions, i.e. everyone sitting at a table can hear each other but nothing else; those hovering next to the table can hear the table chatter but can't themselves be heard. I'm thinking of this in the context of a virtual board gaming session, which could maybe be further augmented with #50 mapping a stream of the game board onto the table for everyone to see. Things like this might suggest a jitsi spatialization protocol could be valuable as a standalone library for developers to further experiment. |
To play around with such matters, I made a tilemap with all sorts of features that relate to the discussion above. (I tried loading it into my Calla though, and the Collision property doesn't seem to be having an effect?) |
The "True" value either needs to be lowercase, or this code needs to be changed to account for casing: https://github.com/capnmidnight/Calla/blob/master/js/src/TileSet.js#L30 |
Oh there's also another issue: https://github.com/capnmidnight/Calla/blob/master/js/src/TileMap.js#L92 only checks for collisions on layer 0, not all layers. Also, when using an avatar emoji, it displays in the tile above the one it's actually in. Using an avatar URL works as intended. |
The layer 0 thing is by design. It's meant to be the data layer and then the other layers are decorations that occlude the avatars. For example, if you want to make a forest where people can walk through and look like they are behind the trees. Theoretically, you only need two layers.
I'm working on documenting these things. This project started out as a hack to just see if spatialized teleconferencing made things better. So it kind of grew from that original hack. Never expected it to take on a life of its own, so now I need to find all the hacks.
Get Outlook for Android<https://aka.ms/ghei36>
…________________________________
From: mooomooo <notifications@github.com>
Sent: Friday, July 3, 2020 3:14:22 PM
To: capnmidnight/Calla <Calla@noreply.github.com>
Cc: Sean T. McBeth <sean.mcbeth@gmail.com>; Comment <comment@noreply.github.com>
Subject: Re: [capnmidnight/Calla] Speaker volume (Whisper - Shout) (#6)
Oh there's also another issue: https://github.com/capnmidnight/Calla/blob/master/js/src/TileMap.js#L92 only checks for collisions on layer 0, not all layers.
Also, when using an avatar emoji, it displays in the tile above the one it's actually in. Using an avatar URL works as intended.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub<#6 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AACIYPR2TCYERPNKXSCY5Y3RZYUY5ANCNFSM4L6636MA>.
|
I just realized that the original issue listed here could be handled by adding a Gain node to user audio sources. The following diagram is a proposed map of audio nodes per-user. The current nodes are "Source", "Positioning", "Spatialization" and "Destination" (though technically Positioning and Spatialization are the same node, we can introduce some math to change how we set the positioning for presenters to achieve louder audio, but also maintain directionality). |
Sorry, any final closing comments? Is this covered elsewhere, or |
|
k rockin. my understanding from that is that you'd like the issue queue to be your personal backlog with high signal-to-noise, and not a repository of feature requests from non-contributors. Admittedly not how I use mine, but I can empathize with that. Thanks! I'll stay tuned to see where you're going with this (I'm currently deep into using High Fidelity for my own events, but am anticipating to be lured away from that in the future) |
No, not necessarily. Well... IDK. I'm just trying to make sure this particular repo is just about the Calla library. For the game app that is visible on the site, I'm in the process of moving that to a separate project/separate repo. There are features that I'd like to implement that necessitate creating a backend database for it. This repository will always have the current version of the game app available for reference as an example, but I want to make sure it stays "back-end agnostic". All while juggling my day job, which is also using Calla, so again the need to be back-end agnostic. So I guess, in that sense, yes, I want this issue list to be clear of feature requests from non-contributors. That sort of thing would go in the issues list of the eventual repo for the game app. |
ooohhhh ok that makes sense :) Thanks for clarifying @capnmidnight! Also, do you have a synchronous chat space? If not, might you be interested to create one, perhaps using Gitter? I'm not a code contributor yet, but I suppose I have some general topics I'd be eager to riff on. As context, I used to co-organize weekly hacknights for a few years (40-70 ppl). I feel like we had some interesting ways of thinking about physical space and human interaction, and we've be fortunate to share and socialize our model internationally. Anyhow, I'm super eager to replicate the atmosphere digitally, and I've mostly been doing that with High Fidelity: https://hackmd.io/Wv8m0dxvSmu4tF02Htb24Q?both (HiFi gets a lot of things right, but in the long term, I'm much more interested in tying myself to a FOSS project I can actually contribute to!) |
It should be possible to set how loud you're speaking. The most quiet non-mute setting would make you audible only to users in squares adjacent to yours. The loudest setting would make you audible to all users within a given max radius which could be set by room administrators.
The text was updated successfully, but these errors were encountered: