grambilib~ - New ambisonics externals for Pd
thanks for the suggestion! I"ve never compiled anything before, but I gave it a shot...
I'm getting this error in PD after loading the 3 compiled objects (6 files: grambidec.pd_darwin, grambidec.pd_darwin.o, grambiman.pd_darwin, grambiman.pd_darwin.o, grambipan.pd_darwin, grambipan.pd_darwin.o):
load_object: Symbol "grambiman_setup" not found in "/Users/brianlindgren/Documents/Pd/externals/grambiman.pd_darwin"
Also make is generating a bunch of warnings:
++++ info: using Makefile.pdlibbuilder version 0.7.0
++++ info: using Pd API /Applications/Pd-0.54-1.app/Contents/Resources/src/m_pd.h
++++ info: making target all in lib grambidec~
++++ info: making grambidec.pd_darwin.o in lib grambidec~
cc -DPD -I "/Applications/Pd-0.54-1.app/Contents/Resources/src" -DUNIX -DMACOSX -I /sw/include -Wall -Wextra -Wshadow -Winline -Wstrict-aliasing -O3 -ffast-math -funroll-loops -fomit-frame-pointer -arch arm64 -mmacosx-version-min=10.6 -o grambidec.pd_darwin.o -c grambidec.c
grambidec.c:41:24: warning: unused variable 'x' [-Wunused-variable]
t_grambidec_tilde *x = (t_grambidec_tilde *)(w[1]);
^
grambidec.c:43:16: warning: unused variable 'APin2' [-Wunused-variable]
t_sample *APin2 = (t_sample *)(w[3]);
^
grambidec.c:44:16: warning: unused variable 'APin3' [-Wunused-variable]
t_sample *APin3 = (t_sample *)(w[4]);
^
grambidec.c:45:16: warning: unused variable 'APin4' [-Wunused-variable]
t_sample *APin4 = (t_sample *)(w[5]);
^
grambidec.c:69:24: warning: unused variable 'x' [-Wunused-variable]
t_grambidec_tilde *x = (t_grambidec_tilde *)(w[1]);
^
grambidec.c:78:23: warning: variable 'sample2' set but not used [-Wunused-but-set-variable]
t_sample sample1, sample2, sample3, sample4;
^
grambidec.c:78:41: warning: variable 'sample4' set but not used [-Wunused-but-set-variable]
t_sample sample1, sample2, sample3, sample4;
^
grambidec.c:102:24: warning: unused variable 'x' [-Wunused-variable]
t_grambidec_tilde *x = (t_grambidec_tilde *)(w[1]);
^
grambidec.c:113:41: warning: variable 'sample4' set but not used [-Wunused-but-set-variable]
t_sample sample1, sample2, sample3, sample4;
^
grambidec.c:143:24: warning: unused variable 'x' [-Wunused-variable]
t_grambidec_tilde *x = (t_grambidec_tilde *)(w[1]);
^
grambidec.c:185:24: warning: unused variable 'x' [-Wunused-variable]
t_grambidec_tilde *x = (t_grambidec_tilde *)(w[1]);
^
grambidec.c:228:24: warning: unused variable 'x' [-Wunused-variable]
t_grambidec_tilde *x = (t_grambidec_tilde *)(w[1]);
^
grambidec.c:282:24: warning: unused variable 'x' [-Wunused-variable]
t_grambidec_tilde *x = (t_grambidec_tilde *)(w[1]);
^
grambidec.c:351:37: warning: unused parameter 's' [-Wunused-parameter]
void *grambidec_tilde_new(t_symbol *s, int argc, t_atom *argv) //, t_floatarg test
^
grambidec.c:473:5: warning: performing pointer subtraction with a null pointer has undefined behavior [-Wnull-pointer-subtraction]
CLASS_MAINSIGNALIN(grambidec_tilde_class, t_grambidec_tilde, APf);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Applications/Pd-0.54-1.app/Contents/Resources/src/m_pd.h:529:59: note: expanded from macro 'CLASS_MAINSIGNALIN'
class_domainsignalin(c, (char *)(&((type *)0)->field) - (char *)0)
^ ~~~~~~~~~
15 warnings generated.
++++ info: linking objects in grambidec.pd_darwin for lib grambidec~
cc -undefined suppress -flat_namespace -bundle -arch arm64 -mmacosx-version-min=10.6 -o grambidec.pd_darwin grambidec.pd_darwin.o -lc
ld: warning: -undefined suppress is deprecated
ld: warning: -undefined suppress is deprecated
++++ info: making grambiman.pd_darwin.o in lib grambidec~
cc -DPD -I "/Applications/Pd-0.54-1.app/Contents/Resources/src" -DUNIX -DMACOSX -I /sw/include -Wall -Wextra -Wshadow -Winline -Wstrict-aliasing -O3 -ffast-math -funroll-loops -fomit-frame-pointer -arch arm64 -mmacosx-version-min=10.6 -o grambiman.pd_darwin.o -c grambiman.c
grambiman.c:64:24: warning: unused variable 'x' [-Wunused-variable]
t_grambiman_tilde *x = (t_grambiman_tilde *)(w[1]);
^
grambiman.c:139:24: warning: unused variable 'x' [-Wunused-variable]
t_grambiman_tilde *x = (t_grambiman_tilde *)(w[1]);
^
grambiman.c:226:24: warning: unused variable 'x' [-Wunused-variable]
t_grambiman_tilde *x = (t_grambiman_tilde *)(w[1]);
^
grambiman.c:252:32: warning: variable 'sample3' set but not used [-Wunused-but-set-variable]
t_sample sample1, sample2, sample3, sample4, sample10;
^
grambiman.c:306:24: warning: unused variable 'x' [-Wunused-variable]
t_grambiman_tilde *x = (t_grambiman_tilde *)(w[1]);
^
grambiman.c:370:37: warning: unused parameter 's' [-Wunused-parameter]
void *grambiman_tilde_new(t_symbol *s, int argc, t_atom *argv)
^
grambiman.c:436:5: warning: performing pointer subtraction with a null pointer has undefined behavior [-Wnull-pointer-subtraction]
CLASS_MAINSIGNALIN(grambiman_tilde_class, t_grambiman_tilde, APf);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Applications/Pd-0.54-1.app/Contents/Resources/src/m_pd.h:529:59: note: expanded from macro 'CLASS_MAINSIGNALIN'
class_domainsignalin(c, (char *)(&((type *)0)->field) - (char *)0)
^ ~~~~~~~~~
7 warnings generated.
++++ info: linking objects in grambiman.pd_darwin for lib grambidec~
cc -undefined suppress -flat_namespace -bundle -arch arm64 -mmacosx-version-min=10.6 -o grambiman.pd_darwin grambiman.pd_darwin.o -lc
ld: warning: -undefined suppress is deprecated
ld: warning: -undefined suppress is deprecated
++++ info: making grambipan.pd_darwin.o in lib grambidec~
cc -DPD -I "/Applications/Pd-0.54-1.app/Contents/Resources/src" -DUNIX -DMACOSX -I /sw/include -Wall -Wextra -Wshadow -Winline -Wstrict-aliasing -O3 -ffast-math -funroll-loops -fomit-frame-pointer -arch arm64 -mmacosx-version-min=10.6 -o grambipan.pd_darwin.o -c grambipan.c
grambipan.c:423:5: warning: performing pointer subtraction with a null pointer has undefined behavior [-Wnull-pointer-subtraction]
CLASS_MAINSIGNALIN(grambipan_tilde_class, t_grambipan_tilde, APf);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Applications/Pd-0.54-1.app/Contents/Resources/src/m_pd.h:529:59: note: expanded from macro 'CLASS_MAINSIGNALIN'
class_domainsignalin(c, (char *)(&((type *)0)->field) - (char *)0)
^ ~~~~~~~~~
1 warning generated.
++++ info: linking objects in grambipan.pd_darwin for lib grambidec~
cc -undefined suppress -flat_namespace -bundle -arch arm64 -mmacosx-version-min=10.6 -o grambipan.pd_darwin grambipan.pd_darwin.o -lc
ld: warning: -undefined suppress is deprecated
ld: warning: -undefined suppress is deprecated
++++info: target all in lib grambidec~ completed
This is my Makefile:
# Makefile for mylib
lib.name = grambidec~
class.sources = grambidec.c grambiman.c grambipan.c
datafiles = grambilib-help.pd readme.md
include Makefile.pdlibbuilder
Any suggestion? Thanks again!
Where does latency come from in Pure Data?
@whale-av Thanks, David.
I'm on Linux. Here's a little on apps I mentioned.
JACK is a "low-latency" multiplexing sound server (i.e., audio patch bay for pro apps)
It's sister server, PulseAudio, is the system's generic "multiplexer" - these are needed because the modular driver system ("ALSA") doesn't do multiplexing, but only speaks to hardware.
Both JACK and PulseAudio are on trial overhaul with a new thing called PipeWire, which acts as an in-place substitution multiplexer server.
QSynth (fluidsynth) is a soundfont synthesizer - and yes, it has its own settings for buffers, but as long as audio apps are set to use the JACK multiplexer, they are bound by its hardware buffer size setting overall.
The Delay
The Pd delay I am getting is about 80ms, with the Pd "Delay" set to 40ms, and buffer size set to 1024 samples (at 48 kHz).
The QSynth is quite smaller, in fact, it is about 21ms, which equals 1024 samples.
Pd freezes if the "Delay" amount goes below 21 - but as I've mentioned, the overall Pd delay is 80ms.
(Reaper is a cross-platform DAW used by many)
The soundcard
The soundcard is M-AUDIO M-TRACK DUO.
M-AUDIO doesn't offer support for Linux, but ever since the Delta, I think, the driver is more or less similar and has been incorporated into Linux...
I can normally get recording-playback in the Reaper DAW going with 256 samples at 48 kHz steadily, and down to 128 samples with some underruns (for precision MIDI finger drumming, etc.)
The double buffer
One important thing to note is that along with hardware buffer size, the JACK system offers a config parameter of the number of buffers to use. Normally this is set at 2.
Perhaps that is the problem
PMPD wouldn't work
Good day,
has anyone here ever tried using pmpd on later MacOS? Mine doesn't seem to work giving this message every time I try to create a pmpd object:
... couldn't create
/Users/fyodor-st/Downloads/pmpd 2/iAmbient2D.pd_darwin: dlopen(/Users/fyodor-st/Downloads/pmpd 2/iAmbient2D.pd_darwin, 0x000A): tried: '/Users/fyodor-st/Downloads/pmpd 2/iAmbient2D.pd_darwin' (mach-o file, but is an incompatible architecture (have 'i386', need 'arm64')), '/System/Volumes/Preboot/Cryptexes/OS/Users/fyodor-st/Downloads/pmpd 2/iAmbient2D.pd_darwin' (no such file), '/Users/fyodor-st/Downloads/pmpd 2/iAmbient2D.pd_darwin' (mach-o file, but is an incompatible architecture (have 'i386', need 'arm64'))
/Users/fyodor-st/Documents/Pd/externals/pmpd/iAmbient2D.pd_darwin: dlopen(/Users/fyodor-st/Documents/Pd/externals/pmpd/iAmbient2D.pd_darwin, 0x000A): tried: '/Users/fyodor-st/Documents/Pd/externals/pmpd/iAmbient2D.pd_darwin' (mach-o file, but is an incompatible architecture (have 'i386', need 'arm64')), '/System/Volumes/Preboot/Cryptexes/OS/Users/fyodor-st/Documents/Pd/externals/pmpd/iAmbient2D.pd_darwin' (no such file), '/Users/fyodor-st/Documents/Pd/externals/pmpd/iAmbient2D.pd_darwin' (mach-o file, but is an incompatible architecture (have 'i386', need 'arm64'))
I've been using Pure Data for a couple of years now and feel more or less comfortable with it, but have no actual background in coding of any kind, so any help figuring out what this means and whether this is fixable would be really appreciated!
Did random seed change?
@seb-harmonik.ar said:
The rationale is that the behavior of a patch SHOULD be completely reproducible if desired (and that's the intent).
@jameslo said:
How could you reproduce them (in order to study them) if the pseudo-random number sequence wasn't deterministic?
There might be exceptions, but in every pseudorandom number generator I've ever heard of, the sequence does repeat, provided that it's been seeded with a consistent value first.
SuperCollider seeds the random number generator at startup based on some value calculated from the system time. If you want replicable behavior, you do thisThread.randSeed = /* some value explicitly under your control */
at the moment of your choosing.
Pd [random] does implement a "seed xxx" message, so it isn't correct to suggest that Pd's constant initial seed is the way to get a replicable sequence. That's lucky if that's what you want, but it isn't necessary, and it may not be ideal either.
The problem with the counterargument here is that the [random] behavior depends on factors outside the user's direct control. If you really want a replicable sequence, the way to be certain of that is to send a "seed xxx" message to the random number generator at a moment that is under your control. Otherwise, you have no control over other components that might be pinging the random number generator. (Suppose, for instance, your patch depends on an abstraction which pings a [random] from a [loadbang]. Then, later, the abstraction author thinks, no, I shouldn't do that, I should get that first random value only on demand. Then you move your patch to another machine, re-download the abstraction from its source, and bang the behavior is different.) edit: that's a bad example, never mind.
Viewed from that perspective, one could say that the current Pd behavior misled the OP to believe that it wouldn't be necessary or desirable to control the seed... and then something changed somewhere in the system. That's actually quite a bad situation -- OP relied on happenstance for a mission-critical sequence of notes, and it isn't clear how to recover the original behavior.
Now this part is interesting, from whale-av: "There seems to be a shift......... the 2nd 3rd 4th etc. created are the same as the 1st 2nd 3rd etc. used to be." One possible explanation could be that, in the old version, something was consuming one random value before the user patch did (so the user patch never saw the true first value) -- so in the old system, the "first" random value would have been the second to be generated. Then, in the later case, the first value to be seen is the real first value. (But that might be -- or, is probably -- something in the test scenario and not in Pd itself.)
hjh
PD freezing on Mac
@GypsyBonsai You probably mean the audio settings. If Pd cannot hook to the soundcard driver properly (incorrect settings) then it will freeze.
The delay (msecs) value can be increased to create a larger buffer which can help.
Once you have "bad" settings saved it can freeze Pd when it opens and then you cannot change the settings and recover.
If so then try opening Pd using this patch..... fix.pd
It will reset the audio settings to 2ch in, 2ch out, 44100 and a delay setting of 80....... which is usually a big enough buffer to get the soundcard talking again.
Modify that in a text editor before opening if 80 is still not enough.
Otherwise maybe Mac OS has restricted permissions for apps to join the audio group or connect to the pins.... and those will need to be adjusted.
David.
Ofelia GLSL Video Effects
I tried on a Intel Imac, same problems with same shaders.
Now, I tried on a windows 10 machine... same problems again, only same 3 shaders works (like Bokeh)..
For bleach, the error is different from apple:
ofShader: setupShaderFromSource(): GL_FRAGMENT_SHADER shader failed to compile
: ofShader: GL_FRAGMENT_SHADER shader reports:
Fragment shader failed to compile with the following errors:
ERROR: error(#60) Unknown char: ""
ERROR: error(#273) 1 compilation errors. No code generated
: //fragment program
uniform sampler2D Tex0;
uniform float GaussianBlur_Radius;
const float total = (1. + 8. + 28. + 56.) * 2. + 70.;
void main(void)
{
vec2 st = gl_TexCoord[0].st;
vec4 color = vec4(0.0,0.0,0.0,0.0);
color += (1. / total) * texture2D(Tex0, st - GaussianBlur_Radius * vec2(4. / 4., 0.));
color += (8. / total) * texture2D(Tex0, st - GaussianBlur_Radius * vec2(3. / 4., 0.));
color += (28. / total) * texture2D(Tex0, st - GaussianBlur_Radius * vec2(2. / 4., 0.));
color += (56. / total) * texture2D(Tex0, st - GaussianBlur_Radius * vec2(1. / 4., 0.));
color += (70. / total) * texture2D(Tex0, st);
color += (1. / total) * texture2D(Tex0, st + GaussianBlur_Radius * vec2(4. / 4., 0.));
color += (8. / total) * texture2D(Tex0, st + GaussianBlur_Radius * vec2(3. / 4., 0.));
color += (28. / total) * texture2D(Tex0, st + GaussianBlur_Radius * vec2(2. / 4., 0.));
color += (56. / total) * texture2D(Tex0, st + GaussianBlur_Radius * vec2(1. / 4.,ofShader: checkProgramLinkStatus(): program failed to link
ofShader: ofShader: program reports:
Fragment shader(s) were not successfully compiled before glLinkProgram() was called. Link failed.
How to smoothe out Arrays ?
@lacuna said:
Hard to tell without more details. I also have no experience with motorfader-hacks, but am interested.
At a precision of 1600 values it is very likely some subtle hardware bouncing, resonance of motor, dirt or similar ?
How slow do you drive them?
I would maybe try to eleminate the discontinuity on the hardware / measurement side, instead of cheating.
Do several measurements, instead of one shot only.
Also try to drive it from Pd instead of Cubase. Very slowly. Calibrating. Remember, there is some latency, too.Anyway, this is what you where asking for, I think:
new romantics )
@lacuna Hey, thank you very much, for your help and the patch!
I will now describe more precisely, what I would like to do. I thought, it would be a little bit off topic, because it is a bigger project.
Also, I think, I described it not correctly with the motorfader recording. That isn't true. My english is not the best, so my formulations arent always on point, but I will try my best.
So, to describe my Project, I am working on:
I have an old 20 years old "Steinberg Houston" Midi-Controller, which works via the Mackie Protocoll. It was specifically designed as a Cubase / Nuendo Controller back in the days. Cubase / Nuendo are also, as far as I know, the only DAWs with which the controller is working nowadays.
Almost all DAWs are supporting the specifications of a "Mackie Universal Pro" Controller. So I would like to program a Midi-Data Converter, so I can use my controller with other DAWs as a "Mackie Universal Pro" Controller.
At the moment I already found out, which midi Data the faders send and which midi data the DAW Cubase sends to the Controller. I also converted the Midi Data, so that I can use the controller faders, while Cubase thinks, it is a Mackie Universal Pro.
So, but the problem, why I started this thread is, that I noticed, that the Mackie Controller needs to get different values from the DAW to get the right fadermovement done, than my Steinberg Houston. For example: When I set my Fader in the DAW to 6 dBFS, my Conroller Fader moves correctly to 6 dBFS, as that is the highest fader value in Cubase. Also the other way around. If I set the Fader in Cubase to -00 dBFS, also my Fader of the controller is at the right position. So the lowest and highest values are correct. But if I set -20 dBFS in Cubase via Mackie UP Mode, my controller sets the fader to -10 dBFS. In the original Cubase "Steinberg Houston" mode, the fader movements are very precise and always are reflecting the number, which I set in the mixer in Cubase.
So my Idea was, to first send all Pitchbend values from Pure Data via Midi to Cubase in Houston Mode. I tricked Cubase in thinking, I would use the Houston Controller, but used Pure Data instead, to be very precise. Then in the preferences of cubase, I deleted all automation smoothing and set up a tempo in Cubase and with Metro in Pure Data, so that each 8th note, one pitch bend value is send to Cubase. and I synchronised both my DAW Cubase and Pure Data with a C3, sent from Cubase, when I start the Playback in Cubase. This C3 is then sent to Pure Data and than acts as a bang in PD to start the metro and sends the Midi Values. This midi Values are written then in Cubase as a Automation.
Then after that, I did the same process again, and recorded the Automation Values in Pure Data. But these values arent as smoothe as I would like to have them, even I recorded them that slow, that I set a metro of 8 per second which is for the 14 Bit values something like half an hour. The faders are the most important feature of my Controller for me, so I take the right amount of time to get them very precisely.
Between: I also found out the SysEx values to display what I want on my two rows houston display with Pure Data which was fun.
Can't install purr-data on Manjaro
Hey, I'm trying to get purr-data to work on my fresh Manjaro XFCE install, but it does not work. Any help is greatly appreciated!
$ yay purr-data
7 aur/purrdata-faust 0.18-1 (+0 0.00)
Run Faust signal processors in Pd, Purr-Data version
6 aur/purrdata-pure 0.26-1 (+0 0.00)
Loader plugin for the Pure programming language, Purr-Data version
5 aur/purrdata-lv2plugin-git 25.e00f302-1 (+0 0.00)
LV2 plugin host for Pd, Purr-Data version
4 aur/purrdata-mdnsbrowser-git 8.88d2b0c-1 (+0 0.00)
Zeroconf service advertising and discovery for Pd, Purr-Data version
3 aur/purrdata-touchosc-git 44.443c793-1 (+0 0.00)
A TouchOSC MIDI bridge for Pd, Purr-Data version
2 aur/purr-data-git 2.12.0.r4366.6d94e10b-1 (+2 0.00)
Jonathan Wilkes' nw.js variant of Pd-L2Ork (git version)
1 aur/purr-data 2.12.0.r4346.aeb24d89-1 (+6 0.03) (Out-of-date: 2021-06-17)
Jonathan Wilkes' nw.js variant of Pd-L2Ork (git version)
==> Packages to install (eg: 1 2 3, 1-3 or ^4)
==> 2
:: There are 2 providers available for gconf:
:: Repository AUR
1) gconf 2) gconf-gtk2
Enter a number (default=1): ==>
:: Checking for conflicts...
:: Checking for inner conflicts...
[Aur:2] gconf-3.2.6+11+g07808097-10 purr-data-git-2.12.0.r4366.6d94e10b-1
2 gconf (Build Files Exist)
1 purr-data-git
==> Packages to cleanBuild?
==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)
==> a
:: Deleting (1/1): /home/olav/.cache/yay/gconf
:: (1/2) Downloaded PKGBUILD: gconf
:: (2/2) Downloaded PKGBUILD: purr-data-git
2 gconf (Build Files Exist)
1 purr-data-git (Build Files Exist)
==> Diffs to show?
==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)
==>
:: (1/2) Parsing SRCINFO: gconf
:: (2/2) Parsing SRCINFO: purr-data-git
==> Making package: gconf 3.2.6+11+g07808097-10 (Wed 09 Feb 2022 10:23:23 PM CET)
==> Retrieving sources...
-> Cloning gconf git repo...
Cloning into bare repository '/home/olav/.cache/yay/gconf/gconf'...
==> Making package: purr-data-git 2.12.0.r4366.6d94e10b-1 (Wed 09 Feb 2022 10:23:23 PM CET)
==> Retrieving sources...
-> Cloning purr-data-git git repo...
Cloning into bare repository '/home/olav/.cache/yay/purr-data-git/purr-data-git'...
remote: Enumerating objects: 21531, done.
remote: Enumerating objects: 63399, done.
remote: Counting objects: 100% (1852/1852), done.
remote: Compressing objects: 100% (641/641), done.
remote: Total 21531 (delta 0), reused 0 (delta 0), pack-reused 21531
Receiving objects: 100% (21531/21531), 10.88 MiB | 9.46 MiB/s, done.
Resolving deltas: 100% (17681/17681), done.1 KiB | 704.00 KiB/s
-> Found 01_xml-gettext-domain.patch388.01 KiB | 704.00 KiB/s
-> Found gconf-reload.patch
-> Found gconf-merge-schema
-> Found gconfpkg
-> Found gconf-install.hook
-> Found gconf-remove.hook
==> Validating source files with sha256sums...
gconf ... Skipped
01_xml-gettext-domain.patch ... Passed
gconf-reload.patch ... Passed
gconf-merge-schema ... Passed
gconfpkg ... Passed
gconf-install.hook ... Passed
gconf-remove.hook ... Passed
remote: Total 63399 (delta 1106), reused 1786 (delta 1052), pack-reused 61547
Receiving objects: 100% (63399/63399), 177.19 MiB | 5.71 MiB/s, done.
Resolving deltas: 100% (33721/33721), done.
-> Downloading nwjs-sdk-v0.24.4-linux-x64.tar.gz...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 86.7M 100 86.7M 0 0 3966k 0 0:00:22 0:00:22 --:--:-- 8404k
==> Validating source files with md5sums...
purr-data-git ... Skipped
==> Validating source_x86_64 files with md5sums...
nwjs-sdk-v0.24.4-linux-x64.tar.gz ... Passed
==> Making package: gconf 3.2.6+11+g07808097-10 (Wed 09 Feb 2022 10:24:19 PM CET)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
-> Updating gconf git repo...
Fetching origin
-> Found 01_xml-gettext-domain.patch
-> Found gconf-reload.patch
-> Found gconf-merge-schema
-> Found gconfpkg
-> Found gconf-install.hook
-> Found gconf-remove.hook
==> Validating source files with sha256sums...
gconf ... Skipped
01_xml-gettext-domain.patch ... Passed
gconf-reload.patch ... Passed
gconf-merge-schema ... Passed
gconfpkg ... Passed
gconf-install.hook ... Passed
gconf-remove.hook ... Passed
==> Removing existing $srcdir/ directory...
==> Extracting sources...
-> Creating working copy of gconf git repo...
Cloning into 'gconf'...
done.
Switched to a new branch 'makepkg'
==> Starting prepare()...
/home/olav/.cache/yay/gconf/PKGBUILD: line 30: patch: command not found
==> ERROR: A failure occurred in prepare().
Aborting...
-> error making: gconf
And
yay purr-data
7 aur/purrdata-faust 0.18-1 (+0 0.00)
Run Faust signal processors in Pd, Purr-Data version
6 aur/purrdata-pure 0.26-1 (+0 0.00)
Loader plugin for the Pure programming language, Purr-Data version
5 aur/purrdata-lv2plugin-git 25.e00f302-1 (+0 0.00)
LV2 plugin host for Pd, Purr-Data version
4 aur/purrdata-mdnsbrowser-git 8.88d2b0c-1 (+0 0.00)
Zeroconf service advertising and discovery for Pd, Purr-Data version
3 aur/purrdata-touchosc-git 44.443c793-1 (+0 0.00)
A TouchOSC MIDI bridge for Pd, Purr-Data version
2 aur/purr-data-git 2.12.0.r4366.6d94e10b-1 (+2 0.00)
Jonathan Wilkes' nw.js variant of Pd-L2Ork (git version)
1 aur/purr-data 2.12.0.r4346.aeb24d89-1 (+6 0.03) (Out-of-date: 2021-06-17)
Jonathan Wilkes' nw.js variant of Pd-L2Ork (git version)
==> Packages to install (eg: 1 2 3, 1-3 or ^4)
==> 2
:: There are 2 providers available for gconf:
:: Repository AUR
1) gconf 2) gconf-gtk2
Enter a number (default=1): ==>
:: Checking for conflicts...
:: Checking for inner conflicts...
[Aur:2] gconf-3.2.6+11+g07808097-10 purr-data-git-2.12.0.r4366.6d94e10b-1
2 gconf (Build Files Exist)
1 purr-data-git
==> Packages to cleanBuild?
==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)
==> a
:: Deleting (1/1): /home/olav/.cache/yay/gconf
:: (1/2) Downloaded PKGBUILD: gconf
:: (2/2) Downloaded PKGBUILD: purr-data-git
2 gconf (Build Files Exist)
1 purr-data-git (Build Files Exist)
==> Diffs to show?
==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)
==>
:: (1/2) Parsing SRCINFO: gconf
:: (2/2) Parsing SRCINFO: purr-data-git
==> Making package: gconf 3.2.6+11+g07808097-10 (Wed 09 Feb 2022 10:23:23 PM CET)
==> Retrieving sources...
-> Cloning gconf git repo...
Cloning into bare repository '/home/olav/.cache/yay/gconf/gconf'...
==> Making package: purr-data-git 2.12.0.r4366.6d94e10b-1 (Wed 09 Feb 2022 10:23:23 PM CET)
==> Retrieving sources...
-> Cloning purr-data-git git repo...
Cloning into bare repository '/home/olav/.cache/yay/purr-data-git/purr-data-git'...
remote: Enumerating objects: 21531, done.
remote: Enumerating objects: 63399, done.
remote: Counting objects: 100% (1852/1852), done.
remote: Compressing objects: 100% (641/641), done.
remote: Total 21531 (delta 0), reused 0 (delta 0), pack-reused 21531
Receiving objects: 100% (21531/21531), 10.88 MiB | 9.46 MiB/s, done.
Resolving deltas: 100% (17681/17681), done.1 KiB | 704.00 KiB/s
-> Found 01_xml-gettext-domain.patch388.01 KiB | 704.00 KiB/s
-> Found gconf-reload.patch
-> Found gconf-merge-schema
-> Found gconfpkg
-> Found gconf-install.hook
-> Found gconf-remove.hook
==> Validating source files with sha256sums...
gconf ... Skipped
01_xml-gettext-domain.patch ... Passed
gconf-reload.patch ... Passed
gconf-merge-schema ... Passed
gconfpkg ... Passed
gconf-install.hook ... Passed
gconf-remove.hook ... Passed
remote: Total 63399 (delta 1106), reused 1786 (delta 1052), pack-reused 61547
Receiving objects: 100% (63399/63399), 177.19 MiB | 5.71 MiB/s, done.
Resolving deltas: 100% (33721/33721), done.
-> Downloading nwjs-sdk-v0.24.4-linux-x64.tar.gz...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 86.7M 100 86.7M 0 0 3966k 0 0:00:22 0:00:22 --:--:-- 8404k
==> Validating source files with md5sums...
purr-data-git ... Skipped
==> Validating source_x86_64 files with md5sums...
nwjs-sdk-v0.24.4-linux-x64.tar.gz ... Passed
==> Making package: gconf 3.2.6+11+g07808097-10 (Wed 09 Feb 2022 10:24:19 PM CET)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
-> Updating gconf git repo...
Fetching origin
-> Found 01_xml-gettext-domain.patch
-> Found gconf-reload.patch
-> Found gconf-merge-schema
-> Found gconfpkg
-> Found gconf-install.hook
-> Found gconf-remove.hook
==> Validating source files with sha256sums...
gconf ... Skipped
01_xml-gettext-domain.patch ... Passed
gconf-reload.patch ... Passed
gconf-merge-schema ... Passed
gconfpkg ... Passed
gconf-install.hook ... Passed
gconf-remove.hook ... Passed
==> Removing existing $srcdir/ directory...
==> Extracting sources...
-> Creating working copy of gconf git repo...
Cloning into 'gconf'...
done.
Switched to a new branch 'makepkg'
==> Starting prepare()...
/home/olav/.cache/yay/gconf/PKGBUILD: line 30: patch: command not found
==> ERROR: A failure occurred in prepare().
Aborting...
-> error making: gconf
[olav@AMD-Computer ~]$ yay purr-data
7 aur/purrdata-faust 0.18-1 (+0 0.00)
Run Faust signal processors in Pd, Purr-Data version
6 aur/purrdata-pure 0.26-1 (+0 0.00)
Loader plugin for the Pure programming language, Purr-Data version
5 aur/purrdata-lv2plugin-git 25.e00f302-1 (+0 0.00)
LV2 plugin host for Pd, Purr-Data version
4 aur/purrdata-mdnsbrowser-git 8.88d2b0c-1 (+0 0.00)
Zeroconf service advertising and discovery for Pd, Purr-Data version
3 aur/purrdata-touchosc-git 44.443c793-1 (+0 0.00)
A TouchOSC MIDI bridge for Pd, Purr-Data version
2 aur/purr-data-git 2.12.0.r4366.6d94e10b-1 (+2 0.00)
Jonathan Wilkes' nw.js variant of Pd-L2Ork (git version)
1 aur/purr-data 2.12.0.r4346.aeb24d89-1 (+6 0.03) (Out-of-date: 2021-06-17)
Jonathan Wilkes' nw.js variant of Pd-L2Ork (git version)
==> Packages to install (eg: 1 2 3, 1-3 or ^4)
==> 2
:: There are 2 providers available for gconf:
:: Repository AUR
1) gconf 2) gconf-gtk2
Enter a number (default=1): ==> 2
:: Checking for conflicts...
:: Checking for inner conflicts...
[Aur:2] gconf-gtk2-3.2.6-5 purr-data-git-2.12.0.r4366.6d94e10b-1
2 gconf-gtk2 (Build Files Exist)
1 purr-data-git (Build Files Exist)
==> Packages to cleanBuild?
==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)
==> a
:: Deleting (1/2): /home/olav/.cache/yay/gconf-gtk2
:: Deleting (2/2): /home/olav/.cache/yay/purr-data-git
:: (1/2) Downloaded PKGBUILD: purr-data-git
:: (2/2) Downloaded PKGBUILD: gconf-gtk2
2 gconf-gtk2 (Build Files Exist)
1 purr-data-git (Build Files Exist)
==> Diffs to show?
==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)
==>
:: (1/2) Parsing SRCINFO: gconf-gtk2
:: (2/2) Parsing SRCINFO: purr-data-git
==> Making package: purr-data-git 2.12.0.r4366.6d94e10b-1 (Wed 09 Feb 2022 10:40:58 PM CET)
==> Retrieving sources...
==> Making package: gconf-gtk2 3.2.6-5 (Wed 09 Feb 2022 10:40:58 PM CET)
==> Retrieving sources...
-> Cloning purr-data-git git repo...
Cloning into bare repository '/home/olav/.cache/yay/purr-data-git/purr-data-git'...
-> Downloading GConf-3.2.6.tar.xz...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 1523k 100 1523k 0 0 1610k 0 --:--:-- --:--:-- --:--:-- 1610k
-> Found gconf-merge-schema
-> Found gconfpkg
-> Found gconf-reload.patch
-> Found gconf-install.hook
-> Found gconf-remove.hook
-> Found 01_xml-gettext-domain.patch
-> Found dbus-dontspew.patch
-> Found gsettings-data-convert-fix-invalid-schema-path.patch
==> Validating source files with sha256sums...
GConf-3.2.6.tar.xz ... Passed
gconf-merge-schema ... Passed
gconfpkg ... Passed
gconf-reload.patch ... Passed
gconf-install.hook ... Passed
gconf-remove.hook ... Passed
01_xml-gettext-domain.patch ... Passed
dbus-dontspew.patch ... Passed
gsettings-data-convert-fix-invalid-schema-path.patch ... Passed
remote: Enumerating objects: 63399, done.
remote: Counting objects: 100% (1852/1852), done.
remote: Compressing objects: 100% (641/641), done.
remote: Total 63399 (delta 1106), reused 1786 (delta 1052), pack-reused 61547
Receiving objects: 100% (63399/63399), 177.19 MiB | 9.76 MiB/s, done.
Resolving deltas: 100% (33721/33721), done.
-> Downloading nwjs-sdk-v0.24.4-linux-x64.tar.gz...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 86.7M 100 86.7M 0 0 11.7M 0 0:00:07 0:00:07 --:--:-- 14.4M
==> Validating source files with md5sums...
purr-data-git ... Skipped
==> Validating source_x86_64 files with md5sums...
nwjs-sdk-v0.24.4-linux-x64.tar.gz ... Passed
==> Making package: gconf-gtk2 3.2.6-5 (Wed 09 Feb 2022 10:41:26 PM CET)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
-> Found GConf-3.2.6.tar.xz
-> Found gconf-merge-schema
-> Found gconfpkg
-> Found gconf-reload.patch
-> Found gconf-install.hook
-> Found gconf-remove.hook
-> Found 01_xml-gettext-domain.patch
-> Found dbus-dontspew.patch
-> Found gsettings-data-convert-fix-invalid-schema-path.patch
==> Validating source files with sha256sums...
GConf-3.2.6.tar.xz ... Passed
gconf-merge-schema ... Passed
gconfpkg ... Passed
gconf-reload.patch ... Passed
gconf-install.hook ... Passed
gconf-remove.hook ... Passed
01_xml-gettext-domain.patch ... Passed
dbus-dontspew.patch ... Passed
gsettings-data-convert-fix-invalid-schema-path.patch ... Passed
==> Removing existing $srcdir/ directory...
==> Extracting sources...
-> Extracting GConf-3.2.6.tar.xz with bsdtar
==> Starting prepare()...
/home/olav/.cache/yay/gconf-gtk2/PKGBUILD: line 39: patch: command not found
==> ERROR: A failure occurred in prepare().
Aborting...
-> error making: gconf-gtk2
Saving Random Seed
@Maks As @seb-harmonik.ar says, you can force [random] to a set series with a [seed( message.
So although each instance of [random] will be assigned a new seed value dependant on the order in which they are created you can change that.
I don't think you are likely to be able to recover the original seed that you liked, but if you can you will be able to fix it.
seeds.pd
Open the patch as many times as you like....... all the series will be identical....... proof that you can fix the [random] series no matter how many [random] objects you have created or the order of their creation.
David.
But looking in random.c this.....
static int makeseed(void)
{
static unsigned int random_nextseed = 1489853723;
random_nextseed = random_nextseed * 435898247 + 938284287;
return (random_nextseed & 0x7fffffff);
}
So maybe your original global seed is recoverable ????
Saving Random Seed
@Maks not just added to a patch, but loaded into the pd session. So that means every time you load a [random]
: every time you create a new [random]
, or open another patch that has [random]
s that load, or close and re-open the patch. Every time a [random]
object is instantiated it will increment the global seed within the pd session (until you quit and re-open pd).
due to limitations of precision I don't think it's possible to get the global seed of an object, unfortunately. If we could represent 64-bit doubles you might be able to take the 1st value output, divide it by the range, and then multiply by 2^32 in order to get the 32-bit int it was seeded with. But even then there might be some round-off error, I'm not sure.
edit: actually since bangs increment the prng, you'd need to find the Modular multiplicative inverse too I think..
edit2: I also forgot other issues with this: [random]
can only output integers, and pd can only represent significand up to 24 bits, and it can't store multiple digits easily.
I think the easiest/most consistent way to do what you want would be to have some method for generating some 24-bit seed, like with some manipulated [date]
and/or [time]
values from zexy. Then add some fixed value to that seed for each [random]
object, and send it to that object using the [seed(
message. If you like the sequence a specific seed generates, save that number in a text file or message box. Then whenever you want to replicate the patch's sequences you just have to send that number through the same network of additions before running the patch.