@griffinboy you should set your fictional voice count, assign ids to array indexes and remove them when releasing notes. Then you can check along the array to fill the first empty index with a new od and set event data based on the index.
Your event data for individual voices is in another array, obviously, all ordered by voice order.