Transform a Location “Constrained” Object? What I’m overall attempting to do here is be able to move an arrayed object with an empty which will always rest at the center of the array of objects. If the count in that object’s array is raised or lowered the empty would adjust to remain in the center of the objects in the updated count.

In the image below I’ve visually annotated how the scene would look with this concept.



^ (The Main CTRL empty would be aligned on the same Z axis as other empty’s I have in the scene, as apposed to what I have annotated here with the Z location for the empty also shown as being centered.)



The image above shows the basic concept. The cube empty would be the main control point, located in the middle (referenced with the large plain axis empty) of the start and end of the theoretical arrayed object, of which both ends are represented by the two arrow empty’s.

To summarize on the key functions of this concept:


The main control empty must remain in the center of the two points
If the array count changes the empty must adjust to remain centered
When moved the empty will also move the theoretical arrayed object


I’ve linked a detailed video below that demonstrates the basic functionality I’m aiming for, though it has issues that I'm unsure of how to get around, hence my call for assistance.

Goodle Drive - Video Link

Youtube - Video Link

For those with potential ideas for a solution to this challenge, I thank you for your efforts in advance.
I've created a work around for my problem by removing the main control empty (along with my ability to move everything from a dynamic center) and replace its functionality with a driver that outputs half of the array's distance. 

This will allow me to use that drivers value to offset the start empty manually (though for my use case, I can still semi automate this if the desired location for the center of the array is located in the center of two points which have location values I can reference for use with the start empty).

While this does not achieve the functionality I had laid out, this will do as a passable workaround for now.