LED Strip Effect without delay
If you can find another way of calculating the BMP during displaying an effect on the strip depends highly on your BMP sensor. If you can do the measurement with interrupts, it should work. In this case you should make sure, that the interrupt cannot be fired during the execution of the Adafruit_NeoPixel.show() function, since it is quite timing sensitive.

But since I recently worked on a project with a NeoPixel LED strip, I have already edited functions from the strandtest example for use with the millis() function. So you will not have to reinvent the wheel again :D I will try to strip away my custom code, so that you can easily use it.

float brightness = 1.0; 
uint32_t strip_state=0; 

uint32_t Wheel(Adafruit_NeoPixel *strip, byte WheelPos) {
  WheelPos = 255 - WheelPos;
  if(WheelPos &lt; 85) {
    return strip-&gt;Color((255 - WheelPos * 3)*brightness, 0, WheelPos * 3*brightness);
  }
  if(WheelPos &lt; 170) {
    WheelPos -= 85;
    return strip-&gt;Color(0, WheelPos * 3 * brightness, (255 - WheelPos * 3)*brightness);
  }
  WheelPos -= 170;
  return strip-&gt;Color(WheelPos * 3 * brightness, (255 - WheelPos * 3)*brightness, 0);
}

void fill_color(uint32_t color){
  byte r= ((color &amp; 0xFF0000) &gt;&gt; 16) * brightness;
  byte g= ((color &amp; 0xFF00) &gt;&gt; 8) *brightness;
  byte b= (color &amp; 0xFF) * brightness;
  color = strip.Color(r,g,b);
  for(unsigned int i=0; i &lt; strip.numPixels(); i++) {
    strip.setPixelColor(i, color);
  }
  strip.show();
}

void fade_color(){
  for(unsigned int i=0;i&lt;strip.numPixels();i++){
    strip.setPixelColor(i,Wheel(&amp;strip,strip_state));
  }
  strip.show();
  strip_state++;
  if(strip_state&gt;255) strip_state = 0;
}

void moving_rainbow(){
  for(unsigned int i=0; i&lt;strip.numPixels(); i++) {
    strip.setPixelColor(i, Wheel(&amp;strip,((i * 256 / strip.numPixels()) + strip_state) &amp; 255));
  }
  strip.show();
  strip_state++;
}

void colorWipe(uint32_t color) {
  byte r= ((color &amp; 0xFF0000) &gt;&gt; 16) * brightness;
  byte g= ((color &amp; 0xFF00) &gt;&gt; 8) *brightness;
  byte b= (color &amp; 0xFF) * brightness;
  color = strip.Color(r,g,b);

  strip.setPixelColor(strip_state, color);
  strip.show();
  strip_state++;
}

//Theatre-style crawling lights.
void theaterChase(uint32_t c) {
  byte r= ((c &amp; 0xFF0000) &gt;&gt; 16) * brightness;
  byte g= ((c &amp; 0xFF00) &gt;&gt; 8) *brightness;
  byte b= (c &amp; 0xFF) * brightness;
  c = strip.Color(r,g,b);
  for (uint16_t i=0; i &lt; strip.numPixels(); i=i+3) {
    strip.setPixelColor(i + strip_state % 3, c);    //turn every third pixel on
    strip.setPixelColor(i + (strip_state +1) % 3, 0); // turn others off
    strip.setPixelColor(i + (strip_state +2) % 3, 0);
  }
  strip.show();
  strip_state++;
}

//Theatre-style crawling lights with rainbow effect
void theaterChaseRainbow() {
  for (uint16_t i=0; i &lt; strip.numPixels(); i=i+3) {
    strip.setPixelColor(i + strip_state % 3, Wheel(&amp;strip, (i+strip_state) % 255));    //turn every third pixel on
    strip.setPixelColor(i + (strip_state +1) % 3, 0); // turn others off
    strip.setPixelColor(i + (strip_state +2) % 3, 0);
  }
  strip.show();
  strip_state++;
}


The functions use the float variable brigthness to modulate the overall brightness of all LEDs. You can set it to every value between 0.0 and 1.0.

The variable strip_state holds the current state of the effect on the strip. It is incremented everytime one of the functions is executed. Reset it to 0 if you want to restart an effect.

You yourself have to declare the variable strip as from the type Adafruit_NeoPixel.

So now you only have to call these function from the typical millis() code (like from the BlinkWithoutDelay example) in an interval, that you chose.