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.
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!
Pd crashes when pd~ starts on RPi 3 (how to see these errors?)
Okay, I got it working when starting up from Terminal. But I still don't know what's going on.
When I open the patch (with a pd~) from Terminal with "-nogui -nrt" it works.
When I open it from Terminal with "-nogui -nrt -nosleep" I get an 'audio I/O stuck' error.
When the patch runs from startup with "-nogui -nrt" OR "-nogui -nrt -nosleep" it doesn't work. Again it stops when opening the pd~ subpatch.
The funny thing is that when I don't have a pd~ object, but just osc~ the patch WON'T open when using '-nosleep' from Terminal somehow.
But it DOES work if I'm using "-nosleep" when the patch runs from start-up.
Can anyone shine some light on the start-up flags? A link to more in-depth information than what the Pd-site says or so? And does anybody know why Pd reacts different when a patch opens from start-up compared to when opening from Terminal?
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)
RaspberryPi audio cutoff
I have a PD-extended sketch running on a RaspberryPi (RPI) that plays wav's from 32+ tabread4 array's. They can be selected via OSC messages sent over network. I noticed that every so often the audio would cutout. The following is a recording from PD on the RPI. The cutout is heard clearly at 22seconds and 50 to 54 seconds. This happens with both the internal sound card of the RPI and when using a USB soundcard.
For comparison here is a similar graph from running the same sketch on OSX. The waveforms differ because the tabread4 arrays played are a bit random. But the graph shows that the sway from the 0 middle line is much more on the RPi than OSX.
To attempt to resolve I have to be certain the sketch DAC is given a volume of around 0.5. But perhaps someone knows better what is going on and could advise me?
Gem window crashes / Install struggles on Ubuntu
Please help! Sooooo many hours trying to figure this out, should be simple I think but I'm not a sophisticated user of Linux.
The Gem objects appear properly when I open the windows, but whenever I try to open/create a gemwindow, it immediately crashes (however, it seems to respond when I change the data - for instance, I can see color changes when i make those changes, but again, the gem window crashes immediately...)
A possible solution lies here but haven't been able to get a response when I attempt to implement this
Why does Gem crash when creating the Gem-window? !
When I try to create a Gem-window, my X-server crashes (or worse)? btw, I am using Ubuntu/hoary with fglrx drivers.
try setting the environment variable GEM_SINGLE_CONTEXT to 1
Gem establishes an (invisible) openGL-context at startup, even if no Gem-window is created yet. When you create the Gem-window, a 2nd openGL-context is used (which shares some properties with the invisible context).
For some reasons this seems to be not possible with some gfx-drivers (e.g. ATI's proprietary fglrx drivers) and some window-managers (i suspect compiz/beryll), leading to crashes of the X-server and/or system freezes.
The current workaround is to set the environment variable GEM_SINGLE_CONTEXT=1, which prevents this dual-context magic.
if you are starting Pd from the bash, you can start Pd/Gem with GEM_SINGLE_CONTEXT=1 pd -lib Gem on bash, you can also set this permanently by adding a the line export GEM_SINGLE_CONTEXT=1 to either ~/.bashrc (the bash-configuration file in your home-directory) or to /etc/bash.bashrc (to set it for all users)
- newer linux user but though I followed compiling instructions for installing Gem, it seems never to create a conf file.. when I open pd-extended in terminal, I get this message:
open: ./gem.conf: No such file or directory
any thoughts or input would be VERY APPRECIATED, thanks!
Is this possible to make your own gui for pure data ?
@Master_Chang Hello again Master Chang....... if you were Bruce Lee you would do it like this.........
You can make "sub-patches" appear in your patch by using what is called a "gop"...... graph on parent....
Any patch that you make can be used as an "abstraction" (I know, it is not easy) in another patch....
What that means is that there is a very powerful tool that you can use in Pd..........
If you make a patch called in this example "guts.pd" then you can use it in any other patch.
It is a bit (no..... really A LOT) like putting [osc~ 440] in a patch................
So in [my_patch] in the zip I have put an object........ [guts.pd]... You cannot see it's name because I have hidden it.......... but it is where you see the "knob". The "knob" is actually in the subpatch "guts.pd"..........
If you open it (right-click..... open) you will see its contents. You will see a red rectangle. It is there because I have right-clicked within the guts.pd patch and "ticked" a few boxes..........
............. try it!
Anything within the red box will appear on the parent patch (one level up).....
In parent_patch.pd "PUT" another object "guts" and see what you get.
It's quite exciting at this point and gets rapidly more complicated! Come back here when you get lost!!!