Forum rss-feed

Forum

General Discussion: Could someone please explain how to....

Most Recent

written by: dhjdhj

Geert, turns out you were on to something. I've realized that the problem I'm having is in fact due to all keys being on the same midi channel, even though I'm using a Max patch to route different keys to different channel strips in mainstage. It looks like if you play multiple keys on the same midi channel, the alpha only seems to translate pitch information from the first key. If you vibrate other keys, they don't seem to send pitch data out. I do not know whether this is a bug or by design or whether it is configurable.

In any case, it highlights the underlying issue which is the ability to specify what output data comes from each key.

written by: dhjdhj

Sun, 12 Sep 2010 00:32:04 +0100 BST

configure the behavior of each individual key?

I would like to be able to control the MIDI channel, note number, and values (i.e, CC, aftertouch, pitch change) for each of the three dimensions of each key, i.e, IN-OUT, LEFT-RIGHT, UP-DOWN?

Once I know how to specify this, I can build some infrastructure for myself to configure each key exactly the way I want it?

Thanks


written by: NothanUmber

Sun, 12 Sep 2010 14:23:39 +0100 BST

As far as I know (from reading forum posts) you have these options:

1) wait for the release of the workbench, presumably it will be possible to build such a setup with it (don't know whether you can assign different tasks to keys within the same keygroup or whether you'd need to have one keygroup per key etc. Will see...)
2) ask the Eigenlabs support whether they can set up something for you
3) use something like Bidule to remap the default midi output to something you like. Something like that should work:
* set the Eigenharp in poly MIDI mode so that polyphonic notes are sent on individual channels
* split midi messages by channel and route messages of each channel into a separate instance of a group that performs the following steps:
- look for note on messages and reconfigure a message remapper/CC remapper/whatever you like depending on the note number. So you can have individual remappings per note in the extreme case (in this scenario the mapping is not key bound but note bound, so if you use a different scale the keys to midi message mappings would likely change)

Greetings,
NothanUmber


written by: dhjdhj

Sun, 12 Sep 2010 15:00:24 +0100 BST

The reason for my request is precisely so that I can do my own remapping of all incoming note and other MIDI events. I don't even need Bidule or Max to do the mappings. Apple MainStage will handle it perfectly fine.

However, I don't know how to configure the alpha so that I can get unique events from each key. The problem is that the same key seems to send events on different channels depending on what other keys are being played and so I can't distinguish the physical keys.

I would absolutely settle for a script that would

A) Set each column to a different MIDI channel
B) Set each key on each column to trigger a unique note on/off event, each key having a MIDI note number one value higher than the key below it of course.
C) Set each key on each column to send unique CC events on X, Y, and Z movements

My original request has the minor extra benefit of being "complete", i.e, once I can do explicit configuration of every key, then I can do ANYTHING myself after that.

My problem is that I cannot find sufficient documentation on the scripting system to create such a configuration.

I have no idea when workbench will arrive, nor whether it will do what I need, and I would like to not have the Alpha sit in the corner of my studio for some undetermined timeframe.

Cheers,
D


written by: NothanUmber

Sun, 12 Sep 2010 17:18:04 +0100 BST

Just did a small test with Bidule, mapping the modulation value of each key to a different CC (note 0 = CC 0 - note 127 = CC 127) which works as expected with the method described above. If you want I can send you the Bidule layout file.
Don't have Mainstage so I can't tell you whether this is possible with this software. (It is questionable whether this kind of mapping makes sense as many of the CC types have a special meaning in the normal case: 0 bank select, 1 modulation etc.)
Regarding mapping all three axis: Keep in mind that there are only 127 CC types in total, so you would have to introduce several midi ports or go with nrpbs or whatever...


written by: dhjdhj

Sun, 12 Sep 2010 18:55:18 +0100 BST

Perhaps I'm not explaining myself properly. The issue is not with mapping the modulation value of each key ---

The core problem is that I cannot always distinguish which physical key was pressed as you can get the same MIDI data from different keys depending on what you're doing.

Consider the following output from the Snoize MIDI Monitor

