Events from Pico keys do not return to origin

EigenD 2.1.7-community-mac on Mac OSX 10.14.6 (Mojave)
I am talking about MIDI output from EigenD.

In [MIDI converter] I’ve set Roll for Pico keys to pitchbend
and told it to return to 64 (parameter Bounds, Base 50%):

But it does not return. Here is a list of remaining pitchbend values after I “rolled” and released a couple of Pico keys:
45, 91, 50, 92, 49, 87, 50, 82, 55, 83, 60, 87, 47, 94, 51, 80.
The differences to 64 are quite big and of course audible with some sounds and a large pitchbend range.

It does not go better with data decimation.
It is almost the same with Yaw.
Only Pressure is almost perfect.

On Yaw I have Modulation (CC 1) and the origin is 0. But I see the same behavior, so the 50% origin of pitchbend is not the issue.

I understand that the hardware keys cannot work perfectly in this regard and that this was one reason to implement the “Return to origin” parameter. However, it does not seem to work properly with my EigenD.

What could be the cause for high remaining values I have after releasing a key? Probably the MIDI output? Or did I miss a setting?

Taking a look… what setup are you using? is this happening with the standard pico setup? with each and every key?
Are you using only 1 MIDI Ch? or MPE?

This is my reading using “Always Return to origin” parameter. You can see the last message IS Pitch Whell 0.

“what setup”
I use my own setup with Poly or MPE, it’s rather minimal and made from scratch. Pico Standard Setup (default channel 1) is a little better, end values are +/- 15 away from 64. Pico Standard Setup with Poly or MPE does not work as it is, I have to configure Roll for Pitchwheel. But it is unusable, end values between 10 and over 100 are quite common.
Looks like MIDI speed, no? I get the same via an USB hub and with a direct connection (MBP mid 2012).

“with each and every key?”
Yes.

“Are you using only 1 MIDI Ch? or MPE?”
Always Poly or MPE.

