Connecting encoders/SPI devices/LEDs/buttons to a Rasperry Pi
This project actually did get finished. The solution that I used was a number of chips connected to the Pi via I2C. 


1 x SC18IS602B (I2C to SPI bridge) connected to:


3 x LED rings using TLC5925 SPI LED drivers (although it wasn't straight forward).

2 x MCP23017 (I2C GPIO expanders) connected to:


14 x hardware buttons (14 pins)
6 x encoder quadrature pins (12 pins)
6 x encoder buttons (6 pins)

1 x ads1115 (I2C analog to digital convertor)
RPi PWM output connected to:


a 3.3v->5v level convertor and then
a string of 14 neopixels.

RPi UART TX/RX pins connected to:


a 3.3v->5v level convertor and then
for MIDI output: a 4011 4xNAND gate buffer
for MIDI input: a 6N138 optical decoupler



There is an ongoing log of progress on my blog here.