Time Source Message Ch Data
13:40:14.894 From Eigenlabs 1 Note On 3 G#1 23
13:40:16.327 From Eigenlabs 1 Note Off 3 G#1 64
13:40:16.713 From Eigenlabs 1 Note On 3 A1 19
13:40:17.213 From Eigenlabs 1 Note On 2 G#1 15

From the first line, I touched a key which produced a G#1 NoteON event on MIDI channel 3

On the second line, I released the key, producing the obvious NoteOFF event on the same channel.

Next I touched a different key, producing an A1 NoteON event, again on MIDI channel 3 (line 3). Without releasing that key, I then touched the original G#1 key. Observe that the new NoteON event for that G# is now on MIDI channel 2.


Similarly, it's possible (of course) to produce the same note from different keys, by playing a different column, 4 or 5 rows up or down (depending on your current tuning). If you play those notes one at a time, then you will get the same MIDI event and channel. Again, you cannot determine that two different physical keys were pressed.

Until I can have that information, no amount of mapping functions will help.


written by: NothanUmber

Mon, 13 Sep 2010 00:13:04 +0100 BST

ok, I hope I understood you :)
As you said, determining which channel will be used for which key is not easily possible. Let me show you how I think you can nonetheless retrieve the information you want as described above in more detail by remapping the midi events that are sent by the original Alpha MIDI setup to your desired mapping (I try to stick to your goal mapping as far as I understood it, with five columns with keys 0-22, key0: CC 0,1,2/ key1: 3,4,5 etc. on different channels per column (the first key in each column always has note number 0 and CC 0,1,2 just the channels differ)):

Let's assume you have one big keygroup with all 110 playing keys assigned to it from note number 0 to 109 in five columns 0-21,22-43 etc. (This should be already possible with a mapping script like the examples in the wiki) and you are working in poly mode.

Now assume you press down the first key 0. It gets an arbitrary channel, let's say 14.
The Bidule script looks for note on event on each channel, in this case it recognizes a note on event on channel 14.
Now it looks into a table (or easier: performs a calculation) what it should do in the case of note no 0. Let's say the pitch bend (sent from key roll in the original Eigenharp midi setup) should be remapped to CC 0 on channel 0, modulation (sent from key yaw in the original setup) should be remapped to CC 1 on channel 0 and channel aftertouch (sent from key pressure) should be remapped to CC2 on channel 0. Additionally it sends key 0 (because key 0 is the first key in the first column).
This mapping stays the same until a new note is sent on channel 14 - which will not happen until the key 0 is released (or more than 16 keys are pressed at the same time...).

Afterwards you press a second key, let's say key 22 (first key in second column). Now it depends whether you already released the first key 0 or not.
In the case you still press key 0, key 22 will be automatically sent on another channel, let's say 15. Now Bidule looks into it's table for note 22, sends note 0 on channel 1 (because note 22 corresponds to the first note in the second column) and from now on it will remap all pitch bends on channel 15 as CC 0/channel 1, modulation as CC 1/channel 1 and channel aftertouch as CC2/channel 1 until a new note on on channel 15 is received.
If you would already have released the key 0 before pressing key 22 then channel 14 would already have been freed again, so the note on of key 22 would have been sent on channel 14. In this case it would have reconfigured the mapping of channel 14 (that was initially using the key 0 mapping) to the key 22 mapping.


If you have such a mechanism that remembers the note numbers in note on events per channel and reconfigures the mapping for the corresponding channel (where the note on was received) for all 16 channels then it should be possible to get the mapping you want just by interpreting the standard midi output of the Eigenharp with Bidule without having to change the actual Eigenharp setup.

The downside on this solution is that you can not simulateously press more than 16 buttons, otherwise the first channel would be reused although the first key was not released yet. I have no idea how to circumvent that beside changing the Eigenharp setup - which would presumably nonetheless be easier - if we knew how...
But at least it's something you can already do without having to wait for Eigenlabs.

Greetings,
NothanUmber

P.S.: Have a look at this script for how to reconfigure the key mapping in a way that each note is unique:
http://www.eigenlabs.com/wiki/Factory_Alpha_Setup_1_Keygroup_1_Guitar_Layout/
Instead of
couse 2/3/4/5 offset to 5 interval set
you would presumably have to write something like
course 2/3/4/5 offset to 22 interval set
so that no note appears on more than one course.