This is my reading …
Mine is very different. I often see end values in the thousands.
Sorry for the long readout:
19:11:16.432 From Eigenlabs 1 Pitch Wheel 11 7
19:11:16.432 From Eigenlabs 1 Pitch Wheel 11 -1
19:11:16.442 From Eigenlabs 1 Pitch Wheel 11 -1
19:11:16.442 From Eigenlabs 1 Pitch Wheel 11 15
19:11:16.442 From Eigenlabs 1 Pitch Wheel 11 39
19:11:16.452 From Eigenlabs 1 Pitch Wheel 11 111
19:11:16.452 From Eigenlabs 1 Pitch Wheel 11 143
19:11:16.452 From Eigenlabs 1 Pitch Wheel 11 159
19:11:16.462 From Eigenlabs 1 Pitch Wheel 11 119 <----
19:11:16.983 From Eigenlabs 1 Pitch Wheel 11 -1
19:11:16.992 From Eigenlabs 1 Pitch Wheel 15 519
19:11:16.992 From Eigenlabs 1 Pitch Wheel 15 -1
19:11:17.002 From Eigenlabs 1 Pitch Wheel 15 599
19:11:17.002 From Eigenlabs 1 Pitch Wheel 15 575
19:11:17.002 From Eigenlabs 1 Pitch Wheel 15 599
19:11:17.012 From Eigenlabs 1 Pitch Wheel 15 543
19:11:17.012 From Eigenlabs 1 Pitch Wheel 15 519
19:11:17.012 From Eigenlabs 1 Pitch Wheel 15 487
19:11:17.022 From Eigenlabs 1 Pitch Wheel 15 343
19:11:17.032 From Eigenlabs 1 Pitch Wheel 15 207
19:11:17.042 From Eigenlabs 1 Pitch Wheel 15 -73
19:11:17.042 From Eigenlabs 1 Pitch Wheel 15 -49
19:11:17.042 From Eigenlabs 1 Pitch Wheel 15 -73
19:11:17.052 From Eigenlabs 1 Pitch Wheel 15 -73
19:11:17.052 From Eigenlabs 1 Pitch Wheel 15 -25
19:11:17.062 From Eigenlabs 1 Pitch Wheel 15 39
19:11:17.072 From Eigenlabs 1 Pitch Wheel 15 -1
19:11:17.082 From Eigenlabs 1 Pitch Wheel 15 127
19:11:17.082 From Eigenlabs 1 Pitch Wheel 15 151
19:11:17.092 From Eigenlabs 1 Pitch Wheel 15 199
19:11:17.092 From Eigenlabs 1 Pitch Wheel 15 223
19:11:17.092 From Eigenlabs 1 Pitch Wheel 15 215
19:11:17.092 From Eigenlabs 1 Pitch Wheel 15 239
19:11:17.102 From Eigenlabs 1 Pitch Wheel 15 311
19:11:17.112 From Eigenlabs 1 Pitch Wheel 15 351
19:11:17.122 From Eigenlabs 1 Pitch Wheel 15 535
19:11:17.132 From Eigenlabs 1 Pitch Wheel 15 631
19:11:17.132 From Eigenlabs 1 Pitch Wheel 15 655
19:11:17.142 From Eigenlabs 1 Pitch Wheel 15 871
19:11:17.152 From Eigenlabs 1 Pitch Wheel 15 975
19:11:17.162 From Eigenlabs 1 Pitch Wheel 15 919
19:11:17.162 From Eigenlabs 1 Pitch Wheel 15 895
19:11:17.182 From Eigenlabs 1 Pitch Wheel 15 911
19:11:17.192 From Eigenlabs 1 Pitch Wheel 15 1071
19:11:17.222 From Eigenlabs 1 Pitch Wheel 15 2055
19:11:17.232 From Eigenlabs 1 Pitch Wheel 15 2935
19:11:17.262 From Eigenlabs 1 Pitch Wheel 15 6975
19:11:17.272 From Eigenlabs 1 Pitch Wheel 15 8191
19:11:17.692 From Eigenlabs 1 Pitch Wheel 15 7567
19:11:17.692 From Eigenlabs 1 Pitch Wheel 15 7407
19:11:17.692 From Eigenlabs 1 Pitch Wheel 15 7279
19:11:17.692 From Eigenlabs 1 Pitch Wheel 15 7159
19:11:17.702 From Eigenlabs 1 Pitch Wheel 15 5279
19:11:17.712 From Eigenlabs 1 Pitch Wheel 15 3863
19:11:17.722 From Eigenlabs 1 Pitch Wheel 15 2119
19:11:17.722 From Eigenlabs 1 Pitch Wheel 15 2055
19:11:17.722 From Eigenlabs 1 Pitch Wheel 15 1983
19:11:17.722 From Eigenlabs 1 Pitch Wheel 15 1951
19:11:17.733 From Eigenlabs 1 Pitch Wheel 15 1207
19:11:17.733 From Eigenlabs 1 Pitch Wheel 15 1143
19:11:17.733 From Eigenlabs 1 Pitch Wheel 15 1119 <----
19:11:18.843 From Eigenlabs 1 Pitch Wheel 15 -1
19:11:18.852 From Eigenlabs 1 Pitch Wheel 16 863
19:11:18.862 From Eigenlabs 1 Pitch Wheel 16 1199
19:11:18.872 From Eigenlabs 1 Pitch Wheel 16 1591
19:11:18.902 From Eigenlabs 1 Pitch Wheel 16 3183
19:11:18.912 From Eigenlabs 1 Pitch Wheel 16 3551
19:11:18.922 From Eigenlabs 1 Pitch Wheel 16 5967
19:11:18.922 From Eigenlabs 1 Pitch Wheel 16 6095
19:11:18.922 From Eigenlabs 1 Pitch Wheel 16 6215
19:11:18.933 From Eigenlabs 1 Pitch Wheel 16 8175
19:11:18.933 From Eigenlabs 1 Pitch Wheel 16 8191
19:11:19.362 From Eigenlabs 1 Pitch Wheel 16 8159
19:11:19.372 From Eigenlabs 1 Pitch Wheel 16 3863
19:11:19.372 From Eigenlabs 1 Pitch Wheel 16 3903 <----
19:11:20.343 From Eigenlabs 1 Pitch Wheel 16 -1
19:11:20.352 From Eigenlabs 1 Pitch Wheel 4 719
19:11:20.352 From Eigenlabs 1 Pitch Wheel 4 -1
19:11:20.362 From Eigenlabs 1 Pitch Wheel 4 1231
19:11:20.362 From Eigenlabs 1 Pitch Wheel 4 1247
19:11:20.372 From Eigenlabs 1 Pitch Wheel 4 1503
19:11:20.372 From Eigenlabs 1 Pitch Wheel 4 1567
19:11:20.372 From Eigenlabs 1 Pitch Wheel 4 1543
19:11:20.382 From Eigenlabs 1 Pitch Wheel 4 1863
19:11:20.393 From Eigenlabs 1 Pitch Wheel 4 2055
19:11:20.422 From Eigenlabs 1 Pitch Wheel 4 3567
19:11:20.432 From Eigenlabs 1 Pitch Wheel 4 4207
19:11:20.452 From Eigenlabs 1 Pitch Wheel 4 7255
19:11:20.452 From Eigenlabs 1 Pitch Wheel 4 7383
19:11:20.452 From Eigenlabs 1 Pitch Wheel 4 7471
19:11:20.452 From Eigenlabs 1 Pitch Wheel 4 7559
19:11:20.462 From Eigenlabs 1 Pitch Wheel 4 8191
19:11:20.962 From Eigenlabs 1 Pitch Wheel 4 3719
19:11:20.962 From Eigenlabs 1 Pitch Wheel 4 3455 <----
19:11:21.782 From Eigenlabs 1 Pitch Wheel 4 -1
19:11:21.792 From Eigenlabs 1 Pitch Wheel 2 623
19:11:21.792 From Eigenlabs 1 Pitch Wheel 2 -1
19:11:21.802 From Eigenlabs 1 Pitch Wheel 2 919
19:11:21.802 From Eigenlabs 1 Pitch Wheel 2 943
19:11:21.802 From Eigenlabs 1 Pitch Wheel 2 967
19:11:21.812 From Eigenlabs 1 Pitch Wheel 2 1111
19:11:21.812 From Eigenlabs 1 Pitch Wheel 2 1135
19:11:21.812 From Eigenlabs 1 Pitch Wheel 2 1151
19:11:21.822 From Eigenlabs 1 Pitch Wheel 2 1383
19:11:21.832 From Eigenlabs 1 Pitch Wheel 2 1615
19:11:21.842 From Eigenlabs 1 Pitch Wheel 2 1991
19:11:21.842 From Eigenlabs 1 Pitch Wheel 2 2007
19:11:21.852 From Eigenlabs 1 Pitch Wheel 2 2279
19:11:21.862 From Eigenlabs 1 Pitch Wheel 2 2535
19:11:21.872 From Eigenlabs 1 Pitch Wheel 2 2823
19:11:21.882 From Eigenlabs 1 Pitch Wheel 2 3647
19:11:21.902 From Eigenlabs 1 Pitch Wheel 2 5327
19:11:21.912 From Eigenlabs 1 Pitch Wheel 2 6559
19:11:21.922 From Eigenlabs 1 Pitch Wheel 2 8191
19:11:22.432 From Eigenlabs 1 Pitch Wheel 2 8175
19:11:22.442 From Eigenlabs 1 Pitch Wheel 2 4199
19:11:22.442 From Eigenlabs 1 Pitch Wheel 2 4111
19:11:22.442 From Eigenlabs 1 Pitch Wheel 2 4015
19:11:22.442 From Eigenlabs 1 Pitch Wheel 2 3887
19:11:22.452 From Eigenlabs 1 Pitch Wheel 2 3447
19:11:22.452 From Eigenlabs 1 Pitch Wheel 2 3319
19:11:22.452 From Eigenlabs 1 Pitch Wheel 2 3191
19:11:22.452 From Eigenlabs 1 Pitch Wheel 2 3095
19:11:22.462 From Eigenlabs 1 Pitch Wheel 2 2143
19:11:22.472 From Eigenlabs 1 Pitch Wheel 2 1783 <----

