The only link I can find to download the source ( <a href="http://www.akustische-kunst.de/puredata/percolate.html">http://www.akustische-kunst.de/puredata/percolate.html</a> ) is down right now.&nbsp; Anyone know why, or if I can get the source elsewhere?
<br><br>regards,<br>Rich<br><br><div><span class="gmail_quote">On 3/12/07, <b class="gmail_sendername">Ivica Ico Bukvic</b> &lt;<a href="mailto:ico.bukvic@gmail.com">ico.bukvic@gmail.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi all,<br><br>For impatient, download at: <a href="http://ico.bukvic.net/Max/munger1~_1.0.0.tar.gz">http://ico.bukvic.net/Max/munger1~_1.0.0.tar.gz</a><br>(270KB, includes source, Linux-Pd-i386, Mac-Max-i386, and Win32-Max-i386
<br>binaries, and 3 cases of beer)<br><br>OVERVIEW<br>========<br><br>munger1~ (March 12, 2007 1.0.0 release)<br>a realtime multichannel granulator<br>a.k.a. the swiss-army-knife of realtime granular synthesis<br><br>a flext (cross-platform PD &amp; Max/MSP) port of
<br>the munger~ object from the PeRColate library (0.9 beta5)<br><a href="http://www.music.columbia.edu/PeRColate/">http://www.music.columbia.edu/PeRColate/</a><br><br>Original PeRColate library by:<br><br>Dan Trueman <a href="http://www.music.princeton.edu/~dan/">
http://www.music.princeton.edu/~dan/</a><br>R. Luke DuBois&#39;s <a href="http://www.lukedubois.com/">http://www.lukedubois.com/</a><br><br>Flext port and additions by:<br>Ivica Ico Bukvic <a href="http://ico.bukvic.net">
http://ico.bukvic.net</a><br>Ji-Sun Kim <a href="mailto:hideaway@vt.edu">hideaway@vt.edu</a><br><a href="http://www.music.vt.edu">http://www.music.vt.edu</a><br><a href="http://www.cctad.vt.edu">http://www.cctad.vt.edu</a>
<br><br>Released under GPL license<br>(whichever is the latest version--as of this release, version 2)<br>For more info on the GPL license please visit:<br><a href="http://www.gnu.org/copyleft/gpl.html">http://www.gnu.org/copyleft/gpl.html
</a><br><br>ACKNOWLEDGEMENTS<br>================<br><br>Many thanks to Dan Trueman for open-sourcing this great object!<br><br>SOURCE INSTALL<br>==============<br><br>If you simply intend to use prebuilt binaries, please skip to the INSTALL
<br>section. Otherwise take a big breath and read on...<br><br>1) You need stk library which can be downloaded from:<br><br><a href="http://ccrma.stanford.edu/software/stk/">http://ccrma.stanford.edu/software/stk/</a><br>
<br>2) You need to also install latest flext library (this is a library that<br>allows for creation of externals for both Max/MSP and PD using the same<br>source). Version 0.4.x can obtained from the following link:<br><br>
<a href="http://grrrr.org/ext/flext/">http://grrrr.org/ext/flext/</a><br><br>Latest CVS version (0.5.1) is found in the Pure-Data CVS (this one is<br>recommended):<br><br><a href="http://sourceforge.net/cvs/?group_id=55736">
http://sourceforge.net/cvs/?group_id=55736</a><br><br>3) If you are using latest CVS version (0.5.1) Before compiling the source<br>you will need to add the following to the top of the flext/source/flstk.h<br>file right below the #define __FLSTK_H:
<br><br>#ifdef PI<br>#undef PI<br>#endif<br><br>This step will probably become quickly obsolete once Thomas updates CVS.<br>Until then, this is needed to be able to compile flext against stk.<br><br>4) To compile flext, read flext instructions (it boils down to running
<br>build.sh with appropriate parameters and then editing two simple config<br>files, i.e. &quot;build pd gcc build&quot; or &quot;build max gcc&quot; or &quot;build max msvc&quot;<br>etc.)<br><br>Your will need to edit buildsys/config-&lt;platform-compiler-pdormax&gt;.txt to
<br>adjust paths to various folders.<br><br>Then you will need to edit config.txt file. You do not need to include<br>SndObj for this external but you do need stk option to be properly set. On<br>Windows+MSVC, STK flag at the time of this release does not work, so you
<br>will have to use included testmunger1 MSVC project file and adjust path<br>settings to compile munger1~.<br><br>5) Once stk and flext are compiled, go into munger1~ folder and type:<br><br>&lt;path to flext folder&gt;/build.sh &lt;platform&gt; &lt;compiler&gt; &lt;build/clean/install&gt;
<br><br>NB: on Mac &lt;build/clean/install&gt; is not needed. On Windows, please use MSVC<br>and open the testmunger1 project file in the root of the folder.<br><br>6) Once compiled, your binary will be created in a &lt;maxorpd-platform&gt;
<br>subfolder (i.e. pd-linux, or max-darwin), followed by another subfolder<br>which reflects whether a threaded or singlethread flext was used. Inside you<br>will find your external.<br><br>INSTALL<br>=======<br><br>You can either use the prebuilt externals (found in the bin/ folder) or ones
<br>built using the &quot;SOURCE INSTALL&quot; instructions above. Binaries are provided<br>for Intel-based Macs, Win32, and Intel-based Linux OS. The included prebuilt<br>binaries DO NOT REQUIRE you to install flext or stk as these are statically
<br>linked.<br><br>1) Copy the external in your externals folder (i.e. /usr/lib/pd/extra or<br>C:\Program Files\Cycling &#39;74\MaxMSP 4.6\Cycling &#39;74\externals\, or<br>&quot;Applications/MaxMSP 4.6/Cycling &#39;74/externals)
<br><br>2) Copy appropriate help file (found in the help/ folder) into the help<br>folder (i.e. /usr/lib/pd/doc/5.reference or C:\Program Files\Cycling<br>&#39;74\MaxMSP 4.6\max-help, or &quot;Applications/MaxMSP 4.6/max-help)
<br><br>NB: Pd help file has a &quot;.pd&quot; extension, while Max/MSP help file has a<br>&quot;.help&quot; extension.<br><br>3) Start your app (PD or Max) and create object called munger1~. Right-click<br>(ctrl-click on Macs) and select &quot;help&quot; and this should open the help file
<br>with additional documentation.<br><br>Questions? See OVERVIEW for contact and Q&amp;A info.<br><br>Enjoy!<br><br>FAQ<br>===<br><br>The following is Ico&#39;s FAQ, so it may or may not reflect other project<br>participants&#39; opinions, including original author(s) of munger~, flext, etc.
<br><br>Q: Why porting to flext?<br>A: Flext library (by Thomas Grill) is a layer which allows creation of<br>externals for both Max/MSP and PD without any alterations to the code<br>(obviously once it is adapted to use flext). While there have been a number
<br>of Max/MSP &lt;-&gt; PD external ports in the past, many of them have become<br>outdated because such attempts required either maintaining one code full of<br>ugly #ifdefs, or worse--maintaining two sources. Either way, what usually
<br>turned out to be the case is that original authors did not have the time,<br>interest, or simply the software/hardware to deal with the newly generated<br>overhead and/or test the code, while volunteers who made the original
<br>porting efforts eventually moved on to other projects. The result was/is<br>outdated and/or broken externals. Flext circumvents this problem by allowing<br>one clean code to compile on both platforms while also supplying in many
<br>cases cleaner (more legible) API and (as a whipped cream on top)<br>object-oriented environment (C++).<br><br>Q: Why bother with PD &lt;-&gt; Max/MSP cross-platform compatibility...<br>&nbsp;&nbsp; ...when I use only &lt;insert-your-favorite-application-here&gt;?
<br>&nbsp;&nbsp; ...&lt;insert-your-favorite-application-here&gt; is better?<br>A: Choice is what makes us human (this is also what makes Arts so vibrant<br>and exciting). And while everyone&#39;s welcome to express their own<br>preferences, we also have to realize that in this case these same
<br>preferences are also the main cause of a virtual divide which manifests<br>itself at everyone&#39;s detriment. Wouldn&#39;t it be nicer if we could share<br>externals transparently, or even better, open PD patches in Max and
<br>vice-versa? This would help in both the cross-pollination of ideas as well<br>as creative efforts. This project has also taught me that creating<br>flext-ready externals is as easy if not easier (due to the aforesaid API&#39;s
<br>legibility) than native objects (whether that be PD or Max/MSP). Finally, if<br>all else fails, such externals are bound to reach wider audience, and are<br>much easier to maintain if cross-platform compatibility is to be pursued.
<br><br>Q: If flext is so cool, why don&#39;t we see more porting efforts?<br>A: Good question. The fact is that flext is much more widely known among PD<br>users than it is among the Max/MSP community, so this seemingly one-way road
<br>may have contributed to the current situation. One could only hope that<br>projects like this may help reverse this unfortunate trend.<br><br>Q: So, is all really that peachy in the flext-land?<br>A: Well, our lives teach us that nothing is truly free in this world. Flext
<br>is no exception. Its &quot;fees,&quot; however are not tied to our checkbooks. Rather,<br>they manifest themselves in a slightly greater CPU overhead in signal flow<br>due to message translation. Thus, one could consider flext a &quot;middle-person&quot;
<br>between the &lt;app-of-your-choice&gt; and the external. This, however, in today&#39;s<br>world is so negligible that during the testing phase I was unable to measure<br>any noticeable CPU-overhead difference.<br><br>
Another consideration is that flext might not be complete (see KNOWN ISSUES<br>for an example). That being said, in its current state it did the trick for<br>a relatively complex external such as munger~ or even FFTEASE collection
<br>which had been ported several years ago. All this leads me to believe that<br>it is more than ready for the day-to-day use.<br><br>KNOWN ISSUES<br>============<br><br>munger1~ has been tested extensively on Linux+PD, OSX+Max/MSP and
<br>Win32+Max/MSP setups, suggesting that it should work on other setups as<br>well. Your mileage may vary, though.<br><br>Currently there is only one known issue in the wild which requires changes<br>to flext in order to be fixed. Namely, if you use munger1~ object in
<br>conjunction with an external buffer in PD (known as an array) and if you<br>dubiously decide to delete that particular buffer in the middle of your<br>performance while munger1~ is still associated with it, this will<br>
[unsurprisingly] crash PD. Max/MSP currently has a check implemented against<br>that via flext layer so Max/MSP will simply stop outputting anything until<br>buffer is reset. The flext author is aware of this and PD fix should appear
<br>in the flext CVS hopefully soon. That being said, the lingering question is<br>why would you want to do this in the first place...<br><br>FYI, even though munger1~ allows up to 500 simultaneous grains per sample<br>and has been compiled with all available optimizations (SSE, Altivec is
<br>supposedly available via flext but has not been tested), on MBP (Core Duo<br>1.83GHz) I was unable to get more than 160 simultaneous grains per sample<br>(or ~32,000 grains/second) without dropouts, even though CPUs were not
<br>getting maxed out, so something else might be the cause of this limitation<br>(flext?). Win32 machine (3-year old AMD64 3000+) fared marginally better at<br>around 165 simultaneous grains per sample (or ~33,000 grains/second) before
<br>its CPU was maxed out. Linux on the same AMD64 3000+ hardware fared the<br>best. It topped off at 47,999 grains per second at 48KHz sampling rate which<br>for some reason the sampling rate appears to be the upper limit (
i.e. if you<br>run PD or Max/MSP at lower sampling rates, your upper limit will be<br>restricted to the sampling rate), even though the code allows for multiple<br>initiations of grains per cycle. This, however, is also the way original
<br>munger~ works.<br><br>An interesting bit is that while on Linux/PD combo 48K grains are already<br>reached when we get 64 simultaneous grains, on Win32/Mac even 160<br>simultaneous grains yield only ~32-33K grains. Could this be a flext bug?
<br><br><br>Best wishes,<br><br>Ivica Ico Bukvic, D.M.A.<br>Composition, Music Technology, CCTAD, CHCI<br>Virginia Tech<br>Dept. of Music - 0240<br>Blacksburg, VA 24061<br>(540) 231-1137<br>(540) 231-5034 (fax)<br><a href="mailto:ico@vt.edu">
ico@vt.edu</a><br><a href="http://www.music.vt.edu/people/faculty/bukvic/">http://www.music.vt.edu/people/faculty/bukvic/</a><br><br><br><br><br>_______________________________________________<br><a href="mailto:PD-list@iem.at">
PD-list@iem.at</a> mailing list<br>UNSUBSCRIBE and account-management -&gt; <a href="http://lists.puredata.info/listinfo/pd-list">http://lists.puredata.info/listinfo/pd-list</a><br></blockquote></div><br>