TheTechnobear / Orac

Orac : virtual modular synth
GNU General Public License v3.0
355 stars 27 forks source link

new hardware integration #15

Closed maks closed 3 years ago

maks commented 3 years ago

Hi @TheTechnobear, Thank you for this wonderful project!

I've been tinkering around with doing something similar using an Akai Fire.

I've so far made some progress in "porting" an existing Flutter apps demo simple drum sequencer demo app to use the Fire's inputs and transport controls for user input/output along with adapting existing libraries for small oleds to draw onto the Fire's mono oled screen to do a basic menuing system.

But having thought about it some more and played a bit with ORAC (and learned some more PD) I realise that most of the functionality I'm after is already nicely implemented in ORAC so if I can get ORAC working with the Fire, I could more focus on what I actually want to do: learn about electronic music making by using existing modules and making my own custom modules. My final goal is to try to get a rpi zero inside the Fire along with a battery to make ti fully self contained but for now I'm just running my experiments off a laptop and rpi4.

So my question in regards to getting ORAC working well with the Fire is really around the best way to integrate its OLED screen, which happens to be 128x64 just like the organelle and making use of its button lights, as both the OLED and button lights are controlled via custom sysex's (though luckily they were already all mapped by the hard work of Paul Curtis.

  1. OLED screen: I've had quick looks through the code you did for Norns port and also have seen your video about the Push 2 port of Orac but I'm not certain how ORAC access the screens on these devices? Do you just write to a linux framebuffer that they expose? Given the unusual way that the Fire's OLED needs to be accessed, this is my main sticking point in figuring out how to get ORAC working nicely with the Fire, so any pointers you could give would be most appreciated.

  2. Button LEDs: I'm guessing for this I could just make custom patches for things like sequencers for the pad array as I guess its really just a smaller version of the pad array that something like the Push 2 has?

  3. Buttons & Controls: Given that the Fire is midi class compliant, I could just midi map some buttons, but I would really like to use a lot of the extra controls (and that they have coloured LEDs) available here I guess I would need to tie in with the existing code you have to make use of say the organelle , pisound or norns button & encoder dials hardware?

Finally I'm not sure if this hardware integration could be something that I could contribute for you to upstream in your repo (my preference) or to disruptive to your existing code and I would need to keep as a fork?

Sorry for the rather long winded issue, if you could provide any guidance on how to go about the integration I would be very grateful as I'd really love to be able to use Orac as a platform for experimenting on my Fire.

maks commented 3 years ago

Looking through your posts and repos, looks like Nulite has some familiar looking drawing functions, so could I perhaps pretend that the FIre is like a RPI-shield based Norn and just implement the NuiDevice class for the Fire? (I'm guessing I could just get cairo to just draw to a plain in-memory buffer instead of a FB device and then send that out to the Fire?)

TheTechnobear commented 3 years ago

I tried a rPI zero for another projct, unfortunately it proved to not be powerful enough. the issue simply was you need a dedicated core for audio, and that cannot be doing io for things like the oled screen.

btw: I also had a similar issue with the BeagleBone Black, which is a pretty beefy single core board.

contributions - for sure, Id love to include/incorporate support for other boards. though, of course, I cannot really support boards I do not own...

one thing I perhaps mention... Ive noticed its quite difficult to support the rPI community. the reason is both technical and organisational.

on a technical front - every one has different hardware, uses different distributions. on the organisational side - there is no common community, or forum... its all spread out. there are a lot of 'tinkers'... that due to the above have to ask lots of questions to get it running on their rPI - then frankly, I think get bored of it and move on ... I think they are more just interested in the tech, than making music.

Im not trying to be 'mean' here... Id love the rPI to be a succesful platform for orac. but the reality is, whilst it has consumed quite a bit of my 'support' time, I dont know anyone that uses it day to day. contrast that to my release on the Organelle - where I know lots of people that use Orac alot, and have now since day #1.

this is not technical really, its just I guess. musicians buy the Organelle, where as tech people buy rPI?

none of this is meant to disuade you, rather just to let you know my observations.