-
ben.wes
actually, there has been quite some work on it in the recent months - including updates of the pd version (to 0.54 - so 0.55 is still due). the current builds on github are just 2 months old: https://github.com/agraef/purr-data/releases/tag/2.20.0
... there is no build for silicon mac yet though and i didn't attempt to build it myself - so unfortunately, i can't say anything about vstplugin~ in this version (only that it works perfectly well in vanilla for me, too).
-
ben.wes
also adding my attempt to create a software oscilloscope with Gem (trying to simulate some physical characteristics). Requires
pmpd
lib besidesGem
: https://github.com/ben-wes/pd-osci_xy -
ben.wes
i just uploaded a spectrogram built with Gem. It's not very efficient and i might give it another try with shaders doing the drawing and logarithmic mapping. but anyway - seemed like an appropriate contribution to this thread:
https://github.com/ben-wes/pd-spectro_tilde -
ben.wes
responding to myself here ... it's possible to iteratively append data to a top-level array with
purest_json
(which avoids the restriction to symbols of MAXPDSTRING size).that's not possible for nested keys though (which is a requirement in my case). i changed the purest_json code now so that i can add to nested keys via messages like
array LoudspeakerLayouts.Loudspeakers $1
. not sure if that's the "right" way and i'd still be curious if other people see better options in Pd for it! -
ben.wes
i'm trying to use
json-encode
from the purest_json library to create config files for the IEM AllRADecoder. now it might be a questionable endeavor to do this with Pd in general - but i'd like to see if it's possible anyway.the aim is to create a file like https://plugins.iem.at/allradecoder/layoutWithAdditionalImaginaryLoudspeakers.json
... what i have so far works up until 10 speakers with some test data. but then, the symbol obviously gets too long and i get unnecessary escapings and the last parts of the data look like this:
\"Channel\":11\\,*"}
any ideas on how to solve this?here's the patch.
test-json-encode.pd (ATTENTION: this writes a test.json file on bang in the patch directory) -
ben.wes
Has anyone implemented or experimented with the Fractional Fourier Transform (FrFT) in Pure Data and might point me to relevant resources? So far, I badly failed at implementing an external that would allow continuous rotation between time and frequency domains (see https://en.wikipedia.org/wiki/Fractional_Fourier_transform).
I've heard about quite interesting musical applications of this in a talk and demos by Günther Rabl (who implemented this years ago in his own tools AMP/VASP) and would love to experiment with it in Pd.
-
ben.wes
@trummerschlunk said:
hm, too bad. Same is true for the external, I guess?
yep. vanilla patches are the only option for that ... but when it comes to 1-sample feedback without
block~ 1
, the only options are the filter objects (rpole~
etc.). i'm honestly not completely sure if this dynamic smoothing here could be achieved in some other way (like obtaining x[n-1] viarzero_rev~ 0
) - but i don't think so. -
ben.wes
ah - and i forgot to mention in the previous response: i made another little update to the abstractions so that you can set the channel count via a
channels <count>
message:unfortunately, it's necessary to set the count of send~ objects manually that way.
-
ben.wes
@trummerschlunk said:
[...] Maybe because I am on a arm/silicon Mac?
the builds include binaries for both, silicon and intel Macs (on M2 here myself - so that's even the only build that's actually tested
).
Would dynsmooth~ then be the accurate or the efficient version?
dynsmooth~
initializes the accurate version. if you createdynsmooth~ -e
, it'll use the efficient algorithm. also, you can initialize base frequency and sensitivity with creation args like this:dynsmooth~ -e 100 0.01
for example.Would it run in 'compiled mode' in plugdata?
compiled mode only supports the object that are known by the heavy compiler:
https://github.com/Wasted-Audio/hvcc/blob/develop/docs/09.supported_vanilla_objects.md... unfortunately,
block~
(for the 1-sample feedback) is not supported - so i'm afraid that it's not an option to use the abstractions in that mode. -
ben.wes
@trummerschlunk said:
Sorry, I am still very new to plugdata, and I get error messages with dynsmoth-abs-efficient~ -mc 32
bad arguments for message 'f' to object 'objectmaker'ah, wait ... you don't need to do anything for multichannel support - it just takes multichannel signals as input and outputs the smoothed multichannel signal. but i only added that for the external (dynsmooth~) - for the abstractions, it would also be simple, i think - but i didn't attempt yet. would need to change the feedback to multichannel.
Where exactly do I place your dynsmooth~ folder (downloaded from releases)? In Abstraction and Externals? Thanks a LOT!
in any folder that pd knows.
... but externals would be fine, sure! and pd will automatically search in the
dynsmooth~
folder for the external with the same name (for the abstractions, you'd need to usedynsmooth~/dynsmooth-abs~
unless you add the folder to the paths). -
ben.wes
... and probably the last update on this for the time being (unless people find errors, of course):
the latest changes add multichannel support to the external (it might be nice to allow different base frequencies and different sensitivities for different channels - but i'll skip that for now).
-
ben.wes
@trummerschlunk glad to hear! i made another quick update. the abstractions are more properly named now (
dynsmooth-abs*
) and they also support creation args forbasefreq
andsensitivity
. i removed the additional inlets ... all objects (including the external) are now expecting messages for those parameters (and forclear
).i also added a basic readme and the new "release" (huge word for this little object) is also ready for download:
-
ben.wes
@trummerschlunk said:
did you happen to make an external yet?
you can try this: https://github.com/ben-wes/pd-dynsmooth/releases/tag/0.1.0-test1 ... this is completely fresh and untested though. so no guarantees! and the help file currently relies on my show~ object which relies on pdlua. damn those dependencies.
anyway: it looks ok for me. that stuff isn't well organized though. i might invest a bit more time soon. also not sure if it's sufficient to control base frequency and sensitivity only via messages.
it includes the abstractions as well ( @manuels: i'm referring to your patch there - let me know if this is ok for you, otherwise, i'll gladly change that).
-
ben.wes
for the sake of completeness (and thanks to @manuels' inspiring patch), i'm adding the "efficient" version here (not well tested neither):
... i really like this approach and i will create an external for it as well.
-
ben.wes
really cool stuff - had fun playing around with this! now i didn't understand the whole patch (which is insane) ... but it looks like you're checking the closest "pixels" only for each mass? seems like a great optimisation so that you don't need to check against every pixel. did i get that correctly?
-
ben.wes
oh ... i didn't see the discussion here ... just built a little (and certainly dirty) patch for this after the discussion on facebook:
patch_n_bitmaps.zipit obviously becomes very slow with lots of canvases (and i'm already omitting the white pixels):
2024-09-21 22-46-18.mp4... plugdata on the other hand can deal with these quite easily - i creates rounded cnv rectangles though.
2024-09-21 22-58-59.mp4(i scale them in that video - so this is not a glitch, but many wide rectangles)
EDIT: this patch only works with a specific 3x8bit bmp format. so it would certainly look a bit funny with other formats.
-
ben.wes
you can check the help patch of this
simplex~
external here (it's also on deken) - it includes very basic vanilla 2d and 3d oscilloscopes: https://github.com/ben-wes/pd-simplex -
ben.wes
i realized that i obviously didn't follow all categories on this forum - so i missed your post and this response comes a little late. anyway: thanks for sharing! it reminded me of my approach for a vanilla pitch tracker. i now also realized that i didn't need a [block 1] for a 1-sample delay (which was there until today), but could use [rzero~] instead:
patch: zc_pitchtrack~.pd
-
ben.wes
@manuels said:
Could certainly be optimized in some ways (especially using ELSE objects). But does it even work? I don't have a good method to test it, unfortunately.
nice! - i like this counter for samples per phase:
... from what i tested: it behaves perfectly well up to nyquist - although also in this range, there are sometimes consecutive non-zero samples (which i'm still not 100% sure if valid. see the
1, 1
in the middle below. the blue graph is the scaled offset per phase).
-
ben.wes
here's a completely vanilla version of the delay variant avoiding [expr~] (with some rather ugly hacks to achieve exact values of -1, 0 and 1). it works for all frequency input < nyquist (for nyquist, the > 0.5 check fails):
EDIT: seeing now that this doesn't really add anything to @ddw_music's approach at https://forum.pdpatchrepo.info/topic/13317/looking-for-velvet-noise-generator/52 - except for my failed try to achieve non-interpolated values with delread4~.