moogladder
Date | 2016-03-29 17:30 |
From | jpff |
Subject | moogladder |
Really a -dev topic but as there was discussion of moogladder here recently..... I have a version of moogladder that is much faster (manual example in 0.48s as against 1.8s). No tables but avoids tanh calls for small and large absolute arguments, as tanh is approx the same a x for |x|<0.5 and for |x|>4 it is sign(x). comparing results for that test shows audio is the same. Anyone wish to try? Not yet committed to git ==John ffitch Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here |
Date | 2016-03-30 18:23 |
From | Paul Batchelor |
Subject | Re: moogladder |
I would love to see the code for it. -POn Tue, Mar 29, 2016 at 9:30 AM, jpff <jpff@codemist.co.uk> wrote: Really a -dev topic but as there was discussion of moogladder here |
Date | 2016-03-30 21:09 |
From | Peter Burgess |
Subject | Re: moogladder |
Nice one! I'd like to give that a go :D On Wed, Mar 30, 2016 at 6:23 PM, Paul Batchelor |
Date | 2016-03-30 21:22 |
From | Anton Kholomiov |
Subject | Re: moogladder |
Attachments | pad-filters.csd |
Thank you for updates John! I’ve tried the new version of the moogladder on my test it shows approximately 2 times speed up: I’ve tried the moogladder on chord progression of pad sound. The single note contains two instances of the filter. The heaviest load is the final chord: 8 notes at the same time. So we get 16 of moogladders going on. My results:
Complete report of moogladder no-opt
moogladder new
Links to rendered files so you can listen to how it sounds: https://www.dropbox.com/s/cki05znt029ta8j/moogladder-sounds.zip?dl=0 I’ve attached the file is so you can reproduce the tests. 2016-03-30 20:23 GMT+03:00 Paul Batchelor <ralphbluecoat@gmail.com>:
|
Date | 2016-03-30 21:35 |
From | Anton Kholomiov |
Subject | Re: moogladder |
I've found out a discussion on how to calculate tanh. Maybe it can be useful: 2016-03-30 23:22 GMT+03:00 Anton Kholomiov <anton.kholomiov@gmail.com>:
|
Date | 2016-03-30 21:38 |
From | jpff |
Subject | Re: moogladder |
I looked at the differeces between the current and proposed systems and they are identical (almost). If you (all) are happy I will commit this version. i suspect I might be able to do more but time is pressing (I have an idea for a few more % but I need headspace for the mathematics and we need a new release) So should I commit this? ==John ff On Wed, 30 Mar 2016, Anton Kholomiov wrote: > > Thank you for updates John! > > I’ve tried the new version of the moogladder on my test it shows approximately > 2 times speed up: > > I’ve tried the moogladder on chord progression of pad sound. The single note > contains two instances of the filter. The heaviest load is the final chord: 8 > notes at the same time. So we get 16 of moogladders going on. > > My results: > > ;moogladder > ; final chord: 8 notes * 2 filters = 16 moogladders at the same time > > ; 62% -- no-opt (final chord) > ; 44% (first chord) > > ; 24% -- new (final chord) > ; 20% -- new (first chord) > > Complete report of top | grep csound: > > moogladder no-opt > > CPU Mem Time > > 39,5 0,3 0:01.41 csound > 44,8 0,3 0:02.76 csound > 37,5 0,3 0:03.89 csound > 38,8 0,3 0:05.06 csound > 43,8 0,3 0:06.38 csound > 26,5 0,3 0:07.18 csound > 43,5 0,3 0:08.49 csound > 32,9 0,3 0:09.48 csound > 62,7 0,3 0:11.37 csound > 18,3 0,3 0:11.92 csound > > moogladder new > > 11,3 0,3 0:00.34 csound-mg > 20,9 0,3 0:00.97 csound-mg > 13,9 0,3 0:01.39 csound-mg > 16,3 0,3 0:01.88 csound-mg > 16,3 0,3 0:02.37 csound-mg > 14,3 0,3 0:02.80 csound-mg > 16,3 0,3 0:03.29 csound-mg > 14,6 0,3 0:03.73 csound-mg > 24,2 0,3 0:04.46 csound-mg > 19,6 0,3 0:05.05 csound-mg > 8,3 0,3 0:05.30 csound-mg > > Links to rendered files so you can listen to how it sounds: > > https://www.dropbox.com/s/cki05znt029ta8j/moogladder-sounds.zip?dl=0 > > I’ve attached the file is so you can reproduce the tests. > > > 2016-03-30 20:23 GMT+03:00 Paul Batchelor |
Date | 2016-03-30 21:39 |
From | Anton Kholomiov |
Subject | Re: moogladder |
Someone have approximated it with polynomial in the Mapple: ~~~ The best rational approximation to tanh(x)tanh(x) with numerator and denominator of degree 3 on the interval [0,3.1][0,3.1] (as provided by Maple's minimax function) is
This (call it f(x)f(x)) has maximum error .2735944241730870e-4, which is considerably less than 2^(-8). ~~~ Maybe we can try out this solution? It should be much faster. The author says that it's defined for interval [-3, 3]. It can catch almost all signals for audio applications 2016-03-30 23:35 GMT+03:00 Anton Kholomiov <anton.kholomiov@gmail.com>:
|
Date | 2016-03-30 21:42 |
From | Anton Kholomiov |
Subject | Re: moogladder |
That's a good solution! You can commit it I guess. But maybe we can do better with that polynomial approximation? I'll try it out and report back. Maybe tomorrow.. 2016-03-30 23:38 GMT+03:00 jpff <jpff@codemist.co.uk>: I looked at the differeces between the current and proposed systems and they are identical (almost). If you (all) are happy I will commit this version. |
Date | 2016-03-30 21:43 |
From | Anton Kholomiov |
Subject | Re: moogladder |
As far as I understand In your solution we still use tanh on the interval [0.5, 1]. But maybe we can subst it with smth else on that interval I'll try it out. 2016-03-30 23:42 GMT+03:00 Anton Kholomiov <anton.kholomiov@gmail.com>:
|
Date | 2016-03-30 21:44 |
From | Victor Lazzarini |
Subject | Re: moogladder |
Table lookup would be faster if we are removing the function call. Victor Lazzarini Dean of Arts, Celtic Studies, and Philosophy Maynooth University Ireland
|
Date | 2016-03-30 21:59 |
From | Anton Kholomiov |
Subject | Re: moogladder |
It's not faster with polynomial solution. Surprisingly it's even worse on the final chord. ~~~ 5,3 0,3 0:00.16 csound-mg-poly 17,9 0,3 0:00.70 csound-mg-poly 18,9 0,3 0:01.27 csound-mg-poly 16,9 0,3 0:01.78 csound-mg-poly 17,6 0,3 0:02.31 csound-mg-poly 19,6 0,3 0:02.90 csound-mg-poly 14,3 0,3 0:03.33 csound-mg-poly 19,6 0,3 0:03.92 csound-mg-poly 18,3 0,3 0:04.47 csound-mg-poly 28,5 0,3 0:05.33 csound-mg-poly ~~~ 2016-03-30 23:44 GMT+03:00 Victor Lazzarini <Victor.Lazzarini@nuim.ie>:
|
Date | 2016-03-30 22:04 |
From | jpff |
Subject | Re: moogladder |
I tried a rational approx and it was the same speed Time for dinner now ==John PS I tried table look up and it did notin. On Wed, 30 Mar 2016, Anton Kholomiov wrote: > It's not faster with polynomial solution. Surprisingly it's even worse on the > final chord. > > ~~~ > 5,3 0,3 0:00.16 csound-mg-poly > 17,9 0,3 0:00.70 csound-mg-poly > 18,9 0,3 0:01.27 csound-mg-poly > 16,9 0,3 0:01.78 csound-mg-poly > 17,6 0,3 0:02.31 csound-mg-poly > 19,6 0,3 0:02.90 csound-mg-poly > 14,3 0,3 0:03.33 csound-mg-poly > 19,6 0,3 0:03.92 csound-mg-poly > 18,3 0,3 0:04.47 csound-mg-poly > 28,5 0,3 0:05.33 csound-mg-poly > ~~~ > > 2016-03-30 23:44 GMT+03:00 Victor Lazzarini |
Date | 2016-03-30 22:06 |
From | Steven Yi |
Subject | Re: moogladder |
Is this implementation a replacement or an additional processing method? I would prefer to have precision as an option, if possible. On Wed, Mar 30, 2016 at 5:04 PM, jpff |