gui externals tutorial ?
@Pierre-Guillot
"make install" does not seem to install anything so I added object files manualy
It compiles but the linker cant seem to find pd stuffs although it is linked with pd...
cc -I"D:/WORK/DSP/pd-0.46-7/src" -Wno-unused-parameter -DPD -DVERSION='"0.0"' -O6 -funroll-loops -fomit-frame-pointer -Wall -W -g -o "src/adsr.o" -c "src/adsr.c"
cc -rdynamic -shared -L"D:/WORK/DSP/pd-0.46-7/src" -L"D:/WORK/DSP/pd-0.46-7/bin" -o "src/adsr.dll" "src/adsr.o" libCicmWrapper_la-ebox.o libCicmWrapper_la-egraphics.o libCicmWrapper_la-eclass.o libCicmWrapper_la-eobj.o libCicmWrapper_la-ecommon.o libCicmWrapper_la-epopup.o -lpd
libCicmWrapper_la-ebox.o: In function `ebox_dosave':
/cygdrive/d/WORK/DSP/CicmWrapper/Sources/ebox.c:819: undefined reference to `s__X'
libCicmWrapper_la-ebox.o: In function `ebox_properties':
/cygdrive/d/WORK/DSP/CicmWrapper/Sources/ebox.c:1098: undefined reference to `s_symbol'
/cygdrive/d/WORK/DSP/CicmWrapper/Sources/ebox.c:1113: undefined reference to `s_symbol'
libCicmWrapper_la-eclass.o: In function `eclass_attr_getter':
/cygdrive/d/WORK/DSP/CicmWrapper/Sources/eclass.c:639: undefined reference to `s_float'
/cygdrive/d/WORK/DSP/CicmWrapper/Sources/eclass.c:653: undefined reference to `s_symbol'
libCicmWrapper_la-eclass.o: In function `eclass_attr_setter':
/cygdrive/d/WORK/DSP/CicmWrapper/Sources/eclass.c:753: undefined reference to `s_float'
/cygdrive/d/WORK/DSP/CicmWrapper/Sources/eclass.c:775: undefined reference to `s_symbol'
libCicmWrapper_la-eclass.o: In function `eclass_addmethod':
/cygdrive/d/WORK/DSP/CicmWrapper/Sources/eclass.c:240: undefined reference to `s_float'
/cygdrive/d/WORK/DSP/CicmWrapper/Sources/eclass.c:252: undefined reference to `s_symbol'
finding missing number in a sequence of numbers...
@LiamG said:
I might not be following you correctly, but you might be able to use [closebang] to eg. reset a counter in the parent patch when the abstraction is deleted.
Regarding dynamic deleting, the best option I'm aware of is [iemguts/canvasdelete]. You might need to use it in conjunction with [iemguts/canvasindex] in order to identify the right object to delete. This can be tricky...
Thanks LiamG, this works a treat, a combination of those three does exactly what i need, and has given me some ideas about another patch.
@solipp said:
hey,
you can use the find, cut message if you search for arguments like "1-LFO" instead of "LFO". but in this case you have to make shure that there is no "1-LFO" stored in the obj-creation message, otherwise pd will crash. and you might have to replace your send and receive args inside the LFO abstraction.
anyway, MODULATOR_delete.pd maybe this brings you one step forward
And thanks solipp, that's also really handy to know, but seeing as Liam's solution gets rid of about half my patch im going to go with that on this one. thanks for taking the time to edit my patch. much appreciated!
D
finding missing number in a sequence of numbers...
hey,
you can use the find, cut message if you search for arguments like "1-LFO" instead of "LFO". but in this case you have to make shure that there is no "1-LFO" stored in the obj-creation message, otherwise pd will crash. and you might have to replace your send and receive args inside the LFO abstraction.
anyway, MODULATOR_delete.pd maybe this brings you one step forward
finding missing number in a sequence of numbers...
I am trying to make a system for dynamically creating modulators for a synth, so far I have it so that each time "LFO" is selected from a popup, a new one is created, with an argument one bigger than the last, (arg used to send~ $1-LFO etc). The problem comes when I have deleted an LFO, and create another one, it keeps adding to the last number, not "filling the gap" for instance:
when i have in existence:
LFO 1
LFO 2
LFO 4
the next LFO created is "LFO 5", not "LFO 3". It works fine if you remove the last LFO from the patch.
I am currently exploring list management but it is quite complicated. I feel it's so close but just out of reach.
I would also like to find a way to delete these LFO objects dynamically instead of entering edit mode.
the closest I have come is:
[find LFO, cut(
but it seems to cut each object (even messages) containing the symbol "LFO", and I cannot seem to "point" it to the one I want to delete!
In both cases, I'm sure im over complicating, but have learnt enough in my own process of exploration now and need some guidance!
patch attached, with LFO included Modulator w LFO included.zip
New to the forum and new to PD
Hi I am new to PD and have been playing with Max Msp for 6 months on and off.
I am interested in sound modelling , I am a Guitar Player and also very interested in
live interactive jamming over the internet and live broadcast possibilities with interaction also.
Sadly two of the best show cases for this sort of thing Deep Rock Drive and Live at the Paradiso have not continued but will I think come back in one shape or form.
they were both really rather good, I also started to develop my own concept in the UK before moving to Sweden where I am continuing to develop the idea.
I am a fan of Kompoz and Ninjam and have discovered some other interesting initiatives in these directions also.
I have been working with Linux also this summer converting my net book and trying to get reaper to run in linux and playing with Ardour and Audacity I have been testing various of the music based and multi media based distros. Mostly I work on an Intel Mac and use Reaper and Logic as my interest in Plugins and porting windows based plugins for use of Mac and linux has increased I have become more curious and frustrated by how many plugins are catering solely for windows based systems.
I am very interested in the open source ethos and particularly passionate about Music education and its wider application to encourage learning across other academic and vocational disciplines Leveraging the Cool so to speak.
All of these are relatively new interests I have spent the past 10 years recovering from a successfull career in property development in London I retired to the country and pursued artistic and holistic goals finding I had sold my Soul at the wrong crossroads to pursue the wrong muse i.e money and not art. I am now blissfully happy and considerably less endowed with the devils gold it must be said.
I have landed up at PD following a complete conversion and inspiration from one of your members inventions Slice Jockey and live decomposer, the modelling possibilities of DSP convolution have been occupying my studies almost exclusively in recent months and Slice Jockey really was akin to Moses meeting the Burning Bush for me a truly amazing piece of work.
SO here I am with my first technical question How does one load a patch that is in code into PD? I have downloaded this link http://www.toxonic.de/#guitar_rack and can not find what to do with the page of code that results in my right clicking the link? With the age old abmonition RTFM ringing in my ears I have searched and looked and failed to find anything to give me a clue ( If you don't know , and I don't ) this stuff can seem wholly baffling. Any suggestions gratefully recieved.
Reading multiplexed input streams from arduino
I'm currently building something with an arduino and pd. Arduino vets- help is appreciated!
So, I'm using [comport] and [convert.ascii2pd] to read inputs from an arduino. I'm not using pduino, firmata, etc. because I'm multiplexing the input.
I have a multiplexer read 8 potentiometers going into 1 analog input on my arduino. So I rapidly read all 8 of the inputs in a loop and print them out over serial.
My problem is I don't know how to take this stream and put it to an array properly. Out of [comport] to [convert.ascii2pd] to printing the results looks like this:
print: 790
print: CR
print: LF
print: 0
print: CR
print: LF
print: 0
print: CR
print: LF
print: 0
print: CR
print: LF
print: 703
print: CR
print: LF
print: 649
print: CR
print: LF
print: 547
print: CR
print: LF
END: bang
I'm seperating the values with special characters, which can be weeded out with [route] if need be. I have the end of each 8 input read banging.
But it's late and my head is reeling. Not sure where to start next in terms of putting these properly in a list or an array. The end goal being that I have 8 potentiometers that can control things in pure data. Any way to make sense of this input?
The things we do for more inputs!
Performance for One
Hey all,
I've been working for the past three months on this one-to-one exclusive headphone Performance called "Performance for One" (silly name, I know).
The idea is that I create a somehow comfortable/cozy space where a person can come, sit and enjoy an exclusive musical performance. Only the performer (myself) and the current listener are able to experience this piece of music, created and performed on the fly, therefore turning that moment unique.
I've done this Performance twice at the same place, one in February and the other two days ago and got pretty nice feedback, specially due to the exclusive intimate situation this performance creates. The two days were completely different from each other regarding the sonic outcome (I've used two completely different patches).
I've recorded a few sets when performing all alone (so I kept the exclusivity that each listener had), and I thought I'd share two that I really liked.
100% Pd, 100% live improvisation, no edits or whatsoever. Samples are from my own recordings from the rehearsals for Theater Bremen's rendition of Mozart's "Don Giovanni" (This Performance is part of a bigger project about this particular Opera).
Tremolo effect on saw, square waveforms?
If you set up an array to graph the output of the sine wave, you'll notice that the tremolo is making it clip, as well. You are sending the output of each wave into the [*~] object when it is already normalized (the bottom of the wf is at -1 and the top is at 1).
Your amplitude slider goes all the way up to a value of 1, meaning that when it is maxed out, the signal gets multiplied by 1 so that the bottom still occurs at -1 and the top still occurs at 1.
The way your tremolo is set up right now is by having an LFO going into the same inlet as the amplitude slider. This will add the value of the LFO to the value that is set by the slider. When your amplitude slider is maxed out, the LFO will cause the signal to be amplified by an amount between 1 and 1.5, which creates the clipping.
To get the tremolo working correctly, disconnect the tremolo and create another [*~] object. Feed the output from the first [*~] into this object, and then use the tremolo to modulate its amplitude.
The only problem that I can see now is that when you have the tremolo turned off, the last signal that was outputted by the LFO will remain in the [*~] object, so the final signal might end up being quieter than it normally would be. There's probably a simple way around this...
Midi In and Out
unfortunately, due to the nature of PD's GUI, it's not possible to achieve this with one slider, but there might be a hack way to do it....
create two sliders, hook one from the ctlin, and hook the other into ctlout, go into the properties of the ctlout slider and set to 'jump to click'. place the ctlin slider on top of the ctlout slider. (the slider that is created last will be the one that sits on top). Now, you should see the slider move on incoming data, and clicking on the (hidden) slider should send out data. there is no loop here because we haven't physically connected ctlin to ctlout - i hope this works. i just thought it up.
Midi CC confusion
sorry it took so long to get back. (tour). thank you for taking the time.
i just have [ctlin] going to [ctlout]. but after a few minutes ofplaying, i see lip(cc#18) controlling cc#2 data and cc#2 sending nothing not returning to 0 and notes hanging. my wind controller seems to be working properly. itworks with everything else.
I really appreciate it.
-----begin-------
#N canvas 0 0 450 300 10;
#X floatatom 70 224 5 0 0 0 - - -;
#X floatatom 135 224 5 0 0 0 - - -;
#X text 69 240 pitch;
#X text 134 241 velocity;
#X text 152 194 note on messages;
#X floatatom 503 179 5 0 0 0 - - -;
#X floatatom 678 178 5 0 0 0 - - -;
#X text 539 178 program change;
#X text 723 179 pitch bend;
#X obj 75 296 -;
#X floatatom 101 272 5 0 0 0 - - -;
#X floatatom 75 324 5 0 0 0 - - -;
#X obj 188 270 s vel;
#X obj 75 354 noteout;
#X obj 503 280 pgmout;
#X obj 678 282 bendout;
#X obj 75 134 notein;
#X obj 505 142 pgmin;
#X obj 678 147 bendin;
#X floatatom 866 -38 5 0 0 0 - - -;
#X floatatom 923 -40 5 0 0 0 - - -;
#X text 864 -23 value;
#X text 922 -21 ctrl nr;
#X text 908 -180 controller messages;
#X obj 868 -122 f;
#X obj 870 -154 t b f;
#X obj 868 -92 pack f f;
#X obj 866 -66 unpack f f;
#X obj 359 -220 ctlin 2 1;
#X obj 344 -139 ctlout 2 1;
#X floatatom 353 -185 5 0 0 0 - - -;
#X floatatom 245 -187 5 0 0 0 - - -;
#X obj 251 -222 ctlin 18 1;
#X obj 236 -141 ctlout 18 1;
#X floatatom 454 -180 5 0 0 0 - - -;
#X floatatom 549 -182 5 0 0 0 - - -;
#X floatatom 636 -179 5 0 0 0 - - -;
#X floatatom 722 -178 5 0 0 0 - - -;
#X obj 460 -215 ctlin 16 1;
#X obj 445 -134 ctlout 16 1;
#X obj 555 -217 ctlin 17 1;
#X obj 540 -136 ctlout 17 1;
#X obj 642 -214 ctlin 80 1;
#X obj 627 -133 ctlout 80 1;
#X obj 728 -213 ctlin 81 1;
#X obj 713 -132 ctlout 81 1;
#X connect 0 0 9 0;
#X connect 1 0 12 0;
#X connect 1 0 13 1;
#X connect 5 0 14 0;
#X connect 6 0 15 0;
#X connect 9 0 11 0;
#X connect 10 0 9 1;
#X connect 11 0 13 0;
#X connect 16 0 0 0;
#X connect 16 1 1 0;
#X connect 17 0 5 0;
#X connect 18 0 6 0;
#X connect 24 0 26 0;
#X connect 25 0 24 0;
#X connect 25 1 26 1;
#X connect 26 0 27 0;
#X connect 27 0 19 0;
#X connect 27 1 20 0;
#X connect 28 0 30 0;
#X connect 30 0 29 0;
#X connect 31 0 33 0;
#X connect 32 0 31 0;
#X connect 34 0 39 0;
#X connect 35 0 41 0;
#X connect 36 0 43 0;
#X connect 37 0 45 0;
#X connect 38 0 34 0;
#X connect 40 0 35 0;
#X connect 42 0 36 0;
#X connect 44 0 37 0;
------end--------