• 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

    posted in technical issues read more
  • 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 order

    The 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

    posted in technical issues read more
  • 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.

    posted in technical issues read more
  • wadeorz

    thanks anyway dude

    posted in technical issues read more
  • 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 Device

    Thanks again.

    W

    posted in technical issues read more
  • wadeorz

    is hid an object? I'm on a windows machine unfortunately : (

    posted in technical issues read more
  • 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!

    posted in technical issues read more
  • wadeorz

    what would you define as an"undefined execution order?"

    posted in technical issues read more
  • wadeorz

    and the fader abstraction.

    THANK YOU SOOOOOOOOO much

    http://www.pdpatchrepo.info/hurleur/fader.pd

    posted in technical issues read more
  • 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?

    http://www.pdpatchrepo.info/hurleur/saviour.pd

    posted in technical issues read more
  • wadeorz

    Sorry I should probably have mentioned I'm using PD to send MIDI messages to Reason, not for audio

    posted in technical issues read more
  • 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

    posted in technical issues read more
  • wadeorz

    how come you need compression? it must be a massive file. can't you post a .pde or just a text doc?

    posted in technical issues read more
  • wadeorz

    7 zipdiagnostic messge:

    data error in blob voice allocation .tar file is broken

    posted in technical issues read more
  • wadeorz

    "try the attached (use "tar -xvzf" to extract, or 7-zip on windows)"

    Sorry I think PD is making me blind.

    thanks

    posted in technical issues read more
  • wadeorz

    ah looks like you're unix. I'm windows I'm afraid

    posted in technical issues read more
  • 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?

    posted in technical issues read more
  • 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 values

    thanks a million for your help man,

    looking forward to checking out your patch

    http://www.pdpatchrepo.info/hurleur/keeping_track_of_IDs.pd_

    posted in technical issues read more
  • 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

    http://www.pdpatchrepo.info/hurleur/dilema.pd

    posted in technical issues read more
  • wadeorz

    Thanks again. I get the follwing error on other ports

    error: gatom: no method for '#bundle'

    posted in technical issues read more
Internal error.

Oops! Looks like something went wrong!