[Audio settings] set pure data's delay (msec) for one single patch


#1

Hi everyone!

Just bought an Organelle, and I’m really impressed when I see how the community is already growing, creative and nice.

I’m a complete noob in pure data, so to start learning, I’m trying to make existing PD Vanilla patches compatible with the Organelle.
So far, I’im able to have sound from the [throw~ out] objects, L and R, to make the knobs usable and to display stuff on the screen.

My problem is that the default audio setting of the PD that is installed in the Organelle only has a delay of 4msec, and that makes my patches quite full of clicks and pops. I changed it to 10msec hooking up the Organelle to a screen, and the clicks and pops disappear.
But when I go back to the patch using the Organelle stand alone, it’s back to default 4msec, and the clicks and pops issue is back.

Is there a way to edit the settings within the Organelle’s PD, so that this patch can be run with 10msec of delay?

Here is the patch I’m talking about:
https://patchstorage.com/adding-filter-to-blips/

Thanks a lot for all the great patches, and for this awesome little piece of technology!


#2

What is the CPU usage on a patch like this? In non gui mode Pd is started with 4ms latency as you noticed (optimized for low latency)…

I haven’t noticed any clicks or pops in other patches even with audiobuf at 4ms, but I usually try to keep CPU under 75%. Also using the block~ object with a size larger than the audio buffer size might cause clicks, something I noticed a while ago using a phase vocoder with a window size larger than audio buffer size.

Unfortunately there is not an easy way to change latency, as Pd is launched internally with the ‘-audiobuf 4’ flag in non gui mode. There is a .pdsettings file in /root/.pdsettings, so you might be able to change the setting there. I don’t know if the command line flag will override this. Also it might be possible to send Pd an internal message from your patch itself. These messages are not well documented but they do allow changing global settings from within a patch:

https://puredata.info/community/pdwiki/PdInternalMessages


#3

block~ should honestly be removed from organelle~ patches it only has caused me headaches. Make sure you subpatch and hide any arrays and use pd~ for subprocessing and abstraction. That’s how you make things faster, not by tweaking pd in the box.

In soviet union software writes you!


#4

I downloaded your patch and save for the crackle it sounds ace! Hope you can get it running smoothly :slight_smile:


#5

Hi oweno,

thank you for your reply.
The CPU usage seems pretty low (under 50% most of the time, as far as the Organelle can tell).
This is a latency issue I guess, the patch is really messy, I think it has been made by improvising new features on the run.

Thanks for the link, I’ll give a try and report back if I find something usefull for everybody.


#6

Hi shreeswifty,

thanks for posting,
I guess one of the problems is that the patch needs to be tidied!
Unfortunately, the guy who made it first must have improvised his workflow, adding new features as he was experimenting.
I know very little in PD, so I don’t think I’ll be any good at retro-engineering with this messy patch!

I’ll give it a try though, it could be a challenging introduction to PD programing.


#7

Thank you very much Wannop,

the “generative” synth part of the patch is not from me, I’m only trying to make it work on the Organelle since it was just plain PD Vanilla.
I just added the VCF and its controls for fun, and to add a little sense of control over a patch that works all by itself.

I agree though, it sounds pretty neat, I love all those generative patches, as well as shreeswifty’s, and I’d love to be able to deconstruct them so that I can understant what’s going on there, and make my own awesome sounding “random” patches!
This is a start…


#8

OK folks,

I discoverded a methods to find what internal messages you can send to PD, in order to change settings, create objects, etc., in non-GUI mode.

(Works in Vanilla, don’t know for extended or other Purr Data stuff)

  • Run Pd
  • put these objects in the canvas:
    [r pd]
    |
    [print]

Now, whatever you do in PD, will be printed in the console.

To make your patch control PD, just copy the log that is in the console inside the message boxes of your patch.
Link them to the object [s pd], and voilà: when you bang the messages the stuff happens in Pd.

For instance, I wanted to automatically inscrease the latency up to 9 in a patch that was crackling all over the place.
I asked pd to print in the console all the actions of settings I did, and it gave:

  • print: audio properties (for the action open the audio settings)
  • print: key 1 57 0 (for pressing the 9 key)
  • print: key 0 57 0 (for releasing the 9 key)
  • print: audio-dialog 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 44100 9 -1 64 (for clicking on the OK button)

Once I had the steps in Pd’s own language, I just opened my patch, and put these phrases in message boxes (I guess the order means something to Pd, each message needs to be read one after the other, in the right order), hooked a [loadbang] object to the first inlet, and hooked the last outlet to a [s pd] object.

I’d love to attach the example patches, but the forum rules won’t let me. I’ll try to upload them on patchstorage later.

This is a simple one, but from there, you can change anything you want in the instance of Pd that is running your patch, form your patch, in non-GUI mode.

I’ll give it a try on my “blips” patch on the Organelle as soon as I can.


TB - UpdateOS 2.2 TB Beta - closed -> use official OS 3.0
#9

Thanks for sharing this! a great method for controlling aspects of Pd right from the patch.


#10

i would gladly look at it if you share it, i hate crackle ! :slight_smile:


#11

What is the default block size for organelle~ 64?


#12

Haha: So do I!

The messy patch is on Patchstorage, there is a lot of things to do on it, to simplify and tidy up!
https://patchstorage.com/adding-filter-to-blips/

90% of it is above my understanding… :wink: