Multipass - a framework for developing firmwares for monome eurorack modules

The latest beta in the Ansible thread is capable of switching Ansible to I2C leader mode, which is intended to let you use Ansible apps like Kria to control another module over I2C. TXo works pretty well, ER-301 I think mostly works, and the Just Friends implementation isn’t correct because I wrote it with a very limited understanding of Just Friends / Just Type. I’d like to work on this some more soon.

This was all done based off the Ansible firmware, which does not use multipass. It should be possible to get some or all Ansible apps to work with multipass, in which case it would be possible to run them on Teletype, but someone would need to port them. You also would also have to reflash the Teletype firmware to switch between Teletype’s normal functionality and “multipass Kria”.

Note also that whatever module you use as an I2C leader, some module has to be supplying pull-ups. Teletype and Crow can do this but Ansible and the Trilogy modules cannot by themselves.

3 Likes

Ooookay, this is kind of what I thought. I was under the impression that possibly the advent of the multipass framework you have provided might have resulted in a type of agnosticism within these different applications and firmwares.

I figure there are other clever ways I could achieve said results, such as using your ‘simple example) of translating midi to cv or i2c with something like the ww, kria and meadowphysics midi apps found across VCV and Norns. Or I could just get the dang ansible module as well! :man_shrugging:

But I love where the multipass opportunities might take the community. Thanks for that response!

1 Like

Okay, thanks for the clear answer on this. It all makes sense. I like to know the current status of all my gear can do. I appreciate the info!

pushed a couple of small changes - added a function to check if a clock input is present and increased the number of presets to 16.

white whale and meadophysics have a dedicated clock input, so that’s straighforward. for ansible, trigger input 1 is used as a clock input, and trigger input 2 is available as gate 0. this is different on teletype: no clock input but you have 8 gate inputs 0…7.

for presets i will need to figure out a way to make it configurable for each app, since the number of presets available depends on the app itself and how big its preset data is, so this is just a temporary change to allow for more presets.

2 Likes

I am unfamiliar with the UART trace/debugging mentioned here. Can anyone please point to some details on how to use it or some documentation that may exist? Thanks!

Running into more cases where my coding might benefit from more detailed logs than just printing some info on the teletype screen :slight_smile:.

check out this thread: Trilogy uart header

and some info here: Tips and info on programming a firmware for Ansible

1 Like

Thanks, mate! That helps a lot :slight_smile:.

1 Like

Does Ansible or any other monome module come with the UART header populated? One of the threads you linked to seemed to indicate that, but I am not able to see any pictures in the interwebs with populated headers.

I am worried that I might goof up my soldering and make contact between the points since the UART header is not a through hole mount on Teletype etc.

If you ask when you buy a module direct then Brian would probably populate the header for you. But it’s an easy soldering job, even for a shaky-handed novice like me. Get a right-angle pin header like this or this, lots of options, the important thing is you want the side with the bend in the header to be about the length of the pad and the straight side to be long enough for the FTDI cable headers.

Hold the side with the right-angle bend on the pads on the board and tack one pin down with solder. The pads are already silvered so you don’t need much if any to get a pin to stay in place. If you didn’t get it aligned quite right, reflow it. Then you can do the rest of the pins without having to handle 3 things. Spacing on these is pretty generous, don’t think I’ve bridged any pins in the 3 modules I’ve done but it should be easy to fix them with wick or just your iron if that happens.

2 Likes

Thank you for the detailed advice! That gives me confidence. Let me try it out with my Teletype itself then :slight_smile:.

This should also work, correct?

Yeah, this looks good. I have mostly preferred to have right-angled headers sticking out the back of the module (and found them a little easier to come by) rather than sticking out to the side, depends on the placement you want for the module in the case and your FTDI cable.

1 Like

Makes sense. Thank you!

Ordered the header as well as the FTDI cable from Digikey. Hopefully I will be up and running by next weekend :slight_smile:.

Just now remembered: where is the reset switch on the board and what header to use for that one? I figured I will also solder in the reset option to avoid turning off and on the whole rack every time during dev :slight_smile:

1 Like

updated multipass:

  • fix for teletype front panel button press not working properly
  • fix for front panel button hold not working reliably
  • fix for grid sometimes not initializing properly
9 Likes

@scanner_darkly, @tehn, do we know what the monome modules are capable of as far as CV shapes/rates/slewing/pwm, etc… ? wondering about sine waves, audio rate oscillation, wavetable capability, memory size… is more technical info available outside of the source code? Starting to mess with my earthsea and wondering how far I could theoretically push it and where to start looking, any info would be helpful.

for memory usage see this excellent breakdown from @sam: https://samdoshi.com/post/2016/10/avr32-ram-and-rom-usage/

for audio rate generation you are limited by the timer resolution which is 1ms, so the highest frequency you could achieve is 500Hz. from what i can tell it’s set here: https://github.com/monome/libavr32/blob/master/src/init_common.c#L52 and could be possibly changed to something smaller - i’m not sure how safe it is though!. i really ought to give it a try though, i’m curious.

also since monome modules only generate positive CV you will have to shift output down for audio stuff.

you will also likely run into timing issues since all events are processed by the same queue. so if you, say, use i2c (which has higher priority than timer interrupts) you might get audio glitches whenever there is an i2c communication.

with this in mind it might still be interesting to try and experiment! and CV slewing and envelopes should be possible. teletype supports slewing CVs and uses 6ms rate to update them, so a simpler app that has less things to process should definitely be fine.

1 Like

Thanks so much for the additional info, definitely going to spend some time seeing how far I can push these excellent devices.

1 Like

Apologies if this was covered somewhere else: has anybody taken a crack at multipass kria? Would love to run it on my old Meadowphysics and free up ansible for arc stuff!

2 Likes

not as far as i know! if somebody wants to take a dig, i’ll be happy to help.