Tools to support PD patch development

Hi All,

I’m in a difficult relation with my owl modular. I can feel the potential, trapped inside, wanting to be let out. But I’m constrained by my programming skills (or the lack of eg Faust or C++ step by step tutorials). Not having a MaxGen licence I fall back to Pure Data. A tool I really love. The implementation with the heavy compiler does have some constraints though… I’m finding my way through, but looking for more info. What tips/tricks do you use? For PD development. What is the fastest path to do patch development? (currently I do “PD save” > git commit, git push > compile (wait) > load) Is it a good idea to install the offline environment?
Having a “compile > load” combo button (like the save/compile button) on the website would help

Anyway a guide for OWL-patching for PD enthousiasts would help as PD itself is a different beast as PD for owl. This would help in setting right expectations as well as in converting the skills there are to great patch making :slight_smile:
##Tools:
Often you might want to do some plain math in PD. I found this GitHub - Simon-L/pd-static-expr: Generate a PureData patch from an arbitrary math expression. Aka online which allows to turn an [expr] (not supported by heavy) into a plain vanilla PD patch.
This might boost some ideas. The author mentions the OWL on the page, but I haven’t found anything about this on the forum. I’m still trying to compile it (broken dependency) I did a pull request, but this could be nice as a tool.

The list of supported heavy objects is good to keep nearby. I’ve put it in my owl github repo
Did you know you can use the audio outputs as CV out’s , I did not they are DC coupled but I still struggling to make it properly work, see my attempt for a simple clock divider here…

##Template:
the improved PD template is great but lot’s of stuff is still undocumented. Would be nice to further improve this template to document this…
Also I feel there is a naming bug in the channel “PUSH” as you can use this to both send and receive, you get a stack overflow when trying to eg. pass a clock signal to the out by “correctly” connecting a [r Channel-
Push] – [s Channel-Push]
The naming makes this impossible while it is a proper use case… Or am I missing something here?

##debugging/compiling:
what are the best ways to debug? The compiler errors are doable for me now, I can debug step by step. But what with patch errors. I have a patch that compiles fine but gives me this at runtime
MESSAGE: Heavy assertion failed in void __hv_tabread_if(SignalTabre lin
no idea where to start to debug this.
What is the difference between the pd and the heavy compiler? I noticed a speed difference, but also some errors in the one or the other…

##Patching:
the patch library for PD is not that big at the moment (35 patches/14 authors) Intending to work on this.

Hope this inspires, but if you have any owl/pure data resources please share!

2 Likes

Am one of those 14. However, turned out to me at least, that GEN patches are faster by factor 3 compared to Heavy-converted PD patches.
The Vanilla version used in Heavy seems outdated now, and there is no improvement in sight, as even during Enzien audio times there was only a beginning installment of converting PD patches. But subsequently no real development/intention to update it.

My conclusion: PD is stuck on Owl for good. Try concentrate on C++. Is the fastest in any case.

Interesting to know, however a bit sad too. In that case I will direct energy towards the c++ path. But question for a simple hello world, a boilerplate, a tutorial for this path remain…
Any resources?

Hi,

I don’t think there are a lot of resources around. I have development skills but have not done any c/c++ coding since the dinosaurs, however I think I can become proficient in a few months. What I would personally find very useful to get up to speed quickly would be for a set of patches that all do the same thing but are written in all the languages supported by OwlProgram (pd, c++, faust, max), some kind of rosetta stone. We could to this for a few examples, an oscillator, an lfo, a filter.

what do you think?

kaosbeat, sorry hadn’t checked in here for ages: Yes, there is a standard patch to start with. See image

I am very sorry that pd is no longer supported, because, for me, it is the easiest and most direct way to program the owl. The heavy compiler is frequently wrong and some important functions, such as the midi input, are no longer translated well. In my opinion Rebel tech should, to keep its customers, give the compiler an update. Mister Jrp says to program in C ++ but I am a musician and not a programmer and if my frustration with the owl continues I will try to sell … but maybe I will never buy from Rebel Teck again

I’m not sure Puredata is really that broken, but we are definitely missing some good examples of the latest MIDI features. Will try to put something together asap - but I’m not a Puredata user myself so my skillz are extremely limited!

1 Like

Willing to help out on the PD side… There’s definitely some bug I’ve run into. On the compiler level. But with some help this could be fixed.itdidnt seem too hard, but I’m not knowledgeable of the back end…

I can spend some time on this in a more intense way, like dedicated… Get in touch if you want to get this rolling.

2 Likes

Fabulous. I’d love to try to understand why Pure data seems to perform worse than Gen, and if we can fix or improve it.
@jrp do you have an example of an algorithm in Gen and Pd that shows the difference?

Sorry, i only saw this now. My experience in the past was, that i had to rebuild a PD patch in GEN, because the compiled result from a PD patch was overloading the OWL CPU capacity all too soon.
Obviously i then tried putting the exact same functionality into GEN. I am not 100% sure, though, if i did, as GEN really needs a very different construction. My GEN versions tend to use only about 25% of the CPU, when converted.
(But that’s all i know. I wouldn’t be surprised, if most of the conversion implementation for PD in Heavy is correct, however a few objects only could cause the whole thing to lead to use too much CPU. To thoroughly find out we’d have to test object by object.)

I haven’t really tried to make the exact same patch in in bot PD and GEN, which would be necessary to really get indications on where to find the exact error zone during conversion by Heavy.

I sort of assume, that it would be much easier to implement libpd directly into the OWL, IF we wouldn’t be limited by RAM shortage… at the end of my wisdom there. I can try look into this, unfortunately that won’t happen before end of June, too busy with productions here…

1 Like

Hi All,

I’m not a programmer, but learned some PD via an Advanced Electronics in Music class and have created a number of effects patches for my Alchemist. These all work in PD on my laptop. I’m trying to get one of the more basic ones to compile online, but I get the following error:

PHP Warning: file_get_contents(https://www.rebeltech.org/wp-content/uploads/patch-files/5fef6c8728e19b30498759f1/Sputter Tremolo for Alchemist.pd): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in /opt/OwlServer/web/scripts/patch-builder/patch-builder.php on line 185 ERROR: Could not download file https://www.rebeltech.org/wp-content/uploads/patch-files/5fef6c8728e19b30498759f1/Sputter Tremolo for Alchemist.pd (1). ERROR: Download of https://www.rebeltech.org/wp-content/uploads/patch-files/5fef6c8728e19b30498759f1/Sputter Tremolo for Alchemist.pd failed.

This is probably just a rookie mistake, as it’s the first patch I have attempted to compile. Any merciful advice would be very much appreciated!
Eric

It could be the space in the filename, can you please try replacing it with an underscore?

Thank you–as suspected a total rookie mistake. It’s now working.

1 Like