libera/#shirakumo - IRC Chatlog
Search
19:35:21
Colleen
<shinmera> anyone here willing to figure out why my stereo to 5.1 upmixer is broken?
19:36:10
Colleen
<|3b|> ACTION is too busy finding new and annoying ways for bezier intersection to be broken :p
19:37:16
Colleen
<|3b|> (currently trying to fix "finds different # of intersections for (intersect a b) and (intersect b a)" )
19:38:53
Colleen
<|3b|> yeah, that was one options (though more "intersection of results" than "remove duplicates), but i think doing it once but symmetrically is easier
19:39:33
Colleen
<|3b|> which is sort of "do both", but doing them at the same time so it hopefully converges faetsr
19:39:57
Colleen
<shinmera> anyhow, my function is this https://github.com/Shirakumo/libmixed/blob/master/src/segments/channel.c#L158-L210
19:41:00
Colleen
<|3b|> if the problem is "find intersections to within some finite tolerance", then returning 1 intersection if there are 2 in that tolerance is correct
19:41:41
Colleen
<selwyn> shinmera: there was a bug in surround sound some time ago that we spent a lot of time figuring out
19:42:17
Colleen
<shinmera> anyhow. When I configure my windows device for 5.1 and run kandria I get horrible artefacts
19:45:16
Colleen
<shinmera> I'm pretty sure this is also what's happening on other people's systems that have reported bad audio distortion
19:50:22
Colleen
<|3b|> if you write zero to some or all channels, can you tell if it is a specific one that is noisy?
19:53:13
Colleen
<|3b|> maybe instead multiply them by globals that you could set from lisp, so at least you don't have to recompile as much
19:55:52
Colleen
<shinmera> http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.177.3861&rep=rep1&type=pdf
20:00:02
Colleen
<shinmera> yeah, no, samples are definitely [-1,+1]. So that subtraction is suspect for sure.
20:08:01
Colleen
<shinmera> though on this laptop it might also get distortions just from being slow
20:20:23
Colleen
<shinmera> or rather, one class of distortions is no longer present it seems (the horrible pops kind)
20:21:00
Colleen
<shinmera> I tried copy-pasting the method used in SDL2, which is much less complex
20:27:47
Colleen
<|3b|> do you have distinct speakers you could move closer to to try to distinguish if it is any particular one?
20:39:05
Colleen
<shinmera> Well, if anyone cares to find out how to fix my implementation, I would be very grateful
20:39:28
Colleen
<shinmera> For now I'm going to comment out the rear processing with the hilbert and just use the SDL2 hack instead.
20:55:21
Colleen
<|3b|> ACTION would try putting a *0.6 in the hilbert and see if that sounds better
20:55:34
Colleen
<|3b|> (and if so, figure out what the correct value would be and put that in instead)
20:56:44
Colleen
<shinmera> I'll give that a shot tomorrow. I'm already doing way too much OT today :)
21:07:32
Colleen
<|3b|> though i guess it is returning a sum, so multiplying the values being added is the same as multiplying the sum
21:08:54
Colleen
<shinmera> so I'm skeptical of this doing anything except making the noise quieter.
21:25:56
Colleen
<|3b|> if data->delay is only used for hilbert. is there any reason for the variable size? seems like hilbert always looks at a fixed amount of it
21:26:51
Colleen
<|3b|> ACTION doesn't expect it to be too small with current code unless you managed to get 16KHz output somehow, but still odd
21:27:35
Colleen
<|3b|> though if the intent is to make it do so at some point, that would explain it
21:27:44
Colleen
<shinmera> but it's been years since I wrote this and even then I didn't understand it well :p
21:28:27
Colleen
<|3b|> ah, possibly replacing - with + would do something closer to that, delay of buffer size - 100 samples
21:30:10
Colleen
<shinmera> right now what's bothering me most though is the amount of repetition in channel.c reallyyyy wish I had proper macros.
21:50:48
Colleen
<|3b|> and i'm not sure it is even doing -foo%size, it might be doing ((uint32)-foo)%size which is even more not what you want
21:54:31
Colleen
<|3b|> and if - does turn out to be right for some reason, add delay_size to it so it is always +%+ instead of -%+ sometimes