text:
99 result(s) matching "few-soundscapes-billystiltner-fractal-sequencer-patch", (0.12 seconds)
A few soundscapes made with billystiltner's fractal sequencer patch
In the _patch~_ forum, billystiltner posted a link to his [_fractal sequencer patch with instructions_][0].
I checked it out and I am having fun with it.
I wish I had a dollar for every hour I spent at my Apple \]\[ + plotting fractal objects on a television set. And that's before my first IBM PC clone. And before my first IBM PC AT clone, a 6MHz (with a turbo 8+MHz switch) machine that set me back ~$2500+ - before I bought the math co-processor and 512KB of extra memory. Not to mention the $500+ RLL 40MB HDD.
I recall waking up every few hours to check the plotting progress of various fractals on an amber monochrome display, running code _fractint_? hand-coded-in by me in assembler. You could see the pixels as they were being plotted. That was before I bought a CGA card and color monitor.
I'd settle for just a fractional portion of a dollar per hour spent on fractal stuff. LOL
Yesterday, I put up a link to the following soundscape in the _patch~_ forum thread:
Today, I tried to find some unusual or "less-traveled" orbits. That plus some new voicings for the zynaddsubfx synth. Of course, I made some tweaks to Billy's patch. More like hacks, though, since I am pretty new to Pd. I did come up with a few interesting items, two of which I link to here:
[0]: http://puredata.hurleur.com/sujet-6871-fractal-sequencer-patch-instructions
[1]: http://soundcloud.com/wildcarrol/in-a-tight-corner
[2]: http://soundcloud.com/wildcarrol/whiskytango
[3]: http://soundcloud.com/wildcarrol/drumnoodles
Fractal sequencer patch with instructions
let me know if you run it I want to hear your fractal music.
[0]: http://www.geocities.ws/billy_stiltner/music/pd/fractalsequencer.zip
[1]: http://www.geocities.ws/billy_stiltner/music/pd/bshiphelp/fractalmusicnetinstructions.html
Sfread vs tabplay vs sampleplayer vs all of them...newbie
Hi everyone,
Sorry for an obvious question (I've been reading/searching/trying all week)...but, I'm playing around with building a patch to make up for a 'lack' in ableton live having to do with the follow actions that it uses...to not go into too much detail, ableton allows you to put trigger options on the end of clips that randomly selects another clip in it's 'column' but it would be good to be able to dictate other options, like playing samples from other 'columns' (files) etc.
Anyway, so I thought I'd begin by building a simple multi-wave trigger player, but I'm confused with all of the various sample playback objects...readsf, tabread, tabread4, sampleplayer, etc..
Can anyone explain the best uses of each? I know that most put the sampled sound into ram (via an array right?) but I playback very long samples (8 to 10 at the same time, often 5-8 minutes duration each).
I'm not interested in manipulating the sounds as they play, just trigger, and allow to either loop, or randomly select another sample from a designated file.
So, my questions are...can someone explain the differences and best uses of each of the sample playback objects?
And two, could someone help me or point me in the right direction to add the functionality of having each 'playback strip' be able to either loop or with a toggle switch, randomly select and playback sample from a pre-selected file?
Thanks...I've attached my baby-patch that I've worked on today with...I've er, stolen from most of you here :P
[0]: http://www.pdpatchrepo.info/hurleur/main.pd
Abstracted patch seems to work but not its calling patch
This little exercise patch somehow computes the successive factorials of a counter and the computation stops when the counter reaches the number Maxcount.
![Screen Shot 2014-11-06 at 21.55.00.png](/uploads/files/upload-f50a195d-1495-468b-a5fa-ffe33c8c6e05.png)
I am here interested to work for abstractions, starting with this one
![Screen Shot 2014-11-06 at 22.00.24.png](/uploads/files/upload-fc98ef14-1fd9-430d-bb50-67319f298ae1.png)
which replaces the center top incrementation process.
This abstraction - called "+=1" - looks fine : after one bang, the abstraction outputs the value 1.
But the calling patch doesn't output the value 1 as shown here :
![Screen Shot 2014-11-06 at 22.00.04.png](/uploads/files/upload-f35a0b1b-4d09-40d5-b67c-b46f2a0f45fe.png)
I don't understand that the "+=1" abstracted patch outputs 1, and that this value "1" is not pushed down to the "product" box to make the 1 * 1 operation : who can help discover the error ?
translatexyz vs. translate x y z//// and rotatexyz vs rotate x y z in GEM
I have been watching the below video and it tutors you to use the objects translate and rotate. The object is spelled out like this... translatexyz and rotatexyz. This does not work at least with my current Pure Data program which is the latest. So I spread them apart, translate x y z same with rotate and ended up only have three total inlets where I should have four total. Any thoughts?
RPi: midibuttons load patches via ctlin - how to stop duplicates?
Hi, I'm busy setting up the Raspberry Pi so that it auto-loads a specific patch, that I can use a specific ctlin (button from LPD8) to kill the patch, and then a different button from the LPD8 to load another patch. The catch is, unfortunately, that when I press a button and release said button, the same patch is loaded twice. What should I do?
Here's the patch-launcher.sh .. How am I misunderstanding the functioning of this? Should there be a spigot? a moses?
I'm using a hardwired ctlin 29 to close all possible patches, maybe that's a heavy-handed way of doing it.
[0]: http://www.pdpatchrepo.info/hurleur/patch-launcher.pd
Pure Data Soundscape Patches
Hi I've recently been working on my honours project at Uni which has involved working with Pure Data. Part of my project has involved creating soundscape patches based on real location recordings I made. Here is three patches I made for the project and I've put up on Youtube.
Coast/Sea Front Location
Inside during a storm
In a forrest with a helicopter overhead
[0]: http://www.youtube.com/watch?v=6K8-OzM38z4
[1]: http://www.youtube.com/watch?v=y2YWINSVQCc
[2]: http://www.youtube.com/watch?v=syjk24yots8
Fractals. What they are and how to program fractal designs in GEM.
I very interested in fractal math vs normal geometry. If anyone doesn't know a fractal is basically a mathematical equation found in many many places in nature.
More info here: [http://en.wikipedia.org/wiki/Fractal][0]
So does anybody know how to program fractals in PD/GEM. In its rawest form a fractal is only a mathematical equation, so it can't be to hard to program in GEM.
[0]: http://en.wikipedia.org/wiki/Fractal
[1]: http://www.youtube.com/watch?v=qB8m85p7GsU
Live improvisation using a work in progress sampler/sequencer patch.
Hello everybody:
I want to share with you a recent improvisation I've recorded:
All constructive critics are welcome. Many thanks to all of you that contributed with ideas, patches, data, links, externals, etc.
[0]: http://soundcloud.com/sumidero/un-d-a-me-fui-al-uruguay
Patch does not recognise DMXUSBPro an OSC after reopening patch
I made this patch at work overnight. I was playing with TouchOSC on the iPad and controlling moving lights with it trough PD. But when I opened it the day after it couldn't create the \[dmxusbpro\] and the \[dumpOSC 8000\]. I made a new one today, I don't want to create the patch over again. It became a bit more work then the previous one :-) So does anybody see something odd that I should change before I save it? It's my third real project. In the first one I hooked my PS3 controller to a movinglight.. if anyone wants the OSC file.. let me know.
[0]: http://www.pdpatchrepo.info/hurleur/help-dmxusbpro.pd
All Pure Data fractal sequencing and virtual synth
[0]: http://soundcloud.com/billy-stiltner/bpinf
Fractal sequencer controlling Bristol 2 minimoogs 1arp2600, and 1 C64
This is a rough recording of controlling the Bristol synth emulator with my fractal sequencer pd patch. I used 2 moog minis 1 for bass 1 for snare and the melodies go to an arp2600 and C64Sid.
Audio was routed back to pure data and ran through my stereo delay.
I could not get Bristol to show up in jack alsa connections till I saved the startBristol command line as an executeable shekk script and ran not in terminal.
[0]: http://youtu.be/cDVhyQ57Eas
[1]: http://bristol.sourceforge.net/
[2]: http://www.geocities.ws/billy_stiltner/music/pd/burningship.zip
Pitch (Attack) Tracker - Bonk~ vs. Sigmund~
I have been tweaking a pitch tracking system for quite a while now. I find that \[sigmund~\] with the "notes" argument to be more accurate at detecting the attack of a tone produced on an electric guitar (versus bonk~). Anyone else find this?
Step Sequencer/Patential MLR patch to be created...
Hey guys, I'm new to the forum. I've only really been using PD properly since about September, and slowly getting my jumbled head around things.
Anyway, apart from filling you in on my boring life, i thought i'd chuck this out there for you to look at. I've recently picked up my launchpad again, thinking about ways to get it working that i'd prefer to work with, so thought i'd crack out PD and give it ago...
So this is my 'first' patch for it running a little bit like a step sequencer. I've zipped a load of other patches in there also that I made whilst trying to get this sorted.
I'll admit this is VERY messy. This is one of the reasons i'm posting it up, so anyone with a sound fresh mind can have a look and maybe give me some pointers?
I want to move on and make my own MLR patch (After just test driving the Nomome)
On a side note. If you open up the Zip and open LaunchPad Step Sequencer List.pd that's the one i've got furthest on. If you plug in your launchpad, set it to midi device 1 in and out, then use IAC to go out to any software going to midi channel 1\.
Alllsssoooo, to change the notes it's activating delve into each row and you'll find it. Any questions feel free to ask and Critique :)
[0]: http://www.pdpatchrepo.info/hurleur/PD_Step_Sequencer.zip
Babby's first patch - MIDI sequencer
So I discovered Pure Data and the Dr Hernandez video tutorials. Here is the result.
Basically I figured that it would be a good idea to start out trying out the non-audio parts of the language, and so I made a 16 step sequencer of sorts. You get 16 rows and you get to assign all of them a different MIDI channel. To get sound out of it, you should just pipe the MIDI data into VSTs or whatever accepts MIDI input. I personally tried this by sending MIDI through the IAC driver and into Reaper, where I had two instances of Kore Player as virtual instruments receiving data on different channels. There is also a keyboard-like thing for choosing which notes you want to put on a step.
Comments and critique very welcome!
[0]: http://www.pdpatchrepo.info/hurleur/midi_sequencer.pd
Pd newbie general question - MAX vs. Pd, OS X vs. Linux
I did some work with MAX at CNMAT and on my own a very long time ago, but since then I've led a MAX-free existence - don't know how that happened. Anyway, I finally have the opportunity to get back into it, so I just started to catch up and see how things have developed since I left. Holy cats - they certainly have changed. The fact that I'm on this forum shows you a bit about where my click trail has taken me.
Ok, so I have the opportunity to retool and almost start from scratch, and I'm faced with general questions about the ideal OS / software to commit to. I'm aware that questions like these can be inflammatory, so I'll give a bit more info and justification for being so general.
I'm primarily a Mac OS X dude, although in my main profession as web developer, I use all OpenBSD servers. For one particular project, I may be moving to Linux because of its clustering possibilities. But at home, I do all my work on my G5\.
My training, such as it is, is in composition - with pen & paper even. But I'm eager to expand my toolset with various computer-assisted techniques, and I intend to develop my own, not just use what's out there, so programming is going to be a big part of my plans.
My immediate inclination was just to lay down the $495 for MAX/MSP (my copy is so old I don't think I can even upgrade). Maybe add jitter too - looks insanely cool. But then I clicked on a link to a company that does cycling74-based work, and followed a link to Pure Data. And things really opened up from there.
So it looks to me as if there's a bit of a conflict here...
- If go with what's semi-familiar and go with MAX on my Mac, I immediately also get an IRCAM Forum Pass. Quite a bit of $, but a lot of bang. Good support. Established community.
- But then there's Pd, which is open-source - that's a HUGE plus in my book, not just because it's free, and it'll run on my Mac...
- ...but from what I can tell, a lot of the most interesting development in this field would appear to be taking place on the Linux platform, AGNULA, dyne:bolic, etc.
So that's my question. MAX vs. Pd, OS X vs. Linux, and the natural combinations. Will Pd be a practical alternative to MAX/MSP, with its established user base and support, or even an improvement? Am I shortchanging myself with Pd on OS X? Might it be worth taking the plunge into Linux? I'll be interested to hear all advice and experiences.
My first patch a sampler/slicer/sequencer
Hi to all,
This is my first patch, it's a collage from other patches from other users, i've only tried to put togheter in my idea.
Work's but, since i've a very little experience in PD but in every develop situation, for sure you can smile on it and find many many errors and incomprensibile things... :-)
But this work for me, to learn PD, and i want keep on, because i like to do my music software, easy and ultra-personalized.... :-) it's my game.
The slicer and sample play idea and patch are from: hardoff (break-point maker and smp-player.
The others patch that i've used i don't remeber where i take them...but thanks to all.
[0]: http://www.pdpatchrepo.info/hurleur/SAM_LOO.zip
How to Load a patch, with a message in an other patch
Hi everybody,
I use pd on Windows.
I Would like to call a patch with a message to pd.
How can i do it ?
I have try \[ ; pd open patchName.pd path (
but it don't work.
certainly someone here knows how to do it .
thanks you for your answers, sorry for my English
Soundscape patches with pd?
I'm not sure if this fits in this section.
I was wondering if anyone makes soundscapes with PD here. By soundscapes I mean anything from pure field recordings to generated drone sounds. I've been playing with PD to make stuff for myself but it feels lonely and confusing and was wondering if anyone could offer up points from their practice or web-sites or patches they find useful etc to help me feel more in a community of people. I have found lots of excellent blogs showcasing peoples soundscapes, like disquiet, but a lack of how people actually go about making their creations.
So if people want to contribute some pointers or just chat about what their doing at the moment well...that would be lovely.
Big thanks in advance.
Gloomy. X
Pd vs. leopard vs extended or vanilla
Hi everyone in Pd,
This is my second time writing in forums and first time in the world of Pd. I want to get Pd on my macbook pro with leopard, but I saw people had trouble.
Is there still trouble with 10.5 and pd-extended (0.39.3) or
pd-vanilla (0.41.4) and I don't which of these two to download ?
What i want to try are some interaktive patches which i know works on Pd- 0.40-1 on a ntel comp. with 10.4.11
Do you have some ideas to get me started...
Thanks very much
Diagnose my sequencer patch?
hi, I'm new to the forum so I'm not sure if this is unreasonable or not...
I made a sample slicer/midifier kind of thing, and then expanded it with a sequencer, I wanted to get this one last feature working on the sequencer before putting it all together (the attached patch has just one slicer bank and one sequencer channel.)
what I added to the sequencer that doesn't quite work is a row of toggles that can deactivate individual steps, regardless of the note that step is supposed to trigger. I had that working, but I then changed it so that the "on/off pattern" of the toggles was saved and recalled from an array so separate patterns would remember the corresponding toggle states...
So, It does work --except for the last two toggles??-- of the sixteen steps (regardless of the pattern) I'm pretty stumped about it, the last two toggles wont keep their setting, the toggle table seems to be stuck for them and just sets them the way it wants.
anyway, I don't really expect anyone to solve that, but the patch is kind of cool anyway... thanks!
[0]: http://www.pdpatchrepo.info/hurleur/sample16.pd
Does PD work with cent as unit for pitches?
I'm working with just intonation and wonder if PD is able to digest "cent", the logarithmical conversion of frequencies mesured in "Hz"?
I'm used to it and for many applications the only sensible thing.
Most important for me is to have a high resolution for pitches. The higher the better. It can't be high enough...
What is the limit of precision in PD?
Thank you very much for your answers in advance. 2357matrix
Array vs table
i've been trying to resize a table (using resize) that I'm about to record audio to, for example set the table to a specified number of bars worth of samples at a given tempo, but the table doesn't seem to change.
Instead, I created a new array in place of the table, and this works. however, having an array that's 44103 long in the sub-patch slows the whole patch down horrendously to make it unusable!? why does this happen with arrays but not when you have a table that is at least long as this?
OSX Sequencer
anyone know of a good opensource/free MIDI/OSC sequencer for OSX which has XOXO style drum sequencing?
Patch distortion in widescreen monitors?
Does anyone know how to fix the appearance of Pd main window and patches when using a widescreen monitor? My fonts look horizontally stretched and objects and comments that usually appear fine do collide with this monitor (see images attached). All other programs look the same as they would in a 4x3 monitor. I thought it would have something to do with the file /usr/lib/pd/bin/pd.tk (also attached), I've tried to remove all -bold ocurrences within it, it looked slightly better, but still cluttered.
I use Pd 0.39-2 within Kubuntu (Edgy release). I have ttf-bitstream-vera and ttf-dejavu installed.
Thanks in advance!
[0]: http://www.pdpatchrepo.info/hurleur/attach.zip
Midi Clock into Pd from Sequencer?
how can I can get Pd to receive Midiclock (start/stop/continue/tempo) from a sequencer (Logic on Mac in my case)?
GEM: \[part\_damp\] help patch doesnt show anything
can you see anything?, I just see the render window in black.
Clipping making experiment patch unusable
I am currently doing some cross modal streaming research and the patch I am using for the experiment has a clipping problem. Users should be hearing flashes of pure tone but instead they are hearing blips of clipping.
any help would be greatly appreciated
the file is located at \[url=[http://www.people.virginia.edu/~jrn5a/THEdemothirdsv2][0]
(and yes i am the same guy as imwithstupid, but i forgot my password)
[0]: http://www.people.virginia.edu/~jrn5a/THEdemothirdsv2
Byte to Int Patch
I am communicating arduino and PD.
Arduino is sending 5 Byte through the serial port.
I receive the values correctly.
These bytes are:
- Byte 0 = 0x000000 To indicate the beginning of the message.
- Bytes 1 and 2 = First int that i want to get.
- Bytes 3 and 4 = First int that i want to get.
I would like to have a patch that have :
- Inlet that will receive the serial value (bytes ).
- Outlet 0 that will give me a integer value for one of the couples of bytes.
- Outlet 1 that will the index of the integer ( 0 for the first couple of bites, 1 for the second).
Any help?
Seq help patch
Hi all,
i found no official documentation for cyclone's seq out there... but i think it's very useful in some situation, so i wrote an help patch. You can copy in 5.reference folder if you like.
Please let me know if you find other messages working...
Ah, you can download patch from jkant.altervista.org, as usual.
Have fun!
Reactivision to reaktor patch
When I started using Reactivision, I really wanted to control Native Instruments Reaktor 5 with OSC but the messages weren't "simple" enough for Reaktor.
So I tweaked the TUIO client patch, for it to route simple OSC messages to reaktor.
I'm new to Pd so it might not be as perfect as you would expect.... but it works !
Instructions :
Open reactivision
Open the pd patch
Make sure you are receiving the TUIO messages ( the bang next to "TUIO client" will blink)
Start Reaktor
Stop the audio engine
System menu \> OSC settings \> click Activate
Make sure port 10000 is chosen as the local port
Start the audio engine
Go back to the pd patch and change the IP address in the bottom left "connect" box
click connect
go back to Reaktor, System \> OSC settings. The OSC monitor should now receive OSC messages.
[0]: http://www.pdpatchrepo.info/hurleur/tuio2osc.pd
dynamic patching with a variable number of outlets
Yesterday I created an abstract which has a variable number of outlets, just like the common "trigger" or "unpack" objects. I dynamically patched this by sending a [obj x y outlet( message to the pd file. This works, however I soon discovered that all connections made from those outlets on the parent patch are broken when the parent is saved and re-loaded. This makes sense because the outlets are created via loadbang, but in order for loadbang to work, all connections must be set already. In my patch, the outlets are re-created every time the parent is opened, but only after the connection commands are sent. This poses a big problem for my abstraction, since I'd like to be able to save it and depend on the connections coming back just like any other object.
I assume normal objects such as [trigger] are coded rather than patched, which would allow for outlets to be set variably. Without resorting to coding, can anyone think of any way to solve this problem of broken outlets?
Access Virus vs. Pure Data - hack no.001 by kostistlac™
... try it!!! ... really sick sounds are hidden inside of this red beast.
[Access Virus vs. Pure Data - hack no.001 by kostistlac™](https://www.youtube.com/watch?v=dCCp8MZzN08)
Uploading an Pd patch to an interactive work over the internet
**Hello. **
This is my first post in this forum, Welcome to me :)
I have recently created an interactive sound istalation piece called "Bint Asluj" (Asluj Daughter), that involves **TouchOSC**, **Pd **and **Abelton**
The piece uses a recordings i made at a Bedouin village in the southern desert of Israel. while the audience is free to activate them through an interface i'd design in TochOSC for an android tablet. Pd was responsible for transmitting data from the tablet to Abelton (use as the recordings sampler).
A short video of the piece - https://www.youtube.com/watch?v=0whKBBgl42E
**My wish is to upload the piece to the internet** and let people over the world experience it.
For that i assumed i need to transform the piece to an internet environment, and i really need help with that :)
The piece require:
**Operate controller** - like the TuchOSC patch - Will i be able to use the same patch and run it over HTML or something?
**Sampler** - i thought to build an new one in Pd, actually to replace Abelton - Or, maybe it will be better to operate abelton on a remote computer?
Does anyone know of an similar example to this use of Pd over the Net?
Does anyone knows of an similar sound piece i can refer to?
Thank you all about you're time and willing to help!
(and sorry about my English... /: )
expr vs multiple objects which is faster and more efficient?
Hi, I would like to know which one is cpu-wise more efficient when calculating some complex equations.
Is it any beneficial to use one expr than using multiple [+] {-] {*} {/} ?
I know there won't be a huge difference but still I would like to know if one is better than another. only regarding the cpu efficiency.
Saving & Recalling Arrays (Sequences)
Hello Folks,
I've got a patch that combines multiple 16 step sequencers to control an SN76477 synth on a chip, via an Arduino. There are separate sequencers for each of the synths parameters: Pitch, LFO Rate, Noise Color, Tuning, Attack & Decay, plus a few logic sequencers for controlling "mix" and pulse wave duty cycle. Each sequence is written to its own array. Things are working quite well so far, and I'd like to take the patch to the next level, which is to be able to recall up to 16 sequences per parameter, For example, the Pitch sequencer would be able to recall up to 16 different sequences. These sequences, along with sequences for the other parameters, could then be strung together to create an arrangement.
The problem is I'm not sure where to start. I've been searching using terms like "save & recall array", but haven't found anything that fits. Anyone have any ideas? To keep things simple, I've attached the abstraction for the Pitch Sequencer. Let me know if I should upload the whole patch, with the many abstractions for this to make sense.
Once I have all of this sorted, I plan on sharing the patch along with the Arduino code, and hopefully a PCB layout for the synth.
Here's a quick video of the patch in action: http://youtu.be/OkNHKXpiB5g
Thanks, Matt
Open-source web service to render Pd patches to SVG
Hi all,
We just opened a web service that allows to render Pd patches as SVG images.
Usage is simple. Just use the following url https://enzienaudio.com/a/dave?fetch= replacing `` by the url of your patch.
For example, here is a patch hosted on a github repository : https://raw.githubusercontent.com/mhroth/ZenGarden/master/test/MessageInteger.pd and here is the url of its rendered image https://enzienaudio.com/a/dave?fetch=https://raw.githubusercontent.com/mhroth/ZenGarden/master/test/MessageInteger.pd
I think this could be really useful on http://forum.pdpatchrepo.info as many people post pictures of patches, while this service could save you from having to make a screenshot.
The whole thing is open source. The service uses pd-fileutils to parse / render the patches (https://github.com/sebpiq/pd-fileutils) and the source code of the service is there : https://github.com/sebpiq/pd-to-image-service
This is still alpha, and we'd be really happy to get your feedback and contributions. If you find any bugs, if you want to improve the look of the rendered SVG, or anything else, please head there https://github.com/sebpiq/pd-fileutils and file an issue or send a pull request!
I've started making Processing Applets!
hey you guys!
I've started making little applets from processing sketches paired with puredata.
The first two on my website are simple interactive audio/musical toys. and more ideas are being created right now.
I'm considering new ways to produce music from visual inputs and trying to think out of the box for the next apps. They're small projects and have limited utility; as I've just started learning this on the way. The plan is to get the fun ones on android/iOs.
you can get them here for mac, linux and windows. (note that i still havent tested them in any other platforms than mac, feedback would be nice if things don't work. :) )
Has anyone patched a livid instruments controller?
I need help writing a patch for a controller that I use through midi. I need patch to control a lit led button, then have it blink on the control pad when triggered, then stop blinking when not triggered. Any help would be great! I am working with chauvet's show xpress,
Patch attached to convert MIDI 127 stream to High resolution control
Hi All,
I've attached a patch that I constructed that converts a MIDI continuous controller stream of 1~127 into much higher resolution output (currently set to 127^2 steps). It basically ramps between one MIDI number to the next over a time period specified by the amount of time that has elapsed since the previous MIDI number was passed. Of course it still restricts you from stopping on a number in an range between two MIDI numbers, but at least it allows that range to be swept through.
For example, if you want to use a controller to sweep through frequencies from 20Hz-20,000Hz, if you use a MIDI controller normally it would pick out only 128 discrete frequencies over that range and step from one to another like stepping stones. But using this patch, if you move the controller from, say, 34 to 35, the result would be a smooth sweep through frequencies of about 5300Hz to 4470Hz over the time period equal to the time taken to change from 34 to 35\.
Unfortunately, the major limitation is that the patch only knows the time period at the moment you reach the new number, so the ramp only starts by the time it should have finished. This makes it impractical to use for slow sweeps, but you could use a separate controller for these slower movements (one that is much lower geared).
Any suggestions for improving or expanding the patch would be welcomed.
I know that pitch bend already performs as a 14-bit controller, but I don't want to be limited to having only one hi-res at a time (I only have one pitch bend wheel!)
[0]: http://www.pdpatchrepo.info/hurleur/High_Resolution_Controller.pd
Favourite vs Upvote (people here get confused)
I'm almost sure various of our forumites cannot easily distinguish the Favourite function from the Upvote functions.
I guess they want to upvote things but end up saving the thread in their Favourite section.
I made that mistake the first time... :)
A Very Simple way to use vb.net to control Pd via mrpeach/udpreceive
I thought I would share this, because being a long time vb/vb.net programmer type of person I wanted to be able to send control data from vb.net to Pd easily.
There are various OSC libraries around, but little for Vb and nothing simple.
I was inspired by a post about pdsend i responded to the other day.
I thought surely there's a way to send data directly from vb to pd without using a batch file or cmd redirection.
I found a nifty piece of code from Kumudu Gunasekara, 27 Nov 2004 on www.codeproject.com/Articles/8877/UDP-Send-and-Receive-using-threads-in-VB-NET and modified it slightly for this execise, this allowed me to send data via a port and ip address (9001 & 127.0.0.1 (aka localhost)). At the Pd end I used mrpeach/udpreceive, but the data was ascii char values. I cant believe there isn't a conversion somewhere in Pd but I couldn't find it and made ascii.pd and cnv999.pd to resolve the problem.
There's little error checking, so I've no idea how it might interfere with other udp processes. But this is the start of a solution for me.
Cheers Balwyn
[vb.net to Pd via UDP.zip](/uploads/files/upload-d568e8c7-ed3e-4c1b-ac59-380dc75c6b05.zip)
Ichographs: Emerging soundscapes from visual forms
I would like to post my latest installation "Ichographs" which was done using C++ cinder lib and Pure Data. I used cinder lib to analyze the images, extract and calculate the audio frequencies (based on the colors of the image). These frequencies were sent to Pure Data via OSC. Every color is a sonic frequency. In Pure Data 600 cos oscillators were changing amplitude according to the corresponding color density. The audio part of the video is done 100% in Pure Data.
Note: This video has very low frequencies that are essential. Please use an audio system that can reproduce low-pitched audio frequencies. Built-in laptop speakers and basic desktop speakers are not recommended.
You can read more here: http://kranidiotis.gr/ichographs/
This forum was a great help during the creation of this project and the least I can do is to thank you all!
Step sequencer
Hi guys,
I'm pretty new to pd, but I've been getting my feet wet with C / C++ the past couple years.
I've got an idea for an external, and I can't find anything similar on the boards. I don't know if it's been discussed before, if so, please let me know!
Anyway the idea is an expansion on the \[metro\] object. Imagine an array of 8 metro objects, each with a time inlet and a bang outlet. So it would send a bang, then wait the specified amount of time, and step to the next inlet send a bang... wait.. etc..
Sort of like:
num num num num (ms)
| | | |
| step sequencer |
| |
| | | |
bang bang bang bang
What do you think? Is it possible? Anyone want to collaborate / help/ point me in a direction .... ?
Patch to play midi with Makey Makey Arduino Board
patches getting weird filenames
Is everyone else getting weird filenames for patches when downloading from this forum?
It used to be that if a file was called 'myPatch.pd', that's exactly what you'd get, but now i'm getting filenames like this:
is this just a Chrome thing?? anyone else getting this?
Made an error in a patch and now it won't open for me to fix...
Hello everyone,
I'm constructing a PD patch for a uni assignment, but in the process of tinkering with my patch I've managed to create some kind of infinite feedback loop; the console says "error: stack overflow". My problem now is that I can't open the patch to get rid of the error; it simply freezes and doesn't open. Other patches work fine. I've got a few loadbangs initialising some parameters in so I put "noloadbang" in the startup flags, but it says "noloadbang: can't load library" on opening PD.
I *could* just start again and build it from scratch, but I'd rather not... any suggestions on how I can get at my patch to fix it?
Using Windows 7 on a Dell laptop, "pd version 0.42.5-extended"
MIDI file playback controlled via MIDI keyboard
Hi all,
This is a simple patch I created for an user in this forum, so I may as well share it here. It allows you to load 10 MIDI files that can be played via Pd or by pressing keys in a MIDI keyboard.
Download: [midi-player.zip](/uploads/files/upload-a8fa431e-be21-4014-a12e-f5623ab1fe94.zip)
I hope someone will find this useful.
Does a PD patch like this already exist?
We have a number of tracks we want to perform live that have key/synth parts but we don't have a keyboard player so it would be good to have a convenient way to trigger MIDI files and I suspect PD could do what I want. However, I'm a total PD newb so I'm hoping someone has already created something close to what I want?
What I'm looking for is a patch that lets me create playlists of MIDI files that are triggered at a tempo determined by 2 or more consecutive MIDI events. In my case these MIDI events will most likely come from a MIDI drum trigger but it could as well be a MIDI keyboard or whatever. For each MIDI file in the playlist you would ideally be able to choose either the number of repetitions, 'one shot' (the default) or loop. Loop mode would repeat the MIDI clip until another MIDI event is received at which point it would stop and queue up the next clip in the list, if there is one. The clips would default to playing after a count of 2 hits/events but this would ideally be configurable too.
Most of the time I'd want the MIDI files to be triggering VST synths but sometimes I may want to use soundfonts instead. Is there some kind of PD file format that could be used to store the VST patch settings etc for the MIDI files? Maybe it would store the MIDI data too?
Does a patch like this already exist?
Can someone explain to me what's going on in Johannes Kriedler's looping patch?
Hi folks,
Some context: I am building my own "oneshot" drum sampler and realized I got clicks/pops in the audio if I triggered notes too quickly. I was looking online for solutions and came to part of [Johannes Kriedler's tutorials](http://www.pd-tutorial.com/english/ch03s04.html#id426491). I think some kind of amplitude windowing is what I need so as to ensure that each sample starts and stops at "0" amplitude to avoid clicks (see my included patch and sample).
Anyways before shamelessly copy-and-pasting Kriedler's patch into my own, I want to understand exactly what's going on. Below is a picture of Kriedler's example with **[[my comments in brackets]]**.
![Screen shot 2014-11-08 at 10.25.20 AM.png](/uploads/files/upload-271603bb-2034-4998-8494-7e481a1bf863.png)
Pd file in case the picture isn't big enough: [kriedler.pd](/uploads/files/upload-20b68b16-feea-43e5-821e-10a2d97cb46b.pd)
Can anyone explain to me what's going on here?
My patch for reference: [pdforum.zip](/uploads/files/upload-50613a6a-7a3f-47f0-b191-9fd83f163f5f.zip)
ODroid and Pd - anyone uses it and has nice sound without drop outs?
Hi Alexandros,
you can tape "uname -r" to get the kernel release of your distro, and see if there's is a "realtime" in it.
However today I read some stuff on jackaudio.org where they're saying that a realtime kernel isn't really needed in many situations, but my personal experience with wheezy or ubuntu says that realtime scheduling was crucial. The interesting thing is that I learned from these readings that you don't need a rt kernel to do rt-scheduling.
Usually I set jack priority to 80, "place" the rtpriorities of important applications slightly below it (that's why you saw a 75 in my first post), and set other less important applications's rtprio under all important ones.
Example :
If I type "cat /proc/asound/cards" I get the irq of my usb soundcard which is 17.
Then I type "ps -eLo rtprio,cls,pid,pri,nice,cmd | grep "FF" | sort -r" and it gives me an ordered list that could be used to see how rtpriorities are set. The souncard "belongs to" the rtc timer, so its rtpriority must be lower. Here's a portion of the result on my setup :
99 FF 3 139 - [migration/0]
99 FF 17 139 - [posixcputmr/1]
99 FF 16 139 - [migration/1]
99 FF 14 139 - [posixcputmr/0]
90 FF 81 130 - [irq/8-rtc0]
85 FF 72 125 - [irq/16-uhci_hcd]
85 FF 71 125 - [irq/17-ehci_hcd]
84 FF 75 124 - [irq/16-uhci_hcd]
84 FF 74 124 - [irq/18-uhci_hcd]
84 FF 70 124 - [irq/23-ehci_hcd]
83 FF 77 123 - [irq/16-uhci_hcd]
83 FF 73 123 - [irq/19-uhci_hcd]
82 FF 76 122 - [irq/19-uhci_hcd]
80 FF 1947 120 - /usr/bin/jackdbus auto
75 FF 80 115 - [irq/1-i8042]
75 FF 2845 115 - /usr/bin/pdextended
75 FF 1949 115 - /usr/bin/a2jmidid dbus
74 FF 79 114 - [irq/12-i8042]
50 FF 685 90 - [irq/7-parport0]
50 FF 675 90 - [irq/16-nouveau]
50 FF 66 90 - [irq/15-ata_piix]
50 FF 65 90 - [irq/14-ata_piix]
50 FF 45 90 - [irq/9-acpi]
50 FF 308 90 - [irq/6-floppy]
50 FF 279 90 - [irq/21-ohci1394]
50 FF 2292 90 - [irq/17-Intel IC]
50 FF 2277 90 - [irq/10-MPU401 U]
50 FF 1264 90 - [irq/20-eth0]
You can see that the rtprio of rtc is 90, the rtprio of the usb port used by my soundcard is 85. Jackd comes later with a rtprio set to 80, and pd-extended is run with a rtprio of 75 (using "chrt -f -p 75 $(pidof pdextended)", for instance.
The video driver here is "nouveau", and its rtprio is 50, lower than pd's 75. Same thing with "eth0". On my setup, pd-extended has a rtprio of 10 when I don't change it manually, so it is far below the video driver, or the network adpater, hence the clics and pops!
But...wait. Do you have such audio problems with other applications ?
I think that jack should work fine with n=3 and p=128 settings with your setup.
Announce: mmm-0.1.0-eden
hi forum.
we proudly announce the first public release of our compact composer
for pd, mmm.
grab it at [http://netpd.org/mmm-0.1.0.zip][0]
mmm is best described in it's faq, see below. don't expect too much
yet, there is still a lot to be done. comments, bugreports, cash, are
have fun with it!
christopher charles & enrique erne
faq for mmm-0.1.0 - eden
what is mmm?
mmm is a pd patch collection aimed at providing a studiolike(?),
streamlined, dynamic interface for making synthetic music.
ymmv depending on your operating system. we put some effort in
detecting the operating system and setting the fontsize according to
it, but quirky xorg or dpi settings might screw things up again.
where can i get it?
we currently host the mmm at [http://netpd.org/mmm-0.1.0.zip][0] ,
alternatively, you can grab netpd, enter the chat, and if either of
the authors is online, download it directly through netpd and start
what does "mmm" stand for?
mmm was originally just the working title, but we came to like it
somehow. the original meaning is "music making machine" but you can
substitute every m for whatever you want. so "massive multiplayer
music" is okay with us, too.
what is the inspiration?
having worked on/with the bagoftricks (lots inconsistently coloured
gop-patches to be connected freely) and netpd (lots of
inconsistent-looking windows to clutter up the screen), we came to
mock up an clean, dynamic interface in which modules don't bring their
own gop or open their own window, but log onto the interface that's
provided for them by the motherpatch. all modules sharing the same
interface made it easy for them to share the same sequencer and
what are the dependencies?
mmm should work with pd-0.39 and zexy installed. iemlib is important
for many synth and effects patches, and there's even set of gem
modules you can chain if you want.
is it actually usable?
no. this 0.1.0 release is rather a tech demo and a taste of things to
potentially come. you can crunch some acid loops out of it already,
but don't sell your protools studio equipment to start working with
mmm on monday.
how does it work?
mmm's interface (mmmmain.pd) is divided into 3 parts: there is the
module/channel view, where you can chain up synths and effects on 8
different channels. select an empty field on a channel, and then use
the scrollbox on the left to select a patch and open it. when clicking
on a patch you loaded up in the module view, the 2nd view comes into
play: from there you control the patch's sliders on the left, right of
it is the stepsequencer for each of the slider (means everything is
sequencable!). yet you won't hear anything until you did the following
2 things: press play in the uppermost row of mmmmain, and set up the
arranger to play the stepsequence. the arranger is not module-based,
but controls all modules of a channel are grouped in the arranger. for
now, you can only select pattern 01 or nothing to play in the
arranger. so set up a loop for the first pattern (loopstart:0,
looplength:1) set the first field on the channel you got your patch on
in the arranger to p01 and start making some noise.
does it work online?
yes. mmm is compatible to netpd and will automatically log on to
netpd's server if you have the netpd chat open. you can also download
the whole mmm package through netpd. feel free to jam around the
what's not working yet / what is planned?
as for now, there is no support for samples whatsoever, it isn't
planned to support them soon. further, there is no hard disk recorder
available yet, but it is planned. the arranger/sequencer combo is very
crippled at the moment, only supporting 1 16-step-pattern to choose
from and 1 page of 16 patterns in the arranger. this will change
rather soon. next there are plans for luxury editing functions,
especially in the sequencer like copy, paste, random pattern,
interpolation and so on. plans exist for full keyboard control, but
this will be worked on not too soon. the module roster is far from
being complete yet, more is to come.
can i save my stuff?
should be possible with the buttons above the channels. don't rely on
the result though, this is still 0.1.0 :)
can i add my own modules?
modules are not to hard to write, but for now, the list of selectable
modules is hardcoded. look at all the 4m-\* patches in the patches
folder to see how they are ticking. contact us for adding your patch
to the mmm or try to figure out yourself how it works ;)
what's the license?
mmm is licensed under the gnu lgpl. if you think this is a too useful
product to be free of charge, please consider donating the amount of
money you would've paid for it (or the amount of money you got from
selling your protools equipment on monday) to a trust of your choice.
who are the authors?
mmm is developed by enrique erne (eni, swiss, pd{at}mild.ch) and
christopher charles (syntax\_tn, germany, chr.m.charles{at}gmail.com).
we can be contacted via email, irc (\#dataflow) or directly in the
netpd chat. several patches within mmm are based upon netpd versions
of them, check netpd for the original authors. mmm shares some of it's
netcode with netpd, by roman haefeli.
we cannot give you any guarantees on using mmm, not even that you
have fun. it should be relatively harmless, but don't come crying to
us if mmm accidently hijacks your \*mule and downloads david hasslehoff
recordings to your computer.
[0]: http://netpd.org/mmm-0.1.0.zip
[1]: http://www.netpd.org/mmm.png
Escher-esque chord progressions
I've been getting into writing patches that generate music all by themselves, using mathematical
rules that apply quite nicely to music theory. I've made a few rhythm patches that make nice cross
rhythms using metronome division and delays (with values derived from multiples of the master
metronome), and i'll post these too if anyone is interested.
In this thread I'm showing off my "Mauritz Escher like Chord progressions" patch.
Screenshot: ![](http://responsible7.googlepages.com/zenpho_escher.gif)
Mp3: [http://responsible7.googlepages.com/zenpho\_escher\_pd.mp3][0]
Patch: [http://responsible7.googlepages.com/zenpho\_escher.pd][1]
**First some basic music theory:**
(skip this if you're comfortable with chords, 7ths, and inversions)
A major scale is constructed of 8 notes, with the "root" note doubled at the 8th note.
For the key of C major (all the "white" notes on a piano) the names and numbers of the notes in
the scale of C-major are:
Name, Number:
C, 1st (root)
D, 2nd
E, 3rd
F, 4th
G, 5th
A, 6th
B, 7th
C, 8th (remember the root is doubled at the octave)
A triad is constructed of the 1st, the 3rd, and the 5th notes in the scale.
A SEVENTH chord is constructed of a triad (notes 1,3 and 5) PLUS the 7th note in the
scale. So a C major 7th is note 1,3,5,7 or C,E,G,B.
Up until now we've been describing "standard" voicings of the chords, in other words, the notes
are played so that the root is the lowest pitched note, the 3rd is higher, the 5th is higher
still, and the 7th is the note just below the octave of the root.
At the risk of sounding redundant, "octave numbers" after the note name help clarify which octave
the note is to be played in. To play a C major 7th on the third octave, we would write:
C3,E3,G3,B3\. To play it an octave higher we would write: C4,E4,G4,B4\.
"Inversions" of chords re-order the pitches of the notes, but still play notes with the same
"name" as the 3rd, 5th, 7th etc. For example:
C3,E3,G3,B3 is a standard C major 7th...
...and G2,C3,E3,B3 is an inversion. All the notes are there (C,E,G,B) but they are in a different
order to the normal "Root, Third, Fifth, Seventh" arrangement. In this case, we say that "the
fifth is in the root".
Okay so now we know what a major 7th chord is. Lets deal with chord progressions.
Now imagine playing C3,E3,G3,B3 and removing the "root" (the C3) from the notes played,
we have a chord that reads "E3,G3,B3" - we were playing C major 7th and now we're playing E minor.
\*THIS IS A VERY IMPORTANT STEP\* Moving from C major 7 to E minor sounds "natrual" because the
notes that occour in C major 7 ALSO occour in the E minor.
Now lets make this E minor chord a 7th...
We've said before that a 7th chord can be constructed by playing the 1st, 3rd, and 5th notes, PLUS
the 7th note in the scale.
The scale of E minor (a flavour of minor) is:
Name, Number
E, 1st (root)
F\#, 2nd
G, 3rd
E, 4th
B, 5th
C, 6th
D, 7th
E, 8th (octave)
The 7th note is "D" so we add the D note to our E minor triad to make E minor 7th.
E minor 7th is therefore: "E3,G3,B3,D4".
We can extend this E minor again, removing the root, working out the new scale for G major, adding
the 7th to make G major 7th, and again, and again, and again... but if we do - we keep moving
\*UP IN PITCH\* and spiral off the end of the keyboard.
Okay, so what my patch does is to take the idea of generating new 7th chords over and over,
but to play inversions of these chords so that the notes stay inside a single octave. If the
"root" note is in the 3rd octave, C3 for example. Then when I move to E minor, the D4 is
transposed to be a D3, to keep within this octave range.
Due to the fact that there are 12 semitones in an octave, and notes that fall outside the octave
range will wrap around to be an octave lower. The maths for generating the new chords basically
involves taking each note in the current major 7th chord and adding two semitones to each note in
Now our terminology could cause confusion here, because there are "notes in a scale" and "notes in a chord"... So I'm going to define some notation to show when i'm talking about the notes in a
For example:
A C major 7th has the notes C3,E3,G3,B3\.
Note-1-in-the-chord is to be defined as chord\_note\_1\.
Note-2-in-the-chord is defined as chord\_note\_2\.
Note-3-in-the-chord is defined as chord\_note\_3\.
Note-4-in-the-chord is defined as chord\_note\_4\.
chord\_note\_1 has the pitch C3\.
chord\_note\_2 has the pitch E3\.
chord\_note\_3 has the pitch G3\.
chord\_note\_4 has the pitch B3\.
It is important to be clear about the idea of "pitch", "chord\_notes" and "scale\_notes" because
because chord\_note\_3 has the pitch "G3" and scale\_note\_3 of C major which is the pitch "E3".
Back to the procedure for generating new seventh chords.
We generate a major 7th to begin with.
We add 2 semitones to chord\_note\_1 to get "D3", and we leave the other notes alone.
Our chord now reads: D3,E3,G3,B3\.
Which is an "inversion" of E minor 7th.
This time we add 2 semitones to chord\_note\_2 to get "F\#3", and we leave the other notes alone as
Our chord now reads: D3,F\#3,G3,B3
This is an inversion of G major 7th.
This time we add 2 semitones to chord\_note\_3 to get "A3", we leave the other notes.
Our chord now reads: D3,F\#3,A3,B3
This is an inversion of B minor 7th.
This time we add 2 semitones to chord\_note\_4 to get C\#4...
\*BUT C\#4 IS OUTSIDE THE OCTAVE 3! So we TRANSPOSE it down to C\#3\*
Our chord now reads: D\#3,F\#3,A3,C\#3
This is an inversion of D major 7th.
After my patch modifies all 4 chord\_notes, it moves back to chord\_note\_1, and adds another
2 semitones... over and over.
Eventually we get back to C major 7th again, but on the way we move through a variety of different
chords that evokes very interesting changes of moods.
**Want to try playing with it?**
Mp3: [http://responsible7.googlepages.com/zenpho\_escher\_pd.mp3][0]
Patch: [http://responsible7.googlepages.com/zenpho\_escher.pd][1]
[0]: http://responsible7.googlepages.com/zenpho_escher_pd.mp3
[1]: http://responsible7.googlepages.com/zenpho_escher.pd
Audio/Video Granulizer
the sequencer's cool but it's a pain to label since it's so squished. the bottom left numbers just show what steps you're viewing, since you can only view 16 steps at a time, and you select which 16 steps you're viewing with the thin, long hradio in the middle. click around that and you'll see which sets of steps you're editing (1-16, 17-32, 33-48, etc.) up to 256 steps total. in the middle bottom, that number is where you set how many steps you want - it defaults to 16\. the bottom right is the tempo, and the box next to that is just a counter to show what step you're on when playing. the small size 4 hradio to the right isn't currently used, but that's there so you can switch between 3 other sequences in the same sequencer.
i really didn't clean that patch up enough - i just realized two of the inlets set the total number of steps... the leftmost inlet sets the bpms and the rightmost is a toggle for start/stop. also sometimes when you save a sequence that's last value is a nonzero, if you extend the sequence after that it'll fill the new steps in with that value instead of zeros.
ultimately it's pretty multipurpose, what i usually do is run the outlet into a \[select 0\] just to throw out the 0's (since maybe you want to sequence negative values sometimes). the explanation in the patch just tells how it works with that specific sampler - to sequence it it takes 0-7 to trigger the 8 different lookup points, and it wraps so you can send 8 as 0, 9 as 1, etc (i like to do it like that so i can still throw out the zero's and not have to scale the input over a value in the sampler).
i forget who it was but someone in \#dataflow inspired this sequencer - i had started with a small 16 step sequecner, then just made it bigger until it was a huge 128 number box GUI lagfest... discussing ways around it someone suggested that you use a sort of switching system so you can only VIEW 16 steps at a time, but can shuffle around a larger sequence. ultimately it took a while to figure out how to set up but it was super rewarding, the thing is super handy and has save/load! buyakasha!
A song from a few weeks ago
this is all live except for a minimal amount of sequencing... specifically, the chord progression that comes in after a few seconds, the sequencing of the breakbeats (they both share the same sequencing, i just crossfade them), and the sequencing of the granulizing on the breakbeats that come in later (which i also change a bit as it goes on). i'm basically alternating between two "lead" synths, controlled via oxygen8... they're just patches using osc~ and some wavetable distortion to mix the timbre up, lowpass it, then into a reverb... what i'll do is play on one synth, then crank up the reverb feedback on it and kill the input, then play with the other one, and vice versa... this is a method i never really played around with until i got into Pd, and i only started using it because of the lack of objects i had made really! it's a good way to get a nice big background sound, like a huge pad that looms over it...
the ending of this song drives me wild... when i recorded it, i had actually intended for the ending to be the first buildup (around 7-8 minutes), but when i played that melody on top of everything, i realized i had to do it again, so i did, and i'm SO glad i did... i basically distort the beat to white noise too, it's just this huge emotional moment, the epitome of where i want to go with Pd.
obi, the drums are a bit in the back, i need to work on some better distortion methods :-P but i did throw a kick sample in there to help out the low end of the beat... this song was composed and performed entirely in Pd, but is more of a crazy patching mess than a complete .pd file... i've only implemented save/load for my sequencer as of late, so a lot of songs up until now i had no way to save them other than a .wav and a screenshot! (i usually save the huge performance patch and take a screenshot, because when i reopen the patch all the abstractions go to default values! :-( but i'm starting to implement save/load in most patches, so hopefully soon i'll be able to have patches you can load right up and listen to)
anyways, glad you guys enjoyed! hopefully i do some more music soon (since i've been working mostly on more sound/gem patches, not really composing at all)
cheers! -ian
personally, i wouldn't bother with saving the generated abstractions to a location on disk. i've revisited the patch i did a few months ago and what happens in my is that i have an abstraction that it set up to generate a subpatch on its own canvas (not the main patches canvas). so what happens is on the main patch, i create an instantiation of that abstraction with various creation arguments to make it unique. when that abstraction is instantiated, it goes through a sequence of events:
a. create the new subpatch on the abstraction's canvas. something like this:
\[symbol &\#036;1\] (&\#036;1 is the name of the sub patch to be created)
| &\#92;
| \[makefilename pd-%s\] (you will need this symbol for referencing)
| |
\[pack s s\]
\[ ; (
\[ pd-abstraction.pd obj 83 500 pd-abstraction.pd &\#036;1; ( (create it)
\[&\#036;2 vis 0 ( (hide it)
b. fill the subpatch with whatever it needs to function. e.g.
first you need to pack any parameters together that will govern how the subpatch is created. the only parameter you absolutely need is the name of the subpatch window prefixed by 'pd-'. you'll make this symbol as above with the makefilename object so it looks like pd-subpatch. other paremeters i used were a send/receive name, and one other numerical parameter. after you have your parameters packed, send them to a message like this (&\#036;1 is the window name, &\#036;2 and &\#036;3, are other parameters):
\[pack s s f\]
\[ ; (
\[pd-abstraction.pd vis 1, &\#036;1 vis 1 (
\[&\#036;1 obj 10 10 r &\#036;2, obj 40 40 \* &\#036;3; (
\[&\#036;1 connect ....etc.... (
\[ create and connect more objs (
\[ &\#036;1 vis 0 (
\[pd-abstraction.pd vis 0 (
note that i have included messages to show and hide windows. i don't know why it's necessary, but i ran into problems when the window wasn't visible. it probably has something to do with the coordinate system. another thing i did in my patch was before i sent this message, i ran a few messages to clear the contents of the subpatch just in case a subpatch with that name had already been created.
and that's about it. my actually patch was a little bit more complicated. i have simplified here for easier explanation. my patch had more complex naming conventions and more parameters were passed to the message box that created the contents of the new subpatch.
i hope this helps.
Thanks C.!
The amazing jazzdrumbox patch is from Andy, many of the patches here come from forums and posts from users.
The drummachine is actually mine :) so thanks
There is so many patch because it's a collection (even if some patches are very close to each others, maybe I'll make a selection later)
- the CTL patches deal with data ( for instance : midi seq, midi automations, or fiddle and bonk analyse to track signal and send midi notes and vel)
- Fx are fx
- S patches are instruments to be played with midi keyboard, or with ctl patches.
- z patches are used in other patches and can be used to create new ones.
Instruments patches are meant to be browsed with your classic browser, and I wanted them to be opened in a new pd window. But I guess I could add a menus to the main mixer patch to open synth, ctl patches and fx
The workflow 'should' be to first select your sounds/instruments select the audio bus then they are caught in the main window and that's were the patching begins with effects and controls. The main limitation is that I only have 5 audio buses for now, but I should add some more later on, a signal router may come in handy at that time .
Different ways of Implementing Delay Loops
Ta Toxonic - I'll take a look at the patch tonight. Good of you to take the time. Apologies if I've misunderstood though, but I think what you're describing is not quite what I mean: The pitch shift is separated out from the delay time - you're running a pitch shift effect into a separate delay line, which is not going to give the same effect. The delay time will not shorten as the pitch rises. I'll take a look at your patch tonight though as I may have misunderstood what you're getting at.
Maelstorm - thanks also. I understand why the pitch changes on a delay pedal. The pitchshifter patch was a bit of a red herring - though of course it's the same principle. The difference between what you're (both, I think) talking about and what I'm talking about is the way that the pitch changes.
Assuming a stable C tone playing into the delay:
With the standard simple PD delay set up, if you move the read point of a vd~ then you get a glissando as it accellerates, a constant pitch change as it moves at constant speed. So if you turn the knob to change the delay time in the middle of a tone you start with a constant pitch (C), then get a rise of pitch, then it levels out at a new pitch (as you turn then stop turning the knob),
If you feed back into the delay, the glissando is repeated as the read speed changed while the write speed was constant:
\_ \_ \_ \_
/ |/ |/ |/ |
The effect I'm looking to emulate on the other hand is more akin to changing the speed of a phasor~ reading an array - the pitch change is not a blip, but a stable interval's transposition - eg: you turn the knob, the pitch of the repeats rise by a given interval and stays at that pitch as it repeats (now more quickly):
If you play a constant C tone, then speed up the delay until it is a major third higher, you get a major third diad (until the delay dies away), rather than a C tone with a repeating squiggle overlaid.
The effect is the same as you get by speeding up a tape loop delay (though the pedal I'm trying to imitate is a digital delay) which is why I think the rate of the write and read heads are being increased by the same amount.
\[edit, just tried to make this clearer and removed a couple of errors\]
Export to exe or dmg format
Pd and Pd-extended is free software and you may redistribute it, even in modified form, provided you follow the license terms (BSD and GPL).
If you are on OSX, it is very easy to create your own application with Pd-extended under the hood. Select menu-item 'file\>\>Make app from patch' or 'file\>\>Make app from folder'. What you get is a Pd-extended package with your patch as startup patch. The Pd window is minimized directly after startup, so at a first glance you don't notice it is Pd. But it is still fully functional with all Pd-extended libraries in it (120 MB!), and the possibility to edit patches and create new ones. With some extra tweaking, you can replace the Pd icon with an icon of your own make. The preferences file of this 'app' is within the app folder. If you included all necessary abstractions, and eventually your homebrew externals, you can distribute it as a stand alone app.
But probably you are not on OSX, otherwise you would have already seen this option. For Linux or Windows you could do something similar to the 'Make app' as described above, but do it by hand. You could write an executable tcl script to start Pd with your patch as startup patch, and eventually include other options in the script. (Pd uses Tk/tcl for graphics and other purposes, so it is included in every binary distribution of Pd-extended). The user can click that script to open your 'application'.
Disadvantages of distributing apps instead of patches are:
- you need to make separate distributions for every platform
- applications are large so you need ample download bandwidth on your server or host
- if Pd is obscured, you can't refer to Pd pages for support
All taken together, I see little advantage for distributing stand alone apps rather than Pd patches. If you want to make user-friendly distributions of your patches, you could organise them in a decent directory structure, where abstractions and other essential files are included in the search path by the \[declare\] object. For the user it is then a matter of installing a recent Pd(-extended) if they do not have it yet, and opening the main patch in your patches package. If all goes well, this is piece of cake, and on the other hand if they have troubles with soundcards etcetera, this is not something you could have prevented by supplying an app instead of a patch.
Favorite ways of doing GUI
i think one thing you should take into account when designing a GUI is something that will fit well ontop of the work you've already done. if your patch has a message handling structure already embedded in it (one that is sufficient to control all parameters of your patch), it would be very easy to employ either of the trends mentioned above.
if your patch has a set up where many sub-patches on a main canvas, perhaps the graph-on-parent method would work well.
another consideration is displaying information from your patch (not just controlling or changing it).
though i guess the main thing is usability. certain components and controls are going to fit your patch better than others. if your patch needs to be used in some type of performance, what features will make the patch easiest to use for the performer.
i do not know much about it other than it exists, but joseph sarlo at UCSD is working on GrlPd...sometype of layer for making GUI's for your patches. the link is \[url=[http://crca.ucsd.edu/~jsarlo/gripd/][0]
i hope this helped some and perhaps it will stimulate some forum discussion.
[0]: http://crca.ucsd.edu/~jsarlo/gripd/
Drum Sequencer
good suggestions hardoff. i like the array and tabread idea. if you need a more friendly interface for programming and displaying the sequence, there are a couple tricks you can use. for setting the sequence, have a matrix of tick boxes with a sub patch (graph on parent option checked). connect each tick box to a message that writes data to the table. (this is why a graph-on-parent sub patch is nice--you don't have to worry about the wires getting in the way...). for displaying the sequence, you can have a looping tabread set up that interprets the sequence and changes the parameters of a matrix of small canvases that correspond to the tick boxes. there are ways to have it so you don't have to have a seperate programming/display interfaces, but these tend to be trickier because you have to make sure you don't run in to loops:
\[r tick1\]
\[send hihat1\]
\[r hihat1\]
this will result in a loop that may cause Pd to crash. i've learned my lesson about these crashes the hard way so i've tried to get in the habit of saving more often, especially when creating what could possibly result in an infinite loop.
another advantage of using arrays for sequencers is that you can keep lots of arrays around and save presets or whatever.
patch away!
Touch Screen Sequencer, PureData and Python
Hi all,
I feel that this is now at the point where i can start showing it to people and possibly getting some feedback. This is based off a Midi sequencer i wrote for the NDS but is now aimed at my touchscreen tablet which has a much bigger area to play with.
everything can be downloaded from my github repository
The sequencer has two parts :-
Pure Data sequencer does all of the data stuff, midi sequencing, value storing.
The Python GUI just makes everything easier to use and a bit prettier than stock PD. It uses pygame for all the graphical stuff so you will need this to be installed as well.
The two communicate over OSC and my eventual plan is to have the tablet communicate with a rackmounted server over a wireless netwwork.
2 channel types, Grid and Curve. Grid features 8 grid based patterns either 8 \* 16 or 16 \* 32 sized grids. The patterns themselves are sequencable and there is a follow mode that shows the patterns being played on a channel so you can more easily edit it on the fly.
The curve channel features 8 wavetable LFOs with user drawable waveforms, variable lengths and independant midi channel capabilities. They currently only do standard Midi CCs and no pitch bend but thats something I want to change soon.
The sequencer sends out Midi clock start/stop/clock information so it can be used as a master clock for a bunch of gear. It currently doesn't sync to a midi clock but again i'd like to do that eventually.
I've tested the whole thing a bit and it works however i'm sure there are going to be more issues. Any feedback is welcome, even if its people just giving advice on how to do something better. The user interface is currently ugly but then i'm an engineer not a graphical designer :P
I hope people find this useful or informative or hopefully both.
Thanks for taking a look
[0]: http://github.com/notesandvolts/Touch-Sequencer
Write table with 256 values coming from a number b
I'm guessing your patch receives the 256 values in a list?
You can extract the Nth element from a list with a message box like \[ &\#036;N (
But for a list length 256 this could get tedious to patch. What I suggest is making a Java program to make the patch.
Make a patch to extract the right parts from the list for a short list, say length 4, perhaps with a \[ t l l l l\] connected up to \[ &\#036;N M (, where M=N-1, each connected to \[ unpack f f ( ==\> \[ tabwrite \] . If you create the message boxes last, it will be easier to write the program.
Then write a Java program to generate the patch you want. It's best if the patch generated is a complete abstraction, so you don't have to edit the output patch each time you edit the Java program (say if you want different length lists).
Here is an example of a Java program that I wrote to generate a patch with 256 number boxes in a 4x64 grid. It doesn't follow my guidelines for being a complete abstraction - I edited the patch afterwards to add more stuff, which will cause me problems next time I want a different sized grid....
public class NumberGrid4x64 {
public static void main(String args\[\]) {
System.out.println("\#N canvas 403 0 525 1216 10;");
int count = 0;
System.out.println("\#X obj 2 18 cnv 15 110 1136 empty &\#92;&\#92;&\#036;0-canvas-r &\#92;&\#92;&\#036;1 4 12 0 10 -225280 -90133 0;"); count++;
for(int y = 0; y < 64; y++) {
for(int x = 0; x < 4; x++) {
System.out.println("\#X floatatom "+(7+26\*x)+" "+(42+16\*y+4\*((int)(y/4))+4\*((int)(y/16)))+" 3 0 0 0 - \#0-"+y+"-"+x+"-r \#0-"+y+"-"+x+"-s;"); count++;
int count0 = count;
for(int y = 0; y < 64; y++) {
for(int x = 0; x < 4; x++) {
System.out.println("\#X obj "+(120+200\*x)+" "+(42+16\*y+4\*((int)(y/4))+4\*((int)(y/16)))+" r &\#92;&\#92;&\#036;0-"+y+"-"+x+"-s;"); count++;
System.out.println("\#X msg "+(220+200\*x)+" "+(42+16\*y+4\*((int)(y/4))+4\*((int)(y/16)))+" "+y+" "+x+" &\#92;&\#92;&\#036;1;"); count++;
int count1 = count;
System.out.println("\#X obj "+(500)+" "+(18)+" t a;");
for(int c = count0; c < count1; c = c + 2) {
System.out.println("\#X connect "+(c)+" 0 "+(c+1)+" 0;");
System.out.println("\#X connect "+(c+1)+" 0 "+count1+" 0;");
PD and creativity: a patcher's lament
On the workflow side of things...
I agree with Gilberto - Reaper is great! I used to tweak patches endlessly (still do), never knowing what to do with them (still don't), but I finally accepted that I'm NOT a "computer musician." I've never yet performed live with a laptop. I am not going to think my PD patch is a piece of music. (Mine; YOURS might me, but mine's not.)
When I finally made an abstraction that includes a [writesf~] with the dac/volume, I started recording hours of my noodlings... and I've made more than one piece I've been happy with.
(... also, afterwards, I figured out how Jack works. Even better!)
I've always been nuts for the classical tape music folks, though, and I used to use 4-tracks and reel-to-reels for tape collage. Moving my "song"-bits into a DAW has really freed up the PD end of things, even if the methods are a little retro. I'm happier now to make a terrible patch that makes one good sound, record it, and move on. (in theory - in reality, I STILL micro-manage my patches, and fix them up for imaginary concerts and third parties, when really, no one will ever see them but me. Should never have learned about color changes.)
I learned a whole lot from the tutorials on Obiwannabe's site... so much so, that I shelled out the fifty-ish bucks for his "Designing Sound" book. I'm glad I did. I think he has helped some of my sounds sound better. Previously, I wouldn't have used two dozen bandpass filters, because it seemed so inelegant, like "that's not what computers are supposed to do." But damn, if he can make a convincing digital teacup, I ought to re-evaluate my judgements!
A final thought. If I WEREN'T re-re-re-wiring a PD patch right now, would I be spending that time making an album? Or would I just be watching cartoons?
Interaction Design Student Patches Available
Greetings all,
I have just posted a collection of student patches for an interaction design course I was teaching at Emily Carr University of Art and Design. I hope that the patches will be useful to people playing around with Pure Data in a learning environment, installation artwork and other uses.
The link is: [http://bit.ly/8OtDAq][0]
or: [http://www.sfu.ca/~leonardp/VideoGameAudio/main.htm\#patches][1]
The patches include multi-area motion detection, colour tracking, live audio looping, live video looping, collision detection, real-time video effects, real-time audio effects, 3D object manipulation and more...
Pure Data Interaction Design Patches
These are projects from the Emily Carr University of Art and Design DIVA 202 Interaction Design course for Spring 2010 term. All projects use Pure Data Extended and run on Mac OS X. They could likely be modified with small changes to run on other platforms as well. The focus was on education so the patches are sometimes "works in progress" technically but should be quite useful for others learning about PD and interaction design.
NOTE: This page may move, please link from: [http://www.VideoGameAudio.com][2] for correct location.
Instructor: Leonard J. Paul
Students: Ben, Christine, Collin, Euginia, Gabriel K, Gabriel P, Gokce, Huan, Jing, Katy, Nasrin, Quinton, Tony and Sandy
GabrielK-AsteroidTracker - An entire game based on motion tracking. This is a simple arcade-style game in which the user must navigate the spaceship through a field of oncoming asteroids. The user controls the spaceship by moving a specifically coloured object in front of the camera.
Features: Motion tracking, collision detection, texture mapping, real-time music synthesis, game logic
GabrielP-DogHead - Maps your face from the webcam onto different dog's bodies in real-time with an interactive audio loop jammer. Fun!
Features: Colour tracking, audio loop jammer, real-time webcam texture mapping
Euginia-DanceMix - Live audio loop playback of four separate channels. Loop selection is random for first two channels and sequenced for last two channels. Slow volume muting of channels allows for crossfading. Tempo-based video crossfading.
Features: Four channel live loop jammer (extended from Hardoff's ma4u patch), beat-based video cross-cutting
Huan-CarDance - Rotates 3D object based on the audio output level so that it looks like it's dancing to the music.
Features: 3D object display, 3d line synthesis, live audio looper
Ben-VideoGameWiiMix - Randomly remixes classic video game footage and music together. Uses the wiimote to trigger new video by DarwiinRemote and OSC messages.
Features: Wiimote control, OSC, tempo-based video crossmixing, music loop remixing and effects
Christine-eMotionAudio - Mixes together video with recorded sounds and music depending on the amount of motion in the webcam. Intensity level of music increases and speed of video playback increases with more motion.
Features: Adaptive music branching, motion blur, blob size motion detection, video mixing
Collin-LouderCars - Videos of cars respond to audio input level.
Features: Video switching, audio input level detection.
Gokce-AVmixer - Live remixing of video and audio loops.
Features: video remixing, live audio looper
Jing-LadyGaga-ing - Remixes video from Lady Gaga's videos with video effects and music effects.
Features: Video warping, video stuttering, live audio looper, audio effects
KatyC\_Bunnies - Triggers video and audio using multi-area motion detection. There are three areas on each side to control the video and audio loop selections. Video and audio loops are loaded from directories.
Features: Multi-area motion detection, audio loop directory loader, video loop directory loader
Nasrin-AnimationMixer - Hand animation videos are superimposed over the webcam image and chosen by multi-area motion sensing. Audio loop playback is randomly chosen with each new video.
Features: Multi-area motion sensing, audio loop directory loader
Quintons-AmericaRedux - Videos are remixed in response to live audio loop playback. Some audio effects are mirrored with corresponding video effects.
Features: Real-time video effects, live audio looper
Tony-MusicGame - A music game where the player needs to find how to piece together the music segments triggered by multi-area motion detection on a webcam.
Features: Multi-area motion detection, audio loop directory loader
Sandy-Exerciser - An exercise game where you move to the motions of the video above the webcam video. Stutter effects on video and live audio looper.
Features: Video stutter effect, real-time webcam video effects
[0]: http://bit.ly/8OtDAq
[1]: http://www.sfu.ca/~leonardp/VideoGameAudio/main.htm#patches
[2]: http://www.VideoGameAudio.com
Basic Wii patches for OSCulator/PD-extended combos
I'm prepping for a course at the University I teach at and have come up with these basic patches that read out data from a Wiimote, Nunchuk and Balance Board. I have the Classic Controller but didn't bother to set up a patch for it (that is an assignment for my students down the road). Anyhow, I thought some of you might find this useful as a starting point. The Wii Balance Board patch does have an example of really basic noteon/off functionality with weight in the bottom left and right corners of the board. Keep in mind, however, this is a super duper basic example to get the minds of my students jump started.
To get started:
1.) Start OSCulator (if you don't have it, get it!)
2.) Open the Wii Balance Board or Wiimote and Nunchuk OSCulator files (I created two different files for two different projects - you can easily combine both on your own)
3.) Click the Wiimote Drawer icon and connect your Wiimotes/Wii-peripherals (to connect Balance Board, push the red button in the battery compartment)
4.) Take note of what number controller your Wiimote is connected to in the drawer. You may have to change number in the \[routeOSC /3\] object where '3' represents the number of the wiimote in the drawer (yes, it is a tad confusing).
5.) \*IMPORTANT\* - The OSCulator patches are set to output on localhost:9000\. In the next steps, your \[udpreceive 9000\] must be set to receive on port 9000 and NO OTHER PATCH CAN BE USING PORT 9000 (look for the dashed red box as an indication of it not working right)
6.) Open the corresponding Pd patch (ie. if using Balance Board OSCulator file, open Balance Board pd patch).
7.) Nerd out and explore possibilities! The Balance board patch is already set to send out an E, F\# and B on MIDI channel 1\. I use the IAC Bus to route the MIDI to other programs on the MAC. This, of course, is a tutorial in and of itself, so I'll let you gather that information on your own (it is out there).
I'll probably make some tutorial vidz of this and other lessons as the class progresses over the next two quarters (20 weeks). Finally, the .zip was created using the standard 'compress files' feature of OSX 10.5\. I've found that sometimes this can create problems on PC (but then, OSCulator is Mac only so I figure it doesn't matter).
[0]: http://www.pdpatchrepo.info/hurleur/wiik-sauce.zip
On pd-list, m.e.grimm linked to this external \[autotuned~\]:
\[autotuned~\] is a Pd port (by maxus germanus) of the autotalent LADSPA plugin written by Thomas Baran.
I've tried \[autotuned~\] with all sorts of test tones and voice. Latency is fixed (at 2048 samples with SR 44K1). The output does show artifacts, in the form of alias-like frequencies and slow amplitude- and phase-modulation. The artifacts differ from phase vocoder and naive time domain pitch shifters. The sound is not as clean as from \[soundtouch~\]. However, in contrast with \[soundtouch~\], \[autotune~\] can freely modulate pitch factor without producing crackling noises.
\[autotuned~\]'s C code shines a good light on the topic of pitch shifting and it's inherent problems. Pitch detection is done by windowed / unwindowed autocorrelation. Pitch is registered (and implemented) as a function of analyzed period length in integer number of samples. Of course, this is not very accurate, but on the other hand it wouldn't be possible to cut & paste signal segments with fractional period lengths anyway.
\[soundtouch~\] (my Pd port of Olli Parviainen's SoundTouch library) works different. It does not try to find pitch, but finds the ideal stitch point by correlation of signal tails intended for overlap. The best match is always selected, making the cut smaller or bigger, depending on the actual phase of the signal. When the user sets conditions correctly, according to (monophonic periodic) input material, no audible artifacts are produced.
I am now thinking that 'pitch detection' could better be interpreted as 'pitch indication'. A provisional period length indicator which could be used to guide a fine-tuned correlation process as is used in \[soundtouch~\]. It may then be possible to 'look ahead' for good stitching regions, and decrease latency time. Or is this a naive idea?
[0]: http://deterritorialized.com/code/puredata/externals/autotuned~_v0.1.zip
Naming/renaming array with $0 problem
Hey guys, been lurking here a few weeks and posting for the first time. I'm trying to set up a patch such that I can run multiple instances of it at the same time without references getting mixed up. It's working out except for one detail: there is an array used for control in the main window of the patch I want to rename for every instance of the patch that I open. I'm trying to do this by calling it "g1" and then using
\[symbol $0-control\]
\[g1 rename $1(
to rename it as "1022-control" (or whatever) each time I open the patch. Thus if I open each instance of the patch one at a time, each array should have its own "10xx-control" name. This works EXCEPT: if I save the patch after opening and changing the array name, the array name gets saved as "1022-control" and the next time I open the patch I will get the obvious "error: no such array g1" error, as that array is stuck on the last $0 value before saving while everything else has updated!
Are there any workarounds for this, besides renaming the array to "g1" every time I change something with the patch and want to save? I also have an array I'm using as a buffer that gets renamed fine because it is in a
Sending record/play/pause/stop etc. to a sequencer supporting mmc/cc
Thanks for the reply.
My syncing problems are with me, not with my patch or my sequencer. :)
What I'm doing right now is press record in my sequencer, wait for the count-in to pass, and then start my patch, so it can send midi data to my sequencer(which works without a problem). The problem is that my timing is always a little off, thus making it difficult to record longer sequences without having to go in and do corrections(quantizing doesn't help either).
What I want to do, is have a button in my patch which starts my patch and sends a record message to my sequencer, so both start at them same time. (They probably won't start at the same time, either, but I bet my computer is much much faster than my finger ;) )
And all I really want to know is how to send MMC messages out of PD.
Is that even possible?
A simple problem regarding PD patch initialization
The problem briefly stated : how can all the number2 objects in a patch can send their value when opening the patch to the whole \[+\] and \[expr\] objects without going in a tedious \[loadbang\] network?
The problem in detail :
I have a nice patch which use lot of \[random\]. My random objects are used to create a given random sequence between let say M and N (N-M is feeding the right random inlet) and M is then added to random output. This is achieved using number2 objects, some \[+\] and possibly \[expr\]. Since I don't know in advance what should be M and N ... I go for few hours of fine tuning the whole patch ... always using number2 objects with the "init" thing turned on.
After saving the patch, going to bed, wake up, turn on the patch. I don't get the results from the fine tuning ... the problem seems to come from the fact that the \[+\] objects must receive the number out ... which are only sent when banging, or changing the number!!! But, since I have nearly 30 number2 objects to fine tune everything ... I wont go in manually banging every number!
That drive me crazy!!! All the number are nicely set ...
Should I simply create a sending bang (from a loadbang) to every number in the patch? Is their a more elegant way of doing this?
Many thanks!
Bye bye!!
Philippe-Aubert G.
Output~ (they probably don't get much more newb than this!)
the \[output~\] that you see in the help patches is not actually an 'object' but rather it is an 'abstraction'. the difference is that an object is made of C code, where an abstraction is just a pd patch made of other pd objects. actually, any pd patch that you make can be used as an abstraction inside of other pd patches. if your pd patch is called 'crazyfilter.pd' then you would just type 'crazyfilter' into an object box, and then that patch can be used as an abstraction.
now, the reason why the \[output\] abstraction is not working for you, is that pd is not set to scan your entire hard drive everytime you use an abstraction. at startup, pd loads a group of directory paths that are searched when new objects are made. if you click on 'file' in the menu bar, you will see that there is a section for 'path'. the directories contained in there will be searched every time pd needs to find an object/file/etc.
so, if you create a new file, and try to create \[output~\], it won't load, because the path to the directory containing the output~.pd abstraction is not set. here you have a couple of options. the obvious one is to set .../doc.3/audio examples/ as a path.
however, i think a better option is to create a folder of your own called 'my-abstractions' or something like that. and set the path to that directory in the file-\>path menu. then, open the output~ abstraction, click 'save as' and save a copy into your my-abstractions folder.
that way you can use \[output~\] in any patch.
one more thing. as well as searching the directories listed in file-\>path, pd will also search the directory containing the currently opened patch. that is the reason why you can create \[output~\] in any of the doc.3/audio examples/ patches without specifically telling pd to search that path.
Fuck i love pd
hi brett, that track is still up on my site. for some reason the link comes out as a .pd file not an .mp3
just cut and paste that and it will work.
also heaps of stuff here: [http://www.m-pi.com/remixes][1]
\>It's weird that many ppl seem to be using pd but that the output~ page in the forum still has threads in it from 2004 in the top page!! <
it took me a few months of solid patching (a few hours every day) to get a workable setup for actually making tracks. it's certainly no small undertaking.
\>I'm pretty new to pd and just working my way through tutorials at the moment, but do you have any tips with regard to actually going about customising your own setup?<
you are on the right track going through the tutorials. the way i did it was first to build stuff to cut up and effect samples, and then secondly make a system to control those processes live. mine was all based on the \[key\] command, and i just triggered everythign from my laptop's qwerty keyboard. this was nice when i was travellign as it meant i didn't need to cart any gear around. also good for playing live cos i could pick my computer up and jam on the dancefloor. there are a few options though, especially triggering stuff with sensors and such. but i'm sticking with the bare bones keyboard approach cos it works for me well enough.
\> like whether to keep lots of separate instruments or try to keep everything under one roof...<
i try to keep my stuff in one patch as much as possible. a couple of reasons for that, but the main one for me was that i kept modifying abstractions and then other patches that relied on those abstractions would stop working. generally much easier just to have one or two or a few patches to do everythign you need. even if you incorporate everything you make into one patch it doesn't get too big. usually well under 1 meg.
\>I think I will tend to mainly use samplers and control structures for controlling my external Midi gear, but in a live setup, not sure how to integrate it into Logic Pro?<
my thinking on this is that if you have a guitar it has 4 or 5 strings, and you manipulate those strings in a variety of ways to make most of the sounds you need. if you listen to my audio..all of that is just 2 or at most 3 channels! so i always have only 2 or 3 samples playing at once. my stuff from back then was a bit light..not really hard hitting on a dancefloor (which is what i'm interested in) ..but i think you do what to keep everythign as minimal as possible. as far as live performance goes, i wouldn't go anywhere near something like logic audio.
if you have midi gear, then def work on triggering that with pd. i'm working on synthesis within pd now, rather than the sample based stuff...but it's a constant battle to keep cpu usage to a minimum. triggering external devices will be no problem for pd and will leave you heaps of cpu for doing sample mashing.
can't stress enough though. KEEP IT AS SIMPLE AS POSSIBLE. for live music, traditional musicians only play one instrument at once. if you want to make whole songs live, then you are going to have to do the beats and bass and interesting stuff all at one time, so you want to keep it as simple as possible so that you can inject a lot of liveness into it. generally, the more channels of audio you have going at once, the less room there is for jamming out in an impromptu fashion....unless you have magic fingers.
\>Look forward to hearing your stuff if possible.<
cool, thanks. quick background on my stuff..."this\_is\_serious\_mum" is a live jam recorded in one take. just 2 channels of audio driving all the sounds from small sample loops being cut up in realtime by me pressing keys on the keyboard. it's a super simple setup, but i think the reason why it works ok is that i spent more time actually playing and practicing than i spent on coding the bastard. i toured across europe and japan and australia playing this stuff and it was generally well recieved. at really good gigs it was the biggest rush ever.
so yeah. good luck. grab the bull by the horns and just go for it.
[0]: http://www.m-pi.com/this-is-serious-mum.mp3
[1]: http://www.m-pi.com/remixes
Preset with QList
I made an event looper "eveloop" patch with \[textfile\], works like a tape loop, storing and playing back any Pd messages in a loop. The patch is complex and has a few bugs still, but it works enough for me to make interesting sounds.
Screenshot of patch that does the work (a bug in Pd ate the name labels on the canvases):
\][http://puredata.info/Members/claudiusmaximus/copyme/gravity/screenshot][1] s/gravity-20040622-cm\_g\_eveloop.pd.png
Screenshot of patch in use:
\][http://puredata.info/Members/claudiusmaximus/copyme/gravity/screenshot][1] s/gravity-20040622-cm\_g\_gravity.pd.png/
Patches cm\_g\_eveloop\*.pd are part of _Copy Me - Gravity_, they require IEMLIB for \[prepend\] and \[gate\]. The cm\_g\_gravity.pd patch also requires my DCM100 Mixtab patches, but the rest don't.
Some sounds made with it - the ones after 2004-06-20 use eveloop, earlier ones just had a \[metro\]:
Todo for the future: make a bank of 16 loops in parallel with a unified GUI, to make it easier to make music - it is hard when one loop contains all the control data for an instrument, you can't change just one controller without clearing all the others. I have a good idea how to do this, and I have time too, but I am lazy ;)
[0]: http://puredata.info/Members/claudiusmaximus/copyme/gravity/screenshots/gravity-20040622-cm_g_eveloop.pd.png
[1]: http://puredata.info/Members/claudiusmaximus/copyme/gravity/screenshot
[2]: http://puredata.info/Members/claudiusmaximus/copyme/gravity/screenshots/gravity-20040622-cm_g_gravity.pd.png/
[3]: http://puredata.info/Members/claudiusmaximus/copyme/gravity/source/
[4]: http://puredata.info/Members/claudiusmaximus/copyme/gravity/sounds/
I'm confused
I've included part of a patch that I'm working on.
ok so first I've used bonk ~ and some stuff to record the hit points within a main sample array.
This points are recorded into the array which I've included in the patch below.
I then wanted to take the value of a certain index point (the number would come in through the inlet) out of an array and the value of the next index point (+ 1) do a calculation on these two figures to find out how long it will take to play between these two values. Finally use the values from the array and the calculated value to send a message to a \[tabread4~\] object to play that hit.
The problem I'm having is that the data coming into the \[pack f f f\] object is out of sync I think so it rarely plays the hit.
Is there something I can do to fix this.
My plan was to have four instances of something running, within the patch, that each use a seperate one of this. The patch I made works on the first instance but when I copy and pasted it and changed some of the details of the objects to use it in the consecutive instances it doesn't work the same.
I've heard stuff about copy and pasting chaing round the wiring (which object was wired to which first and stuff) is this the problem? if so how do I find out exactly how the wroking version is wired to copy that manually?
Having said this there might be an altogether better way of doing this which I would be happy to hear.
[0]: http://www.pdpatchrepo.info/hurleur/helpppp.pd
Controlling the order of calculation execution and packing in PD?
Hi @seb-harmonik.ar, @LandonPD - many thanks for your replies!
> if you want local values you could try a more "anonymous variable" approach: [...]
> [ABresult.pd](http://forum.pdpatchrepo.info/uploads/files/upload-553bae36-ab43-4271-a6ca-d3a3ce63a7a2.pd)
Thanks for that, ABresult.pd works great - and that was exactly what I was trying to do with my first patch, but failed to `:)` For reference, here's a screenshot of ABresult.pd (I just moved the boxes a bit, no change otherwise):
I like the use of the cold inlet of the `[float]` box - wish I could think of it at the time `:)`
> > [...] it's always global.
> [...] using **underscores**.
Thanks for pointing that out, I missed that in the documentation! However, I'd disagree the underscores are doing the trick here - I'd guess it's the "dollar-zero" `$0`. For example, open a new patch and try this:
[print $0]
I get printout like
1023: bang
1023: bang
.... Then open another new patch, add the same objects, click on `[bang(` -- now I get:
1024: bang
1024: bang
So, `$0` looks like an unique (random?) integer identifier of each patch window - and thus objects like `[v _$0_tuning]` will still be global; except there will be multiple instances of them, with unique names based on the ID of the patch window - which is good enough of a variable partition/segmentation (as far as I am concerned `:)`)
> wouldn't it be simpler to give each [value] a different name....[value globalCoffee] and in some other patch [value localCoffee]? This would be using the prefixes global and local as reminders
What I am afraid of, in this case, is what is stated in the `[pd scope]` inside `doc/5.reference/value-help.pd`:
> The exception to the above rule is [value]. This object is a container which makes its data known to all [value] objects of the same name in all active Pd windows on a single computer: hence, GLOBAL scope.
Thus, I think the `$0` is probably the best approach, in order to limit the influence of `[value]` to a single patch window - even if also that variable is still global; the only caveat being that it would limit the influence to the master patch window _only_, and not its subpatches (as the subpatches will also have their own unique `$0`).
Thanks again for the feedback - cheers!
Array index[0] overwrites 2 times
Hi, I found the problem: indeed when loading the patch there the index 0 is being written twice (only happens once when loading). To fix this, you need to add a __[loadbang]__ before the __[0(__ which resets your patch. Probably the time that it worked fine for you was when you manually banged this message before typing.
The explanation is this: when two patch cords come from the same outlet, the order in which the messages are emitted is identical to the order in which the patch cords were created. I believe you created the cords connected __[select]__ to __[f]__ last, meaning that the first bang arrives __after__ the first key is written via __[tabwrite]__, which will automatically start at 0. Thus the 2nd number you'll type will still be 0, and so on.
Try this patch here, which is identical to yours, but with the corrected __[select]__ and added __[loadbang]__ (since I also created those patch cords between __[select]__ and __[f]__ later). Does it run well for you? [working-patch.pd](/uploads/upload-99e36d3e-56ed-417d-a6f2-afb8723ff719.pd)
I hope this helps. Take care,
Drainage Problems
Hi Polaris,
You write:
> As far as I know, [+ ] and [/ ] store both of their last inputs rather than the last solution
That is not correct. Try this: create an object __[+]__ and send numbers to its two inlets, but do __not__ connect its outlet to anything yet. Now after you send those numbers, connect the outlet of __[+]__ into a number box. This number box is obviously still at 0, but now if you bang the hot inlet of __[+]__, the previous result will be send to the number box: that is, the result was stored there all the time.
> Essentially, it's ignoring the order of operations I specified by connecting the cold inlet first.
The order of connections only influences the order in which data flows if and only if all the connections come from the __same__ outlet of a single object - is that the case? Also, it is normally considered to be bad style of patching to rely on this: if the order in which data arrives from a same outlet is important for the logic of the patch, then by all means use a trigger! It will save you much more time to add a simple __[t f f]__ once in a while then troubleshoot a large patch with problems.
> I think the problem only happens when the numbers are arriving from the same source (apparently the use of multiple [inlet]s makes all of the them function as if they're sticking out from the end of one object)
Your phrase above is not very clear to me. Could you please give me a concrete example (schematics or patch) of data arriving from a same source and confusing the order of the operation?
It is starting to look like your problem has something to do with some of the basic concepts of patching in Pure Data. It would be really good if you uploaded here one of your problematic patches, because that would be the easiest (and fastest) way to diagnose what is wrong. I strongly suspect now that your problem is actually easy to solve, but we are all missing the solution by writing too much and patching too few ;)
Take care,
Why are output midi notes getting rounded to pitch values in 12-tone equal temperament?
I've tried a few different programs, and in all of them, whenever I try to send a pitch value through noteout, the pitch value gets rounded up or down to a value in 12-tone equal temperament. I'm not sure if the problem is with Puredata or all of the programs I've tried using. Either way, I would like to know what to do to fix this, whether that means changing something in Puredata or switching to a soundfont player that correctly handles all midi notes.
EDIT: I did some research, and apparently MIDI is (stupidly) designed to round notes to 12TET pitch values, the only way to get around this being pitch bends. So somehow I'm going to have to get pitch bend values for every note that plays at any given moment and attach each pitch bend value to the correct note. I'm not sure if that's even going to be realistically possible. It will probably require me to give every note a unique MIDI channel, and only 16 notes at a time will be allowed.
EDIT 2: Puredata is refusing to send pitch bend messages. Bendout does nothing when sent to a MIDI channel with a note.
Unwanted noise when opening patch
I've build a patch that plays white noise for a specific amount of time, but when I first open the patch it automatically starts outputting white noise until I click the toggle twice that turns the noise on and off (basically reseting it) i've "saved as" when it was reset but it still loads the same. The top of the patch is basically a bang timer to time intervals between the noise being on or off, when the inlet is banged it turns the noise on and then theres a 3900ms delay until the second bang turns it off. What i need is a way for the noise to be off by default when i load the patch
heres a pic of the patch, the toggle that turns the noise on or off (the one i have to reset when i open the patch) is the one with my mouse by it.
[0]: http://dl.dropbox.com/u/2842565/Picture%205.png
Building a modular synth
I have been working a lot with PD lately and have built some synths that I think make some pretty interesting sounds. I have also built some sequencers that produce complex patterns.
I have lately been researching modular analogue sequencers, the big rack type things. This has been giving me ideas about building a complete modular system with PD.
I have been thinking I could use my synths and sequencers together much more easily if they were modular. Also if a modular standard was developed, like standard CV ranges in analogue gear, we could trade module patches back and forth and build huge systems.
I have a few things I have been trying to figure out.
- since this system is modular would I be better off with something with vst au rtas ladspa etc. support? like a daw with reaktor? I would be able to patch back and forth between the effects and sound generators.
- does anyone know a good way to run the output from a program like reason or a daw into PD on OSX? I can't figure out how to do it with jack. I have been running out to my sound card and then back into it with a patch cable(completely ridiculous)
- it appears there will always be some type of delay/lag/buffer/latency with PD, maybe with all software synths? In my masterplan giant modular system with a computer and some external analogue effects / sound generators I could patch out of the computer and then back into it. Will the latency kill me doing this? will a crazy quad core tons of ram computer deal with super low latency?
I know that is a bunch of questions in one post, but if anyone has any ideas let me know.
Building a message
I have a range of patches called like this:
I've been using the
pd open PATCH.1.pd ../SomeFolder (
construction to hard-code some patches but i don't know how to make it dynamic... I want in my masterpatch a numberbox in which i can enter a number and a bang to open the corresponding patch.
Thx for all kind helpers,
V2MSy is out (alpha)
Hi, my patch v2MSy (video to midi synth) is downloadable from <[http://adrjork.altervista.org/puredatatutorials.html][0]\>. I hope you like it. Basically it's smilar to MetaSynth but my patch works with video or webcam in real time, and not with image. The patch transforms the central Y axis of the video into 128 MIDI signals (from bottom to top) at 25fps (metro at 40ms). The result is a detailed "notation" of the video's central axis where the white pixels represent velocity=127 and black pixels represent velocity=0 (very similar to carillons' mechanism where video stays for the cylinder!)
The patch contains also two indipendent subpatches: an interface for BCF2000 and a "poor" interface for keyboard&mouse.
You need a receiving software to "play" or "write" MIDI noteouts (like a sequencer).
To connect the patch to the receiving-software I use a virtual MIDI cable. I think you can use MidiYoke in Windows, or ALSA in Linux, or IAC driver in Mac. But if you want also feedback for your motorized BCF2000 you should set PD's MIDI settings with "multiple devices"...that doesn't work! Because it seems that only the 1st output device works... So I do in this way:
IAC driver (I use Mac) + MIDI Patchbay
and I set:
-BCF2000 as PD MIDI input
-IAC driver as PD MIDI output
-IAC driver as Patchbay input
-BCF2000 as Patchbay output
In this way, Logic receives MIDI signals from v2MSy, and my Behringer has feedback!
Please, test the patch in Windows or Linux and write if ALSA and MidiYoke do the work and give feedback. Thanks.
But remember that...it's only an "alpha" patch, and it needs powerful hardware.
[0]: http://adrjork.altervista.org/puredatatutorials.html
Define line for .txt
I'm in trouble trying to make this:
A patch writes to text.txt a name of file.wav and a number of how many times it was played;
On a \[loadbang\] a patch reads file text.txt and knows how many times file.wav has been played and counts further;
I need to put more names of files with their times they been played in the same text.txt:
Times Name
12 file
3 file1
23 file2
How to define a line for each sub patch that it could read and write only in it's line. My patch gathering statistics of hundreds of files and would be nice to have it in one file.
I attached a patch with two sub patches for you to try to separate lines of sub patches that they could write and get different data from the text file according to the line they work on. Maybe you'll have other suggestions or even comments about it or modifications on my example patch.
more power together
[0]: http://www.pdpatchrepo.info/hurleur/Define_line.zip
Closing patches with a message
the sequel!
so im opening patches with the
\[; pd open (
message to pd. Now i'm looking into closing these patches. A command that is internal to the patch (like ; patch close) would be convenient because i could close only one patch at a time.
I toyed with the pd-patch clear command but that leaves the patch open and clears all instances of that patch. As i understand there is a namecanvas work around but before i tried to wrap my head around the namecanvas object i thought i'd ask if anyone has found a simple way to do this?
Technology vs Guitar
Here's something me (Pd) and a friend of mine (guitar) made a short while ago, a meandering jam session, it all flows together without any individual tracks as such:
[ClaudiusMaximus and Trel - Technology vs Guitar][0]
Here's a screenshot of the Pd patch interface:
And here's some Gridflow visuals that I'm working on to accompany the Pd patch, all synced to the same controls, so it's all in time:
I'll be publishing the patches in about a week or so, at the moment they are changing too rapidly. An older version is here:
[0]: http://www.archive.org/details/ClaudiusMaximus_and_Trel_-_Technology_vs_Guitar
[1]: http://claudiusmaximus.goto10.org/image.php?image=gallery/coding/pd-patches/Technology--2006-01-19--1.png&size=original
[2]: http://claudiusmaximus.goto10.org/index.php?page=gallery/digital/make-art
[3]: http://devel.goto10.org/listing.php?repname=puredata&path=%2Fpd-patches%2Fclaudiusmaximus%2FClearSpot%2F&rev=0&sc=0
Non-audio "stutter"
Hi there
If your sequencer a timeline-based, "sequence stutter" is quite easy to achieve. Say your clock runs from the beginning to the end of your sequence just like a table lookup index.
Then you can play with the timecode (by looping it with \[mod\] and set an offset or whatever), and do some sort of granular synthesis applied to your sequences. Of course, this requiers timecode-based event triggering, and I don't know how you built your sequencer.
With this principle, you can do various local looping, modify tempo, read reverse or random, even playing several part of the sequence at the same time, and do it live. This way you modify the data that is then sent to external instruments without affecting the audio process. Is that what you were thinking about ?
(hopefully, one day I'll finish this dream sequencer I started to patch some years ago...)
Hello! Help needed with my first proper patch
Thank you very much for your help! I'll try and keep anything I put up here as neat as I can from now on :)
I have one more question, how would I tidy up the patch using sub-patches or abstractions, I'd like to have all the objects within a abstraction (or sub-patch) just leaving the bangs, toggles and sliders outside the patch with the array. I've tried putting them in a sub-patch and an abstraction but with no results. The file will load, and the waveform will display on the array but no sound will come out.
I've uploaded the patch with the abstraction so you can see.
Thank you again!
[0]: http://www.pdpatchrepo.info/hurleur/pd_mash_folder.zip
Ladspa patch generator
I wanted an easy way to generate skeleton patches for all my plugins, so I wrote a python script.
For the script to work, you need to install [python-ladspa][0].
I have generated all the patches for my system, so for most people, you won't even need to generate the patches. They are located in the ladspa dir (install this in a pd lib dir).
You can check out how it works with demo.pd. demo.mid is a seq24 midi score.
plugins.txt is the info that the script spits out, when you run it, you can use it as reference when making your own patches.
You will probably need to fine-tune the generated patches, because the ladspa meta-data for control inputs isn't always accurate and sometimes a toggle is better then a slide, for example (see demo.pd for a few examples of tuned patches).
My demo patch also illustrates using midi record on/off messages.
The demo is simple and pretty noisy, I just threw it together.
I couldn't figure out how plugin~ ctlout's work, so I left it out.
[0]: http://python-ladspa.sourceforge.net/
[1]: http://www.pdpatchrepo.info/hurleur/ladspapd.zip
Ladspa patch generator
I wanted an easy way to generate skeleton patches for all my plugins, so I wrote a python script.
For the script to work, you need to install [python-ladspa][0].
I have generated all the patches for my system, so for most people, you won't even need to generate the patches. They are located in the ladspa dir (install this in a pd lib dir).
You can check out how it works with demo.pd. demo.mid is a seq24 midi score.
plugins.txt is the info that the script spits out, when you run it, you can use it as reference when making your own patches.
You will probably need to fine-tune the generated patches, because the ladspa meta-data for control inputs isn't always accurate and sometimes a toggle is better then a slide, for example (see demo.pd for a few examples of tuned patches).
My demo patch also illustrates using midi record on/off messages.
The demo is simple and pretty noisy, I just threw it together.
I couldn't figure out how plugin~ ctlout's work, so I left it out.
[0]: http://python-ladspa.sourceforge.net/
[1]: http://www.pdpatchrepo.info/hurleur/ladspapd.zip
I've been reading posts on this forum for a while and post to the pd-list. I thought I'd finally post some patches/info here.
[http://robotcowboy.com][0] : my pd-powered music/performance project
[http://danomatika.com/software/rc-patches/][1] : robotcowboy patches for you
Most of the objects have guis with sssad state saveable parameters.
\* rc-drumsseqs: sequencers with velocity values
\* rc-patternbuddy: pattern save and load to sequencers
\* rc-chipwave~: a chiptunes emulator built around Phill Phelp's chipwave~ example
\* rc-wavetable~: a wavetable gui osc
\* rc-sample~: oneshot sampler with reverse and speed control
\* rc-arp: the arpeggiator from Tod Winkler's Composing Interactive Music
\* rc-openclose: open and close patches (useful for playlists)
\* rc-count: yet another counter (no pd external is complete without one)
\* a bunch of utility wrappers (sfplay~, rc-spigot~, etc)
\* blahblahblah ... the list grows
I also use pd with a wearable computer running Ubuntu. If you need help/scripts, etc for automating pd with input devices, etc I might be able to help. I haven't gotten around to documenting everything yet.
Also for Linux/Ubuntu, [rc-unitd][2]: an OSCulator-like joystick/wiimote event deamon. No fancy gui yet, but you can edit the text files to set your own osc addresses for each joystick. Oh and handles hot plugging.
End of Line.
[0]: http://robotcowboy.com
[1]: http://danomatika.com/software/rc-patches/
[2]: http://danomatika.com/software/rc-unitd/
Anyone working with chiptunes or console emulation?
well, I've got the four main instruments and the panelling done for my pd-NES, all that's left is to add glue for the sequencing and composition tools. I had to cheat pretty badly on the noise channel though. For the standard noise mode I used the method from zenpho which looks simple and sounds good, but I noticed he didn't emulate the looped-decay noise mode, which all my resources describe as being "difficult", but otherwise provide slightly different explanations of the mode. It appears that emulators and other software that fully emulate the noise channel seem to "wing it" and use their own unique methods. I'm guessing it's because the actual hardware driving the random number generator kicks out one random bit to the 4-bit DAC at 890KHz, which I guess I can't simulate in pd unless I could change my sampling rate to 445kHz (for 4bit codes). I haven't found a good explanation of what happens to each bit - apparently the hardware updates one of two different bit sequences (a 93-bit sequence and a 32kbit sequence, the latter of which makes no sense to me - that's a big load on the memory bus). I've tried creating different kinds of noise generators or 93bit noise samples, and looping them with an interpolating sampler and decay envelope, but it never sounded right. The problem is the noise itself - no matter how fast I loop I never get a smooth tone, or I still hear regular noise over the tone.
I ended up ripping the looped noise sounds from NES games and an emulator, storing them as timbre presets, and using soundfiler and elementary granular methods to transpose. It's definitely cheating, but it doesn't limit me to the 16 pitch colors that the hardware has to choose from. So I got what I wanted, the NES sound without all the NES limitations, but I'm a little frustrated that I couldn't find a solution that uses only generators as opposed to external samples.
Does anyone have a recommendation for correctly emulating the looped-decay-noise sound? I've attached a wav ripped from Megaman that has a D\# tone at four different timbres (caused by different decay strengths in the envleope).
[0]: http://www.pdpatchrepo.info/hurleur/nnlx4_ds.wav
Breakbeat - Resequencing.
Heres a little something I came up with today.
It's still a bit buggy, but hopefully someone can point out how to fix those things to me.
Heres how it works:
When you load in a file, the length in samples is loaded, and divided by however many beats you have set.
Through the magic of counting, numbers are sent through \[select\] and then on to the sequencer.
The sequencer is a series of vertical radios, and to play the file properly through(after choosing the correct tempo) you will need a diagonal line from top left to bottom right.
But as you click around to other squares, you will find yourself repeating certain beats. voila.
Sometimes it decides to count past the numbers ive limited it too because for some reason, a toggle inside module\>counting, hasnt undone its self, or was turned on after passing this point.
I just added in a few different metro speeds that suited the loops i was playing.
I think i should stick in something that will stop it playing after a certain time, so rather than have it continue playing the file from the beat selected, if you know what i mean.
If i could work out how to make the sequencers open when the patch is opened that might make finding it easier, right now you have to go into module\>sequencer, not too hard i guess.
I would explain it in further detail, but I have dinner and a show to get to.
Criticism and hints on how i could improve this would be much appreciated.
Edit: I'll also add a thanks to obi, with his fairly efficient drum patch, for inspiring the \[select\] based sequencing.
[0]: http://www.pdpatchrepo.info/hurleur/breakbeat.zip
How hard is pd to learn? and is it worth it?
\>the possibilities of pd seem huge and exciting.
this is true..in answer to your question "is it worth it?" ...well of course
\>i spent a couple of hours messing about with pd the other night, just with the examples in the help files, seeing what it can do to sound and it is very exciting.
ok...good start ali. the way i learnt was to make a few projects for myself, for audio devices which i wanted to make. ...then just went through the help files and whatnot to find bits which i needed to make these devices.
my first project was a sequencer that would sync up 8 different soundfiles and play bits of each sample in order...ie 1 beat from the 1st sample, followed by 1 beat from the 2nd sample, then a beat from the 3rd,,,,,etc
it took about 1 month to learn enough pd to get that far. maybe 100 hours.
as far as the coolest things i have done...pd lets me actually play live now...live imprrovised jams based on sample loops which i can manipulate in realtime. i use inputs from my computer's keyboard to trigger effects and change sequences and pitch and whatever. even the guys using ableton "live" or whatever aren't really doing much live improvisation like that, so that's pretty exciting i guess. there are some examples of my tracks in older threads on this board...might not be your cup of tea exactly, but they're all recorded dirtectly out of pd, with no further editing or sequencing or anything.
about the maths: it depends on what you want to do really....with the stuff i do, sample sequencing and resequencign and stuff, the maths is pretty simple...dividing a loop into 32 parts, multiplying sample frequencies by time...etc. it's pretty basic primary school maths for that, which is the way i like it, cos i'd rather be making rock n roll than sitting down and doing my maths homework.
however, i still haven't got far with doign actual synthesis from sine waves and stuff, cos that does involve some higher maths. i'll leave that stuff to the people who are interested in it i reckon. there's also lots of amazing stuff with fourier analysis that i'd love to understand, but it's a bit hard for me.
so basically, there are lots of things you can do without too much math, but i'm sure that the people who understand it are gonna have an advantage.
anyway nice to meet you...any more questions, this is your place. good to see a few more people here lately too, it was a bit quiet for a while.
Midi-controlled loops and samples in Pd!
depending on which installation of Pd you have, you most likely have a Pd tutorial stored in the doc directory of Pd. i'd go through the tutorial sections '2.control.examples' and '3.audio.examples'. if you understand the patches in the tutorial, you should be well equipped to make a patch that can handle your requirements. some versions of the tutorial have a lot of extra info that you can just skim. the 3.audio.examples folder has alot of stuff that's all about different synthesis methods that might not be relevant to your patch. for your project, having a strong understanding of Pd's control structures will be most important. the audio stuff you can copy and adapt from other patches/examples fairly easily, whereas, your control elements will require more creativity and ingenuity on your part.
your patch would probably consist of the following (depending on your design preferences and how efficient you want to be): (1) a midi engine that filters incoming midi data and converts it to Pd friendly messages that are sent to (2) an audio engine that interprets messages from the midi engine and outputs audio (this will consist of objects for playing back samples in addition to whatever audio manipulation you desire.)
i imagine if you are capable of programming a BX-24, you have a theoretical understanding of how to manage event handling procedures in a conventional computer language. the tricky part for you now is transcribing those procedures into a Pd patch. my main advise is to try to implement Pd's messaging system as much as possible. this will make your patch better organized and easier to debug (part perhaps more difficult to write).
if you get stuck on a specific problem, just post it on the board and i am sure we can help.
by the way, i am curious about where you are studying and what you are studying.
PD newbie help. PD makes sense, but I don't know how to implement it.
Hi, I've been messing around with making electronic music on the computer for about a year and a half. I started out with project 5, and still use project 5\. At first I just used the preset instruments and fooled around for a bit, but I didn't like the cheesey factory settings, which gave everything a out-of-the-box fruityloops feel. Somehow I found out about absynth, and have since put a lot of time into understanding it and learning how to use it to make decent music.
I've grown fairly competent with it, and have a pretty good grasp of how to sculpt the sounds I want with oscillators, envelopes, filters, and lfo's. But I feel somewhat limited, regardless of the fact that I haven't come close to pushing absynth as far as it can go, and I want to open up opportunities for making more complex sounds in different ways. pd seemed the logical choice as it's free, while reaktor isn't.
I'm not a bad mathematician and have a bit of programming experience, so using pd for the basics hasn't been too difficult. I completed most of the tutorial/documentation that was included without too much trouble. I still need to learn a lot more about all the elements I'll need to create to make good synths and whatnot, but pd makes enough sense that I'm pretty sure I'll be able to figure out how to do what I want to do with some study and practice.
My problems are with how to implement pd as a tool to create music. How does one do this? Is it easy to make pd patches into vst's for use with project 5, or say, minihost? If so, how? I don't have any midi controllers and so I want to use pd to create instruments that I can use with the sequencers I'm already familiar with. Or with minihost for when I get a midi controller, so I can quickly switch between a pd patch and other vsts. I understand the basics of programming, but first and foremost I'm just a guy that likes to make music on the computer. Not a programming guru, so I don't really plan on making sequencers or environments, as it seems it would be a lot more difficult than just making synths.
Are there any pd guides out there for people that are predominantly electronic musicians?
I'd appreciate advice from anyone, whether you've been in my shoes or not.
NYC Patching Circle: Monday, April 16th
This Monday, April 16th 6-9pm.
Celebrate tax day with a patch-o-rama!
This week we are fortunate enough to have Wesley Smith from Cycling 74 to join us in patching patchers and, well, lets be honest, helping us a bit with our Max/Jitter/OpenGL/Shader issues \*cough\*
Right Wes?.
Come join the fun and dont bother the poor guy too much.
This is an informal gathering of patching and patchers (Max/MSP/Jitter, Pure Data, and even jMax, EyesWeb, vvvv, etc.). Beginners and Experienced welcome. Open to everyone, students, the public, etc. Work on school projects, personal projects, ask for help, help others, or just patch quietly to yourself, in a room full of other people patching patches and helping other people patch.
RSVP and I'll put you on the guest list at the door. Otherwise call 718 260 3693 when you get there.
[Google Map][1] - [Yahoo Maps][2]
All events will take place in Rogers Hall at Polytechnic's Brooklyn campus, on the second floor, in room RH207\. The entrance is on Jay St. Across the street from the Marriott.
\* train to Jay Street-Borough Hall
\* train to Borough Hall (walk one block East to Willoughby, left on Jay)
\* train to Lawrence Street-MetroTech (one block North on Lawrence)
\* train to Dekalb Avenue(two blocks North toward Manhattan Bridge and make a left on Myrtle Ave into MetroTech)
For more directions, see [http://www.poly.edu/directions/][3]
[0]: http://idmi.poly.edu/node/122
[1]: http://maps.google.com/maps?f=q&hl=en&q=6+metrotech+ctr,+11201&ie=UTF8&om=1&z=15&ll=40.692093,-73.981977&spn=0.011649,0.033646&iwloc=addr
[2]: http://us.rd.yahoo.com/maps/extmap;_ylt=AgdAvELIXXsgvgK_EoAid8hkDLMF/*-http://maps.yahoo.com/maps_result?addr=Metrotech&csz=Brooklyn%2C+NY+11201&state=NY&uzip=11201&ds=n&name=&desc=&lat=40.6938&lon=-73.986&mlt=40.6938&mln=-73.986&zoomin=yes&BFKey=put&mag=2
[3]: http://www.poly.edu/directions/
Edirol FA-101 and PowerBook G4 - Slow/Choppy
I just got an Edirol FA-101, hoping that it would work with both my 667mHz Powerbook and my Linux desktop machine through Freebob.
When I use it with my Powerbook, things are fine when I'm not using Pd (including using other audio apps), but when I open Pd and set it to use the FA-101 as input and output, the whole machine starts responding very slowly, and, even if I turn the latency up to 500 ms, just monitoring input through the Test patch sounds like I'm getting serious underruns as if I'd turned down the latency to 1 ms.
I'm testing my housemate's M-Audio FireWire 1814 right now with the same setup, and I don't have any of those problems at all. It's fine at 12 ms latency at 44100Hz.
So... the questions: Has anyone else gotten a similar setup to work? Does anyone have any suggestions? It seems like the problem might be Apple's CoreAudio driver for the FA-101\. The FA-101 does not require any additional drivers, but the M-Audio requires you to install its own drivers.
Thanks a lot!
I get a lot of idiot points - and on my first post on the forum, too. I didn't match the Pd sampling rate to what I selected on the FA-101\. The FA-101 has a knob to select sampling rate; you can't change it in software. Anyway, I'd still like to hear from anyone who has a similar setup. Thanks.
PD events
I was wondering if it is possible in pd to handle ui events? I have several patches loaded that all can be partially controlled by the keyboard, however some keys have duplicate assignments in those different patches. What i'd like to do is find out which patch has "focus" and only allow the keyboard on that specific patch. For that i would need something like a "GotFocus" event for patches. I'm on the windows 0.38.4 extended release.
I know i could build the interaction between the different patches another way, but then every time i create a new patch all the others would need to be changed.
Thanx a lot,
The PD Death Timer
This is a patch I've made to help me control my PD addiction. Run it as an abstraction in the patch that you are working on, set the timer, and then get the hell out of there before it reaches zero. Benefits include physical health, a more fast & furious patching style, more time with friends & family, etc.
![Screenshot from 2015-01-18 17:22:55.png](/uploads/files/upload-7372f737-19d5-4a23-977f-cd9189ce004d.png)
* **Disturb** mode makes a really annoying sound which you can't turn off.
* **Crash** mode will completely crash PD. I haven't actually tested it, and I don't recommend that you do either. Take a look inside the [pd consequence] subpatch to see what I mean...
* **Destroy** mode will completely and permanently destroy the parent patch where [death_timer] is located. This IS tested and it DOES work. If you value your work at all, it's very important that you never use this! And if you do use it then don't come crying to me when your prized patches vanish into thin air.
* **Russian Roulette:** every minute this introduces a 1% chance that your remaining time will be halved.
* I wanted to have a fourth consequence called "uninstall PD", but I don't think that this is possible from within PD.
It is of course possible to delete the program once it's started and carry on patching unhindered, but you'd only be cheating yourself.
Note that this is vaguely inspired by http://writeordie.com/. I hope that someone else finds it "useful"!