<html><head></head><body><div style="color:#000; background-color:#fff; font-family:Helvetica Neue-Light, Helvetica Neue Light, Helvetica Neue, Helvetica, Arial, Lucida Grande, Sans-Serif;font-size:16px"><div dir="ltr" id="yui_3_16_0_ym19_1_1483299962841_280624"><span id="yui_3_16_0_ym19_1_1483299962841_280623">Speaking of Bela, we have also been using libpd for the past nine months or so. Some modifications were necessary to allow Xenomai to perform at its best.  <a href="https://github.com/BelaPlatform/libpd/" id="yui_3_16_0_ym19_1_1483299962841_282045">https://github.com/BelaPlatform/libpd/</a></span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1483299962841_280624"><br></div><div dir="ltr" id="yui_3_16_0_ym19_1_1483299962841_280624"><span id="yui_3_16_0_ym19_1_1483299962841_281928">The most important was to take the `sys_microsleep()` out of PROCESS(_x, _y) in z_libpd.c : this was performing socket I/O in the audio thread, and this is bad practice in general, but particularly dangerous when using Xenomai.</span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1483299962841_280624">This broke [netreceive] and until recently we relied on the libpd API to replace it.</div><div dir="ltr" id="yui_3_16_0_ym19_1_1483299962841_280624">I did some work last month for a threaded [netreceive] which uses a ringbuffer. <a href="https://github.com/giuliomoro/pure-data/tree/Bela-net">https://github.com/giuliomoro/pure-data/tree/Bela-net</a> (still work-in-progress)</div><div dir="ltr" id="yui_3_16_0_ym19_1_1483299962841_280624">I think this is a reasonable solution (surely for us, perhaps for others?) in that network communication is by definition not deterministic, so having it in the audio thread did not make it any better.</div><div dir="ltr" id="yui_3_16_0_ym19_1_1483299962841_280624"><br></div><div dir="ltr" id="yui_3_16_0_ym19_1_1483299962841_280624">Other modifications involved taking the minimum blocksize down to 8 samples and implement threading for [sigmund~] (still hacky). In the future I'll want to implement threading for all vanilla objects which process large blocks of samples at a time (e.g.: fft~, fiddle~), as previously discussed on this list: <a href="https://lists.puredata.info/pipermail/pd-list/2016-09/116224.html" id="yui_3_16_0_ym19_1_1483299962841_282732">https://lists.puredata.info/pipermail/pd-list/2016-09/116224.html</a></div><div dir="ltr" id="yui_3_16_0_ym19_1_1483299962841_280624"><br></div><div dir="ltr" id="yui_3_16_0_ym19_1_1483299962841_280624"><span><br></span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1483299962841_280624"><span><br></span></div><div class="qtdSeparateBR" id="yui_3_16_0_ym19_1_1483299962841_280599"><br><br></div><div class="yahoo_quoted" id="yui_3_16_0_ym19_1_1483299962841_280482" style="display: block;"> <blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; margin-top: 5px; padding-left: 5px;" id="yui_3_16_0_ym19_1_1483299962841_280481"> <div style="font-family: Helvetica Neue-Light, Helvetica Neue Light, Helvetica Neue, Helvetica, Arial, Lucida Grande, Sans-Serif; font-size: 16px;" id="yui_3_16_0_ym19_1_1483299962841_280480"> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, Sans-Serif; font-size: 16px;" id="yui_3_16_0_ym19_1_1483299962841_280479"> <div dir="ltr" id="yui_3_16_0_ym19_1_1483299962841_280478"> <font size="2" face="Arial" id="yui_3_16_0_ym19_1_1483299962841_280626"> <hr size="1" id="yui_3_16_0_ym19_1_1483299962841_280625"> <b><span style="font-weight:bold;">From:</span></b> Scott R. Looney <scottrlooney@gmail.com><br> <b><span style="font-weight: bold;">To:</span></b> pd-list <pd-list@lists.iem.at> <br> <b><span style="font-weight: bold;">Sent:</span></b> Thursday, 5 January 2017, 9:07<br> <b><span style="font-weight: bold;">Subject:</span></b> Re: [PD] include libpd? (Re: plans for Pd 0.48)<br> </font> </div> <div class="y_msg_container" id="yui_3_16_0_ym19_1_1483299962841_281851"><br><div id="yiv8933529695"><div id="yui_3_16_0_ym19_1_1483299962841_281850"><div dir="ltr" id="yui_3_16_0_ym19_1_1483299962841_281849">actually, i was curious about that myself but sort of on both tangents. at the higher end i'm using Unity and PD vanilla via Kalimba and would definitely like to use it without involving too much extra as it is in that situation. <div id="yui_3_16_0_ym19_1_1483299962841_281848"><br clear="none"></div><div id="yui_3_16_0_ym19_1_1483299962841_281852">but the embedded factor is pretty important too. i've been checking out Bela which has to compile PD patches using Heavy as well as using Xenomai to make PD work efficiently (and Heavy doesn't support a lot of objects at the moment). i would imagine that Johannes Taelmann was considering something like PD for his Axoloti but couldn't make it work performance wise and so decided to roll his own graphic patching setup instead.</div><div id="yui_3_16_0_ym19_1_1483299962841_281853"><br clear="none"></div><div id="yui_3_16_0_ym19_1_1483299962841_281856">best,</div><div>scott</div></div><div class="yiv8933529695yqt1325520598" id="yiv8933529695yqt62252"><div class="yiv8933529695gmail_extra" id="yui_3_16_0_ym19_1_1483299962841_282629"><br clear="none"><div class="yiv8933529695gmail_quote" id="yui_3_16_0_ym19_1_1483299962841_282628">On Wed, Jan 4, 2017 at 10:17 AM, Peter Nyboer <span dir="ltr"><<a rel="nofollow" shape="rect" ymailto="mailto:p@nbor.us" target="_blank" href="mailto:p@nbor.us">p@nbor.us</a>></span> wrote:<br clear="none"><blockquote class="yiv8933529695gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;" id="yui_3_16_0_ym19_1_1483299962841_282627"><span class="yiv8933529695" id="yui_3_16_0_ym19_1_1483299962841_282630"><br clear="none">
> another wishlist from my side (which I wanted to address at PdCon16~ but<br clear="none">
> somehow didn't manage).<br clear="none">
> would it be possible to include the libpd glue into the proper Pd sources?<br clear="none">
<br clear="none">
</span>Funny - I had a somewhat tangential thought this morning. Something to the effect of it being easier to deploy libpd on embedded devices. I haven’t really looked into it very deeply, hence my uncertainly about whether or not it’s easy, but I know it’s not “juzt 1 klik!” (oh, yeah, I went there).<br clear="none">
<br clear="none">
Peter<br clear="none">
______________________________ _________________<br clear="none">
<a rel="nofollow" shape="rect" ymailto="mailto:Pd-list@lists.iem.at" target="_blank" href="mailto:Pd-list@lists.iem.at">Pd-list@lists.iem.at</a> mailing list<br clear="none">
UNSUBSCRIBE and account-management -> <a rel="nofollow" shape="rect" target="_blank" href="https://lists.puredata.info/listinfo/pd-list">https://lists.puredata.info/ listinfo/pd-list</a><br clear="none">
</blockquote></div><br clear="none"></div></div></div></div><br><div class="yqt1325520598" id="yqt45333">_______________________________________________<br clear="none"><a shape="rect" ymailto="mailto:Pd-list@lists.iem.at" href="mailto:Pd-list@lists.iem.at">Pd-list@lists.iem.at</a> mailing list<br clear="none">UNSUBSCRIBE and account-management -> <a shape="rect" href="https://lists.puredata.info/listinfo/pd-list" target="_blank">https://lists.puredata.info/listinfo/pd-list</a><br clear="none"></div><br><br></div> </div> </div> </blockquote> </div></div></body></html>