EXEC_BAD_INSTRUCTION (code=1, address=0xe) with MusicSequenceBarBeatTimeToBeats in Swift 2

113 Views Asked by At

I have problem when using Apples MusicSequence C API in Swift 2. I can't figure out how to get rid of EXEC_BAD_INSTRUCTION when calling MusicSequenceBarBeatTimeToBeats.

I have tried a lot of different solutions found on internet, but nothing seems to work.

My first try that didn't result an compile error was:

import Cocoa
import AudioToolbox

var musicSequence = MusicSequence()

NewMusicSequence(&musicSequence)

var barBeatTime = CABarBeatTime(bar: 1, beat: 1, subbeat: 0, subbeatDivisor: 960, reserved: 0)
var musicTimeStamp: MusicTimeStamp = 0

MusicSequenceBarBeatTimeToBeats(musicSequence, &barBeatTime, &musicTimeStamp)

The result is: EXEC_BAD_INSTRUCTION (code=1, address=0xe) at the MusicSequenceBarBeatTimeToBeats code row

Then I tried with this, but with same result:

var barBeatTime = CABarBeatTime(bar: 1, beat: 1, subbeat: 0, subbeatDivisor: 960, reserved: 0)
var musicTimeStamp = UnsafeMutablePointer<MusicTimeStamp>.alloc(sizeof(MusicTimeStamp))

MusicSequenceBarBeatTimeToBeats(musicSequence, &barBeatTime, musicTimeStamp)

musicTimeStamp.dealloc(sizeof(MusicTimeStamp))

I have tried the withUnsafeutablePointer function, but with same runtime error:

var barBeatTime = CABarBeatTime(bar: 1, beat: 1, subbeat: 0, subbeatDivisor: 960, reserved: 0)
var musicTimeStamp: MusicTimeStamp = 0

withUnsafeMutablePointer(&musicTimeStamp,
{
    MusicSequenceBarBeatTimeToBeats(musicSequence, &barBeatTime, UnsafeMutablePointer($0))
})

If I pass nil in the third parameter it doesn't crash, but this is useless because the output is missing. So it seem to be the UnsafeMutablePointer<MusicTimeStamp> output parameter that is the problem.

MusicSequenceBarBeatTimeToBeats(musicSequence, &caBarBeatTime, nil)

Any suggestions?

0

There are 0 best solutions below