Those -1 at the very end of the playing channel are strange. But I see them in Midi Monitor only, not in Max, where I receive the data.

I installed the Mac 64 Bit version. Was not better. Went back to 32 Bit and now the standard Pico setup with 1 channel and my own setup with 1 channel work perfectly. Something has changed.

But Poly and MPE still don’t work properly with this “return to origin”.

I decided to use only 1 MIDI channel with the Pico. It’s a shame, but for MPE I have the Seaboard anyway.

Some attention as to what “modes” is in use - 1 MIDI ch only or Poly, MPE…
and how all other messages are bind to that particular note/ch.

Using Poly, MPE you have to select also the Per note setting on the Control Scope
40

Think that’s the trick :wink: sorry for the waiting.
No need to instal other versions…

edit:
This is in poly

I used this per note setting all the time. But thank you for forcing me to try again. It does still not work with the MPE option, but it works with Poly. I don’t know the difference in data, but so far I’ve seen yet, Poly is good for me.

Back at Multichannel again :slight_smile:

1 Like

why are you putting the pitch wheel on roll on the mod matrix?
for normal use, should use ‘send pitchbend’

note: if you want to really use roll on pitchwheel in the mod matrix you need to disable ‘send pitchbend’.
and as Antonio pointed out, if you are using poly mode, you will want this to be set as ‘per note’ control scope

