-
wadeorz
Does anyone know if there is a way to make PD keep "hearing" keystrokes when it is not the active window/application?
Let me explain. I use PD as a MIDI controller for ableton live. it lets me get custom functionality out of old hardware controllers.
What I want to do is map knobs in ableton to pairs of keystrokes in PD - very easy -
"A" key = turn knob right
"Z" key = turn knob left.This works fine AS LONG AS PD is the active window - i.e. the last program to be clicked on.
But as soon as I touch sometghing in ableton with the mouse PD stops hearing the keystrokes - and I need to be able to use the mouse with ableton
Anyone know a workaround??
Cheers
W
-
wadeorz
Hi all,
This should be the easiest thing in the world, but I cant for the life of me figure it out.
I need to populate an array with input from four different number streams were the order of appearence of numbers in the stream puts them into an queue to bang messages from 0,1,2 etc.
A brief explanation
I presume is pretty
easy when you know how, but A brief explanation of the project might be in orderThe idea is to back project onto a series of screens and give people
IR LED "paintbrushes" so they can paint with procedural graphics and
sound.We're using "touchlib" blob tracking software (and webcams)to
differentiate between the blobs. the software assigns each blob a
numbered ID for the length of its lifetime, based on the order in
which they come into existence : so the first blob in existence is "ID
0" (until it dies, when it takes its pace in the queue), the second
is "ID 1" etc.These IDs allow us to assign specific graphics to different blobs in
Processing, and also to give each an individual piece of audio.Its easy with just one machine sending these messages as each ID
corresponds nicely to the order of tracks to be triggered in the
sequencer,
but we're using four separate modular machines each running touchlib
and we want the sound to be global.We have networked the machines and each of the four graphics modules
can talk to the machine running the sound. The sound module is running
PD which receives messages from the other machines and then sends MIDI
messages to the sequencer. So PD is getting four streams of numbers -say from zero to three- which correspond to the order in which touchlib blob IDs pop into existence - (each stream local to its own machine)these numbers trigger a fade in/out of a
mixer track in say for example Reason). Ideally the first person who enters the space will
trigger some pad sounds (fader 1 in reason say) regardless of which
screen they paint on.that way it will work if there is only one person in the space. The
next person would trigger some percussion, and the full track would
build naturally. The alternative is to have every ID locked to a
sound, meaning it would really only work for four people in the space.So to the question. There are 4 data streams coming into PD, literally
numbers 0 - 3 in each number box. as you can see in the
"four_machine_dilemma"patch attached.what I need to do is fix it so that if (and only if) computer A has
sent a message triggering track 1 that computer B, or the next stream,
when it sends its own "ID number 1" is converted to ID number 2 , that
is, it occupies the next position in the global array, triggering
track two (because track 1 is occupied) even though it thinks it is
"ID number 1", and so on down the chain.is there some way to store a boolean for the track's on state and use
it to reassign a value to the next incoming message?Or just to fill positions in an array with the incoming messages in
the order they are received. It seems like it it should be
straight-forward but I'll be buggered blind if I can figure it out.Hope this is not to long winded for a simple question.
Thanks in advance,
wadeorz
-
wadeorz
I am trying to get the PD reactivision client to work in order to pick up messages from touchlib
The Processing client does this no problem on the same port 3333 but PD picks up
sweet F A.I really need to get touchlib talking directly to PD for an exhibition in a month.
All help dearly appreciated,
Thankyou.
-
-
wadeorz
Thanks ... it is indeed. What does it do? The help file just has a patch which lists devices without explaining what it does ... How can it help me route keystrokes to PD when its not the active window ?
if it helps this is what I get when I run the patch
hidin: ** found 9 devices on your system
DEVICES: -1 None
DEVICES: 1
DEVICES: 2
DEVICES: 3
DEVICES: 4
hidin: -- could not get device #5: Access is denied.hidin: -- can not read from mouse and keyboard
DEVICES: 5 Unsupported Device
hidin: -- could not get device #6: Access is denied.hidin: -- can not read from mouse and keyboard
DEVICES: 6 Unsupported Device
hidin: -- could not get device #7: Access is denied.hidin: -- can not read from mouse and keyboard
DEVICES: 7 Unsupported Device
hidin: -- could not get device #8: Access is denied.hidin: -- can not read from mouse and keyboard
DEVICES: 8 Unsupported Device
hidin: -- could not get device #9: Access is denied.hidin: -- can not read from mouse and keyboard
DEVICES: 9 Unsupported DeviceThanks again.
W
-
wadeorz
is hid an object? I'm on a windows machine unfortunately : (
-
wadeorz
...eh, right. buggy then?
say I wanted to make a switch to reset in case of noise/bugs whatever.
would the safest thing be to overwrite all the arrays to 0?
Thanks again for all your wonderful help!
-
wadeorz
what would you define as an"undefined execution order?"
-
-
wadeorz
Wow. I'm speechless. You're a genius. Check out the link below for info on the project (you'll be getting a mention on the website!)
https://www.cs.tcd.ie/~odwyernc/zenTech/research.html
I just have 1 more question (ok maybe two)
as you can see from the attached "saviour.pd" (yes thats you) patch
I have the faders rigged to receive a separate bang for on and off messages. This is because processing actually sends two different messages(with the same ID but a different message name - on or off)
Whereas you seem to have done everything "in the box"
The route object will trigger the on messages perfectly but the deallocation of the voices uses the same channel so I'm wondering:
is it possible to use one [poly low] for on messages and one for off (i'm guessing not) or how can I hook up/route the [poly low] object to the faders so that the first bang on a channel is ON and the seccond OFF?
-
wadeorz
Sorry I should probably have mentioned I'm using PD to send MIDI messages to Reason, not for audio
-
wadeorz
Thanks Caudius, Cant wait to check them out
This is what Ive bben working on:
Ok so we have an array of 16 elements called "Track index" (called ON_array here) where the indices correspond to the tracks in numbered order from 0 -- 15.
the values assigned to those indices are the Touchlib Ids which start from 10 and go up ten each ID ad infinitum
So 10, 20, 30, 40 etc
what I need is a mechanism which cycles through the array every time PD receives an "on message" (in practice this will be a change in the state of a number box from 30 to 40 say)
Each time an on message is received it must start from 0 an work its way up, reading every element and checking its value against zero.
If it encounters an element with a value of zero, It writes its own value, (say 40) to that element,
resets itself to start from 0 (the beginning of the Track Index array) and shuts off to restart on the next on message,
The crux of the issue is in the "PD assign machine Ids to on messages" sub-patch within the "pd from Processing" patch in the main window
I've made a bit of a balls of it but thats where the looping mechanism needs to be.
Whats the best mechanism for looping hrough an array until you get a given value? as far as I understand [until] is just an automaton that stops only at its creation argument a la terminator?
Thanks agin, cant wait to see!!
http://www.pdpatchrepo.info/hurleur/absolutely_Final_routing_Patch.pd
-
wadeorz
how come you need compression? it must be a massive file. can't you post a .pde or just a text doc?
-
wadeorz
7 zipdiagnostic messge:
data error in blob voice allocation .tar file is broken
-
wadeorz
"try the attached (use "tar -xvzf" to extract, or 7-zip on windows)"
Sorry I think PD is making me blind.
thanks
-
-
wadeorz
damn
I cant open the file "unexpected end of archive" error and there doesnt seem to be anything in it what kind of zip file is it ? not winrar anyway do I need to download something to open it?
-
wadeorz
hhh, I was wrong about how I thought [poly] assigned voices - i misthought it would always try the lowest voice first, so you could do voice 1->pad, voice 2->perc, voice 3->bass etc to get what you want (which is: each blob gets one sound until it dies, with some sounds preferred when there aren't many blobs - as far as i understand - i might have misinterpreted though)"
this is exactly what I want!!!!!!!!!!!!!!!!
I am probably over complicating things. To trigger the tracks (and they are full studio tacks not notes) does requires a counter which convets bangs to numbers 1 2 3 etc in the order they were recieved
Which then tells [line] to activate a fader in Reason. Every ID can be a separate number
The problem is keeping track of which ID triggered which track, so when that ID sends its OFF message (pull the fader down), it only sends it to the track it triggered and doesnt cut of some other users sound.
so i think I need to do the following: set up 2 arrays
new array Tracks[ 12 ] ; // holds the ID values currently assigned to the track indexes and is written to each time an incomming ID appears -
Tracks [0] = 4 means ID4 has been assigned to the first track
new array IDs[12] ; //here the IDs are the index and the track number they are assigned to is the value
and then swap their values
for ( i = 0; i > IDs.length; i++) {
IDs [ i ] = Tracks _; or something .......................
}
but I cant even get [tabread] to get the correct information out of the first array. if you open the subpatch "assign machine IDs to on messages"
you can write ro the first array, but it doesnt output the correct valuesthanks a million for your help man,
looking forward to checking out your patch
http://www.pdpatchrepo.info/hurleur/keeping_track_of_IDs.pd_
-
wadeorz
man I'm way lost. How does poly know which voice to assign?
this is what Ive been working on, but I cant even get past the first pair of on-off pairs
-
wadeorz
Thanks again. I get the follwing error on other ports
error: gatom: no method for '#bundle'