grh.mur.at - threading http://grh.mur.at/taxonomy/term/43/0 en sndfiler http://grh.mur.at/software/sndfiler.html <div class="field field-type-text field-field-description"> <div class="field-items"> <div class="field-item odd"> <div class="field-label-inline-first"> Short Description:&nbsp;</div> <p>a threaded soundfiler for PD using libsndfile and libvorbisfile</p> </div> </div> </div> <div class="field field-type-number-integer field-field-year"> <div class="field-items"> <div class="field-item odd"> <div class="field-label-inline-first"> Started in:&nbsp;</div> 2005 </div> </div> </div> <div class="field field-type-text field-field-authors"> <div class="field-items"> <div class="field-item odd"> <div class="field-label-inline-first"> Authors:&nbsp;</div> Tim Blechmann </div> <div class="field-item even"> <div class="field-label-inline"> Authors:&nbsp;</div> Georg Holzmann </div> </div> </div> <div class="field field-type-text field-field-license"> <div class="field-items"> <div class="field-item odd"> <div class="field-label-inline-first"> License:&nbsp;</div> GNU General Public License (GPL) </div> </div> </div> <div class="field field-type-text field-field-progamming-lang"> <div class="field-items"> <div class="field-item odd"> <div class="field-label-inline-first"> Programming language:&nbsp;</div> C </div> </div> </div> <div class="field field-type-text field-field-abstract"> <div class="field-label">Overview:&nbsp;</div> <div class="field-items"> <div class="field-item odd"> <p>A threaded soundfiler for <a href="http://puredata.info">Pure Data</a> using <a href="http://www.mega-nerd.com/libsndfile/">libsndfile</a> for reading uncompressed and libvorbisfile for reading OGG files.</p> <p>FEATURES:</p> <ul> <li> threaded reading of multichannel soundfiles into arrays </li> <li> threaded resize of arrays </li> <li> support for OGG </li> </ul> <p>REQUIREMENTS:</p> <ul> <li> pd >= 0.39 </li> <li> libsndfile </li> <li> libvorbisfile </li> <li> <a href="http://grh.mur.at/software/threadlib.html">threadlib</a> </li> </ul> <p>For more information look at the help patch.<br /> See the file INSTALL for installation instructions. </p> </div> </div> </div> <div class="field field-type-link field-field-version-url"> <div class="field-label">Version Control System URL:&nbsp;</div> <div class="field-items"> <div class="field-item odd"> <a href="http://pure-data.svn.sourceforge.net/viewvc/pure-data/trunk/externals/tb/sndfiler/">sndfiler SVN repository</a> </div> </div> </div> Pd threading Wed, 24 Jun 2009 14:48:13 +0000 grh 136 at http://grh.mur.at threadlib http://grh.mur.at/software/threadlib.html <div class="field field-type-text field-field-description"> <div class="field-items"> <div class="field-item odd"> <div class="field-label-inline-first"> Short Description:&nbsp;</div> <p>C and PD library for threaded patching and threaded PD externals </p> </div> </div> </div> <div class="field field-type-number-integer field-field-year"> <div class="field-items"> <div class="field-item odd"> <div class="field-label-inline-first"> Started in:&nbsp;</div> 2005 </div> </div> </div> <div class="field field-type-text field-field-authors"> <div class="field-items"> <div class="field-item odd"> <div class="field-label-inline-first"> Authors:&nbsp;</div> Georg Holzmann </div> </div> </div> <div class="field field-type-text field-field-license"> <div class="field-items"> <div class="field-item odd"> <div class="field-label-inline-first"> License:&nbsp;</div> GNU General Public License (GPL) </div> </div> </div> <div class="field field-type-text field-field-progamming-lang"> <div class="field-items"> <div class="field-item odd"> <div class="field-label-inline-first"> Programming language:&nbsp;</div> C, Pd </div> </div> </div> <div class="field field-type-text field-field-abstract"> <div class="field-label">Overview:&nbsp;</div> <div class="field-items"> <div class="field-item odd"> <p>C and <a href="http://puredata.info">Pure Data</a> library for threaded patching and threaded PD externals, heavily based on pd_devel code by Tim Blechmann (his detach/join for pd_devel).</p> <p>PD objects for threaded patching:</p> <ul> <li> detach: run part of the patch in a helper thread </li> <li> join: synchronize messages to pd's main thread </li> <li> sleep: blocks the system for a specific time </li> </ul> <p><strong>WARNING:</strong><br /> These objects (especially detach/join) are very experimental and may crash your patches if you use them in a wrong way, because some externals/internals of PD are not threadsafe !!!</p> <p>Features for PD external programmers:</p> <ul> <li> lockfree FIFO from pd_devel </li> <li> callback system like in pd_devel: instead of the idle callbacks, which are not really usable in current main pd, it uses clock callbacks </li> <li> USAGE: you have to link your externals against threadlib - see <a href="http://grh.mur.at/software/sndfiler.html">sndfiler</a> as an example </li> <li> ADVANTAGES: so it's possible to use the lockfree FIFO and sys_callback in main pd (and the same source code for main and devel pd) </li> </ul> <p>Many thanks to Tim Blechmann for his code and help!</p> <p><em>detach:</em><br /> Detach is working on control objects only, creates a helper thread and runs all functions of the following objects in this helper thread. If a message from that thread reaches a join object a callback for running the outlet function will be places in the scheduler and run in the next scheduler loop - so you can synchronize the message with pd's main thread again.<br /> Detach is useful if you have a control operation that would be too CPU-intensive and would disturb dsp. </p> <p><em>join:</em><br /> The message to the inlet will be sent to the outlet during the next clock callback of the scheduler. It doesn't matter, which thread the message was coming from. Messages from the main pd thread will be rescheduled.<br /> Join can be used everywhere, where a message has to be rescheduled, this is also useful to place behind any threaded external calling the outlet functions from the helper thread, to make sure the following messages are being run in the main pd thread. </p> <p><strong>WARNING:</strong><br /> detach/join provide the possibility of threaded patching, beware of the risks:</p> <ul> <li> not every pd object is thread-safe (if unsure, look at the source code or ask at the pd-list or me) </li> <li> pd is not completely thread-safe itself </li> <li> everything that is triggered by the detached message will be detached - so don't mix threaded and non-threaded message paths unless you know what you are doing - use the join external to synchronize with the main pd thread! </li> <li> if detach/join crashes pd during a performance, don't complain ... </li> <li> both detach and join have an overhead ... so only use them, if you really need threaded patching, e.g. have a subpatch that has to run for quite some time and would interrupt audio or something else </li> </ul> </div> </div> </div> <div class="field field-type-link field-field-version-url"> <div class="field-label">Version Control System URL:&nbsp;</div> <div class="field-items"> <div class="field-item odd"> <a href="http://pure-data.svn.sourceforge.net/viewvc/pure-data/trunk/externals/grh/threadlib/">threadlib SVN repository</a> </div> </div> </div> <div class="field field-type-filefield field-field-tarball"> <div class="field-label">Release Tarball:&nbsp;</div> <div class="field-items"> <div class="field-item odd"> <div class="filefield-file clear-block"><div class="filefield-icon field-icon-application-octet-stream"><img class="field-icon-application-octet-stream" alt="application/octet-stream icon" src="http://grh.mur.at/sites/all/modules/filefield/icons/protocons/16x16/mimetypes/application-octet-stream.png" /></div><a href="http://grh.mur.at/sites/default/files/threadlib0.1.tar_.gz" type="application/octet-stream; length=22348" title="threadlib0.1.tar_.gz">threadlib source, version 0.1</a></div> </div> </div> </div> <div class="field field-type-filefield field-field-binary"> <div class="field-label">Release Binary:&nbsp;</div> <div class="field-items"> <div class="field-item odd"> <div class="filefield-file clear-block"><div class="filefield-icon field-icon-application-octet-stream"><img class="field-icon-application-octet-stream" alt="application/octet-stream icon" src="http://grh.mur.at/sites/all/modules/filefield/icons/protocons/16x16/mimetypes/application-octet-stream.png" /></div><a href="http://grh.mur.at/sites/default/files/threadlib.pd_linux" type="application/octet-stream; length=11400" title="threadlib.pd_linux">threadlib0.1 linux binary</a></div> </div> <div class="field-item even"> <div class="filefield-file clear-block"><div class="filefield-icon field-icon-application-zip"><img class="field-icon-application-zip" alt="application/zip icon" src="http://grh.mur.at/sites/all/modules/filefield/icons/protocons/16x16/mimetypes/package-x-generic.png" /></div><a href="http://grh.mur.at/sites/default/files/threadlib0.1_win.zip" type="application/zip; length=23709" title="threadlib0.1_win.zip">threadlib0.1 windows binary</a></div> </div> <div class="field-item odd"> <div class="filefield-file clear-block"><div class="filefield-icon field-icon-application-octet-stream"><img class="field-icon-application-octet-stream" alt="application/octet-stream icon" src="http://grh.mur.at/sites/all/modules/filefield/icons/protocons/16x16/mimetypes/application-octet-stream.png" /></div><a href="http://grh.mur.at/sites/default/files/threadlib.pd_darwin" type="application/octet-stream; length=35456" title="threadlib.pd_darwin">threadlib0.1 OS-X binary</a></div> </div> </div> </div> Pd threading Wed, 24 Jun 2009 14:36:37 +0000 grh 135 at http://grh.mur.at