Erae API - feature requests

do you have ideas for how the syesx API for the Erae Touch could be improved?

It’d be great to share idea amongst the community, and hopefully useful feedback for @embodme :slight_smile:

please share your ideas here, and also send them to suppport@embodme.com

drawing primitives

the current api is really good, and I like the approach it takes with not only low level ‘pixel’ functions, but also the high level functions like drawrectangle and drawImage.

I would love a couple more basic drawing primitives and some slight improvements

  • draw rectangle
    this currently draws a filled rectangle.
    perhaps it could be changed to take two colours, a border colour and a fill colour.
    this way we can draw unfilled rectangles (well a fill colour of black)
    very useful for drawing things like ‘pads’
    params: zone, x, y, w , h , border colour, fill colour

  • draw circle
    an approximation with border/fill colours
    params: zone, x, y, diameter, border colour, fill colour

  • draw line
    params: zone, x1, y1, x2, y2, colour

  • draw text
    this is pretty limited, single font as used by current firmware on things like scale/midi window
    (it be nice to have big/small font, but I don’t think its practical)
    params: zone, x, y, “some text”

the basic premise is with more drawing primitives, its easier for devs - but more importantly we send less data to perform a particular task than using draw pixel or draw image.

I think most of the above is similar to functions already used in the main firmware, to draw things like pads and regions

2 Likes

we have seen with the drawing api, that you can use it with very simple sysex (excluding drawimage), you could do it without a programming language quite easily.

but the fingerstream really requires a programming language, partly because of 7->8 bit conversion (bit-icing) but also because you also need to track things quite carefully.

so this FR is an idea to allow the api to be used at a bit higher level and still get touch reponse

midi regions

the idea here, is that the api allows regions to be defined (rectangles) and then assign a midi message to this - probably 3 such messages being useful.

  • assign Touch on/off to note on/off
  • slide x to cc
  • slide y to cc

the idea is not to have ‘every possibility’ but just enough that a dev could use an api zone with some simple sysex to draw (already possible) and to define some midi messages to be defined for areas on the zone

another note:
I guess we could just do this ‘per zone’ , rather than regions, however, I don’t think we have enough zones for this to scale well… also it’ll make ERAE Lab layouts overlay complicated.

Reading this just now… What do you mean by « track things carefully » ?

nearly 2 years later… Ive no idea :laughing:

I keep meaning to get back to this, but had other projects… so never happens.

k, so your best bet if you want to understand the api is look at the docs, but also Ive created an api which decodes it nicely, which is easier.
(assuming you are using C++)

probably what I was trying to emphasize is …
the api is expecting to be processed in a full language…its not ‘human readable’

you can (and @keymanpal did) just about send plain sysex to draw pixels.

but the way the finger stream (touches) are done is by encoding floating point numbers into 7bit sysex binary, and that requires various bit shifting etc.
also the same steam, has other messages in it.
add to that the requirement to create checksums, and its not something you can do without some code :wink:

put another way, you could not just use a simple sysex processor, and extract bits of sysex message to get the touch data you’d want.

btw: I did document this all quite well in my api.
so if you wanted, you could probably port this fairly easily (assuming some coding knowledge) to something like Lua or Python, if you are not into C++.

edit: just a note… this was all for firmware 1.1, I assume/hope it still works - but not tested.

thanks for your reply, appreciated. Friend and I are working with Max ATM. Will have a deeper look at your docs

well its doable in max… as it has the bitwise operators etc needed.
(but unlikely to be much fun, but perhaps thats my natural bias against max/pd for this kind of work)

if you’re not familiar with C++, then it might be as easy to just to use the spec that Embodme published.

latest spec seems to be here, so id use that… just in case its altered since I last looked at it… though looks like it has not.

1 Like

Last thing I read that could be considered a status update (from about three weeks ago) - not related to the API but to another feature request:

"We just had to delay some of our development to be able to focus on the hardware but this is still definitely in our priority list.

Just to keep you posted we are trying to get funding to expand our development plan and gros the team to fill all those unanswered features requests and get the next thing out.

But it’s not an easy thing to get money in the music industry…"

1 Like