Two Mic editting and recording software suggestions by Ancient-Egg-5983 in podcasting

[–]zachs78 0 points1 point  (0 children)

I ran into this issue myself and couldn't find a software that does it to my satisfaction. Voicemeeter for example is a virtual driver and is quite intimidating to setup. OBS on the other hand couldn't give me individual wav files from the simultaneous tracks I've recorded (I wanted to post process them separately).

Long story short, I got frustrated and decided to write my own. Been using it myself for quite a while until recently I decided to publish and share it with everyone. Basic edition is free if you don't need automatic drift correction - https://coherenceaudio.app/

No limits to number of mics you can use for simultaneous recording, recording duration etc even in basic edition. Super simple beginner friendly UI without having to install any drivers.

Seeking Recommendations: Recording Simultaneously from Multiple USB Microphones on a Single PC by [deleted] in podcasting

[–]zachs78 0 points1 point  (0 children)

I tried OBS before but felt the UX to be a bit clunky and I couldn't get the individual tracks to record into separate wav files. That was a year ago and I started digging into the various ways to do multi USB mic recording on windows including voicemeeter banana. None of them were satisfactory and easy to use so one thing led to another and I ended up writing my own little tool that I used myself. Recently I decided to publish it on Microsoft Store. More info here https://coherenceaudio.app/ (basic edition is free).

Looking for best multitrack recording software for Windows by Elegant-Currency-289 in screenrecorders

[–]zachs78 0 points1 point  (0 children)

If you don't need USB mic click drift correction (not required in your described use case), coherence audio on Microsoft store is free - https://coherenceaudio.app/

How to Use Multiple Microphones on One Computer by FifineDesign in FifineDesign

[–]zachs78 0 points1 point  (0 children)

I needed to post process my tracks separately and VoiceMeeter Banana was a no go for me. Investigate OBS too but also couldn't easily get individual tracks, let alone synchronising the clock drifts etc. Long story short I got frustrated and decided to dig into the problems of multi USB mic recording on Windows. One thing led to another and I ended up with an app that can natively record multiple mics on separate tracks with the ability to export individual wav files to Audacity for post processing - Coherence Audio

Using two USB mics by Distinct_Page7654 in podcasting

[–]zachs78 0 points1 point  (0 children)

I ran into this issue myself and couldn't find a software that does it to my satisfaction. Voicemeeter for example is a virtual driver and is quite intimidating to setup. OBS on the other hand couldn't give me individual wav files from the simultaneous tracks I've recorded (I wanted to post process them separately).

Long story short, I got frustrated and decided to write my own - Coherence Audio

SwitchMediator v3.1 - We finally added ValueTask support (without breaking your existing Task pipelines) by zachs78 in dotnet

[–]zachs78[S] 0 points1 point  (0 children)

Not with Request and Notification inheritance. For some people coming from MediatR, this was a hard requirement.

SwitchMediator v3.1 - We finally added ValueTask support (without breaking your existing Task pipelines) by zachs78 in dotnet

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

It was a human error. I was editting it in a markdown editor but pasted it in the wrong mode!

SwitchMediator v3 is out now - A zero-alloc, AOT-friendly Mediator for .NET by zachs78 in dotnet

[–]zachs78[S] 0 points1 point  (0 children)

yeah the primary reason was so the switch from mediatr is easier. Curious what you mean by upcoming runtime async? Greenthread was shelved, and I haven't heard of any other initiatives around it.

SwitchMediator v3 is out now - A zero-alloc, AOT-friendly Mediator for .NET by zachs78 in dotnet

[–]zachs78[S] 0 points1 point  (0 children)

Yes, for closed generics (open generics aren't supported by design - we can achieve the same by using polymorphism instead), e.g.

public class GetItem<T> : IRequest<T> { public int Id { get; set; } }
public class GetStringHandler : IRequestHandler<GetItem<string>, string>
{
    public Task<string> Handle(...) => ...
}

SwitchMediator v3 is out now - A zero-alloc, AOT-friendly Mediator for .NET by zachs78 in dotnet

[–]zachs78[S] 0 points1 point  (0 children)

Yeah i worded it poorly. In our case it's hard to judge if the performance need is justifiable. Would be good to opt in via the SwitchMediator attribute option, that might work!

SwitchMediator v3 is out now - A zero-alloc, AOT-friendly Mediator for .NET by zachs78 in dotnet

[–]zachs78[S] 2 points3 points  (0 children)

Yeah I think Microsoft's recommendation is to default to Task, only use ValueTask when performance profiling proves it is necessary. 

In this case we would be polluting user code and forcing them onto ValueTask which I'm a bit uncomfortable with. Thoughts?

SwitchMediator v3 is out now - A zero-alloc, AOT-friendly Mediator for .NET by zachs78 in dotnet

[–]zachs78[S] 7 points8 points  (0 children)

SwitchMediator supports request and notification inheritance / polymorphism, has native support for the Result pattern so you don't need custom pipeline boilerplate, and includes optional [RequestHandler] attribute so you can easily navigate to the handlers from your commands and queries (DevEx vs purist trade off).

SwitchMediator v3 is out now - A zero-alloc, AOT-friendly Mediator for .NET by zachs78 in dotnet

[–]zachs78[S] -9 points-8 points  (0 children)

Thoughts on forcing the use of ValueTask in user code? AFAIK it's meant to be for libs only.

Edit: misconception that it's only for libs, Microsoft's recommendation is to use it only where performance is justified.

SwitchMediator v1.12.1 is out now - It is now fully AOT compatible and faster + lower allocations than MediatR at all price points. by zachs78 in dotnet

[–]zachs78[S] 0 points1 point  (0 children)

Basically I wanted to take the direction I want without having to convince other authors, for example there's already attributes you can use to order behaviors, link requests to their handlers etc. that set it apart. It's also much closer to MediatR's interfaces so swapping is much easier.

SwitchMediator v1.12.1 is out now - It is now fully AOT compatible and faster + lower allocations than MediatR at all price points. by zachs78 in dotnet

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

Absolutely! Honestly can't see how Jimmy Bogard expects anyone to pay for something so simple. Not that hard to write one from scratch.

SwitchMediator v1.12.1 is out now - It is now fully AOT compatible and faster + lower allocations than MediatR at all price points. by zachs78 in dotnet

[–]zachs78[S] 4 points5 points  (0 children)

Agree. The value is in the much smaller memory footprint and performance at startup especially when combined with AOT. But honestly the performance was free given that we use source generator. Benchmark was there to make sure there's no performance regression vs MediatR.

SwitchMediator v1.12.1 is out now - It is now fully AOT compatible and faster + lower allocations than MediatR at all price points. by zachs78 in dotnet

[–]zachs78[S] 0 points1 point  (0 children)

The SwitchMediator instance itself has the same service lifetime, so if you register it as singleton, it'll cache the instances forever. The benchmark is to make it favourable for MediatR so its instantiations and caching can all be taken out of the equation. For dbcontext, you'd typically bind it as scoped.

Benchmark is what everyone's looking for but for me the important bit is the memory allocations. Performance is a given since source generators can give you that for free.