Processing > Arduino UNO R3 > TLC5947 > 45 RGB LEDs

Hi, I'm new to this forum and to Arduino programming. I have some knowledge in electronics and coding, but it's my first project using a microcontroller. I'll describe you my project and ask some questions:

I'm building an RGB LED matrix of 4x9 RGB leds. The idea is to generate some graphics in real time in processing and display them on the matrix. I decided to use Processing connected via serial to an Arduino UNO R3, and 6 daisy chained Adafruit 24-Channel 12-bit PWM LED Drivers. I've finished the Processing code, generating an array containing the values for each one of the LEDs (R, G, B * 45 = 135 values at 12 bits each). I have also tested the Adafruit libraries in the Arduino UNO and everything works fine. I'm currently in the phase of communicating the Processing program with the Arduino, so I could display what I generate at the fastest speed possible (+30fps ideally). It should be no problem, I suppose, to display at that speed, but I'm having some doubts about the serial communication. I narrowed it down to 3 options but I need some advice to choose one, or to resolve this using another method.

These are my options (I have tested none of them):

Option 1 (currently my chosen one): sending the full array of numbers to the Arduino and process the array in the Arduino to obtain each value and send it to the Adafruit circuit. The problem I've encountered with this (on the internet) is the buffer size in the Arduino. I'm sending the array in a string, 135 4 digit numbers separated with a comma. I know I can increase the buffer size in the Arduino, but is it safe? Can I fit these 135 4 digit numbers and commas into, for example, an 512 sized buffer? I guess not. How much can I increase the buffer size? Is there an option to do this without using the buffer?

Option 2: separating the array into smaller packages to fit in the buffer size. This option resolves the problems of option 1, but I think it will slow down all the process, and I need to do this at least 30 times per second.

Option 3: using Firmata to directly control the Arduino from Processing. I suppose this is the fastest option, but to do this I'll have to translate the Adafruit libraries to work in Processing, and I don't know if the program will have the sufficient stability to generate a signal for the Adafruit boards.

I don't know, I've resolved the Processing and Arduino parts, but I didn't knew that the communication between the two could be so complicated. It would help me a lot if someone could give me a hand choosing the steps to follow.

Thank you very much, and sorry for my limited English vocabulary.

Edit: Option 4: should I use a Teensy?

You worry too much. Your code will spend most of its time waiting for data to come in. Their is no need to have a buffer the size of the data block you are sending. Set your baud rate to 250000 baud at both ends and go for it. Their are tricks in the unlikely event that it is not fast enough, like sending actual bytes instead of ASCII.

Thank you! I tried that and the speed is enough at 30fps. I'll try to get to improve the code to reach 60fps, sending bytes instead of ASCII (I think I can reduce the data block size about 50% using that trick).