• ddw_music

    @SCFan32 said:

    is there some ressource to search for specific functions like in the help browser of SuperCollider?

    Also consider plugdata. The GUI is more modern (Max-inspired). Object boxes perform an autocompletion search while you're typing. In your case, you'd have typed "osc" and oscformat would have been in the list.

    At one point, I tried an autocomplete tcl plugin for pd, but it didn't work for me.

    hjh

    posted in technical issues read more
  • ddw_music

    @seb-harmonik.ar said:

    @ddw_music I'm pretty sure there's an option to display all of the searched paths that get failed trying to load a certain class, if you run pd at higher verbosity. It will be like "tried xxx and failed" or something.

    I tried log level 4 (maximum) and I don't see any such messages.

    hjh

    posted in technical issues read more
  • ddw_music

    @oid said:

    Might want to check the pd github, there is at least one pd killing bug when using Pipewire's Jack, saw it yesterday but did not look into it since I have also let updating my system slide and don't feel like updating quite yet.

    The only bug report I see is that it fails when you toggle "use callbacks" -- so it looks like the old joke, "'Doc, it hurts when I move my arm like that!' -- so don't move your arm like that."

    Btw I use both Pd-next and plugdata -- I'm not at all a fan of the Tcl/Tk interface, though, so I tend to reach for plugdata first. But if I'm making an abstraction that I know people will use in vanilla, then it makes more sense to build it in vanilla so that it looks nicer in that environment.

    hjh

    posted in technical issues read more
  • ddw_music

    @whale-av said:

    @ddw_music A lot of complaints of the same with externals lately.... always on a recent Mac.
    What is this students machine /OS?

    It is mac, not sure the version.

    You could try putting one of the abstractions in the Pd/bin folder. If it is then not found it must be an os security problem?

    I guess I'd have assumed that macOS would treat a text file (.pd) as "just data" and not as an executable that could be quarantined. Also, I tested with a cyclone binary external (play~) and no problem, but the pure-vanilla abstraction failed.

    Are there any additional log messages about objects that couldn't be created? "... couldn't create" isn't enough information to troubleshoot this problem. Is it because the file wasn't found? Or was there something wrong in the file? Or permissions...? I can only guess.

    hjh

    posted in technical issues read more
  • ddw_music

    Copied hjh-abs/ into a student's Documents/pd/Externals folder.

    Added Documents/pd/Externals/hjh-abs to the paths.

    None of the abstractions in that folder are available ("couldn't create").

    cyclone is also installed and in the path -- and there's no problem.

    So how should we fix this? I never had this problem with my abstraction folder before.

    hjh

    posted in technical issues read more
  • ddw_music

    @rph-r said:

    but anyway I'll figure out how I could use [sf-varispeed2~] since I need to fine tune and resync. I have to guarantee the installation for 5 years (!!).

    BUT... the bad news... I just noticed that you said the files are 10 minutes. sf-varispeed(2)~ depends on loading the file into an array, where the Pd-canonical way to stream it out is by feeding sample indices to tabread4~. (This is under the hood of sf-varispeed~.)

    32-bit floats are precise up to about six minutes or so. There's nothing Pd can do about that (except if you build a 64-bit version -- not sure how that would run on a Bela). This isn't Pd's fault btw -- SuperCollider's BufRd has the same limitation.

    So I guess your choices are:

    • [sf-varispeed2~] and split the files across multiple buffers, trying somehow to hide the seams. (Or, split the files and work out your own play mechanism that crossfades over the seams.)
    • OR: Sample-rate-convert the files. You could have, on your dev computer, a "myfile-0-44100.wav" and a "myfile-0-48000.wav" (and myfile-1, myfile-2 etc.) and then select the file by a numeric index and sample rate:

    pd-sample-rate-select-file.png

    Then when you move the patch over to the Bela, just copy the -44100 file and the patch will still find it according to the sample rate.

    @oid

    Edit: I suppose it could also be the case that your soundcard is 48k only?

    That could be -- it's the case on my current laptop. If I request qjackctl* to start at 44.1 kHz, it will not do that for the built-in sound card -- 48 kHz only.

    • I know, I know... planning to upgrade to Ubuntu Studio 24.04 over the winter holiday... then hello pipewire.

    hjh

    posted in technical issues read more
  • ddw_music

    @whale-av said:

    I remember that [sf-play2~] can autocorrect, if it is available for your system.......

    [sf-play2~] is an abstraction based on cyclone/play -- which probably rules it out for Bela.

    In the same pack, however, there's [sf-varispeed2~] which is (I think) pure vanilla.

    https://github.com/jamshark70/hjh-abs

    @rph-r

    I don't really understand why a simple and so common object doesn't work...

    FWIW in SuperCollider you'd run into the same issue. The difference is that SC makes it easier by providing a unit generator, BufRateScale, that you can just plug into a Phasor or PlayBuf and get the right speed.

    In Pd vanilla, you have to get the file sample rate from [soundfiler] and the system sample rate from [samplerate~] (and there's an interesting caveat about that, noted in the help file), and divide them on your own: playspeed = file_sr / system_sr.

    I made [sf-play2~] and [sf-varispeed2~] and their supporting abstractions because I agree -- generally users shouldn't have to think about this. The abstractions do exactly what I just described, only behind the scenes.

    hjh

    posted in technical issues read more
  • ddw_music

    WRT real-time audio, the most important performance factor is: will the next hardware buffer's worth of audio be ready on time?

    If we assume a 512 sample hardware buffer and a 48 kHz sample rate, then each hardware buffer takes 10.6666667 ms.

    If the audio calculations finish in 1 ms, that's roughly 10% of the available time. If they finish in 5 ms, that's 50%.

    RT audio calculations tend to happen in bursts. IIUC (I could be wrong) system CPU monitors are looking for sustained CPU activity, which does not characterize RT audio. So the system monitor might tell you that the system isn't very busy, but the DSP thread might actually be stressed.

    For instance, I just ran a bunch of DSP in SuperCollider and it reported about 38% CPU use, but the system task monitor reported 4%. (But htop showed one CPU core with high activity, and the rest mostly idle... so a single CPU usage number that aggregates all the CPU cores can also under-report.)

    I think I remember reading here that Pd does its audio calculations outside of the audio driver's callback, and uses the callback only to copy data, meaning that audio subsystems like JACK in Linux might significantly underreport CPU usage. So the whole thing is a bit of a tricky question. I don't know how Purr Data is measuring CPU use.

    hjh

    posted in technical issues read more
  • ddw_music

    Oh... if you want to load 13 images, you have to specify 12 in the "open" message. :flushed:

    No error message, no hints, silent failure :+1: cheers, then.

    hjh

    posted in pixel# read more
  • ddw_music

    I have used pix_multiimage successfully in the past. But in this patch, I'm getting a fat load of nothing.

    multiimage-dang-it.png

    There is a folder adjacent to this file called "pix" -- in it, there are 13 files, pic0.jpg, pic1.jpg ... pic12.jpg.

    Selecting any image 0-12 in the right inlet produces:

    [pix_multiimage]: selection number too high: 1 (max num is 0)
    

    I'm definitely clicking the "open" message, and no error is reported... but nothing is loading.

    I dunno here, AFAICS I'm following the helpfile to the letter and doing stuff I've done before. So my guess is that the object is broken...? Can someone confirm?

    hjh

    posted in pixel# read more
  • ddw_music

    I guess it all begs the question though: Why is the rpi program sending numbers as strings?

    hjh

    posted in technical issues read more
  • ddw_music

    @dmanz could you print the raw netreceive output, before oscparse? They will appear as lists of bytes -- that would confirm what is the type tag for the number, and how the number is being represented.

    It's all guesswork without knowing that.

    hjh

    posted in technical issues read more
  • ddw_music

    @whale-av said:

    The message to [vline~] cannot set times to be longer than 500ms because your tempo is 120bpm.

    Perhaps not a critical error, because, if a new envelope comes into vline~ while an older one hasn't finished, the older one is (correctly) just abandoned. They don't interfere.

    hjh

    posted in technical issues read more
  • ddw_music

    Right -- the OP actually mentions both types of blurring: blurring the contents of each frame individually (feathering edges), or blurring from one frame to the next (trails).

    [pix_blur] does motion blurring but AFAICS it does not do image blurring.

    [pix_convolve] does image blurring, but it's probably slow for the large kernels that would be required for extreme blurring effects.

    I needed an extreme image blur (soft-edge alpha masking) so I looked to see if frei0r had an appropriate plugin, and it did :+1:

    AFAICS Gem does not have a built-in IIR image blur object.

    hjh

    posted in pixel# read more
  • ddw_music

    Pushing the boundaries of necrobumping a thread (19 years!)...

    I just needed a more extreme blur than pix_convolve can do.

    For future readers: pix_frei0r with the stock IIRblur plugin worked great, a trouble-free drop-in.

    hjh

    posted in pixel# read more
  • ddw_music

    @FFW said:

    For fun this is the cross product

    Huh -- the visual is actually kinda comprehensible :grin:

    Eventually I realized that my specific case can be done more easily with Cartesian coordinates, so I'm just keeping them in that space. This cross product is good for future reference :+1:

    hjh

    posted in technical issues read more
  • ddw_music

    @willblackhurst said:

    its always half at first. its for mesuring distance from the middle. like a radius.

    Thanks -- I still don't get it. Maybe I'll have to file a bug report and ask the devs.

    I also find that as I increase the grid resolution, the drawn shape grows :confounded: -- a 5x5 grid with points at -3, -1.5, 0, 1.5, 3 draws half size, but a 6x6 grid draws slightly larger.

    That's weird.

    hjh

    posted in pixel# read more
  • ddw_music

    @jameslo said:

    @ddw_music Is this what you're looking for?

    Indeed -- thanks. Wouldn't have chanced across that.

    Though, in (3.0 / 250), Pd didn't truncate the 3.0 either.

    Thanks --
    hjh

    posted in technical issues read more
  • ddw_music

    I'm stumped. I'm generating control points between -3 and +3 (z = 0), and it's drawing -1.5 to +1.5. The white square is -3 to +3. The green circles show where -1.5 and +1.5 are.

    Anyone know why?

    surface3d-half-size.png

    why-is-it-half-size.pd

    (I will be distorting the grid later, so the loop-generation of a control point grid is necessary.)

    hjh

    posted in pixel# read more
  • ddw_music

    Is this documented? Surprised me rather a lot.

    pd-expr-int.png

    "You've got... integer division" is a bit too much like Max for my taste...

    hjh

    posted in technical issues read more
Internal error.

Oops! Looks like something went wrong!