depends, but yeah it could
If you keep track of each waves timing via the array I mentionned
Like
Array.At(wavenumber,2) = startTime
Array.At(wavenumber,3) = countDown
Array.At(wavenumber,4) = rate
you can use the 'countDown' and the rate value to control the spawning of each wave of monster, instead of using a global "every x seconds"
So each tick you check for each possible wave, if the startTime is exceeded, if it is, you check the 'countDown',
if it's equal to 0 you spawn the next enemy and add 'rate' to the 'countDown',
else you substract dt to it.
Something along these lines