MIDI controlled analog RGB LED strip (code problem)
I suggest that you write separate test programs for MIDI input and LED control, before trying to combine them together.  That is, write a sketch to report back on Serial what MIDI data was read, and a sketch to cycle the LEDs through obvious patterns.

For example, if you read 10,20,30 as the three MIDI bytes, output "Got 10,20,30" (or similar).  If that appears to be working, then add your arithmetic and output the results of colorGroup, pColor, and sColor calculations.  

Note, the comment after do{ ...} while (Serial.available() &gt; 2); says //when at least three bytes available, which does not correctly represent what that do loop does.  When one or more bytes are available, that loop immediately reads three bytes (getting a value of -1 for any not-available byte).  To do the read only if three bytes are available, get rid of the do{ ...} while construct, and instead say if (Serial.available() &gt; 2) { &lt;read 3 bytes&gt; }.

Note, use parentheses in expressions like pColor*velocityByte/127.  IIRC the C spec allows evaluation of that as either (pColor*velocityByte)/127 or as pColor*(velocityByte/127).  Since velocityByte/127 can only evaluate to 0 or 1, the result of the latter form is either pColor or 0.

Note, your code shows if (colorGroup == 1){ twice.  Change 1 to some other number in the second instance.

To cycle the LEDs through obvious patterns, you could have three different sketches, one that gradually raises and lowers the PWM level on Red, one that does the same for Green, and another for Blue.