<div dir="ltr">That's amazing, I was just discussing with Matt Barber about how to do a patch following Gardner's approach :) <div><br></div><div>that was gonna be my next step, and I can see how much more efficient it gets! I'll definitely check it out and follow that approach</div><div><br></div><div>cheers</div></div><br><div class="gmail_quote"><div dir="ltr">Em ter, 8 de jan de 2019 às 19:54, Philipp Schmalfuß <<a href="mailto:philipp.schmalfuss@uni-weimar.de">philipp.schmalfuss@uni-weimar.de</a>> escreveu:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Alexandre,<br>
<br>
i made a pd-vanilla abstraction for real time convolution a while ago.  <br>
it is part of a collection of pd abstractions that i am planning to  <br>
share with the community, soon...<br>
it loosely follows gardner's approach  <br>
<a href="http://www.cs.ust.hk/mjg_lib/bibs/DPSu/DPSu.Files/Ga95.PDF" rel="noreferrer" target="_blank">http://www.cs.ust.hk/mjg_lib/bibs/DPSu/DPSu.Files/Ga95.PDF</a><br>
<br>
with this, i get about 8-10% cpu-load with the church-IR and 64  <br>
samples min. fft-blocksize on an old lenovo t430 running linux.  <br>
however, i get the ugly clicks when i have more than one instance of  <br>
the abstraction running and on windows it causes pd-crashes, so i'm  <br>
not perfectly happy.<br>
i think it could be improved a lot by precomputing the IR like in your patch.<br>
<br>
<a href="https://we.tl/t-HYsWQww10V" rel="noreferrer" target="_blank">https://we.tl/t-HYsWQww10V</a><br>
<br>
cheers!<br>
<br>
Quoting Alexandre Torres Porres <<a href="mailto:porres@gmail.com" target="_blank">porres@gmail.com</a>>:<br>
<br>
> Bug, for some reason, you may need to recreate the object so the sound<br>
> comes out. I have no idea yet why...<br>
><br>
> Em ter, 8 de jan de 2019 às 14:52, Alexandre Torres Porres <<a href="mailto:porres@gmail.com" target="_blank">porres@gmail.com</a>><br>
> escreveu:<br>
><br>
>> oops, I hads uploaded the wrong file, here's the hopefully correct and<br>
>> last word on it<br>
>><br>
>> <a href="https://www.dropbox.com/s/05xl7ml171noyjq/convolution~.zip?dl=0" rel="noreferrer" target="_blank">https://www.dropbox.com/s/05xl7ml171noyjq/convolution~.zip?dl=0</a><br>
>><br>
>> and my CPU load is actually at about 57%, not 50%<br>
>><br>
>> The last file I uploaded was using a compiled object to perform the<br>
>> complex multiplication and that helped a little with the efficiency. I'm<br>
>> gonna use it for my non vanilla abstraction that I'm bringing into my ELSE<br>
>> library.<br>
>><br>
>> cheers<br>
>><br>
>><br>
>><br>
>> Em ter, 8 de jan de 2019 às 14:13, Alexandre Torres Porres <<br>
>> <a href="mailto:porres@gmail.com" target="_blank">porres@gmail.com</a>> escreveu:<br>
>><br>
>>> Ok, here's the new deal...<br>
>>><br>
>>> <a href="https://www.dropbox.com/s/l69gzv98g3th5d1/conv.rev~.zip?dl=0" rel="noreferrer" target="_blank">https://www.dropbox.com/s/l69gzv98g3th5d1/conv.rev~.zip?dl=0</a><br>
>>><br>
>>> there are two subpatches for testing, one is light with a relative big<br>
>>> window partition (1024) and a short Impulse Response (2 secs).<br>
>>><br>
>>> The other is quite heavy, it's an 8 sec long IR with a window size of<br>
>>> 512! This one takes just a bit over 50% of my CPU power, and I'm on a last<br>
>>> generation macbook pro (2.6Ghz processor)... but I need to increase the<br>
>>> Delay (msec) from 5 to 10 in the audio settings, otherwise I get terrible<br>
>>> clicks!<br>
>>><br>
>>> William Brent's convolve is ridiculously much more efficient, the same<br>
>>> parameters take about 14% of my CPU power and I can use a delay of 5 ms in<br>
>>> the audio settings.<br>
>>><br>
>>> But anyway, this is useful for teaching and apps that implement a light<br>
>>> convolution reverb (short IR/not too short window) need pure vanilla<br>
>>> (libpd/camomille and stuff)<br>
>>><br>
>>> Cheers!<br>
>>><br>
>>> Em dom, 6 de jan de 2019 às 14:25, Alexandre Torres Porres <<br>
>>> <a href="mailto:porres@gmail.com" target="_blank">porres@gmail.com</a>> escreveu:<br>
>>><br>
>>>> Meanwhile, I deleted the original file so people can't get it anymore :)<br>
>>>><br>
>>>> Em dom, 6 de jan de 2019 às 14:16, Alexandre Torres Porres <<br>
>>>> <a href="mailto:porres@gmail.com" target="_blank">porres@gmail.com</a>> escreveu:<br>
>>>><br>
>>>>> Hi, quick updates and developments over my weekend<br>
>>>>><br>
>>>>><br>
>>>>>> On Thursday, 3 January 2019, 04:19:50 GMT, Alexandre Torres Porres <<br>
>>>>>> <a href="mailto:porres@gmail.com" target="_blank">porres@gmail.com</a>> wrote:<br>
>>>>>><br>
>>>>>> what you think, is it working?<br>
>>>>><br>
>>>>><br>
>>>>> So, the patch/algorithm was wrong and I've fixed<br>
>>>>><br>
>>>>><br>
>>>>>> Both objects on the help file take about 40% of my CPU power, but I'm<br>
>>>>>> on a wild machine<br>
>>>>>><br>
>>>>><br>
>>>>> I was able to do a few more things and make it much more efficient<br>
>>>>><br>
>>>>><br>
>>>>>> I tried the idea of having each partition work with FFT saved on<br>
>>>>>> tables, so we wouldn't need to perform FFTs in different instances of<br>
>>>>>> clone, but that doesn't seem to be possible.<br>
>>>>><br>
>>>>><br>
>>>>> This is because things were wrong, like I said, now that I've fixed it,<br>
>>>>> that was possible.<br>
>>>>><br>
>>>>> But my current version is not vanilla anymore, as I'm developing this<br>
>>>>> object to include it in my "ELSE" library. Once I'm done I'll try to make<br>
>>>>> another vanilla compatible abstraction and re share it!<br>
>>>>><br>
>>>>> Cheers<br>
>>>>><br>
>>>><br>
><br>
<br>
<br>
</blockquote></div>