Hey guys wasn’t sure where this fits so making new topic.
I managed to get hold of Pi4 and planning to use it as sequencer with ORCΛ ideally adding MIDI din outs to 1) interface with Buchla 225e and 2) via i2C with ER301.
Question here @okyeron@TheTechnobear have you possibly tried sending MIDI via i2C? I am looking at options of running Pi4 with Hyperpixel screen which has the GPIO extension i2C interface. Planning to use Pd and @neauoire ORCΛ but wonder if its possible at all and if I’m missing something totally obvious or basic here…
I see @scanner_darkly was exploring that with Teletype but here it is slightly different issue/hardware and wonder if you managed to send it from Teletype to Machinedrum?
I also found @Drillionairepost on OD forum and experiments with Teensy
Ultimate sollution would be to link to my Buchla 225e/ Machinedrum so need MIDI din.
Here are some experiments. But I’m keen to skip the laptop with interface here. Wonder if you have any ideas? Any thoughts much appreciated.
(Discourse ate my longer reply, so here’s a do over).
Important thing to note - MIDI and i2c are two very different things. There is no way of “sending MIDI via i2C”
For MIDI you just need a MIDI-DIN solution - that could be a USBMIDI device or something wired directly to the Pi’s GPIOs.
For i2c there’s not really a “ready to use” solution for sending commands from a Pi to the ER301. You’d need to create that (using python or something perhaps).
Or… perhaps ORCΛ could be hacked to add a send i2c operator to use with the ER301 (or other devices).
I’m pretty sure if someone sent me or @neauoire an ER301 to hack on, we could come up with something
Same here @neauoire trying to push my internal tech boundaries
@okyeron really good idea about i2c operator in ORCΛ! Think it would be ace! Seriously tho I was thinking of dealing with it in Pure Data or as you say Python. I think there might be externals that can do it.
I know its different protocol I’m just trying to think of ways of using it to send MIDI data as there are outputs on Pi. Ideally, I don’t want to add another MIDI box to link Pi with other gear. Worst case scenario Pi sound would sort it out, but I won’t be able to use the screen as it takes GPIO ports. https://blokas.io/pisound/docs/Specs/
not sure if you can multi them
Also, there is not many USB MIDI boxes that can talk to Raspberry PI or Linux. Idea is to streamline it and make it in small raspberry pi box.
The i2c and ER301 communication will be easier once crow module is out too.
if you use I2C for midi you are going to end up using something as a bridge… e.g. something like an arduino.
however I think the issue is more the software on the rPI ,
since it will have to speak ‘i2c’ (and how you chose to encode midi over it)
OR you write a small alsa app that exposes a virtual midi port that then does that mapping for you.
(then any midi enabled app can use this connection)
i.e. we end up with
-----------RPI-------------------------- ------arduino---
PD -> virtual midi -> alsa midi-2-i2c app -i2c-> i2c-2-midi sketch --> usb or midi din output
but all seems like a faff, seeing as rPI has usb hub , and a USB->MIDI din cable is like $5-10
but perhaps im missing something?
Id only see i2c as perhaps preferable if I wanted to write my own custom protocol (*),
so Id want to write both ends of the comms and interface to apps thru an api
(*) main purpose, and Ive been considering this for one project recently, is either optimisation or due to existing protocols being inadequate for purpose.
(e.g. ive a use-case where midi does not have enough for my needs but OSC is a bit heavy)
From a hardware standpoint, MIDI is just a serial interface, set the correct baud rate (31250) and use the serial GPIO raspberry Pi pins, and as long as only 3.3v MIDI talks to the raspberry Pi, everything will just work. It wouldn’t be spec correct, you’d need an optocoupler and some resistors for that, but it should work. It’s not i2c, but it’s still using the built in GPIO. There are plenty of Arduino tutorials for this, which could easily be adapted for the raspberry Pi
still worth clarifying: are you specifically interested in MIDI specifically… or are you using that as shorthand for “note/trigger data and other metadata, the kind that MIDI encodes as continuous controllers or NRPNs”?
The protocol that Teletype communicates with over I2C uses much higher resolution numbers, for instance, and if you’re in control of ‘both ends’ (ie: you are responsible for firmware both ends, such as between a custom device and an Orca module you write)… there may be more appropriate choices. Similarly, saying ‘MIDI’ but not handling CCs on the software end feels like it sells MIDI short.
My other key note about I2C is that it is absolutely not designed to be hot-plugged - you’ll at the least crash something if you do that. It’s designed to be permanently connected inside circuits; monome popularised it as a ‘bus’ that would still be permanently connected inside a case. MIDI connectors and electronic specs are super-robust, and you can yank and replug them simply. The stereo jack plug on 16n was a compromise: it’s reasonably secure, and works well as a connection, but jacks encourage hot-plugging which just isn’t possible.
Hey thanks for insightful comments. You are correct and I should have been more precise. I meant MIDI notes, and CC tho in my case studies (Machinedrum and 225e) notes and triggers/ CC will be enough.
I wasn’t aware of i2C not being hot-plugged as it seems to be used that way with Buchla 222e or 16n or ER301-teletype tho latter ones is more in beta/ development as I understand. Saying that practically I would plug that in/out before and after the gig.
thanks @TheTechnobear@okyeron yes I need to still try midi interfaces with RPI. I tested USB to MIDI adapter and it wasn’t working even with Mac. Need more tests here. I have Elektron TM-1 will see if that works. If thats the case then yeah its much easier solution.
As for i2c that was idea to control ER301 specifically and with Raspberry PI. Either with Pure Data or ORCA. Would be neat to access it with one cable. This is kind of separate issue and indeed might need more work and time then I have. Using Norns might be a solution here? or extension module? but then not sure what is the state of running pure data on it at the moment?
Does Er301 have native support for i2c?
Published protocol details?
If so would be easier enough to then knock up PD external for its i2c protocol.
Note sure I follow what you think norms adds to the mix - i2c is well supported on rPI , adding another box (generally) tends to just complicate matters - more points of failure etc
trust me, it is not hot-plugged on any of those things. If you get a 16n, you’ll find the legend DO NOT HOT PLUG by the I2C jack. This is not because they are “in development”; it’s because the connection bus just doesn’t support it.
The norns software (and hardware) do not support i2c communication to other devices - so no, norns is not a solution here. (because of this I abandoned the idea of including i2c ports/headers on my Fates board - as it looked like it would be too difficult to support in the long run)
The crow module will have i2c capabilities and may be the swiss-army knife @koshi is looking for.
i think the easiest is to get Pi4 talk to MIDI using the suggestions in this thread. for er-301 you have several options:
use some MIDI to CV converter and er-301 CV inputs
add i2c support to Pi4 (monome i2c protocol is very simple, adding er-301 support should be trivial once you get the hardware working, protocol details here)
have something that can convert MIDI to monome i2c protocol - enigma (the device @okyeron and i are working on) could do this but it’s still in early prototype stage. or if you have 16n faderbank you could use it as a MIDI to i2c converter - it will convert either minijack MIDI or USB MIDI to er-301 or just friends i2c commands (firmware here: https://github.com/scanner-darkly/16n/tree/tom/firmware/_16n_faderbank_firmware)
this would be a pretty convoluted way to send MID from Pi4 - easier to just send it direct from Pi4, but for completeness sake i’ll mention that i did try adding MIDI support to teletype but wasn’t successful.