Thanks Carter. Whilst I didn’t implement your solution it did get me thinking and I changed where I created the sound object. I also removed the core.wait code.
This now works as expected.
#In the begin Experiment tab
tonearray=["A","B","C","D","E","F","G"]
iframecount=0
itonecount=0
tone = sound.Sound(value=tonearray[itonecount],octave=4, secs=50,sampleRate=None, blockSize=128, preBuffer=-1, hamming=False)
#in the Each Frame tab
iframecount=iframecount+1
if iframecount>180:
iframecount=0
tone.setSound(tonearray[itonecount],octave=4, secs=50)
tone.play()
itonecount=itonecount+1