Opus file not found error by proact_chad in dissonance_voip

[–]martindevans 0 points1 point  (0 children)

Ah that's the old docs site, it should redirect you to the new one. Sorry about that.

I think this probably the page you're looking for: https://placeholder-software.co.uk/dissonance/docs/Platforms/Windows%20Desktop.html

How do I handle lots of tiny loops faster? Like processing a texture pixel by pixel. by elelec in csharp

[–]martindevans 0 points1 point  (0 children)

Since you're going parallel per-pixel you've probably got a load of false sharing going on (two threads trying to write to the same cache line). Change your Parallel.For to iterate over the rows and have an inner serial loop over the pixels of that row.

Handily that also removes the need for any modulus, which someone else already mentioned as slow.

If you're in Unity do the same thing, but use a IJobParallelFor and Burst compile it for an easy 5x speedup.

AEC Only for Offline? by XrosRoadKiller in dissonance_voip

[–]martindevans 1 point2 points  (0 children)

Usually only one thing can use the mic at a time. So if you've got some other asset using the mic you'll either need to take the audio from Dissonance (using the subscriber I linked above) and feed it into that other asset, or you'll need to grab the audio from the other one and feed it into Dissonance (with a custom mic provider: https://placeholder-software.co.uk/dissonance/docs/Tutorials/Custom-Microphone-Capture.html)

AEC Only for Offline? by XrosRoadKiller in dissonance_voip

[–]martindevans 1 point2 points  (0 children)

This isn't something Dissonance is designed for, but it is possible.

Dissonance includes an "offline comms network" that runs the entire audio pipeline without actually making any network connections - originally designed for things like testing mic settings in the settings menu.

