getting started with webPd
Hi all. I'm having trouble testing Pd patches via webPd as instructed in this step-by-step guide .
I've made a patch (using only the available objects) that includes a synth and a "dsp 1" message so that when the patch is loaded a middle C should start sounding. I included this patch in a folder with webPd.js and jquery.js libraries, and followed the example for the index.html file. To mock same origin policy, I used python through the terminal to enable a web server using the "python -m SimpleHTTPServer" command line, and got the following on the terminal:
Serving HTTP on 0.0.0.0 port 8000 ...
Which seems fine, however, whenever I access the link http://localhost:8000/index.html, I got no sound at all despite the fact everything seems ok in the terminal:
184.108.40.206.in-addr.arpa - - [16/Dec/2016 14:39:07] "GET /index.html HTTP/1.1" 200 -
220.127.116.11.in-addr.arpa - - [16/Dec/2016 14:39:08] "GET /js/jquery.js HTTP/1.1" 200 -
18.104.22.168.in-addr.arpa - - [16/Dec/2016 14:39:08] "GET /js/webpd-latest.min.js HTTP/1.1" 200 -
22.214.171.124.in-addr.arpa - - [16/Dec/2016 14:39:08] "GET /patches/myPatch.pd HTTP/1.1" 200 -
I tried as well running things locally in Firefox by changing the "security.fileuri.strict_origin_policy" to false. I'm using Firefix 48.0.2.
I wonder if I'm missing something very obvious but I've checked the index.html and it includes the Pd.start(), and so the patch should start sounding when the url is loaded (shouldn't it?). Also, I think the problem lives in the way I'm avoiding the same origin policy since b2renger webPd examples (which run online) also won't run locally on my machine.
Any hints on what I'm doing wrong? Here's my patch myProject.zip
Psychedellic Audioguide using MobMuPlat or PdParty
I make psychedelic audioadventures, guiding multiple, synchronized people with headphones into wonderlandish stories. Sometimes leading them to crazy places that I acoustically augment with soundtracks and binaural stereorecordings from the exact places where people walk bye to create pré- and déjà-vu-ish time-flashs (iE you hear the door infront of you and the white, invisible rabbit tells you that you are too late - so you open the door, hear/feel the exact sound again...and again…). Using synchronized instructions I puppeteer multiple participants into interactions.
I used to manually synch multiple mp3-players but also worked with free gps-audioguide software. Also I have a little yet not perfect web-app-flasmobgenerator to synchronize up to an infinite amount of players with individual audio streams.
One of my biggest inspirations was the RjDj-app that was released at the beginning of the iTimes but sadly shortly after taken from the app store - and now after all this years I finally discovered the Mobmuplat and PdParty-apps and the possibility to not only play the old RjDj-scenes but also to modify them …so I decided to learn some PD! ..which is really not easy at the very beginning, but it literally opens worlds and my brain is working hard to understand all this amazing scenes and different patches out there…
First I really want to thank you from my heart for all this amazing and inspiring works - especially for sharing it! This makes me so very happy and I feel this is really the way it should be (well, a little easier maybe)!
2nd I want to apologize for my questions - i feel still so stupid PD-wise…but:
I am trying to learn how to port a PD-patch to MobMuPlat or PdParty.
Mainly I try to trigger recordings, playbacks and live-effects by a clock.
Today I managed to write a patch that records two samples (A and and to plays them back later in a different order (BA).
I found a way to let the sec counter trigger a bang to the recordings/playbacks but I still don´t know how I could add the minutes into that trigger (iE record at 3m14s for 10s)?
In one of the tutorials I´ve heard that there are different ways to record sound: one to memory and one to disk and that a disk recording might stop audio playbacks?
How could I timetrigger live-effects - iE at 4m33s the reverb for the mic-in slowly gets bigger for 1min and then fades back to normal // or the same with a delay // or with a voicepitch rising or falling // or with the volume of the unfiltered live-monitoring (adc~ -> day~) or the volume of the audiofile that plays back simultaneously ->
Is there any way to play back an mp3/or Ogg-file with PdParty or MobMuPlat? I found some unofficial patches that seem to be able to let PD stream shoutcast/or icecast mp3-streams and also sth related to ogg(unofficial), but I don´t really understand if it is possible - and HOW? And on MubMuPlat/PdParty?? It´s just that I can´t put an 1hr wav-file onto peoples iThing.
I found a LANdini tutorial patch and an Ableton-link-patch and now I am wondering if i could somehow synch multiple phones at the same time to play back different audio files at each device while applying 1. /2. and 3. …and if it is maybe even somehow possible to do that via web?!
I am a bit confused about using PD-extended or unofficial or 0.47xyz(vanilla?) …Which one is better to use for the MobMuplat/PdParty development? PdParty seems to name several objects differently, which doesn’t´t allow me to run/test the scenes on my Mac - is there any editor or sth like->
I found an old app from the RjDj development: RJC-1000, but I can´t make it work. Anyone managed to use this app? It seems so much easier then MobMuPlat-editor(+PDwrapper) to connect the patches with a user interface. Did anyone managed to create a working MobMuPlat-interface? I couldn’t´t find any tutorials on that. Would be so great to understand that part.
I also found several scenes and patches that make use of the GPS-data and I would love to learn more about that and understand those patches to use GPS as triggers for my Audiotours. Is there anyone who could help me or maybe even make a tutorial on that?
Last but not least: when switching between apps (macSierra) with cmd+tab to PD (extended and 0.47, too) I have to do it everytime twice …drives me really mad - anyone has the same problem or any idea how to solve this ?!
Is there anyone in Berlin who I could meet to learn sth?
Thank you all for your help and if you come to Berlin one day, please let me guide you to Wonderland!
Serious Failure? Suddenly connections and abtractions were gone
@noise The sub-patches and arrays are stored inside the patch that contains them.
Abstractions are other patches that can be opened within the patch that they are "drawn" in, but have to be saved separately.
When you have a sub-patch visible and you save it you are actually saving the patch that "contains" it, and so you have to be careful (and of course when you save the patch it's sub patches are saved within it............ but the abstractions it contains are not re-saved if they have been edited.).
If connections are missing it is because the object that they connect to....... maybe an abstraction.... cannot be found, or dynamically created inlets or outlets within that abstraction have not been created, or have not been created before the lines are being drawn. Usually this happens because you have moved the abstractions somewhere outside of Pd's known path preferences, or you have zipped everything into a compressed folder.
The connection lines inside the patch are still there (e.g. #X connect 4 1 2 0;) but they cannot be drawn because the objects they connected to cannot be drawn.
So you should not need to rebuild your main patch.
You need to find out why Pd. cannot find the abstractions. Maybe it has lost it's path preferences?
libpd on mac: clarification requested on expected behavior of cpp sample
Thanks for those links Monetus. I'm pretty close with my existing setup and will first try to work with that when I have some more time. Some of the output from the samples/cpp/pdtest appears to be as expected.
However, from main.cpp
cout << endl << "BEGIN Patch Test" << endl; // open patch Patch patch = pd.openPatch("pd/test.pd", "."); cout << patch << endl; // close patch pd.closePatch(patch); cout << patch << endl; // open patch again patch = pd.openPatch(patch); cout << patch << endl; // process any received messages // // in a normal case (not a test like this), you would call this in // your application main loop pd.processFloat(1, inbuf, outbuf); pd.receiveMessages(); cout << "FINISH Patch Test" << endl;
BEGIN Patch Test Patch: "pd/test.pd" $0: 1003 valid: 1 Patch: "pd/test.pd" $0: 0 valid: 0 Patch: "pd/test.pd" $0: 1005 valid: 1 PD: PATCH OPENED: 1003 print: 0 PD: PATCH OPENED: 1005 print: 0 FINISH Patch Test
seems right but no patch was opened and if I already opened that patch before running the executable, none of the print messages (called later in the code) showed up in the console of pd. I'll focus on this and try to repost to the forum when I have a better idea of what is going on.
video playback framerate wrong
@jbvidigal Hello again......
Yes, you can load the audio ready to play...... it goes to the $0-soundfile table ready to be played from ram. The video though is played from disc, in sync with the audio. The video file cannot be "pre-loaded" as such......
I think the problem you have is that you are putting my patch (or yours probably) as a sub-patch [pd something] and so all of the $0's have the same value derived from the main patch.
You need to copy the contents of your [pd-something] into a new patch window and save that as "something.pd". Then in your main patch you retype your sub-patch objects as [something 1] for the first and [something 2] etc. (abstractions - not sub-patches) and then they will each have a different value for $0.
All that is of course a "maybe" as I have not seen your patch. Zip yours up without the media files if you still hit a brick wall, and we can all have a look and better let you know how to solve any problems.......
Loading a pure data patch ( .pd file ) within a pure data patch ( .pd file )
@jancsika thanks for the quick answer!
- Using [switch~] implies to slightly modify every (third party) patch that I want to use. I'd prefer to use them as is, and simply put them on a folder.
- As i understood, if load let's say 20 patches with switch to off, it'll consume less cpu but will still be consuming some anyway. Is that right?
- I don't mind to interrupt the audio engine every time I want to open / close patch . The open and patch close is an analogy for changing a "Preset" on a synthesizer, so it's ok I won't be emitting audio in between preset changes.
- Keep in mind that the mother patch will alway be loaded, i want to open close only the "child pure data patches" ( ore 'presets' ).
What do you think?
Loading a pure data patch ( .pd file ) within a pure data patch ( .pd file )
My folder structure:
/mother-patch.pd ( main pure data patch first loaded and running... )
How i could open /patches/1/main.pd triggered by some action in the mother-patch.pd?
How i could close /patches/1/main.pd triggered by some action in the mother-patch.pd?
I'm attempting to clone the Critter and Guitari organelle ( link ).
This instrument is basically a computer running libpd and running very cool pure data patches
You can read more about my project here ( link )
I have a mother pure data patch that it's first loaded when the device is on, this patch is doing some [send] and [receive] operations related to the knobs/keyboard/volume/led and it should be also managing the loading ( opening and closing ) of the child pure data patches ( mentioned above ). This child patches are receiving the actions from the mother patch.
If I open the mother patch and the child patches manually, everything works fine. But now I need to OPEN this CHILD PURE DATA patches with a object within the mother patch.
I've been testing [open] , for opening the main.pd of the child patches but it does not work.
I've been testing [pd] , for opening the main.pd of the child patches but it does not work.
I wouldn't like to modify the original organelle patches.
I wouldn't like to end up loading all the patches using [pd ...] and inserting a [switch] object inside every main.pd file in the patches in order to enable only the dsp of the desired patch.
It would be perfect If i could have a folder with all the patches and load them within the mother patch with some kind of object. And I would also want to be able to CLOSE the pure data patch and open another ( changing patches... )
Every little and big help woul be MUCH APRECIATED!
Stack Overflow issue with Biquad~
I realise this is a very specific question which may not be of use to many others, however I am at my wits end with the issue at hand.
I am designing a parametric EQ based on the Biquad EQ equations by Robert Bristow-Johnson. The filter works perfectly and using the audio example "measurement" with PD, I have the patch plotting the mag & phase response to prove the filter is working as desired.
My issue is, the patch throws out "stack overflow" warnings when the patch loads and any time any of the freq, Q or gain parameters is changed and I can't figure out why.
I intend to use libpd to use this patch with Android, I so would like the patch to be working without fault before attempting to use it with libpd and Android studio.
The "FilterTestBench.pd" patch is top level patch.
I have tried different ways of banging in the different values in different orders in case that was the issue, but haven't found a solution yet.
Any suggestions, help or experience with similar issues would be greatly appreciated.
Pd crashes when pd~ starts on RPi 3 (how to see these errors?)
Hi everyone, I'm having some difficulties with how Pure Data starts up on a (headless) Raspberry Pi 3.
I'm using a Raspberry Pi 3 Model B 1 GB that boots up with a Pure Data patch.
When it's a patch without the "pd~" object everything goes fine.
However, when the pd~subpatch starts, it it crashes.
As a buffer, the loadbang that instantiates the pd~ subpatch is delayed with 8000 ms.
When Pd starts I can hear a little bit of noise, but after 8 seconds, when the subpatch should open, it goes completely silent.
I also see in htop that Pd has stopped.
To get the best performance I start up Pd with -nosleep -nrt -nogui and run in 22050 Hz. When I open up the Pd-file from the Terminal with these flags it works, and I can hear sound so there's nothing wrong with the patch. (it's also a really simple one for testing purposes).
The patch pd~ refers to is in the same folder als the startup-patch. (I've noticed that that's necessary, same goes for files/abstractions you're linking to in 'Path'. You need to put them in the same folder)
I want to use pd~ to get better performances, and when opening patches from the Terminal I have noticed a substantial difference.
I have tried using more and/or larger delays after loadbang in the main patch as well as in the subpatches but I couldn't come up with something that worked.
Anyone has an idea what to try? Or can someone explain how to keep a file with the errors Pd gave or how to send these error-messages to the Terminal line? I know there is [shell] but I don't know how how to use it in this way.
I'm no Linux or RPi expoert so any help is welcome. (I also asked this on the RP-forum but got no response yet)
Syncing issues with audio/video (have searched github to no avail)
@musicproject as @EEight says you might need two instances of Pd to run that properly. That will be hard to understand and implement on your 4th day with Pd. It depends on your computer and graphics card though. The patches and video run fine on my machine (apart from hammering the fans!).........
There are a lot of things not connected up in the patches (between the patches I mean).......
If you unzip this and replace the files you have at the moment it will play in sync.
When you start the film with the message "auto 1" it will send a message to the sound chooser and start the audio as well......... see the object [s start2] in the main patch......(where the "s" means send)......... and in the soundchooser patch the object [r start2] (where the r means receive)........."start2" is like an address so don't use it again in the patches unless you want to receive the same message....
Its a start, but the patch is a long way from "automatic" or "user friendly".........