written by: dhjdhj

Mon, 13 Sep 2010 04:57:58 +0100 BST

NothanUmber,

Thank you for your detailed explanation, I really do appreciate your taking the time to write all that stuff up.

But I get it ---- I already understand how to write such things in Bidule, in Max, in PD (Max's dad!), and several other environments. But I don't want to deal with that stuff for my usage. Nor, I suspect, do many others who just want to PLAY the instrument. Apart from the significant effort it would take to make such a process work reliably all the time, I don't want to have to integrate Bidule or Max (or anything else) into my live environment.

It's just more stuff that can break in the middle of a performance. I want to use Apple MainStage to do all my routing --- it's extremely powerful, extremely trivial to set up and all I need is "same input = same output". I can trivially implement splits and layering, CC remapping and so on with MainStage.

And so, I want to adapt the Alpha to fit my existing environment --- I do not want adapt my environment (which has to do a lot of other stuff) to fit the Alpha.

I suspect that what I'm looking to do would take no more than 30 seconds for someone who knows the scripting language deeply to write down (at least for an example that I can then apply in general).

Now, from your other comments, I get the sense that you have some understanding of the scripting language. I still don't understand what
"course 2/3/4/5 offset to 22 interval set" MEANS (well, I can guess in this particular case from the context, but I certainly couldn't have figured it out myself) and I certainly can't figure out the syntax. I've looked around the wiki but haven't really found enough information to do what I want.

So perhaps you are able to give me an example of a couple of lines of script (or point me to an accurate example) that could implement my pseudo code which I can then expand/generalize to configure the alpha as follows

key[colNumber, rowNumber].NoteNumber =
key[colNumber, rowNumber].MIDIChannel =
key[colNumber, rowNumber].MIDIPort =
key[colNumber, rowNumber].ZaxisEventType = ControlChange
key[colNumber, rowNumber].YaxisEventType = PitchWheel
key[colNumber, rowNumber].XaxisEventType = ControlChange

Obviously, other event types could be Aftertouch (MonoPressure), PolyPressure, NOTHING, and so forth.

Ideally, I'd like to use all 24 rows of keys and so the mode key stuff could be moved so they're on that separate percussion column at the bottom.

With that information, I can create a trivial program in Python or Ruby or whatever that will generate a complete script to cover all keys and indeed any variations that I want.

By the way, the guitar layout mapping was provided by Sam (thanks again, by the way, it's wonderful) following my request for that tuning and it has already had a HUGE impact for me....I just need that extra little bit (grin) of info to get from 70% to 100%

Cheers,
D


written by: NothanUmber

Mon, 13 Sep 2010 19:33:14 +0100 BST

Sorry, I can't help you with EigenD scripting, my last attempts into this direction were not too successful: I tried to modify the default setup of the Pico so that aftertouch is sent via midi out in addition to note on velocities for key pressure). Unfortunately there is nearly no info about vital components (e.g. the plumber) and the connection between the components in the default setups.
(The "intuitive approach" failed: I tried to connect the pressure output of scaler 8 or recorder 8 that are mentioned in the Pico setup description to the pressure input of midi controller 1 but always got "plumber: incompatible" messages...)

So presumably all we can do atm. is what the support suggested to me: wait for the workbench.


written by: dhjdhj

Wed, 15 Sep 2010 14:08:37 +0100 BST

Well, I ended up (reluctantly) doing some preprocessing with Max but I really need to figure out how to control which MIDI channel is used for particular keys.....I've run into a playing problem where sometimes pitch information isn't being sent if I'm holding down some other keys and then play a new key --- not sure if this is a bug in Eigenharp or something else, but it's getting in my way.


written by: aaronw

Wed, 15 Sep 2010 15:49:03 +0100 BST

Hi dhjdhj,

Can you please log a bug report re your last post? We will be able to tell whether it is a problem with EigenD or not from this.

Regards

Aaron
Customer Services


written by: dhjdhj

Wed, 15 Sep 2010 16:27:20 +0100 BST

Aaron, I don't KNOW if it is a bug at this point --- it may very well be working as designed, simply not what I'm expecting ---- it's very difficult to determine this without decent documentation that explains how it is SUPPOSED to work and so I can try different configurations, etc.

I don't particularly like to report bugs where I haven't yet convinced myself there's a bug....if I do that too often, I won't get taken seriously when I have real problems.


written by: aaronw

Wed, 15 Sep 2010 16:52:04 +0100 BST

Hi dhjdhj,

Even if you have a suspicion that there it is a bug it is always worth sending a report through. Every report is taken seriously, logged, analysed and prioritised - they don't just go into the ether.

As EigenD has developed over the past year so has our documentation, notably with the addition of the Wiki. This will continue and with particular reference to the upcoming releases of Stage and Workbench.

Even if you don't think this problem is a bug please do log a report - it can do no harm!

Regard

Aaron
Customer Services





written by: Lowdene

Wed, 15 Sep 2010 21:43:21 +0100 BST

Aaron

Does your reply mean that the Wiki will remain the main form of documentation? That's disappointing to me. Maybe it seems very old fashioned and not in keeping with the idea of self-directed exploration, but at some point I would like some manuals (it is a very small minority of companies in this industry that don't produce them and maybe there's a reason for that). I really don't like the Wiki format and hate the idea I have to go on-line to get information. It would be nice to have the choice how we access the information we meed.

By the way, what is Stage that you refer to in your posting? I'm curious how am I meant to have a clue about what is in your development pipeline. Perhaps I need to read every page of the Wiki and every posting on the forum to stay in tune, but I'd prefer not to have to do this.

So could we please have email notifications of new software updates and other developments?.

Regards

Nick


written by: geert

Wed, 15 Sep 2010 22:04:33 +0100 BST

Hi dhjdhj,

Just checking, you have the audio units or midi outs set to the polyphonic MIDI channel selection I think. If you only want to use one channel for an instrument, you can go to the advanced configuration for it and select the MIDI channel you want. You can find detailed information on page 16 of the Alpha Factory Setup guide for instance.

Take care,

Geert
Eigenlabs Software Department


written by: dhjdhj

Thu, 16 Sep 2010 00:00:15 +0100 BST

It is extremely disappointing to me too, exacerbated by the fact that there's barely any useful stuff there. I'm a huge fan of wikis as a reference mechanism (i.e, one is looking for information about a specific entity) but it doesn't replace a decent linear text book where concepts are introduced in the appropriate order.

Lowdene said:
Aaron

Does your reply mean that the Wiki will remain the main form of documentation? That's disappointing to me. Maybe it seems very old fashioned and not in keeping with the idea of self-directed exploration


written by: dhjdhj

Thu, 16 Sep 2010 00:04:31 +0100 BST

I don't think that's a relevant factor ---- MainStage (and Max for this particular song) are configured to handle data arriving on any MIDI channel and remap it appropriately. Generally, the only reason I use different MIDI channels for the same instrument is when I need to deal with splits and MIDI note numbers overlap so preventing me from distinguishing keys.

Which is why I started this thread in the first place. Why can't someone at Eigenlabs not just provide the basic information that I (and indeed several others that I know of at this point) need so I can do my own configuration --- it can't be that hard.

geert said:
Hi dhjdhj,

Just checking, you have the audio units or midi outs set to the polyphonic MIDI channel selection I think. If you only want to use one channel for an instrument, you can go to the advanced configuration for it and select the MIDI channel you want. You can find detailed information on page 16 of the Alpha Factory Setup guide for instance.

Take care,

Geert
Eigenlabs Software Department


written by: dhjdhj

Thu, 16 Sep 2010 06:14:44 +0100 BST

Geert, turns out you were on to something. I've realized that the problem I'm having is in fact due to all keys being on the same midi channel, even though I'm using a Max patch to route different keys to different channel strips in mainstage. It looks like if you play multiple keys on the same midi channel, the alpha only seems to translate pitch information from the first key. If you vibrate other keys, they don't seem to send pitch data out. I do not know whether this is a bug or by design or whether it is configurable.

In any case, it highlights the underlying issue which is the ability to specify what output data comes from each key.



Please log in to join the discussions