Playing audio in app for a musical scale

hi - I built a music theory app. One of the modules plays audio of different musical scales, one octave up and one octave back down. I’m wondering if my code is the best way to do this. I find the playback is quite uneven. Specifially it sort of ‘limps’, with alternate notes sounding slightly longer. Here’s the gist of my code. This code is triggered when a user taps a button (the “hearButton”) to play the scale.

hearButtonListener = function(event)

--code omitted ...
	local up = true
	local i = 1
	local channelCounter = 1
	local iterations = (#scaleData.soundArray * 2) - 1
	local areWeDone = function(event) 

		--Listener on the play button is removed during playback. This code puts it back when the scale is over
	end -- end of inner function areWeDone

	local playSounds = function(event)
		if up == true then[i],{channel = channelCounter,
			onComplete = areWeDone})
			i = i + 1
			if i == #scaleData.soundArray then up = false end
		elseif up == false then[i],{channel = channelCounter,
			onComplete = areWeDone}  )
			i = i - 1

		channelCounter = channelCounter + 1

	end  -- end of inner function playSounds

	scaleData.theTimer = timer.performWithDelay(250,playSounds,iterations)
	scaleData.timerTable[scaleData.timerIndex] = scaleData.theTimer 
	scaleData.timerIndex = scaleData.timerIndex + 1