Hi all,
For impatient, download at: http://ico.bukvic.net/Max/munger1~_1.0.0.tar.gz (270KB, includes source, Linux-Pd-i386, Mac-Max-i386, and Win32-Max-i386 binaries, and 3 cases of beer)
munger1~ (March 12, 2007 1.0.0 release) a realtime multichannel granulator a.k.a. the swiss-army-knife of realtime granular synthesis
a flext (cross-platform PD & Max/MSP) port of the munger~ object from the PeRColate library (0.9 beta5) http://www.music.columbia.edu/PeRColate/
Original PeRColate library by:
Dan Trueman http://www.music.princeton.edu/~dan/ R. Luke DuBois's http://www.lukedubois.com/
Flext port and additions by: Ivica Ico Bukvic http://ico.bukvic.net Ji-Sun Kim hideaway@vt.edu http://www.music.vt.edu http://www.cctad.vt.edu
Released under GPL license (whichever is the latest version--as of this release, version 2) For more info on the GPL license please visit: http://www.gnu.org/copyleft/gpl.html
Many thanks to Dan Trueman for open-sourcing this great object!
If you simply intend to use prebuilt binaries, please skip to the INSTALL section. Otherwise take a big breath and read on...
http://ccrma.stanford.edu/software/stk/
allows for creation of externals for both Max/MSP and PD using the same source). Version 0.4.x can obtained from the following link:
Latest CVS version (0.5.1) is found in the Pure-Data CVS (this one is recommended):
http://sourceforge.net/cvs/?group_id=55736
you will need to add the following to the top of the flext/source/flstk.h file right below the #define __FLSTK_H:
#ifdef PI #undef PI #endif
This step will probably become quickly obsolete once Thomas updates CVS. Until then, this is needed to be able to compile flext against stk.
build.sh with appropriate parameters and then editing two simple config files, i.e. "build pd gcc build" or "build max gcc" or "build max msvc" etc.)
Your will need to edit buildsys/config-<platform-compiler-pdormax>.txt to adjust paths to various folders.
Then you will need to edit config.txt file. You do not need to include SndObj for this external but you do need stk option to be properly set. On Windows+MSVC, STK flag at the time of this release does not work, so you will have to use included testmunger1 MSVC project file and adjust path settings to compile munger1~.
<path to flext folder>/build.sh <platform> <compiler> <build/clean/install>
NB: on Mac <build/clean/install> is not needed. On Windows, please use MSVC and open the testmunger1 project file in the root of the folder.
subfolder (i.e. pd-linux, or max-darwin), followed by another subfolder which reflects whether a threaded or singlethread flext was used. Inside you will find your external.
You can either use the prebuilt externals (found in the bin/ folder) or ones built using the "SOURCE INSTALL" instructions above. Binaries are provided for Intel-based Macs, Win32, and Intel-based Linux OS. The included prebuilt binaries DO NOT REQUIRE you to install flext or stk as these are statically linked.
C:\Program Files\Cycling '74\MaxMSP 4.6\Cycling '74\externals, or "Applications/MaxMSP 4.6/Cycling '74/externals)
folder (i.e. /usr/lib/pd/doc/5.reference or C:\Program Files\Cycling '74\MaxMSP 4.6\max-help, or "Applications/MaxMSP 4.6/max-help)
NB: Pd help file has a ".pd" extension, while Max/MSP help file has a ".help" extension.
(ctrl-click on Macs) and select "help" and this should open the help file with additional documentation.
Questions? See OVERVIEW for contact and Q&A info.
Enjoy!
The following is Ico's FAQ, so it may or may not reflect other project participants' opinions, including original author(s) of munger~, flext, etc.
Q: Why porting to flext? A: Flext library (by Thomas Grill) is a layer which allows creation of externals for both Max/MSP and PD without any alterations to the code (obviously once it is adapted to use flext). While there have been a number of Max/MSP <-> PD external ports in the past, many of them have become outdated because such attempts required either maintaining one code full of ugly #ifdefs, or worse--maintaining two sources. Either way, what usually turned out to be the case is that original authors did not have the time, interest, or simply the software/hardware to deal with the newly generated overhead and/or test the code, while volunteers who made the original porting efforts eventually moved on to other projects. The result was/is outdated and/or broken externals. Flext circumvents this problem by allowing one clean code to compile on both platforms while also supplying in many cases cleaner (more legible) API and (as a whipped cream on top) object-oriented environment (C++).
Q: Why bother with PD <-> Max/MSP cross-platform compatibility... ...when I use only <insert-your-favorite-application-here>? ...<insert-your-favorite-application-here> is better? A: Choice is what makes us human (this is also what makes Arts so vibrant and exciting). And while everyone's welcome to express their own preferences, we also have to realize that in this case these same preferences are also the main cause of a virtual divide which manifests itself at everyone's detriment. Wouldn't it be nicer if we could share externals transparently, or even better, open PD patches in Max and vice-versa? This would help in both the cross-pollination of ideas as well as creative efforts. This project has also taught me that creating flext-ready externals is as easy if not easier (due to the aforesaid API's legibility) than native objects (whether that be PD or Max/MSP). Finally, if all else fails, such externals are bound to reach wider audience, and are much easier to maintain if cross-platform compatibility is to be pursued.
Q: If flext is so cool, why don't we see more porting efforts? A: Good question. The fact is that flext is much more widely known among PD users than it is among the Max/MSP community, so this seemingly one-way road may have contributed to the current situation. One could only hope that projects like this may help reverse this unfortunate trend.
Q: So, is all really that peachy in the flext-land? A: Well, our lives teach us that nothing is truly free in this world. Flext is no exception. Its "fees," however are not tied to our checkbooks. Rather, they manifest themselves in a slightly greater CPU overhead in signal flow due to message translation. Thus, one could consider flext a "middle-person" between the <app-of-your-choice> and the external. This, however, in today's world is so negligible that during the testing phase I was unable to measure any noticeable CPU-overhead difference.
Another consideration is that flext might not be complete (see KNOWN ISSUES for an example). That being said, in its current state it did the trick for a relatively complex external such as munger~ or even FFTEASE collection which had been ported several years ago. All this leads me to believe that it is more than ready for the day-to-day use.
munger1~ has been tested extensively on Linux+PD, OSX+Max/MSP and Win32+Max/MSP setups, suggesting that it should work on other setups as well. Your mileage may vary, though.
Currently there is only one known issue in the wild which requires changes to flext in order to be fixed. Namely, if you use munger1~ object in conjunction with an external buffer in PD (known as an array) and if you dubiously decide to delete that particular buffer in the middle of your performance while munger1~ is still associated with it, this will [unsurprisingly] crash PD. Max/MSP currently has a check implemented against that via flext layer so Max/MSP will simply stop outputting anything until buffer is reset. The flext author is aware of this and PD fix should appear in the flext CVS hopefully soon. That being said, the lingering question is why would you want to do this in the first place...
FYI, even though munger1~ allows up to 500 simultaneous grains per sample and has been compiled with all available optimizations (SSE, Altivec is supposedly available via flext but has not been tested), on MBP (Core Duo 1.83GHz) I was unable to get more than 160 simultaneous grains per sample (or ~32,000 grains/second) without dropouts, even though CPUs were not getting maxed out, so something else might be the cause of this limitation (flext?). Win32 machine (3-year old AMD64 3000+) fared marginally better at around 165 simultaneous grains per sample (or ~33,000 grains/second) before its CPU was maxed out. Linux on the same AMD64 3000+ hardware fared the best. It topped off at 47,999 grains per second at 48KHz sampling rate which for some reason the sampling rate appears to be the upper limit (i.e. if you run PD or Max/MSP at lower sampling rates, your upper limit will be restricted to the sampling rate), even though the code allows for multiple initiations of grains per cycle. This, however, is also the way original munger~ works.
An interesting bit is that while on Linux/PD combo 48K grains are already reached when we get 64 simultaneous grains, on Win32/Mac even 160 simultaneous grains yield only ~32-33K grains. Could this be a flext bug?
Best wishes,
Ivica Ico Bukvic, D.M.A. Composition, Music Technology, CCTAD, CHCI Virginia Tech Dept. of Music - 0240 Blacksburg, VA 24061 (540) 231-1137 (540) 231-5034 (fax) ico@vt.edu http://www.music.vt.edu/people/faculty/bukvic/
Hey,
On 13/03/2007, at 5.29, Ivica Ico Bukvic wrote:
- Start your app (PD or Max) and create object called munger1~.
Right-click (ctrl-click on Macs) and select "help" and this should open the
help file with additional documentation.
I was wondering what this object does. So i downloaded it to see the
help patch, as suggested. But it is fairly hard not to get lost, as
there are so much info on little space. My suggestion is to chunk it
in bits. (And make a counter sub-patch instead of using a counter
object.)
However, i fund in the pdf-manual for PeRColate, that
"the munger~: a granulizing delay-line. Takes a signal in and spits
out a stereo
signal of little (or big) grains, transposed, backwards/forwards,
enveloped
(sorta), with nifty pitch sieves to play pretty chords. The maximum
number of
voices is limited only by your CPU (up to some very high hardwired
limit),
and can be changed smoothly while running. A maximum delay-length is set
with the argument, and the working delay-length can be swept smoothly.
Check out the help file, which actually explains what most of the
parameters
mean. Good thing, because I keep forgetting."
which might be of interest for others like little knowing like me.
That said, thanks for making this. I think it's time to install Flext
here.
Am 13.03.2007 um 10:37 schrieb Steffen:
Hey,
On 13/03/2007, at 5.29, Ivica Ico Bukvic wrote:
- Start your app (PD or Max) and create object called munger1~.
Right-click (ctrl-click on Macs) and select "help" and this should open the help file with additional documentation.
I was wondering what this object does. So i downloaded it to see the help patch, as suggested. But it is fairly hard not to get lost, as there are so much info on little space. My suggestion is to chunk it in bits. (And make a counter sub-patch instead of using a counter object.)
However, i fund in the pdf-manual for PeRColate, that
"the munger~: a granulizing delay-line. Takes a signal in and spits out a stereo signal of little (or big) grains, transposed, backwards/forwards, enveloped (sorta), with nifty pitch sieves to play pretty chords. The maximum number of voices is limited only by your CPU (up to some very high hardwired limit), and can be changed smoothly while running. A maximum delay-length
is set with the argument, and the working delay-length can be swept smoothly. Check out the help file, which actually explains what most of the parameters mean. Good thing, because I keep forgetting."which might be of interest for others like little knowing like me.
That said, thanks for making this. I think it's time to install Flext here.
Hey,
would be nice to see if it works on a Macbook, i thought ;-)
So i downloaded and compiled STK....worked fine, adjusted all the
path's in "config.txt" and "config-mac-pd-gcc.txt"
and then:
lbind.opp pd-darwin/release-shared/flmap.opp pd-darwin/release-shared/
flstk.opp -lstk
/usr/bin/libtool: can't locate file for: -lstk
/usr/bin/libtool: file: -lstk is not an object file (not allowed in a
library)
i get this.
who could help me please.
Bye
Cheerio
Luigi
I was wondering what this object does. So i downloaded it to see the help patch, as suggested. But it is fairly hard not to get lost, as there are so much info on little space. My suggestion is to chunk it in bits. (And make a counter sub-patch instead of using a counter object.)
If you feel that the help patch is not comprehensive/understandable enough, your contributions to cleaning this up are most appreciated. I unfortunately have to move on to putting out the next fire on my calendar...
Best wishes,
Ico
Your will need to edit buildsys/config-<platform-compiler-pdormax>.txt to adjust paths to various folders.
Then you will need to edit config.txt file. You do not need to include SndObj for this external but you do need stk option to be properly set.
OK after running the build script for flext for the first time I get a config-mac-pd-gcc.txt file, but I do not see this other config.txt file to edit...?
Using flext 0.5.1 on iMac G5 10.4.8
Thanks, Kevin
OK after running the build script for flext for the first time I get a config-mac-pd-gcc.txt file, but I do not see this other config.txt file to edit...?
Using flext 0.5.1 on iMac G5 10.4.8
Re-run the same build.sh script again to create it (you'll have to run build.sh several times). If in doubt, please post on flext list (or, if everything else fails, read the README included with flext).
Best wishes,
Ico
The only link I can find to download the source ( http://www.akustische-kunst.de/puredata/percolate.html ) is down right now. Anyone know why, or if I can get the source elsewhere?
regards, Rich
On 3/12/07, Ivica Ico Bukvic ico.bukvic@gmail.com wrote:
Hi all,
For impatient, download at: http://ico.bukvic.net/Max/munger1~_1.0.0.tar.gz (270KB, includes source, Linux-Pd-i386, Mac-Max-i386, and Win32-Max-i386 binaries, and 3 cases of beer)
OVERVIEW
munger1~ (March 12, 2007 1.0.0 release) a realtime multichannel granulator a.k.a. the swiss-army-knife of realtime granular synthesis
a flext (cross-platform PD & Max/MSP) port of the munger~ object from the PeRColate library (0.9 beta5) http://www.music.columbia.edu/PeRColate/
Original PeRColate library by:
Dan Trueman http://www.music.princeton.edu/~dan/ R. Luke DuBois's http://www.lukedubois.com/
Flext port and additions by: Ivica Ico Bukvic http://ico.bukvic.net Ji-Sun Kim hideaway@vt.edu http://www.music.vt.edu http://www.cctad.vt.edu
Released under GPL license (whichever is the latest version--as of this release, version 2) For more info on the GPL license please visit: http://www.gnu.org/copyleft/gpl.html
ACKNOWLEDGEMENTS
Many thanks to Dan Trueman for open-sourcing this great object!
SOURCE INSTALL
If you simply intend to use prebuilt binaries, please skip to the INSTALL section. Otherwise take a big breath and read on...
- You need stk library which can be downloaded from:
http://ccrma.stanford.edu/software/stk/
- You need to also install latest flext library (this is a library that
allows for creation of externals for both Max/MSP and PD using the same source). Version 0.4.x can obtained from the following link:
Latest CVS version (0.5.1) is found in the Pure-Data CVS (this one is recommended):
http://sourceforge.net/cvs/?group_id=55736
- If you are using latest CVS version (0.5.1) Before compiling the source
you will need to add the following to the top of the flext/source/flstk.h file right below the #define __FLSTK_H:
#ifdef PI #undef PI #endif
This step will probably become quickly obsolete once Thomas updates CVS. Until then, this is needed to be able to compile flext against stk.
- To compile flext, read flext instructions (it boils down to running
build.sh with appropriate parameters and then editing two simple config files, i.e. "build pd gcc build" or "build max gcc" or "build max msvc" etc.)
Your will need to edit buildsys/config-<platform-compiler-pdormax>.txt to adjust paths to various folders.
Then you will need to edit config.txt file. You do not need to include SndObj for this external but you do need stk option to be properly set. On Windows+MSVC, STK flag at the time of this release does not work, so you will have to use included testmunger1 MSVC project file and adjust path settings to compile munger1~.
- Once stk and flext are compiled, go into munger1~ folder and type:
<path to flext folder>/build.sh <platform> <compiler> <build/clean/install>
NB: on Mac <build/clean/install> is not needed. On Windows, please use MSVC and open the testmunger1 project file in the root of the folder.
- Once compiled, your binary will be created in a <maxorpd-platform>
subfolder (i.e. pd-linux, or max-darwin), followed by another subfolder which reflects whether a threaded or singlethread flext was used. Inside you will find your external.
INSTALL
You can either use the prebuilt externals (found in the bin/ folder) or ones built using the "SOURCE INSTALL" instructions above. Binaries are provided for Intel-based Macs, Win32, and Intel-based Linux OS. The included prebuilt binaries DO NOT REQUIRE you to install flext or stk as these are statically linked.
- Copy the external in your externals folder (i.e. /usr/lib/pd/extra or
C:\Program Files\Cycling '74\MaxMSP 4.6\Cycling '74\externals, or "Applications/MaxMSP 4.6/Cycling '74/externals)
- Copy appropriate help file (found in the help/ folder) into the help
folder (i.e. /usr/lib/pd/doc/5.reference or C:\Program Files\Cycling '74\MaxMSP 4.6\max-help, or "Applications/MaxMSP 4.6/max-help)
NB: Pd help file has a ".pd" extension, while Max/MSP help file has a ".help" extension.
- Start your app (PD or Max) and create object called munger1~.
Right-click (ctrl-click on Macs) and select "help" and this should open the help file with additional documentation.
Questions? See OVERVIEW for contact and Q&A info.
Enjoy!
FAQ
The following is Ico's FAQ, so it may or may not reflect other project participants' opinions, including original author(s) of munger~, flext, etc.
Q: Why porting to flext? A: Flext library (by Thomas Grill) is a layer which allows creation of externals for both Max/MSP and PD without any alterations to the code (obviously once it is adapted to use flext). While there have been a number of Max/MSP <-> PD external ports in the past, many of them have become outdated because such attempts required either maintaining one code full of ugly #ifdefs, or worse--maintaining two sources. Either way, what usually turned out to be the case is that original authors did not have the time, interest, or simply the software/hardware to deal with the newly generated overhead and/or test the code, while volunteers who made the original porting efforts eventually moved on to other projects. The result was/is outdated and/or broken externals. Flext circumvents this problem by allowing one clean code to compile on both platforms while also supplying in many cases cleaner (more legible) API and (as a whipped cream on top) object-oriented environment (C++).
Q: Why bother with PD <-> Max/MSP cross-platform compatibility... ...when I use only <insert-your-favorite-application-here>? ...<insert-your-favorite-application-here> is better? A: Choice is what makes us human (this is also what makes Arts so vibrant and exciting). And while everyone's welcome to express their own preferences, we also have to realize that in this case these same preferences are also the main cause of a virtual divide which manifests itself at everyone's detriment. Wouldn't it be nicer if we could share externals transparently, or even better, open PD patches in Max and vice-versa? This would help in both the cross-pollination of ideas as well as creative efforts. This project has also taught me that creating flext-ready externals is as easy if not easier (due to the aforesaid API's legibility) than native objects (whether that be PD or Max/MSP). Finally, if all else fails, such externals are bound to reach wider audience, and are much easier to maintain if cross-platform compatibility is to be pursued.
Q: If flext is so cool, why don't we see more porting efforts? A: Good question. The fact is that flext is much more widely known among PD users than it is among the Max/MSP community, so this seemingly one-way road may have contributed to the current situation. One could only hope that projects like this may help reverse this unfortunate trend.
Q: So, is all really that peachy in the flext-land? A: Well, our lives teach us that nothing is truly free in this world. Flext is no exception. Its "fees," however are not tied to our checkbooks. Rather, they manifest themselves in a slightly greater CPU overhead in signal flow due to message translation. Thus, one could consider flext a "middle-person" between the <app-of-your-choice> and the external. This, however, in today's world is so negligible that during the testing phase I was unable to measure any noticeable CPU-overhead difference.
Another consideration is that flext might not be complete (see KNOWN ISSUES for an example). That being said, in its current state it did the trick for a relatively complex external such as munger~ or even FFTEASE collection which had been ported several years ago. All this leads me to believe that it is more than ready for the day-to-day use.
KNOWN ISSUES
munger1~ has been tested extensively on Linux+PD, OSX+Max/MSP and Win32+Max/MSP setups, suggesting that it should work on other setups as well. Your mileage may vary, though.
Currently there is only one known issue in the wild which requires changes to flext in order to be fixed. Namely, if you use munger1~ object in conjunction with an external buffer in PD (known as an array) and if you dubiously decide to delete that particular buffer in the middle of your performance while munger1~ is still associated with it, this will [unsurprisingly] crash PD. Max/MSP currently has a check implemented against that via flext layer so Max/MSP will simply stop outputting anything until buffer is reset. The flext author is aware of this and PD fix should appear in the flext CVS hopefully soon. That being said, the lingering question is why would you want to do this in the first place...
FYI, even though munger1~ allows up to 500 simultaneous grains per sample and has been compiled with all available optimizations (SSE, Altivec is supposedly available via flext but has not been tested), on MBP (Core Duo 1.83GHz) I was unable to get more than 160 simultaneous grains per sample (or ~32,000 grains/second) without dropouts, even though CPUs were not getting maxed out, so something else might be the cause of this limitation (flext?). Win32 machine (3-year old AMD64 3000+) fared marginally better at around 165 simultaneous grains per sample (or ~33,000 grains/second) before its CPU was maxed out. Linux on the same AMD64 3000+ hardware fared the best. It topped off at 47,999 grains per second at 48KHz sampling rate which for some reason the sampling rate appears to be the upper limit (i.e. if you run PD or Max/MSP at lower sampling rates, your upper limit will be restricted to the sampling rate), even though the code allows for multiple initiations of grains per cycle. This, however, is also the way original munger~ works.
An interesting bit is that while on Linux/PD combo 48K grains are already reached when we get 64 simultaneous grains, on Win32/Mac even 160 simultaneous grains yield only ~32-33K grains. Could this be a flext bug?
Best wishes,
Ivica Ico Bukvic, D.M.A. Composition, Music Technology, CCTAD, CHCI Virginia Tech Dept. of Music - 0240 Blacksburg, VA 24061 (540) 231-1137 (540) 231-5034 (fax) ico@vt.edu http://www.music.vt.edu/people/faculty/bukvic/
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Hi Rich,
It's at version 1.0.1 right now so go to: http://ico.bukvic.net/Max/munger1~_1.0.1.tar.gz
Once you get it compiled you may be interested in the GUI I posted to the list several days ago. The subject was "munger1~ GOP [was Re: munger1~ binary for ppc]"
Good luck, Kevin
On 4/2/07, Rich E reakinator@gmail.com wrote:
The only link I can find to download the source ( http://www.akustische-kunst.de/puredata/percolate.html ) is down right now. Anyone know why, or if I can get the source elsewhere?
regards, Rich
On 3/12/07, Ivica Ico Bukvic ico.bukvic@gmail.com wrote:
Hi all,
For impatient, download at:
http://ico.bukvic.net/Max/munger1~_1.0.0.tar.gz
(270KB, includes source, Linux-Pd-i386, Mac-Max-i386, and Win32-Max-i386 binaries, and 3 cases of beer)
OVERVIEW
munger1~ (March 12, 2007 1.0.0 release) a realtime multichannel granulator a.k.a. the swiss-army-knife of realtime granular synthesis
a flext (cross-platform PD & Max/MSP) port of the munger~ object from the PeRColate library (0.9 beta5) http://www.music.columbia.edu/PeRColate/
Original PeRColate library by:
Dan Trueman http://www.music.princeton.edu/~dan/ R. Luke DuBois's http://www.lukedubois.com/
Flext port and additions by: Ivica Ico Bukvic http://ico.bukvic.net Ji-Sun Kim hideaway@vt.edu http://www.music.vt.edu http://www.cctad.vt.edu
Released under GPL license (whichever is the latest version--as of this release, version 2) For more info on the GPL license please visit: http://www.gnu.org/copyleft/gpl.html
ACKNOWLEDGEMENTS
Many thanks to Dan Trueman for open-sourcing this great object!
SOURCE INSTALL
If you simply intend to use prebuilt binaries, please skip to the INSTALL section. Otherwise take a big breath and read on...
- You need stk library which can be downloaded from:
http://ccrma.stanford.edu/software/stk/
- You need to also install latest flext library (this is a library that
allows for creation of externals for both Max/MSP and PD using the same source). Version 0.4.x can obtained from the following link:
Latest CVS version (0.5.1) is found in the Pure-Data CVS (this one is recommended):
http://sourceforge.net/cvs/?group_id=55736
- If you are using latest CVS version (0.5.1) Before compiling the source
you will need to add the following to the top of the flext/source/flstk.h file right below the #define __FLSTK_H:
#ifdef PI #undef PI #endif
This step will probably become quickly obsolete once Thomas updates CVS. Until then, this is needed to be able to compile flext against stk.
- To compile flext, read flext instructions (it boils down to running
build.sh with appropriate parameters and then editing two simple config files, i.e. "build pd gcc build" or "build max gcc" or "build max msvc" etc.)
Your will need to edit
buildsys/config-<platform-compiler-pdormax>.txt to
adjust paths to various folders.
Then you will need to edit config.txt file. You do not need to include SndObj for this external but you do need stk option to be properly set. On Windows+MSVC, STK flag at the time of this release does not work, so you will have to use included testmunger1 MSVC project file and adjust path settings to compile munger1~.
- Once stk and flext are compiled, go into munger1~ folder and type:
<path to flext folder>/build.sh <platform> <compiler>
<build/clean/install>
NB: on Mac <build/clean/install> is not needed. On Windows, please use
MSVC
and open the testmunger1 project file in the root of the folder.
- Once compiled, your binary will be created in a <maxorpd-platform>
subfolder (i.e. pd-linux, or max-darwin), followed by another subfolder which reflects whether a threaded or singlethread flext was used. Inside
you
will find your external.
INSTALL
You can either use the prebuilt externals (found in the bin/ folder) or
ones
built using the "SOURCE INSTALL" instructions above. Binaries are provided for Intel-based Macs, Win32, and Intel-based Linux OS. The included
prebuilt
binaries DO NOT REQUIRE you to install flext or stk as these are
statically
linked.
- Copy the external in your externals folder (i.e. /usr/lib/pd/extra or
C:\Program Files\Cycling '74\MaxMSP 4.6\Cycling '74\externals, or "Applications/MaxMSP 4.6/Cycling '74/externals)
- Copy appropriate help file (found in the help/ folder) into the help
folder (i.e. /usr/lib/pd/doc/5.reference or C:\Program Files\Cycling '74\MaxMSP 4.6\max-help, or "Applications/MaxMSP 4.6/max-help)
NB: Pd help file has a ".pd" extension, while Max/MSP help file has a ".help" extension.
- Start your app (PD or Max) and create object called munger1~.
Right-click
(ctrl-click on Macs) and select "help" and this should open the help file with additional documentation.
Questions? See OVERVIEW for contact and Q&A info.
Enjoy!
FAQ
The following is Ico's FAQ, so it may or may not reflect other project participants' opinions, including original author(s) of munger~, flext,
etc.
Q: Why porting to flext? A: Flext library (by Thomas Grill) is a layer which allows creation of externals for both Max/MSP and PD without any alterations to the code (obviously once it is adapted to use flext). While there have been a
number
of Max/MSP <-> PD external ports in the past, many of them have become outdated because such attempts required either maintaining one code full
of
ugly #ifdefs, or worse--maintaining two sources. Either way, what usually turned out to be the case is that original authors did not have the time, interest, or simply the software/hardware to deal with the newly generated overhead and/or test the code, while volunteers who made the original porting efforts eventually moved on to other projects. The result was/is outdated and/or broken externals. Flext circumvents this problem by
allowing
one clean code to compile on both platforms while also supplying in many cases cleaner (more legible) API and (as a whipped cream on top) object-oriented environment (C++).
Q: Why bother with PD <-> Max/MSP cross-platform compatibility... ...when I use only
<insert-your-favorite-application-here>?
...<insert-your-favorite-application-here> is better? A: Choice is what makes us human (this is also what makes Arts so vibrant and exciting). And while everyone's welcome to express their own preferences, we also have to realize that in this case these same preferences are also the main cause of a virtual divide which manifests itself at everyone's detriment. Wouldn't it be nicer if we could share externals transparently, or even better, open PD patches in Max and vice-versa? This would help in both the cross-pollination of ideas as well as creative efforts. This project has also taught me that creating flext-ready externals is as easy if not easier (due to the aforesaid API's legibility) than native objects (whether that be PD or Max/MSP). Finally,
if
all else fails, such externals are bound to reach wider audience, and are much easier to maintain if cross-platform compatibility is to be pursued.
Q: If flext is so cool, why don't we see more porting efforts? A: Good question. The fact is that flext is much more widely known among
PD
users than it is among the Max/MSP community, so this seemingly one-way
road
may have contributed to the current situation. One could only hope that projects like this may help reverse this unfortunate trend.
Q: So, is all really that peachy in the flext-land? A: Well, our lives teach us that nothing is truly free in this world.
Flext
is no exception. Its "fees," however are not tied to our checkbooks.
Rather,
they manifest themselves in a slightly greater CPU overhead in signal flow due to message translation. Thus, one could consider flext a
"middle-person"
between the <app-of-your-choice> and the external. This, however, in
today's
world is so negligible that during the testing phase I was unable to
measure
any noticeable CPU-overhead difference.
Another consideration is that flext might not be complete (see KNOWN
ISSUES
for an example). That being said, in its current state it did the trick
for
a relatively complex external such as munger~ or even FFTEASE collection which had been ported several years ago. All this leads me to believe that it is more than ready for the day-to-day use.
KNOWN ISSUES
munger1~ has been tested extensively on Linux+PD, OSX+Max/MSP and Win32+Max/MSP setups, suggesting that it should work on other setups as well. Your mileage may vary, though.
Currently there is only one known issue in the wild which requires changes to flext in order to be fixed. Namely, if you use munger1~ object in conjunction with an external buffer in PD (known as an array) and if you dubiously decide to delete that particular buffer in the middle of your performance while munger1~ is still associated with it, this will [unsurprisingly] crash PD. Max/MSP currently has a check implemented
against
that via flext layer so Max/MSP will simply stop outputting anything until buffer is reset. The flext author is aware of this and PD fix should
appear
in the flext CVS hopefully soon. That being said, the lingering question
is
why would you want to do this in the first place...
FYI, even though munger1~ allows up to 500 simultaneous grains per sample and has been compiled with all available optimizations (SSE, Altivec is supposedly available via flext but has not been tested), on MBP (Core Duo 1.83GHz) I was unable to get more than 160 simultaneous grains per sample (or ~32,000 grains/second) without dropouts, even though CPUs were not getting maxed out, so something else might be the cause of this limitation (flext?). Win32 machine (3-year old AMD64 3000+) fared marginally better
at
around 165 simultaneous grains per sample (or ~33,000 grains/second)
before
its CPU was maxed out. Linux on the same AMD64 3000+ hardware fared the best. It topped off at 47,999 grains per second at 48KHz sampling rate
which
for some reason the sampling rate appears to be the upper limit ( i.e. if
you
run PD or Max/MSP at lower sampling rates, your upper limit will be restricted to the sampling rate), even though the code allows for multiple initiations of grains per cycle. This, however, is also the way original munger~ works.
An interesting bit is that while on Linux/PD combo 48K grains are already reached when we get 64 simultaneous grains, on Win32/Mac even 160 simultaneous grains yield only ~32-33K grains. Could this be a flext bug?
Best wishes,
Ivica Ico Bukvic, D.M.A. Composition, Music Technology, CCTAD, CHCI Virginia Tech Dept. of Music - 0240 Blacksburg, VA 24061 (540) 231-1137 (540) 231-5034 (fax) ico@vt.edu http://www.music.vt.edu/people/faculty/bukvic/
PD-list@iem.at mailing list UNSUBSCRIBE and account-management ->
http://lists.puredata.info/listinfo/pd-list
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
The only link I can find to download the source ( http://www.akustische- kunst.de/puredata/percolate.html ) is down right now. Anyone know why, or if I can get the source elsewhere?
Source for PeRColate or munger? Munger link is provided below. I downloaded the source of the old port from the CCRMA src rpm. That one is heavily outdated however. If you are planning on doing a port, I would suggest contacting Dan Trueman directly and/or downloading latest OSX build which includes source.
http://ico.bukvic.net/Max/munger1~_1.0.0.tar.gz
Best wishes,
Ico
BTW Ico, did you ever get a chance to look at the code and see why it wouldn't compile the newest version for me? I would still be happy to provide you with the binary if we can get it working :)
Kevin
On 4/2/07, Ivica Ico Bukvic ico.bukvic@gmail.com wrote:
The only link I can find to download the source ( http://www.akustische- kunst.de/puredata/percolate.html ) is down right now. Anyone know why, or if I can get the source elsewhere?
Source for PeRColate or munger? Munger link is provided below. I downloaded the source of the old port from the CCRMA src rpm. That one is heavily outdated however. If you are planning on doing a port, I would suggest contacting Dan Trueman directly and/or downloading latest OSX build which includes source.
http://ico.bukvic.net/Max/munger1~_1.0.0.tar.gz
Best wishes,
Ico
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Almost there. Fixed a ton of bugs this weekend plus made maxvoices modular. Please stand by for updated documentation file.
Best wishes,
Ico
-----Original Message----- From: Kevin McCoy [mailto:km.takewithyou@gmail.com] Sent: Monday, April 02, 2007 11:18 AM To: Ivica Ico Bukvic; PD-list@iem.at Subject: Re: [PD] ANN: munger1~ port (from the Percolate library)
BTW Ico, did you ever get a chance to look at the code and see why it wouldn't compile the newest version for me? I would still be happy to provide you with the binary if we can get it working :)
Kevin
On 4/2/07, Ivica Ico Bukvic ico.bukvic@gmail.com wrote:
The only link I can find to download the source (
kunst.de/puredata/percolate.html ) is down right now. Anyone know why,
or
if I can get the source elsewhere?
Source for PeRColate or munger? Munger link is provided below. I
downloaded
the source of the old port from the CCRMA src rpm. That one is heavily outdated however. If you are planning on doing a port, I would suggest contacting Dan Trueman directly and/or downloading latest OSX build
which
includes source.
http://ico.bukvic.net/Max/munger1~_1.0.0.tar.gz
Best wishes,
Ico
PD-list@iem.at mailing list UNSUBSCRIBE and account-management ->
http://lists.puredata.info/listinfo/pd-list
--
I tried the 1.01 version and the binary works nice on Ubuntu 6.10!
Cheers and thanks for the gift, Rich
On 4/2/07, Ivica Ico Bukvic ico.bukvic@gmail.com wrote:
Almost there. Fixed a ton of bugs this weekend plus made maxvoices modular. Please stand by for updated documentation file.
Best wishes,
Ico
-----Original Message----- From: Kevin McCoy [mailto:km.takewithyou@gmail.com] Sent: Monday, April 02, 2007 11:18 AM To: Ivica Ico Bukvic; PD-list@iem.at Subject: Re: [PD] ANN: munger1~ port (from the Percolate library)
BTW Ico, did you ever get a chance to look at the code and see why it wouldn't compile the newest version for me? I would still be happy to provide you with the binary if we can get it working :)
Kevin
On 4/2/07, Ivica Ico Bukvic ico.bukvic@gmail.com wrote:
The only link I can find to download the source (
kunst.de/puredata/percolate.html ) is down right now. Anyone know
why,
or
if I can get the source elsewhere?
Source for PeRColate or munger? Munger link is provided below. I
downloaded
the source of the old port from the CCRMA src rpm. That one is heavily outdated however. If you are planning on doing a port, I would suggest contacting Dan Trueman directly and/or downloading latest OSX build
which
includes source.
http://ico.bukvic.net/Max/munger1~_1.0.0.tar.gz
Best wishes,
Ico
PD-list@iem.at mailing list UNSUBSCRIBE and account-management ->
http://lists.puredata.info/listinfo/pd-list
--
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list