while libavr32 does abstract the hardware layer, some of the function calls are still pretty hardware specific (like taking a hardware pin number as a parameter, for instance), and you still have to implement quite a bit of low level plumbing. i’ve been working on creating a higher level abstraction that takes care of that, and the main goal is pretty much to make developing new alt firmwares easier.
some of the features:
-
providing the ability to configure voices and use functions to create notes which will then be automatically translated into a proper hardware calls - like updating CV outputs, or sending appropriate i2c commands to just friends / telex / er-301
-
easier interfacing with grid/arc
-
easier way to set up timed events
-
taking care of parsing HID events and translating them into more meaningful events like keyboard press etc (other HID devices will also be supported - shnth already is, and hoping to add PS3 controller support at some point)
this should give you an idea of what you can do with it:
another benefit of using it - it also abstracts away the hardware differences between different modules, so you could write a firmware once and be able to build and run it on any of the monome modules. it already supports while whale, earthsea, meadowphysics and ansible. for teletype i have it working as well (just need to commit it to the repo, will try to do it this weekend), i just need to add screen functions.
i was also planning to add support for some common things, like preset management and USB stick support - still hoping to do this, just not enough time.
take a look, the repo is here: https://github.com/scanner-darkly/multipass i need to add documentation, but hopefully should be pretty straight forward to start. polyearthsea firmware is using this already, so you could use it as an example of how to set it up, and i’ll be happy to help with any questions.
@sliderule - nice to see you again!