Neopixels - Is it possible to do anything in the middle of an update?

I have a board where I'm playing audio at 22khz and I'd like to also update a short string of Neopixels (less than 10). I've only got 45 microseconds between each sample, and I have to transmit 16 bits to my DAC every time, so I may not even have the 30 microseconds between each sample required to send one full pixel's worth of data.

I was looking at Adafruit's tutorial here: https://learn.adafruit.com/adafruit-neopixel-uberguide/advanced-coding

And clearly, I can't hold the line low at any point for longer than 50us or the data will latch into the pixels. and the next bit of data I send will go to the first pixel.

However, I'm wondering if perhaps I could hold the line high longer than usual, and what will happen if I do.

For example, is the pixel keying off the length of the low signal after the high signal to decide if a bit is 0 or 1, or is it keying off the length of the high time, and the length of the low after that doesn't matter as long as it's not so long (50us) that it causes the pixel to latch the data? Does it only decide what bit was sent after the low signal goes high again? It seems like it would because otherwise it might load a new bit when the intention was to latch the pixel. I guess I should look at the Arduino lib and see what they do at the end of the data transfer... either they take the signal high like the datasheet shows at the end, then go low for 50ms, or they'd just hold it low after the last bit was transmitted, which would probably mean the high time is how it decides what bit it was.

Hm, I found this interesting page: http://wp.josh.com/2014/05/13/ws2812-neopixels-are-not-so-finicky-once-you-get-to-know-them/

I'm still reading through it, but it may hold the key...

Hm, it seems that page does have the answer:

Q: I have some interrupt timing sensitive code that I have always wanted to run while also driving NeoPixels. Are you saying this might be possible? A: No problem! As long as you can keep your interrupt service shorter than ~5us, you can leave interrupts on almost all the time while driving your NeoPixels. The only place where you need to turn them off is during the very brief moment when sending a 0-bit pulse to make sure that it stays below the maximum T0H length. If you add the following code to protect the sending of the 0-bit in sendBit() …

I'm not certain that my audio interrupt is less than 5us, but I did calculate there's 45us between samples, so... maybe it will work?

Ha, I just noticed all those articles on Neopixels were just posted over the last few days. Lucky me. :)