iOS apps for the board?

I was thinking of how fun it would be to create a touch interface for the Zrna board on an iPad or iPhone to program and/or control it when it’s running. In other words similar to the Axoloti or Adulus app but running a physical module that implements the patch. There is a Swift-protobuf implementation so I guess that a Swift client would not be too hard to create based on your existing Python code.

Then I realised it’s not practical on iOS (the best use case) because Apple don’t permit talking to the serial port unless a piece of external hardware is MFI certified.

I see people propose getting around this with Core Bluetooth. Maybe using a BT serial adapter for the usb port on the Zrna is a partial solution?

Or maybe a Raspberry Pi Zero W as it would be capable of a lot more and I guess could just run a minimal bit of code to bridge to USB over the serial port, but its another link in the chain to go wrong I guess.

I see this as mainly a mechanism for programming or controlling the board when its running rather than processing audio.

I’ll get one of your boards and will probably stick to running it via Python, but I went down this rabbit hole and wondered what you thought about this whole idea. I know you have written iOS apps.

1 Like

Hey @blackhill. Great to have someone new who’s excited about the FPAA tech. I think it has so much potential, but we haven’t gotten it into a form that is mainstream enough yet. I think longer term I want to do a version of the board that can function as a stackable expansion for Akso (but also run standalone away from Akso) and then integrate it into some kind of future unified patcher interface.

Apple-specific stuff is not my area of expertise. I’ve hacked on iOS before but sort of against my will. I don’t see having enough time on my hands to try to develop any Apple stuff directly myself. I’d love to see someone pull it off though. What we really need eventually is a truly cross-platform patcher approach that can also target mobile and web, etc. I think trying to have separate codebase for something Apple or Android or whatever-specific will be tough to maintain with so few contributors.

On Zrna’s protobuf approach: you can easily build bindings for whatever language directly from the protobuf spec. You can copy the client flow from the existing Python client, but you don’t need to use Python necessarily. I’m not sure about Apple’s legal stuff, but essentially all you need to be able to do is talk to a USB serial device. It’s bizarre to me that iOS will just refused to connect to a particular USB device if it’s not certified. Is that what you mean? The device itself shows up as a generic kind of device so it’s possible that that might be whitelisted already without any effort. This kind of bogus, Orwellian stuff from Apple really bothers me; it’s really insulting to the user I think. On a philosophical level, it’s tough for me to do something that supports them directly.

Tangent: protobuf is incredibly powerful. It’s really how Akso should work as well eventually so the entire product suite can be as language independent as possible with super lightweight clients.

1 Like