Forum rss-feed


Developers: MIDI key illuminator

Most Recent

written by: NothanUmber

Ok, here a Windows version of the MIDI Illuminator agent for EigenD 1.4.12. Please have a look at the contained Readme.
If it doesn't work just come back to me and I can have a look.
(As far as I can remember, there were problems with very big setups - like the Alpha3 setup. Because the way layouts are handled is more on the memory intensive "brute force" side. Here it might help to experiment with the "light" versions (also included - but not fully tested if I remember right), that use less memory - but also offer fewer features.)

Also added the complete sources in the state I left it. (Not prettiest possible, this was mainly for learning how things work. Wanted to clean it up but never did... - but it should work.)
P.S.: Forgot to add the Stage tabs. If the folder should be empty - please redownload

written by: NothanUmber

Wed, 15 Feb 2012 22:42:49 +0000 GMT

Unfortunately I can't test it on Mac atm (power supply is not with me, battery ran out of power). The steps taken seem to be ok according to your description . Some things that might be worth trying:
* Can you create the Pico or Alpha agents ("pico midi light controller create" or "alpha midi light controller create")?
* open a terminal window and start eigend with the "--stdout" parameter. You should get a bunch of outputs now for each step you do in EigenD. If you post this output (or parts of it that look suspicious to you) this could perhaps help
* do you have a really complex setup that uses a lot of memory? The current implementation of the midi illuminator needs quite some RAM for all the layouts. In that case it would be a good test to start with an empty project and type in the lines above. (If this is the problem I can easily provide you a new build that only has one layout - you nonetheless won't need those for "direct key" functionality)
* What version of Mac OS X do you use (I only tested on Snow Leopard and Windows 7 64 bit)

Good night,

written by: fcolasanto

Thu, 16 Feb 2012 00:06:24 +0000 GMT

Many Thanks. I can not load pico or alpha midi light. The terminal says (when I execute the tau midi light controller):

: word input: !1447
: initial state: [] set([]) set([])
: after tau state: [']):False>]
: word input: !1215
: after midi state: [#100'])>]
: word input: !3122
: after light state: [#100'])>]
: word input: !1775
: after controller state: [#100'])>]
: word input: !111
: after flush, state= [abstract([tau,midi,light,controller])]
: verb: create ['(abstract([tau,midi,light,controller]),)']
: run imperative: ('tau', 'midi', 'light', 'controller', 'create')
eigend-backend: verb: ['247557176',2,'',[abstract([tau_midi_light_controller])]]
eigend-backend: assigned ordinal 1 to tau_midi_light_controller
eigend-backend: start traceback:
eigend-backend: Traceback (most recent call last):
eigend-backend: File "eigend-gpl/pi/", line 51, in __call__
eigend-backend: File "eigend-gpl/pisession/", line 620, in __asserted
eigend-backend: File "eigend-gpl/pisession/", line 746, in load_agent
eigend-backend: File "eigend-gpl/pisession/", line 518, in __init__
eigend-backend: File "plg_midiilluminator/", line 24, in
eigend-backend: File "plg_midiilluminator/", line 31, in
eigend-backend: ImportError: dlopen(/usr/pi/release-1.4.11-stable/modules/, 2): Library not loaded: @executable_path/libpic_1_4_8_testing.dylib
Referenced from: /usr/pi/release-1.4.11-stable/modules/
Reason: image not found
eigend-backend: end traceback:
: eigend 1: ok
: after verb, succeeded= 1 errors= 0 sync= [''] obj= set([''])
log:average tick 11610
log:total audio dropouts 0
: pushing set(['']) to context stack
: starting sync after create : ['']
: basecfg: 020100000000000000000000000000234077770600f6040100000000000000000000000000000000000000000000000000000000000000000000000000000000
: instcfg: 02080401000020090805220520000006000000000000000000000000000000001864286019082346600000000000000000000000000000000000000000000000
eigend-garbage: starting gc pass 0
eigend-garbage: gc collected 23
eigend-garbage: finished gc pass 0
eigend: proxy closing down
: sync done
: initialise_set ['']
: Traceback (most recent call last):
: File "eigend-gpl/pi/", line 273, in __doit
: File "eigend-gpl/plg_language/", line 311, in run_imperative_co
: File "eigend-gpl/plg_language/", line 66, in initialise_set
: File "eigend-gpl/plg_language/", line 39, in autonumber_set
: AttributeError: 'NoneType' object has no attribute 'names'
: Traceback (most recent call last):
: File "eigend-gpl/pi/", line 273, in __doit
: File "eigend-gpl/plg_language/", line 311, in run_imperative_co
: File "eigend-gpl/plg_language/", line 66, in initialise_set
: File "eigend-gpl/plg_language/", line 39, in autonumber_set
: AttributeError: 'NoneType' object has no attribute 'names'
: buffer_done ['1447', '1215', '3122', '1775', '111'] False
: clearing history False
log:average tick 11624
log:total audio dropouts 0
eigend-garbage: starting gc pass 0
eigend-garbage: finished gc pass 0
: instrument internal temperature: 29

written by: NothanUmber

Thu, 16 Feb 2012 00:45:24 +0000 GMT

Ah, that is most probably the root of the problem:

eigend-backend: ImportError: dlopen(/usr/pi/release-1.4.11-stable/modules/, 2): Library not loaded: @executable_path/libpic_1_4_8_testing.dylib

There seem to be explicit dependencies to a 1.4.8-testing library - didn't think of that. (As said unfortuately I can't use my Mac atm., so a new compiled 1.4.11 Mac version would probably not make it before the end of the week. As an intermediate workaround: Can you please try whether it still works with EigenD 1.4.8-testing? (Hack: you might try to copy libpic_1_4_11_stable.dylib and rename this copy to libpic_1_4_8_testing.dylib - could work, not load at all or just crash - and I don't know how many additional dependencies to other 1.4.8 libs could additionally be missing...))

written by: fcolasanto

Thu, 16 Feb 2012 04:25:06 +0000 GMT

Dear Ferdinand,

I tried to rename that file but didn't work. So if you are going to compile a new version for 1.4.11 I will wait until that.

Thanks a lot for your generosity

All the best


written by: NothanUmber

Mon, 20 Feb 2012 01:40:52 +0000 GMT

Ok, uploaded the old midi illuminator compiled for 1.4.12 stable (currently only compiled for Mac - but it comes with sources ;) ):
Midi Illuminator 1.4.12_01
It's still in the state where I left it, without code cleanup etc. (Hope it works, only did a short startup test, the agent seems to load.)
The last thing I was playing with was to add a "light" version that only uses a minimum of atoms (because the original one refused to load on slower machines with complex setups - Stage just timed out into an infinite loop..) Hope I didn't break anything in the process.. :)

Decided to start from scratch for a new version - essentially there will be two agents: One that just offers what was previously called "direct key functionality": Statically setting lights via Stage/OSC. That's what the Max folk needs :) So, this agent will be written in a way that it's still compatible to EigenD 1.
Then there will be an agent that does the midi to lights stuff, which will make use of new EigenD2 features.

If anybody has still specific interest in the midi to lights agent for EigenD 1 then tell me, otherwise I probably won't put more work into polishing it up (the new one will be prettier because it doesn't need a doubled-up layout concept).

written by: whitetree

Mon, 20 Feb 2012 19:55:41 +0000 GMT

Can't wait to see the new agent - It would be great to have midi that can be displayed on the board dynamically according to the current key layout!

written by: fcolasanto

Mon, 20 Feb 2012 20:33:29 +0000 GMT

I didn't tried yet but today I will check this and will send my comments. I hope this is going to work now !!!



written by: NothanUmber

Mon, 20 Feb 2012 22:48:31 +0000 GMT

Be welcome! Good I tried it out today - in yesterday's version the Alpha variant was still hardcoded to the "light" version (so e.g. direct keys would not have worked, only midi on layout 1).
Here a corrected version, tested direct keys with an Alpha - works here now:
Midi Illuminator 1.4.12 02
A probably non-obvious remark: Connecting anything to the keyboard fails most the time when the instrument is not connected when you start EigenD (otherwise "alpha/tau/pico midi light controller 1 to alpha/tau/pico keyboard 1 connect" will fail). After the connection is done and the setup saved you can connect and disconnect the instrument at any time again, it's just the setup.


written by: fcolasanto

Tue, 21 Feb 2012 05:26:51 +0000 GMT

Dear Ferdinand,

Direct key is not working on TAU. I tried everything....

Did you solve the problem for TAU too ?



written by: fcolasanto

Tue, 21 Feb 2012 05:36:30 +0000 GMT

sorry, I want to mention that after I moved the files you sent to the right folders, I sent to Belcanto:

alpha manager create

tau midi light controller create

tau midi light controller 1 to tau keyboard 1 connect

and I have no errors...but still doesn't work

written by: fcolasanto

Tue, 21 Feb 2012 05:41:44 +0000 GMT

I tried again all the process and.....IS WORKING !!!!!!!!



written by: dhjdhj

Fri, 30 Mar 2012 14:18:37 +0100 BST

Let me re-ask this. I noticed there was an illuminator agent in workbench. How do I set this up so that it receives OSC and is the OSC format the same as it was for 1.x?


Is there a version of this for EigenD 2?

written by: NothanUmber

Fri, 30 Mar 2012 16:08:56 +0100 BST

Currently the EigenD 2 Illuminator agent doesn't seem to be "OSC aware" - at least it does not show up on Stage (haven't tried it myself though).
MIDI illuminator and eigend2 illuminator have some overlap but don't replace each other - yet. Will have to put some thoughts into how to get back some capabilities of the midi illuminator in EigenD2 without duplicating the Illuminator agent but more building things around it.
I'm not sure whether it makes sense to port the original midi illuminator to EigenD2 (without overhauling the entire concept first) - it does not make use of the new capabilities and there are not too many users of it (I think 2 at all including you) - and you are presumably the first person who wants to use it in EigenD2.
So please stay tuned for a MIDI illuminator replacement to come back to EigenD2 later on.

What is possible with the current EigenD2 Illuminator is controlling it via HTTP though - perhaps this would be a route to set up Max as an HTTP server?

written by: dhjdhj

Fri, 30 Mar 2012 17:52:32 +0100 BST

Wow --- I await your solution with baited breath :-)

written by: NothanUmber

Fri, 30 Mar 2012 17:53:09 +0100 BST

Did a short investigation, adding OSC support to the EigenD2 illuminator is not so trivial: The new illuminator uses strings to define the light pattern. This is on the one hand much lighter on RAM usage, on the other hand strings are currently not supported by Stage - and more specifically by the stage_server (the EigenD related part that provides OSC control). So one way could be to add string support to stage_server and another one could be to add a new feature to the E2 illuminator to offer integers that represent the key to light mapping (similar to the midi illuminator just with a single layout instead of many) - this array of integers would have to be synchronized with the string representation and vice versa. Then you can control the mapping via Stage/OSC like in the MIDI illuminator again. Probably the latter approach is more "in line" with the EigenD vision (text support in Stage is probably not what John has in mind with "live performance oriented").
Perhaps I'll play with that a little bit in the next days.

written by: geert

Fri, 30 Mar 2012 21:33:18 +0100 BST

@NothanNumber, Stage and the OSC server that specifically interacts with Stage only understands single float values for each individual widget. Arrays of numbers are not supported. I don't think that the stage OSC server is appropriate for this usage since it's really designed around real widgets that need to exist with a position, type, size, ... I think it's worth thinking about general OSC input support for EigenD, but this will most probably have to wait until EigenD 2.0 is in stable.

dhj, doesn't Max/MSP support some kind of HTTP client that can send standard PUT and DELETE requests? If that's the case, you can use the current HTTP support in Illuminator. You can find the details in the Illuminator docs

written by: dhjdhj

Fri, 30 Mar 2012 21:51:45 +0100 BST

Max has built in TCP/IP support but I don't know if anyone has built an http object for it. However, I certainly know how to create my own http requests so if that's the official interface, I have no problem using it.

Again, thanks for the ref. It's great to have some good docs around to help.

written by: dhjdhj

Sat, 31 Mar 2012 03:46:05 +0100 BST

Turns out there's a built in object called jit.uldl that can invoke http requests so it shouldn't be a big deal, I'll have a go over the weekend.

However, I noted that all the examples use port 1024. Is there a way to tell EigenD to use a different port number?

written by: geert

Sat, 31 Mar 2012 10:16:50 +0100 BST

dhj, the Illuminator docs cover how to change the server port and how to start/stop the server

written by: steveelbows

Sat, 31 Mar 2012 21:27:13 +0100 BST

Thanks for this agent, I have it working with my Eigenharp Pico Workbench 2.0.40 OSC setup and custom software. Im using .NET stuff to send PUT and DELETE and its all working nicely :)

Please log in to join the discussions