all possible permutations with repetitions of harmonic volume from top to bottom
This version generates every combination directly from the previous one and is therefor in theory only limited by computer memory. On my computer it generated all 823543 combinations of 1 2 3 4 5 6 7 within a few minutes.
It can output the results in variable length, which can be set via creation argument or right inlet. If no length is provided, the results will have the same length as the original.
-
Input: abc
Output of [combinations]:
aaa, aab, aac, aba, abb, abc, aca, acb, acc, baa, bab, bac, bba, bbb, bbc, bca, bcb, bcc, caa, cab, cac, cba, cbb, cbc, cca, ccb, ccc -
Input: abcd
Output of [combinations 2]:
aa, ab, ac, ad, ba, bb, bc, bd, ca, cb, cc, cd, da, db, dc, dd -
Input: ab
Output of [combinations 4]:
aaaa, aaab, aaba, aabb, abaa, abab, abba, abbb, baaa, baab, baba, babb, bbaa, bbab, bbba, bbbb
The right outlet sends a bang when the generation is complete.
combinations.pd
combinations-help.pd
How it works:
Internally, the patch uses lists of numbers 0, 1, ..., n-1; n being the length of the original list. These numbers serve as digits of an n-ary system. It starts with a list of zeros. The digits of each list are send to the right branch (output) and the left branch (iteration) of the patch.
At each iteration, one is added to the first digit of the list. If the result equals n [mod] sets it to zero and [div] takes the carry-over (1) to the next digit. If there is still a carry-over after the last operation, meaning that the current combination is the last one, the spigot is closed and it stops.
Before the output, the internal digits of each list are replaced with the numbers or symbols of the original list. Zero is replaced with the first element, one with the second and so on.
After each iteration a delay 0 is used to brake the loop and avoid stack overflow.
Uses [list-drip] from list-abs extension.
Playing sound files based on numbers/sets of numbers?
@whale-av Hello again, thank you very much for replying so quickly!
Ok so, the computer will always be a PC and will always have Pd installed so that makes things a lot easier I suppose (not sure what version it will be though, but since all those computers have only recently been equipped with Pd I'm assuming it's either vanilla or extended so it should be ok).
I just put my 17 sound files in the same folder and named them 1.wav ...... 17.wav. They are in the same folder as your patch now too.
Well, the numbers are not exactly "set", in fact, each sound file corresponds to a certain range of numbers. Ugh, I did it again, forgot to mention the range... Sorry..... I'd probably need a different object for a range... It's still kinda difficult for me to think in "computer" language about things related to music so that's why I'm forgetting to mention tons of stuff, but I'll try to fix that in this reply, sorry again!
I will just post the table to make it easier for you to understand.
But first, I would just like to explain how the table works. First I need to ask if it's possible to attribute the same numbers/range to different sound files, depending on the number's "place" within the combination? (You'll understand once you see the table.) Maybe it isn't and in that case I should think of a way to change the table according to what can be done?
So, there should be 13 numbers in total within the combination (13 numbers to type, like 13 empty slots waiting to be filled with numbers), but I said there are five sub-combinations. The first, second and fourth are 2 digit numbers, the third is a 3 digit number and the fifth is a 4 digit number. Obviously, three of these are 2 digit numbers, but the thing is I can't really choose the ranges (I have a set range for each sub-combination and can only try to figure out the easiest way to work with them) and the ranges are actually intertwined, So some numbers can be repeated, that's why I'm asking if the same numbers can be attributed to different sound files based on whether it's the first, second or fourth sub-combination. If that's too complicated or even impossible, I can only think of sacrificing a couple of sound files and just let the program play the same file twice instead.
Also important: is it possible to "condition" to program into playing a sound file based on the first combination, the first 2 digit number? Simply put through simple chords, say in the first combination you can type either 01 or 02, where 01 is A major and 02 is B major. Next, you can type in either 02 or 03, where 03 is E major (irrelevant right now), but 02 can be either D major or F sharp major (not A major like in the first combination), based on what the previous number was. If it was 01 (A major), then this time 02 will be D major, but if the first number was 02 (B major) then the 02 in the second combination should be F sharp major. IS something like this even possible, or do I need to figure out a way to go around this and alter my table? I CAN alter the table, but I can't work with the ranges of the combinations, or the number of the combinations, it must be 5.
Lastly, can different numbers be attributed to the same sound file based on their position within the combination?
Ok so finally here's the table, and I will just give you my current table so you can tell me if it's possible to do. I understand if it's too complicated and I need to change it! Maybe you can give me some tips on how to change it to make it the easiest to do in Pd.
1st SUB-COMBINATION
01-19 - 1.wav
20-22 - 2.wav
23-31 - 3.wav
2nd SUB-COMB.
01-03 - 4.wav (if the first was 01-19 or 20-22; or shorter, 01-22)
01-03 - 5.wav (if the first was 23-31)
04-06 - 6.wav
07-09 - 7.wav (if the first was 01-19)
07-09 - 8.wav (if the first was 20-31)
10-12 - 9.wav (if the first was 01-19)
10-12 - 10.wav (if the first was 20-22)
10-22 - 11.wav (if the first was 23-31)
3rd SUB-COMB.
900-975 - 4.wav (if the first was 01-19)
900-975 - 2.wav (if the first was 20-22)
900-975 - 12.wav (if the first was 23-31)
976-999 and 000-020 - 1.wav (if the first was 10-22)
976-999 and 000-020 - 13.wav (if the first was 23-31)
4th SUB-COMB.
01-09 - 7.wav (if the first was 01-19)
01-09 - 8.wav (if the first was 20-31)
10-69 - 14.wav (if the first was 01-19)
10-69 - 3.wav (if the first was 20-31)
70-99 - 6.wav (if the first was 01-22)
70-99 - 11.wav (if the first was 23-31)
5th SUB-COMB.
(this one is arbitrary so no matter what the last 4 numbers are, the sound file that is triggered should be based on the first combination, or something like that, so...)
xxxx - 15.wav (if the first was 01-19)
xxxx - 16.wav (if the first was 20-22)
xxxx - 17.wav (if the first was 23-31)
Now, I need to thank you if you had the patience to actually read all that and think about it..... I can only hope you could understand the idea, but please, if this is just too complicated, do tell me to change the table. Maybe, if you can or think I will understand, try to explain how the ranges work when playing sound files and how I can use that to my advantage to still keep all the sound files (or as many as possible) but make the thing easier to program.
Now I know I had a few more questions but I can't remember right now and I don't want to bombard you with everything all at once, I realize even this is way more than I could have asked for, you have been a huge help, really! Even if I don't entirely understand every single element of your patches, I did study them and used the help option like you advised me to, so I really am trying to get the hang of this. I completely understand if you just want to take a break from this if it's too complicated and time-consuming, I just ask that you give me some kind of feedback so I know what to expect!
Anyway, thank you for all your help and guidance until now, and for the guidance you'll provide in the future if you so choose!
Playing sound files based on numbers/sets of numbers?
@Alexita Hello again. You don't absolutely need abstractions, but they make the building of the patch much quicker (a lot less typing). Putting 2 or 3 digit numbers is more difficult.... I will think about that. Stopping with a second enter will be possible.
The patch is already able to play only a selection of the 17 tracks...... although they must all "exist".
If the tracks are in the same folder as the patch the paths are not necessary, so it becomes much more portable.
But portable on a flash drive means putting Pd on the flash drive as well (in a portable format), and the tracks as well........ so a big enough flash drive. I am assuming that the computer the flash drive will be plugged into will not have Pd already installed. Will it always be a PC? or a Mac? or Linux? Or will it have some flavour of Pd installed already? That would be useful.
It will be much easier to build with abstractions if the tracks are named 1.wav, 2.wav, 3........ 17.wav.
What are the two, three and four digit numbers? How do they choose between the 17 files? 1-17 is easily understandable. Can you post a "table" of what they should be........ like?
1 - 33
2 - 41
3 - 123
4 - 18
5 - 6072
or is there supposed to be some sort of a random function...... where you are not really selecting at all? The task makes no sense to me with this requirement (at the moment). You would need to remember the 17 large numbers!
I will post an abstraction version, assuming all of the tracks in the same folder. A "sub" folder is easy as well (for the tracks).
............................ 17 tracks with loop abstractions.zip ...... now in "loop" mode already when it starts.
I have added metering, just for fun.
You must put 17 tracks named 1.wav ... 17.wav in the same folder.
The keyboard numbers 1 - 9 will work (for the moment, and for the first 9 tracks)
David.
PS..... looking for a pattern...... anyone?
Assuming...... only keys 1-9 or 0-9 used.
Of course! It's easy......... if 0 is not allowed
2 digits..... minimum total 2 max 18........ range 17
3 digits......minimum total 3 max 27........ divide by 1.5 and subtract (about) 1........ range 17
4 digits......minimum total 4 max 36........ divide by 2 and subtract (about) 1........ range 17
Need to round up or down..... look at results.....
For now.... 17 tracks loop enter start stop.zip starts and stops (stops tracks dead.... should the sequence complete?) with enter.
David.
Playing sound files based on numbers/sets of numbers?
@whale-av Hello, first I just want to say thank you very much for your help and sorry for not replying sooner, I read all the messages, I just didn't want to bother people before I had an actual issue or a question that I understood enough to know how to ask what to do next. So that's why I'm only replying now. And you're totally right, I have suffered and learned in the past day so my brain's kind of all over the place right now, I'm still struggling to get the hang of this and really understand the patches you sent me (thank you so much for taking the time to make them for me!).
To answer your questions, I will not be assessed for this part of the project, it doesn't matter much how I do it as long as it works because no one will look at the project anyway, the end result is what matters in this case. The only "limitation" is that it has to be done in Pd. Also, my version of Pd is Vanilla (I'm assuming that doesn't change your patch much since you said it'd work in that version), and actually no, there's not really a next stage to this project; all I'm supposed to do is get my sound files to play in a loop when I press Enter (after I've typed all my numbers) and to be able to stop the loop again with Enter. I probably should have mentioned that oops, does that mean I need another keyup object or would the one in the patch work for both starting and stopping the sound?
I actually had a patch of my own but it was very simple and mostly improvised based on what I managed to learn (like I said, completely new to this) and nothing like yours so it probably wouldn't have worked anyway... Is it ok if I use your patch as a starting point? If it is, I'm assuming the next step would be the abstractions. From what I understand, abstractions are used for referencing and reusing old patches in order to keep the new patch clean and not messy. I do need something like that, as I have 17 wav files ready to use. But not all 17 should be used in one loop. I actually only need 5 sound files per loop (like in your patch), but the total number of files I can choose from is 17. To be able to tell the program which file to play based on its corresponding number I probably need the select object, right? Would I need it within the calling patch or the patch being called, a.k.a. abstraction (if my thinking is right, it's probably the calling patch)? There's probably an easier way to do this than an x number of select objects but I'm just not familiar enough with the program, sorry... Also, what difference does it make if it's not 1-digit numbers, but 2-digit, 3-digit and 4-digit combinations? To be more precise, the first, second and fourth sound file should correspond to a 2-digit number, the third to a 3-digit number, and the fifth to a 4-digit number (and I can't change this unfortunately, it's part of the task).
Oh, and is there a way I can make this work on any computer, for example if I copy my files onto a flash drive? Or if I can't, would it drastically affect my main patch if I changed the sound file destinations later, once I know what computer is going to be doing all this? Would I need to change the file destinations in all the patches or would it be possible to do so automatically via abstractions, by changing them in the main patch only (probably not but eh I asked...)?
This is all probably waaay too advanced for a beginner (and I have no idea why they'd give me this task without any prior preparation.......) so I realize I might be asking for too much here, and maybe I'm getting ahead of myself, but I still hope you could give some advice on what to do from here, what's the next step, the elements I need to get this done etc. I'm not in too much hurry, I have time until the 5th of February, so it's ok if you don't have the time for me right now, I can wait a bit!
Thank you so so so much, even just sending me the first patch was such a huge help, thank you! And I hope you can guide me through this for a bit longer!
4-tap delay pitchshifter-per-line mounted on guitar as OSC Controller patch on MobMuPlat
Hell, 5:30 in the morning; can't sleep; nervous about "tomorrow", aka. later in the day, might as well get up and do some good.
The video below shows the latest incarnation of my guitar "pedals" concept:
It is an android mounted (temporarily (will be velcro, right now just duck tape) to the front face of my guitar;
on it is MobMuPlat;
the MobMuPlat app I added is an Open Sound Controller frontend connected to my laptop
on my laptop is a pretty bare -bones guitar rig: vcompander (mainly as a noisegate), in&out compressors, my recording abstraction + eq13 (eq with my presets abstraction);
and between the two compressors (which use and require the tb_peakcomp~ external) (the second one is there in case the main plugin gets out of control)
is
my four-tap/pitchshifter-per-line delay abstraction.
The goal (only took a maiden voyage so far) is to learn how to strum and adjust the sliders on the mobmuplat in the same rhythm/timing as I strum and pick.
So pick strings and change settings in the same style and rhythm as I play. So play "effects" in the same moment I am playing guitar.
I am using that 4tappshifter because it has the most radical effects with the least amount of adjustments, plus I just think it just sounds cool.
Test tracks of this rig will be coming out soon, when I can get the time/space etc etc to produce them.
I expect, from one test drive, it is gonna be a pretty steep curve to learn.
I'll zip the whole rig (tho bear in mind it is NOT perfect and has no help files) and put it below.
Ciao! And thanks for listening. Hope it gave you some ideas.
-svanya
p.s. I have and am holding onto the notion of pure data as an "organic" tool, which while it IS capable of being VERY conceptual (and I have even done some works like that) I want for my purposes at least it to stay Close to the Chest, and has been mentioned elsewhere in the forum, NOT be Pre-Music. I think it is fully capable of fulfilling both roles: conceptual/electronica And organic.
And for me, be music as I Feel it not think about it.
Hence, the front-mount and not a stomp box. Also, I Really do NOT want preset voices. I want the voices to change as I change my playing/style.
And while I have experimented with other control-types, mice, keyboard, hid, etc, none of them have come Anywhere close to the amount, variety, and subtlety of tones, styles, and rhythms I can get from my guitar.
So I am holding to the Idea that I will be able to "bend" strings" and "bend" effects in the same moment and on my chosen instrument.
p.s.s. I know no explanation is not needed, but I wanted to hear what it sounded like to see if it rang true for me. Yep. It does.
Oh, and I did not include the tb_peakcomp~ external, but it's pretty easy to get.
-peace
Latest improv works using my pure data guitar rig patch
No time like the present to get started so I am going to go ahead and post the initial-ish sort of work I have done (see YouTube link below) using the guitar pedal patch I am now using.
It started out, that is to say, I initially envisioned it as a MobMuPlat guitar pedal app. But having spent 4 months attempting to make it work to no avail I opted out of that and just settled on using my laptop. The Android I had was too slow or my knowledge base was not large enough to make it happen.
The pedal rig uses mainly DIY2 pedals and some Guitar Extended stuff.
It's primary functional piece is a 4 tap delay with a pitchshifter per line. Makes some amazing sounds: guitar in 4 voices. And my hope is to post that patch as soon as I can.
Hope you enjoy the listen. May it find you in good cheer.
-s
p.s. some of the pieces do not use much of effects and they are all improv pieces which is the only thing I do.
oh, yea: i did some post work on Audacity: noise removal, remove clips, normalize, but that is about it. And my youtube channel is almost all live improv poetry and music.
Book on Pd and Arduino just published
Hi all,
After a long time of hard and intensive work, my first book, 'Digital Electronics for Musicians' is out!
The book focuses on Pd patching and Arduino programming, and in the communication between the two platforms, creating musical interfaces. Some projects incorporate embedded computers, focusing on the Raspberry Pi, but giving generic information on this subject. Hopefully some people will find this helpful and fun!
http://www.apress.com/9781484215845?gtmf=s
On Amazon you can have a glance at some of its contents!
http://www.amazon.com/Digital-Electronics-Musicians-Alexandros-Drymonitis/dp/1484215842/ref=sr_1_1?s=books&ie=UTF8&qid=1450708668&sr=1-1&keywords=digital+electronics+for+musicians
Digital inputs not reading in arduino/pduino
Hi all..
I've been having troubles reading the digital inputs of an arduino duemilanove (328) using the pduino firmware. I mean having troubles like not reading anything from them at all.
Analog ins and digital outs work fine, but the DI do not want to read anything. I've checked that they are OK (I can effectively read them) with other sketches including the button read example from the arduino website, so there are no hardware issues.
I've tried he latest version of the pduino firmware, and went all the way back to pduino 0.4 with firmata 2.0. I even changed the moocow objects for flatspace as someone hinted somewhere here but to no avail (yes, I'm on windows XP).
I've tried the pduino-help and pduino-test patches included with the download and everything works except the digital input reading.
.. and of course, the digital ports are enabled and the pins' output mode are in 0 (input) and the serial port is set correctly both with the selector and inside the [arduino] object (just in case)
The toggle objects do not change at all in the lower right section of the pduino-test patch. As a matter of fact nothing comes out of any [route digital] object, even if it is directly connected to the [arduino] object
Am I missing something here?
any help would be appreciated
thanks
rick
Summer digital art residency at Columbia University
I'm organizing a digital art residency this summer up at Teachers College, Columbia University. I would love it if some of you could apply! Feel free to contact me directly with any questions, or if you're interested in stopping by to check out the atelier.
Cheers,
Stephanie
2009 EdLab Digital Art Residency
APPLICATION DEADLINE: MARCH 19, 2009
The EdLab Digital Art Residency (EDAR), hosted at the Gottesman Libraries (Teachers College, Columbia University), aims to explore and build upon the ways people access and understand information across a broad range of technologies. The goal of the residency is to engage in research and development of creative projects that challenge our community to reflect on the impact of digital culture. With this in mind, successful EDAR applicants will be fluent in innovative applications of media and technology. EdLab encourages applications from creative professionals in fields such as engineering, computer science, and media arts.
EDAR awards selected artists $4,000 to conduct innovative research leading to possible public outcomes including seminars, public discussion and exhibition. Additional funding may be available to support equipment, travel, and housing expenses. Invited residents are expected to work on-site at Teachers College, Columbia University during the residency period (June 15 - August 14, 2009).
Applications from practitioners exploring one or more of the following topics are especially encouraged:
* Graphical visualizations of data relevant to library systems, including how people use the physical building and the flow of library resources (digital and physical)
* Site-specific interactive displays
* New ways to derive meaning from Teachers College's historical collections and information databases
* Educational projects exploring the intersection of art and technology
For more information, visit: http://edlab.tc.columbia.edu/edar/
Contact information: Stephanie Hunt, edlab@tc.columbia.edu
Axiome: live sample cutting
That's a good question domien: i spent so much time on it that i figured that it would be pretty self-explanatory. My mistake...
I'll write it as a start for a manual:
To play a slicer, you have to push a "radio" (they're vsl's too ). The sample starts at the position of the button (you have to imagine your sample apportionned on the eight buttons, even if it's 4bars length). To stop the sample, press "PLAYING" (i know this is not common sense, but wait for the next release...).
The sample-cutter (eight buttons) actions are quantized to 1/16. So you can start a loop and when it comes at the end, start a second one and if you get the good 1/16 timing, it will sync to the first one. And so on...
Now, the pattern section (darker grey):
A pattern is a recording of actions on the cutter-buttons.
Set the length. (in 1/16)
Press "record" -> it shows "press", waiting for an action on one of the cutter-buttons (not necessarily the first one) to start recording. You can cancel record-enabled, recording or playing states anytime by hitting the record button again.
So, if you enable record and press a cutter-button, you start the record counter (record button became "recording").
Play on the cutter-buttons to record a pattern loop.
At the end of the record loop, the pattern recording plays back automatically what you've just played and becomes "playing".
You can stop the slicer (press "PLAYING"), but the pattern is still playing in the background until you press ("playing") to stop it. You can start the slicer again (press any cutter-button and the pattern is plays at its current position).
@domien:
To start or stop several slicers simultaneously, you'll need to have either:
-several mouse pointers (duh!!?)
-a computer keyboard or a midi keyboard, with key assignments (you'll have to create an abstraction or subpatch. But that would not be difficult, just send bangs to the button's inputs... i may work on that later)
-Other hardware... like the monome, which buttons are mapped to the ui (see the subpatch monome_com inside the slicer abstracts.
Anyway, you can still get the samples in sync by waiting for the end/beginning of the other loop(s).
Hope i didn't confuse you with my long explanations.
Putting the draft into the package...
Oh and thanks for the compliment .
Cheers