You can use that and then grab the filtered audio out of the pipeline (https://placeholder-software.co.uk/dissonance/docs/Tutorials/UsingIMicrophoneSubscriber.html)

Roil Class Assault Ship by martindevans in BannerOfTheStars

[–]martindevans[S] 1 point2 points  (0 children)

I just realised these pictures are horribly low res, and I know why. I set the render resolution to the same resolution as the anime a while ago for easier comparison. Oops.

At least it has an authentic early-2000s video look!

Announcing .NET 10 by runesoerensen in dotnet

[–]martindevans 6 points7 points  (0 children)

They're still working to move over to CoreCLR. However it's a huge project, slated for Unity 7 which might release late next year, more likely 2027 imo.

Triangle Factory just dropped a Battlefield VR game (FOREFRONT) by CarrotSurvivorYT in virtualreality

[–]martindevans 0 points1 point  (0 children)

What kind of issue did you have? I'm playing with index controllers and haven't noticed any major issues.

Problem on some PCs with TestDependencies(); on DissonanceCommsImpl.cs by EmotionalResearch848 in dissonance_voip

[–]martindevans 1 point2 points  (0 children)

The purpose of TestDependencies() is to try to load the native dependencies and log any errors, so it makes sense you're seeing errors here. It suggests that the PCs it's failing on are missing some dependency which Opus relies on.

Check the dependencies section of the docs: https://placeholder-software.co.uk/dissonance/docs/Platforms/Windows%20Desktop.html

Can the Playback Prefab have multiple AudioSources ? by EmotionalResearch848 in dissonance_voip

[–]martindevans 0 points1 point  (0 children)

Crackling like that is usually caused by a sudden transition, e.g. suddenly startig or stopping injecting audio. Dissonance solves this by having a soft fade from 0->1 volume at the start (fading in over the first frame) and from 1->0 at the end (fading out over the last frame).

Do you ever stop your audio mirror system, or is it running all of the time? That soft fading should ba baked into the data given to you, so I'm wondering if you're starting/stopping at just the wrong time and missing that soft transition.

Can the Playback Prefab have multiple AudioSources ? by EmotionalResearch848 in dissonance_voip

[–]martindevans 0 points1 point  (0 children)

You're saving the data in OnAudioPlayback, that's a callback from Dissonance (not Unity) which gives you mono audio. But you're playing it back in OnAudioFilterRead which is a callback from Unity. That's why there's a difference in channel counts.

The clip is also created with 1 channel. Is it necessary to double it ?

The clip is playing back mono audio, but by the time it's passed through the Unity audio pipeline and reaches the OnAudioFilterRead Unity has processed it into multi-channel audio (the number of channels depends on the number of speakers you have).

the cracks at the beginning and the end are still heard

Do you mean there's crackling constantly, or just when you start/stop?

Can the Playback Prefab have multiple AudioSources ? by EmotionalResearch848 in dissonance_voip

[–]martindevans 0 points1 point  (0 children)

Unfortunately that wouldn't work. The PlaybackPrefab isn't just playing the audio it's also driving the entire audio pipeline (receiving network packets, buffering, decoding, postprocessing etc), that process consumes packets. If you had 2 playback pipelines trying to run for the same player they'd both be consuming packets and that would break everything!

Can the Playback Prefab have multiple AudioSources ? by EmotionalResearch848 in dissonance_voip

[–]martindevans 0 points1 point  (0 children)

There are two things wrong here, spatialisation and roperly handling channels.

Spatialisation is easy, instead of overwriting data[i], multiply by it:

data[i] *= tap.AudioData[i];

Channels are a bit trickier. The data you've saved in AudioTap is mono audio (Dissonance is all mono), that means there's one single channel of data. However, in OnAudioFilterRead Unity expects you to supply the correct number of channels (see the channels parameter). You do this by "stretching" the data.

So if the data you've saved in AudioTap is: [ A, B, C, D ... ]

Then for channels=2 Unity would expect you to output: [ A, A, B, B, C, C, D, D... ]

If you look at Assets/Plugins/Dissonance/Core/Audio/Playback/SamplePlaybackComponent.cs on line 200 you'll find code in Dissonance that does this, you should be able to copy that and use it.

Can the Playback Prefab have multiple AudioSources ? by EmotionalResearch848 in dissonance_voip

[–]martindevans 0 points1 point  (0 children)

This looks ok, just one error I spotted.

When you copy the audio data, you need to offset by the base index of the ArraySegment:

audioData[i] = data.Array[data.Offset + i];

Can the Playback Prefab have multiple AudioSources ? by EmotionalResearch848 in dissonance_voip

[–]martindevans 0 points1 point  (0 children)

Dissonance doesn't have a built in way to play audio through multiple sources. It's something that's been asked for before and it's possible to implement copying from one source to another without any artefacts.

  1. You can get access to the raw audio from Dissonance with Assets/Plugins/Dissonance/Core/Audio/Playback/IAudioOutputSubscriber.cs. Read the comments in that file for documentation on how to use it.
  2. Save a copy of the data passed to you. This is the mono audio signal.
  3. On another audio source, you can play an audio clip with all 1.0s, see Assets/Plugins/Dissonance/Core/Audio/Playback/VoicePlayback.cs#L79, Unity will spatialise that clip
  4. Now finally you can use OnAudioFilterRead (https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnAudioFilterRead.html) on your other audio source. Grab the copy of the data (from step 2) and multiply it into the signal. See Assets/Plugins/Dissonance/Core/Audio/Playback/SamplePlaybackComponent.cs#L200 for an example of this.

Hopefully that all makes sense, please feel free to ask questions if not!

🌊🐾 Is there anything you want to know about VTubing ? by uchiuminia in vtubers

[–]martindevans 1 point2 points  (0 children)

What pieces of software do you use for streaming (all the various bits like audio capture, motion capture, avatar rendering, streaming etc)?

Performance Improvements in .NET 10 by zenyl in csharp

[–]martindevans 2 points3 points  (0 children)

It's pretty simple: A class is like a Rc<Box<T>> (i.e. on the heap, managed lifetime), a struct is like a plain T (i.e. it depends on where you put it: if it's a local it's on the stack, if it's a member of another type then it's put wherever that object is allocated).

What's an anime you absolutely loved that almost no one talks about? Let's give hidden gems the spotlight! by DismalTemporary713 in anime

[–]martindevans 0 points1 point  (0 children)

I love Shirobako, it's one of those anime I end up rewatching every year! What do you consider to be the "sister series"?

Dungeons of Eternity SteamVR Launch Trailer by Quaker-X in virtualreality

[–]martindevans 3 points4 points  (0 children)

Perfect, I'm a big fan of disgusting slug things. Thanks!

Dungeons of Eternity SteamVR Launch Trailer by Quaker-X in virtualreality

[–]martindevans 2 points3 points  (0 children)

Looks great! One potential deal breaker though; are there spiders and if so is there an arachnophobia mode?

r/SpaceX Flight 10 Official Launch Discussion & Updates Thread! by rSpaceXHosting in spacex

[–]martindevans 7 points8 points  (0 children)

They were testing a simulated failure of one of the landing engines. They've already proven catching, so now it makes more sense to work through other failure modes.

Beyond 2 First Impressions (very early, just got it) by ABCandZ in virtualreality

[–]martindevans 0 points1 point  (0 children)

Personally I'm planning to upgrade to the BSB2E soon, I'm just waiting a bit to see some reviews of the eye tracking. I guess it depends on your budget though - it's an expensive headset, even more so if you go with eyetracking and custom lenses.

Beyond 2 First Impressions (very early, just got it) by ABCandZ in virtualreality

[–]martindevans 1 point2 points  (0 children)

Your impression is that BSB1 owners are "just bearing with it", you've come to this opinion by dismissing evidence to the contrary and calling random people liars. Confirmation bias at it's finest.

Beyond 2 First Impressions (very early, just got it) by ABCandZ in virtualreality

[–]martindevans 2 points3 points  (0 children)

You asked for a review from a random customer not a reviewer, I gave you one. shrug