There are multiple options for doing frame-based processing on multi-channel input signals. The attached model "multiChannelFrames.slx" demonstrates three different ways of accomplishing your desired behavior. The options are as follows:
1) Use a "From Workspace" and "Reshape" block to construct a multi-channel signal. Note that Simulink has different behavior for 1-D array signals (which are displayed with size N) and row vector signals (which are treated as 2-D arrays and displayed with size [1 N]). The "Buffer" block operates differently on these two types of signals. To get multi-channel behavior the input must be a 2-D array, i.e. have size [M N]. Therefore, we can use a "Reshape" block to force the signal to be a 2-D array with size [1 N]. The input to the "Buffer" block will then be a multi-channel signal at each time step.
2) Use a "Signal From Workspace" block. This block inherently handles the dimensionality concerns that were mentioned in Option 1. If the input signal has multiple columns, it will interpret each column as its own channel, as desired. We can then pass the multi-channel output of this block into the "Buffer" to create frames. However, this block does not support timeseries objects.
3) Use a "Signal From Workspace" block and specify the frame size in the 'Samples per frame' parameter. This is the similar to Option 2, but avoids the need for a "Buffer" block, since the block itself creates the frames. Note that this will behave slightly differently than the previous two options. Namely, the previous two options will lag one frame behind since they output all zero's for the first frame. You can see the difference in behavior by stepping through the example model.
Best Answer