Monday 15 February 2010

ios - Having AVAudioEngine repeat a sound -



ios - Having AVAudioEngine repeat a sound -

i've been having problem making code below repeat sound @ audiourl on , on again. right plays 1 time when view opened, stops.

import uikit import avfoundation class aboutviewcontroller: uiviewcontroller { var audiourl = nsurl(fileurlwithpath: nsbundle.mainbundle().pathforresource("chimes", oftype: "wav")!) var audioengine = avaudioengine() var myplayer = avaudioplayernode() override func viewdidload() { super.viewdidload() // additional setup after loading view. audioengine.attachnode(myplayer) var audiofile = avaudiofile(forreading: audiourl, error: nil) var audioerror: nserror? audioengine.connect(myplayer, to: audioengine.mainmixernode, format: audiofile.processingformat) myplayer.schedulefile(audiofile, attime: nil, completionhandler: nil) audioengine.startandreturnerror(&audioerror) myplayer.play() } override func didreceivememorywarning() { super.didreceivememorywarning() // dispose of resources can recreated. } }

thanks!

after hours , hr of searching, did it:

class aboutviewcontroller: uiviewcontroller { var audioengine: avaudioengine = avaudioengine() var audiofileplayer: avaudioplayernode = avaudioplayernode() override func viewdidload() { super.viewdidload() // additional setup after loading view, typically nib. allow filepath: string = nsbundle.mainbundle().pathforresource("chimes", oftype: "wav")! println("\(filepath)") allow fileurl: nsurl = nsurl(fileurlwithpath: filepath)! allow audiofile = avaudiofile(forreading: fileurl, error: nil) allow audioformat = audiofile.processingformat allow audioframecount = uint32(audiofile.length) allow audiofilebuffer = avaudiopcmbuffer(pcmformat: audioformat, framecapacity: audioframecount) audiofile.readintobuffer(audiofilebuffer, error: nil) var mainmixer = audioengine.mainmixernode audioengine.attachnode(audiofileplayer) audioengine.connect(audiofileplayer, to:mainmixer, format: audiofilebuffer.format) audioengine.startandreturnerror(nil) audiofileplayer.play() audiofileplayer.schedulebuffer(audiofilebuffer, attime: nil, options:.loops, completionhandler: nil) }

ios swift

No comments:

Post a Comment