-
leopard86
Hello,
I think I managed to solve this a long time ago but forgot the solution. In Pd apparently it is impossible to have a feedback with "zero" delay, i.e. if a delwrite~ and delread~ objects are in feedback the minimum delay is one block, thus the only option is to use [block] and reduce the blocksize.How can "zero" logical delay be achieved in feedback without resorting to reducing the block size?
L
Edit: just to be quick and clear: this is a trouble you stumble into when designing Karplus-Strong patches
-
leopard86
Hi all,
in debugging some external code for Pd I happened to think about a thing I don't understand: each time the "perform" routine is called, the variables that are initialized are each time freshly initiated (they do not retain values from the past round) but they are always instantiated at the same memory address: is this for chance or is it by design?
How much does it cost in terms of overhead to instantiate new variable at each dsp cycle? Here for instance: at every cycle some vars and arrays are instantiated:void foo_tilde_perform(t_int *w, const int offset)
{
t_foo_tilde *x = (t_foo_tilde*) (w[1]);
int n = (int)(w[2]);
t_float *out[DEFAULT_AUDIO_CHANNELS];
const int channels;
int i = 0;
int j = 0;...
-
leopard86
Hello,
I wanted to share some doubts I have with the hope of them being solved.In writing tilde externals, I've seen that in and out buffer address (in the case of a 1inlet/1outlet external) are the same. I thought it was a problem of my initialization code, but then I checked on other externals and I have seen that this always happens... I can't understand how two buffers share the same starting memory address. I expected a ping-pong strategy, with 2 pointers and two allocated memory areas, with the pointers changing from location 1 to 2 to 1 and so forth.
I digged into these details because the external I am writing crashes with a segmentation fault when I try to write to the out buffer.
while (n--) { for (i = 0; i < x->x_noutlets; i++) { *(out[i]++) = 0.; } } This does not happen at first but after some few iterations of the perform routine. I suppose that this is due to a write in a forbidden memory area... Any suggestions? L[/i]
-
leopard86
As in the subject. I wanted to look at the [phasor~] source code but couldn't find nowhere in the tarball archive with Vanilla or Extended source code. I expected to find a phasor~.c file but even looking inside the codebase for something like phasor_tilde I did not succeed.
Where should I look for vanilla blocks in general? I'm sure it's a dumb question!!!L
-
leopard86
Hello,
the question is silly but I couldn't figure out from http://pdstatic.iem.at/externals-HOWTO/I am writing an externals that initializes netsend_tilde by sending a message of the type:
[connect <IP> <port>(
As I coded it now, my external sends out this:
symbol connect 123.123.123.123 12345
Within the patch I can put a [$1( between the outlet of my external and netsend, however I want to print out from the outlet a clean "connect <IP> <port>" message without "symbol" in front of it.My code:
x->x_nsend_outlet = outlet_new(&x->x_obj, &s_symbol); // I tried also 0 as the first argument (message outlet-type) but did not work char nsend_message[MESSAGE_LEN]; sprintf(nsend_msg,"connect %s %d",inet_ntoa(cli_addr.sin_addr),nsend_port); // create the message to send out "connect <IP> <port>" outlet_symbol(x->x_nsend_outlet, gensym((char*) nsend_msg)); // outlets the message
Thanks, cheers
Leopard
-
leopard86
Hello all,
I've been looking for a tutorial about compiling your own externals on Mac, Linux, Win but I found none. It would be nice, especially to give it to students. Maybe it could also explain how to load patches with the new 0.43 release.
Thanks -
leopard86
Hello guys,
I wanted to share with other Linux and/or Ubuntu users some technical questions and issues. My config: Pd-extended latest, Ubuntu 11.041. Is it common that PD prevents any other non-jack audio applications? E.g. if PD is active all audio activity is stopped on the browser or the media players. This happens even if PD is not connected to jack nor to alsa nor oss. What happens is that the media player, e.g. rythmbox does not read the stream/file (the playback cursor stays still).
2. It sometimes happens that after opening/closing several patches and playing around, PD disappears after a patch is closed.
3. The CPU load is very high (as shown by the load meter applet in the Linux tray) but the load meter shows quite a low value. I have the impression most of the load is due to the control stuff (especially GUI objects) rather than the DSP stuff.
4. Comments with line breaks are put in a single row after opening a previously saved patch.
Hhm, I think that's all, just wanted to check whether it's me or not.
Cheers
Leo -
leopard86
This is somewhat related to timestretching a interpolation, I read previous posts on similar topics and looked into the patches, but found no working solution.
I have a table with a few coefficients, say 12, from a FIR impulse response. I want to slightly stretch them to make them 14 or 20 or so, and keep the shape of the impulse response.I tried [trabread] with a [line] as input, linear interpolate between two table numbers and then writing them to a new table with [tabwrite] with the same [line] object output multiplied by the rate for stretching, say 1.2, but I get ugly results.
Any suggestions, or patches in the PD browser?
ThanksLeopard
-
leopard86
Hi people,
thanks to this community I had my first electro gig with PD which is now part of my rig.
I'm needing more and more percussive sound, in a minimalistic way. I love very much Alva Noto works, so I'd like to find a drum machine with some preset clicks, pops, sines and so on.
If not does anybody know a good and live-friendly drum machine where I can prepare drum scores and load samples or synthesize clicks, pops, sines and so on?
Thanks -
leopard86
How can I open a patch/subpatch/abstraction window with a bang?
Just FYI: I am using TouchOSC on Android and sending commands to my Pure Data patch. What if during the performance I want to open the patch containing all the buttons and sliders with a bang? Is it possible?Cheers
-
leopard86
Hello,
my physical model patch has a problem I didn't foresee at the beginning: it is based on a delay line as a digital waveguide, I made it with a [delwrite~] and a [vd~] objects. The delay line is close in a loop, so the vd~ help file says that (logically) if stacked with a [delwrite~] after it, the minimum delay of the delay line can be 64.At 44KHz sampling freq, 64 samples are 1.4ms delay. This means that you *cannot* play any note higher than 1/1.4ms Hz.
As I know that 64 is tipically the frame length used by any pd external, I can imagine that one solution is to restart PD by setting the frame length to be e.g. 32 samples.
Any other solutions?
How do I set the frame length to a new value? Will the CPU load increase by decreasing the frame length?
Thanks, Cheers.
-
leopard86
Hi,
I wanted to use the [NLMS~] and [nlms2~] externals, but they seems to be missing on the pd-extended for Windows (they turn into a red box).
I wanted to compile the iem_adaptfilt sources but they're only supplied with makefiles which are quite useless on widows. I use cygwin but it's make doesn't seem to like the makefiles as it doesn't recognize a single word. Any other way to compile these sources under win?
Or are there adaptive filters already included in PD-extended? -
leopard86
Hello,
I'm porting to PD a physical model I created in Matlab. I can't see how to import coefficients and list of numbers from Matlab (i.e. text file) to PD. I need to get these coefficients only once in a while, so a loadbang and several bangs later would be ok.Example: I have a script in Matlab to calculate SOS (second order section) coefficients for a IIR filter. I can use in PD several [biquad~] blocks to create the IIR, but I don't know how to import coefficients. I can save them as text files in several way (comma delimited, tab delimited, etc) but I can't see how to import them in Matlab and feed it to biquad. And after reading them and storing in an array, what if, for example I have 4x6 coeffs? How do I parse them in order to send 6 coeffs to the first biquad, then 6 to the second and so on?
There seems to be not so much about this on the internet...
-
leopard86
I will give a try to the fexpr~ to write a biquad (that's what I'm using at the moment) in fexpr~ language and the feedback...