Looking for more details on the FPAA I/O

Hello Nicolas,

Today I finally found time to test the ZRNA board, and everything seems to work smoothly. Would you mind to shed a few words on the IO? Documentation is a bit scarce on the details.

First question: what exactly is meant by “ultrasonic” IO? Is it for something like LFOs in synths, like non-audible waves? What exactly can (or can’t) this IO do, which the “normal” audio IO on the one hand, or the “Diff. Input/Output cells” on the other cannot (can)?

Secondly, is all the MIDI I/O done via the USB port, or can MIDI data be supplied directly using pins on the board itself? (like via DIN5-MIDI sockets)

Thirdly, “digital” IO: Is it a feature of the “Diff. Input/Output Cells 3/4” mentioned on the hardware page? So I could connect and read digital IO from the respective pins on the board(but not only)? But not via the audio / ultrasonic IO?

Thank you!

Hey @mcleinn. The ultrasonic IO channels allow much higher frequency signals to pass, up to MHz range. The audio channels are bandwidth limited and allow up to about 24kHz.

You certainly can use the ultrasonic channel for audio or even for very low frequency signals. It’s just not configured to reject higher than audio range signals like the audio channels are.

The +5 / -5 inputs are protected. Out of range signals are clipped.

The 0 - 3V IO does not have additional protection. They are direct connections to the FPAA device itself. Each of these cells is a differential pair labeled P (+, non-inverting) and N (-, inverting). The signal the device “sees” is the sum of these (i.e. signal_p + signal_n_inverted). Additionally, these differential input signals need to be centered at 1.5V (VMR, the FPAA’s reference voltage). You can convert to and from whatever signal range you prefer; you just need to scale and shift.

There is no DIN midi implementation right now, but it’s absolutely possible. You would use the MCU’s serial peripheral. It needs a bit of firmware to work as well as the normal DIN circuitry (like an optocoupler and so on).

In general, you can override any of the IO cells and do digital IO with it. If you take a look at the IO objects here: https://zrna.org/docs/modules#input-and-output, the Audio and Ultrasonic objects are just convenience objects that use the lower level InputCell and OutputCell objects. Each of the latter has a bunch of configuration options, including digital mode. There’s a separate dedicated digital output you can access with the DigitalOutputCell object.

There’s a lot to take in here actually on the IO configuration stuff. A lot of the complexity there is coming from the underlying complexity of the FPAA device itself. It needs to be more well documented. If you have a practical example in mind that you want to implement with the digital FPAA IO, ping me and I can walk you through the implementation.

Feel free to ping me if you get stuck.

1 Like