so from my quick test… (on experimental/basic midi setup)
the return to origin - works perfectly ok. (with roll=pitchwheel)
(my guess if its not for you, is that you have left ‘send pitchbend’ on as well, so your duplicating things.

the “send pitchbend” does not send reset to zero on note-off
(this is consistent across single channel, poly and mpe)

the reasons are quite simple:
although the eigenharps have sprung keys, when you release the key they can still be ‘off-centre’ - this is because they release the ‘note’ faster than they mechanical spring corrects the roll, and also at what pressure do you decide a note is on or off?!

so why not just send a pitchbend = 0 at note off?
because this generally is not what you want, imagine you have a full pitch bend active and you release, then you actually want the pitchbend to stay whilst the note is naturally decaying due to the release envelope… a sudden snap to 0 would sound dreadful.

I guess one could argue it could ‘glide slowly’ to zero , but thats pretty much a sound design choice - and so could be in the sound generator.
so it seems to make sense to just get the eigenharp to report its data ‘as is’ and let the sound engine make its choices.

I will say the specs for MPE are not clear on this… they pretty much say just report what the controller hardware is reporting (as we are in the case of PB)

I made did make a small exception to this in the case of pressure for MPE, where I always send 0 after the note off … even though the sensors are reporting non-zero. the reason i leaned this way for pressure was because once a note is off - by definition you no longer are touching the surface - so pressure must be zero… its a ‘quirk’ for it not to be. (this is not true of PB) … and I wanted (and use a lot) to make sure that you could use pressure to drive a VCA and not have to rely on ‘anding’ it with the gate signal.

1 Like

"why are you putting the pitch wheel on roll on the mod matrix?"
I have a problem with send pitchbend in the converter settings. This was always the case. It sends only -1 for Poly and MPE. It is permanently disabled and roll is set to “per note”.

I think doubling pitchbend by having send pitchbend on and additionally having pitchbend on roll (which may happen in MPE mode) is not a problem. I don’t see dup values coming out. Don’t know if there is an internal jam though.

Additional note:
Now, after I restarted EigenD a couple of times without changing anything, send pitchbend does not work at all. I will stick to pitchbend on roll. Furthermore, return to origin stopped to work. To be honest, I am a bit tired of tweaking this application over and over.

"(pitchbend) I guess one could argue it could ‘glide slowly’ to zero , but thats pretty much a sound design choice"
This is what I will do. One reason are the sudden jumps if pitchbend returns instantly from a high sticky value. I will make a function in the receiving Max application that optionally pulls pitchbend to 64 in an adjustable time or speed. And yes, I am partly in sound design and pulling pitchbend back during the release phase of a sound is sometimes desirable.

I don’t see the behavior your describing when roll is defined on the matrix
Nor is there any problem with pitchbend with mpe/poly - this is how 99% eigenharp players are using it.

But I’d really need to have a copy of your setup to see what’s going on, as none of it makes much sense.

Did you test this on the factory setups like experimental/midi basic ?

I’m confused that you are seeing different results form the rest of us.

Ps I’m on the latest community 64 bit release , but ive not had the issues you describe on any release - so I don’t believe version is relevant.

Btw: if your going to be manipulating the data in max, then I’d personally forget midi and use osc, it’s high definition and is sent in a more convenient format for processing.
I always use osc when I’m done inter-app comma for the eigenharp.

1 Like

"But I’d really need to have a copy of your setup to see what’s going on"
My current setup as download:
— (link and file removed) —
(made with 2.1.7-community 32 Bit)

MIDI output is Eigenlabs 1
The other one is parameter feedback to Max.

its the midi processor thats causing the issue…

what is probably happening is, the event stream is ending, and so the pitchbend 0 after the note-off is not always getting thru.

sorry, dont have time to figure out what your trying to do, and so why you need the filter.
generally the processor is used on inputs, as output you’d normally just configure the converter to just generate what you want - so no need to filter stuff out.

Edit: also return to origin was turned off , but that’s probably just on the version you sent me.

1 Like

Since I cannot remotely control midi converter’s matrix settings, I use the midi processor at the output to block (on demand) the events I don’t need. This reduces MIDI traffic. Not really necessary, can reduce the assignments in midi converter and make the rest in Max. I will start a new test without the midi processor.

Btw, I removed the download link in my post above and the file from the server. Don’t want that others download it and run into problems.

Well, I tried without the [midi processor] and the behavior was similar, would say, the same.

Thank you both anyway for support. I will do some more configurations but generally I can live with what I have.

Just for info:

Haven’t played much yet, but the combination Pico/Max is ready so far and seems to work well. Thank you for your help.

No instrument in EigenD, just MIDI. EigenD has two MIDI inputs and outputs. Max works as middleware between EigenD and software/hardware sound generators.

From Max I can select the events which the Pico should send (via [midi processor]), the note-mode (Channel, Poly, MPE), all EigenD scales plus custom scales, Octave and Tonic.

Still ToDo: MIDI input to Max to control some EigenD parameters by a controller or from a DAW (i.e. scale, octave).

All musical events received from EigenD can be blocked, or sent directly to Max MIDI outputs, or routed through a curve module before.

Pitchbend, “return to origin” and the Pico keys are still no good friends, I made an automatic reset for pitchbend. After a note-off and a pause, pitchbend glides back to the center value 64. Pause and return-time are adjustable, the whole function is channel-aware and works also with Poly and MPE.

I think this is all a Pico/MIDI player may need.

2 Likes