Good call Eric, as I was catching up on the thread I had that exact same thought and there you were to suggest it. It always seems to be the littlest things that cause the biggest problems.
If it plays fine on your computer than it has to be an issue with upload? Frame.io has been having issues the past couple of days. https://status.frame.io/
If you are just uploading for approval can you fake it or upload an .mp4 with black background?
I did something similar using a gradient to control the size of the dots. The size of the dot was looking at the value of the gradient (white to black). I kept the gradient in a pre-comp so that I could change the shape easily and or have multiple gradients. My computer did not enjoy the shear number of layers that were mapped to expressions. I think I had around 800 dots, lots of head pounding on that project. But I would look into a combo of expressions and hand animating. I attached an example of what I did in action.
Here is something to kick start your exploration if you want to go down this route. The expression isn’t exactly what I used for the video below, but it should put on the right path.
What you are describing is normal behavior. Previewing caches frames into your memory. The slowness comes from not being able to buffer and play at the same time. If you open your “Info” panel you will see the frame rate at which it is caching and trying to play back. In the “Preview” panel you can check the box to cache before playback. To extend the playback duration you need to lower the preview quality, allocate more memory to AE, or physically install more memory.
What I have done in a template (NOT a MOGRT) but should work the same is tie each audio layer to a checkbox. Then in the MOGRT the user can choose which audio layer they want by selecting a checkbox. I’ve never played with audio in MOGRT’s so this is all untested.