EigenLite Development Updates

EDIT: I’ve updated this topic to be for notifying of future updates to EigenLite, rather than having separate topics.

Ive been doing a bit of work on EigenLite for a new project Ive been working on :see_no_evil:

the changes should make development much simpler for a lot of environments/projects.

status: currently only Mac/Arm support (others soon )

changes :

  • Embedded firmware support - use FWR_Embedded
  • Embedded picodecoder (via static library)
  • when using dynamic libs by default will link to proper binary version… not dummy.
  • support for dummy picolibs (static and dynamic) via USE_DUMMY_PICO (default false)
  • support for dynamic and static decoder via USE_DYNAMIC (default false)
  • add vscode support (I’m generally moving from CLion → VSCode), note CMake is unchanged.

this means EigenLite can be used as a self-contained library with no external file dependancies i.e so no ihx or shared libraries.

to do : add other platform/architectures.
basically, I just need to compile static picodecoder libs for other platforms/architectures, but the project work is done to do this.

other notes:
you will find the EigenLite/resources has all been shifted around a bit, to help these changes, in particular automatic linking to the proper decoder.
(some further changes may be necessary)

Usage in other projects:

no code changes required, unless you want to use FWR_Embedded.
changes on how I link etc, can be seen in eigenapitest project.

Essentially, Id like to test this new version in other projects and with other devices , as Ive just done quick tests with eigentestapi and pico so far, once I know its working for other harps and other projects, then I will compile up other platforms (well at least macOS x86_64 :))


a quick heads up…

as part of my ‘new project’ , I doing more work on EigenLite, and tidying it up and extending it.

these updates will become EigenLite 1.0
as a ‘major’ update, it will feature (incompatible) changes to the api.
this means code dependent on the api will need to be updated to reflect these changes.

however, the changes will be straightforward to implement in clients.
as, the fundamentals are still the same e.g. poll/callback.

main incompatible changes to be aware of:

  • back to basics
    I designed the api to only use basic c++ types, but some things like std::string have crept in, these will be removed.
  • device callback will be radically changed… and renamed to ‘connected’
    its not going to feature device info e.g. rows/cols… as these were complete nonsense for tau, rather just be a ‘connection’ status.

the new features, I’ll announce on release :wink:

1.0 will first be released on a ‘dev’ branch of the repo… so you will shortly be able to see the changes to eigenapi.h. and test in a kind of ‘early access’

it’ll then be release to master, once Im happy with testing… and likely once ive built both arm64 and x86_64 versions for macOS. (see 0.6 update)

obviously 1.0 will deprecate previous 0.x versions.

of course, its a versioned repo… so you fine to continue using previous versions, until you are ready to upgrade to 1.0


Both EigenLite updates AND new Eigenharp-related project from you is super exciting news! :smiley: Not sure when I will next spend some time on ECMapper, but the first thing I’ll do when I have the chance is of course to test with new EigenLite.

In the meantime, since I’m on an Intel mac, let me know if there is anything specific you want me to test regarding that (or otherwise, of course).


cool, I’ll try to get an intel build asap… then when you have time you try that.

though, will focus on the new EigenLite 1.0…
that should be pretty simple for you to change EC Mapper too… its likely on two small changes.
( if you have any doubts, I could always push the changes to your repo)

edit: done… and as above, it will be only on 1.0 , see this post


as per this post , I’ve been updating EigenLite in preparation for release of Meta Morph.

EigenLite 1.0 is a major improvement over 0.x, offering a lot more flexibility to application developers, and also bringing better compatibility with the behaviour we expect to see in EigenD.

It’s available in the dev branch now, and Id advise all developers to move to it.
It’ll become the official release (master branch) on (or before) release of Meta Morph.

End Users can help the testing by getting involved in the Meta Morph Early Access.

1 Like