I uploaded a copy of it for anyone interested here :
http://www.mediafire.com/?ya2dj1cl59f8vt7
It requires Csound and Processing to be installed for it to work. Also Processing must have the OSC and Csoundo libraries installed.
written by: geert
Hi everyone,I uploaded a copy of it for anyone interested here :
http://www.mediafire.com/?ya2dj1cl59f8vt7
It requires Csound and Processing to be installed for it to work. Also Processing must have the OSC and Csoundo libraries installed.
Ah, thanks! So cfilter and ufilter are essentially default implementations that agents which perform operations on incoming realtime or control data and forward those afterwards can use!
@barnone, exactly, this is one of the powers of the EigenD system, you can easily totally customize everything. You can even run different Eigenharp instruments together into the same EigenD application, provided that the appropriate instrument manager instruments are added.
First Prototype patch is done.
Proof
Awesome barnone! Motivates me even more to try to add better native CV support to EigenD in my spare time. I've decided to go for a Slim Phatty to get started.
Just confirmed that this agent made it to the 1.4.8 release. So I'm able to fire up my setups using the osc agent from official 1.4.8 now.
experimenting a bit with cv before committing to a more polished patch.
It's actually been very reliable for me. No stuck notes or hanging/backing up of the event stream. I'm not decimating at all, although I added code to for sending to other sources that may not be so forgiving.
It's also very fast to fire up the setup and just start patching CV to the modular.
Really wonderful, thx. Hope to contribute back shortly.
Have a question related to the OSC agent. I do all the brpc steps as listed in the Roadmap, with my Pico attached and EigenD started over the commandline and the blank setup loaded (tested also without setup, just to be sure). Then I try to get the OSC stream, which I in the end want to have in Processing (with pdlib, which means Pure Data integrated in Processing). Processing is set up right to get OSC 5555, but even if not, Max6 UDP test should work and it doesn't. I also test with Osculator , just to be sure. I will call these POM.
Sometimes this works, but often it doesn't, what could I do wrong? Not waiting enough? I normally try on the blank setup, could this be a problem?
If I use oscdump etc. naturally I block the port, but I get the OSC values in the Terminal, even if POM didn't get any.
So the problem is not the OSC but the connection somehow? Also tried variations, bar0 method with the 4A/M, naturally with Pico not Alpha, doesn't work. I don't know how to fix this, tried all permutations of things, poor man's debug for the stymied. Next time it works I will try to bake into a setup, but I would like to know why sometimes it doesn't work even if I haven't changed anything in the startup process.
Is there a clue I can look at in the messages EigenD prints or maybe insert one more print somewhere to get a better picture? Would the log help? Could try to make a clean one.
Thanks for any help and pointers.
It's hard to tell from your post exactly what steps you used and where it went wrong. Maybe write those steps out in detail.
Did you send EigenD the register message?
/register-fast keyboard_1 5555
sent to localhost port 9999
It won't send any messages to 5555 until you do.
MAX doesn't want/need the OSC type params like "ff" etc so I drop those from geerts instructions.
I also posted my MAX patch in the Latency thread. It's avail here.
EigenCV Patch
Actually the instructions should really go in this thread, so here they are.
>>>>>>
If anyone is interested. Here is the MAX patch as it currently stands. I added some comments.
There are a few sections marked with panels to separate the code that is generic to processing the raw CV from the code that is specific to routing OSC to Expert Sleepers and doing polyphony management.
EigenCV Patch
The patch requires the installation of the osc-route MAX external. Standard OSC routing in MAX is not great at dealing with dynamic names in the OSC patch. This external is very good and efficient at it.
OSC Route CNMAT
Anyway, this could be adapted to send midi or trigger native MSP sound processing or whatever. Have at it.
Note that EigenD 1.4.8 includes the osc agent. You do need to read the release notes and roadmap in the source code on git hub to understand how to build a basic setup that connects the agent. See the OSC agent thread.
Also, a tip, what I do is I connect the osc agent to a full setup that already sends midi and such. I then use the midi out to interpret the pitch and gate events and use the MAX patch to send the continuous controls. However someone could extend this patch to interpret keys as midi pitch gate events as well if they so wished.
Obviously this is an experimental setup, so don't try to use it unless you are familiar with MAX. ;)
Hello barnone0,
Thanks for the answer. I just use Max6 (demo) as UDP test, because I have the feeling it is the most reliable one. To test I try to exclude all possible error sources, in Processing I still could have initialized something wrong.
Good of you to publish your patches, so we can all learn.
Found the problem. Its obvious when you know what to look for and which you pointed out
oscdump 5555 &
occupies the port and so POM cannot dock there, Osculator and Processing give me errors. But I still need to do the last line
oscsend localhost 9999 /register-fast si keyboard_1 5555
which sends the messages out to port. Just had to know what to look for.
So the data processing will be done in Java and for the sound part I can harness the power of Pure Data. Not yet the fastest solution, but enough for prototyping. Hope to have the first working "game/sound" prototype working by end of the week. And changing the sound will be as easy as changing the pd-patch.
Can probably even use Processing with XML-RPC lib to script the Eigenharp to switch the LEDs of the Alpha on and off.
Sounds fun, happy hacking.
OK --- I have everything built and I'm trying to get Max to work. Running to some issues that I don't understand.
First of all, in the documentation for the OSC agent, there are two lines that I'm supposed to run
tmp/bin/brpc '' exec osc output create
tmp/bin/brpc '' exec pico manager create
First of all, what is the purpose of '' at the beginning? I note that in a subsequent example on this thread, these same commands are given but with an empty string. If I try with empty string, then I get python errors.
Secondly, I am using alpha, so I replaced the second line with
tmp/bin/brpc '' exec alpha manager create
That seems to get accepted but when I subsequently enter the line
tmp/bin/brpc '' exec alpha keyboard 1 to osc output 1 connect
that comes back with a non-zero exit code
I've tried creating a basic Max patch with the /register-fast message on port 555 send to localhost port 9999 and I have a [udpreceive 555] object connected to [print] but I'm not seeing anything in the Max window when I press keys on the Eigenharp.
Would appreciate some suggestions here.
Thanks,
D
Hmmm, in the examples above, I had the word interpret surrounded by angle brackets and quotes (per the example in the README for the OSC agent) but they seem to have disappeared in the forum view. From that behavior, I'm assuming that it always has to be there (and @barnone had them there too)
Yes, I think the confusion is that the forum strips any text with an angle bracket. Would definitely look at the OSC and Roadmap files in the src code instead as the authoritative src of info.
Once you have gotten the initial connections made, you can save the setup in EigenD and it will be restored when you load that setup.
For my MAX patch, I don't actually use a blank setup to start. I start with an existing setup that sends midi. Is use the midi for notes, velocity etc. I use the OSC for continuous data such as pressure, x, y. The note data is there though in the OSC, I just chose not to hook it up, since it wasn't needed for what I was trying to do. The MAX patch does sanitize the key stream into something fit for conversion to notes and detects note on and note off.
Well, at this point, I just want to get OSC working into Max but it seems that the command
exec alpha keyboard 1 to osc output 1 connect
is not working (or at least it's returning a non-zero code) so I don't know how to proceed.
Did the osc output object get created?
tmp/bin/brpc '{interpreter}' exec osc output create
tmp/bin/brpc '{interpreter}' exec alpha manager create
Wait for alpha to be detected be looking at the console output of EigenD, then do:
tmp/bin/brpc '{interpreter}' exec alpha keyboard 1 to osc output 1 connect
Note that the curly braces around "interpreter" need to be angle brackets instead but the forum strips them
When I try to connect the keyboard to the osc, I'm being told that the arguments are incorrect....see below
So close and yet so far (grin)
----------------
: run imperative: ('alpha', 'keyboard', '1', 'to', 'osc', 'output', '1', 'connect')
: language_plg:error_message (('Inappropriate arguments for the verb %s', 'connect', '', '', 1), '')
: language_plg:message words= ['*', 'Inappropriate', 'arguments', 'for', 'the', 'verb', 'connect'] desc= err_msg speaker=
: feedback:msg ['*', 'Inappropriate', 'arguments', 'for', 'the', 'verb', 'connect']
Well, it looks like the osc output object gets created but when I try to create the alpha manager, I'm seeing all sorts of errors
I'm assuming the alpha manager was created based on the first 5 or 6 lines of the following console output but it looks like it's then bitching about being unable to open the usb port
: initial state: [] set([]) set([])
: after alpha state: []
: after manager state: []
: after flush, state= [abstract([alpha,manager])]
: verb: create ['(abstract([alpha,manager]),)']
: run imperative: ('alpha', 'manager', 'create')
eigend-backend: verb: ['497903696',2,'',[abstract([alpha_manager])]]
eigend-backend: assigned ordinal 1 to alpha_manager
: eigend 1: ok
: after verb, succeeded= 1 errors= 0 sync= [''] obj= set([''])
: pushing set(['']) to context stack
: starting sync after create : ['']
: sync done
: initialise_set ['']
: autonumber ('alpha', 'manager') with 1
eigend-backend: skipped
: evt : base
: usb name : 26260000
: can't open: already opened by someone else
: Traceback (most recent call last):
: File "plg_keyboard/keyboard_X.py", line 596, in __dequeue
Functor with exception >
: File "plg_keyboard/keyboard_X.py", line 454, in __init__
: RuntimeError : can't open: already opened by someone else from picross/src/pic_usb_macosx.cpp:144 ()
: python exception inside functor
: RuntimeError : python exception inside functor from tmp/obj/piw/src/piw_native_python.cpp:107202 ()
: call problem caught at piw/src/piw_thing.cpp:74
: starting resync
: resync done
That doesn't look good.
"can't open: already opened by someone else "
You can only have one instance of the alpha manager. Maybe cycle your basestation, restart EigenD and start clean.
Did you start EigenD with these flags?
./EigenD --stdout --noauto
Definitely don't want to load any configuration at startup.
If you do load a factory setup, does the Alpha work properly?
Well, I've made signifcant progress without understanding why ----
1) I opened eigend --stdout which loads my standard guitar setup (I didn't know about --noauto, I'll come back to that)
2) I did NOT subsequently load a blank setup
3) I executed the osc connect
4) I did NOT execute the alpha manager create
5) I executed the keyboard osc connect and got no errors
6) I ran my trivial Max patch and indeed I am seeing all the OSC messages
So in principle, I'm in a position to start analysing the OSC messages to create my Max patchers.
However, obviously I'd like eigend to not be doing all the work that it's doing for my standard guitar setup.
So the first question is, how come loading a blank setup (following the Roadmap in the OSC folder) subsequently results in the other commands not working?
Other issues I encountered.
a) There doesn't seem to be any way to save a setup (there's also no eigenD menu)---
b) I tried to run the eigencommander from the command line but it bitched about using python rather than pythonw. Since eigencommander is an executable, I don't know how to make it startup with pythonw
c) I noted there's a folder called "app" that has EigenD, EigenCommander (and others in it) but they don't work if you try to open them. I looked in the package contents and noted that there were aliases to actual programs but the original files associated with those aliases were not found so those have not been setup properly.
Please log in to join the discussions