I’ll leave this here for anybody that has a similar issue. For some reason, I though MusicSequence functions are thread-safe to call from any thread. I was wrong it seems. I solved my problem by calling both MusicSequenceNewTrack and MusicSequenceFileCreate from the main thread (before they were both called from a secondary thread)
> On 15 Dec 2014, at 01:35, Valentin Radu <[email protected]> wrote: > > Following up with more information. I found that the culprit is > MusicSequenceNewTrack. What happens is, the code below is not an accurate > representation of what I’m actually doing, I tried to simplify the example > and end up oversimplifying. > > The problem seems to be that MusicSequenceNewTrack returns immediately and if > you try to call MusicSequenceFileCreate right after it, the track will not be > added to the file. If, instead you wait, let’s say 1 second and then call it, > the track will be added to the file. Now, what’s strange is that calling > CAShow on the sequence actually shows the track, even if you do it right > after adding it. So, the track is there and it’s accessible, I can’t see why, > MusicSequenceFileCreate doesn’t work. > > Does anybody have any idea on how I can handle this, except for waiting for a > certain amount of time before calling the create file function? > > >> On 12 Dec 2014, at 03:07, Valentin Radu <[email protected] >> <mailto:[email protected]>> wrote: >> >> Hi everybody, >> >> >> I’m trying to save a sequence to disk but it seems MusicSequenceFileCreate >> doesn’t work for some reason. In the code below, there is no error thrown, >> however, when doing a CAShow on the testSequence, I can see it's not the >> same as the old sequence, all the tracks are missing. The only, let’s say >> odd, thing about the tracks is that they have a user event with some data at >> timestamp 0. Did anyone encountered issue this before? Any pointers on why >> this is happening? Is is a bug? >> >> NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, >> >> NSUserDomainMask, YES); >> NSString *documentsDirectory = [paths objectAtIndex:0]; >> NSString *midiPath = [documentsDirectory >> stringByAppendingPathComponent:@"test.mid"]; >> NSURL* url = [[NSURL alloc] initFileURLWithPath:midiPath]; >> >> VRC(MusicSequenceFileCreate(sequence, (__bridge CFURLRef)url, >> kMusicSequenceFile_MIDIType, kMusicSequenceFileFlags_EraseFile, 0)); >> >> MusicSequence testSequence; >> VRC(NewMusicSequence(&testSequence)); >> VRC(MusicSequenceFileLoad(testSequence, (__bridge CFURLRef)url, >> kMusicSequenceFile_MIDIType, 0)); >> >> >> Valentin Radu >> codewisesystems.com <http://codewisesystems.com/> >> cocoaexposed.com <http://cocoaexposed.com/> >> >> _______________________________________________ >> Do not post admin requests to the list. They will be ignored. >> Coreaudio-api mailing list ([email protected] >> <mailto:[email protected]>) >> Help/Unsubscribe/Update your Subscription: >> https://lists.apple.com/mailman/options/coreaudio-api/radu.v.valentin%40me.com >> >> <https://lists.apple.com/mailman/options/coreaudio-api/radu.v.valentin%40me.com> >> >> This email sent to [email protected] > > Valentin Radu > codewisesystems.com <http://codewisesystems.com/> > cocoaexposed.com <http://cocoaexposed.com/> > > _______________________________________________ > Do not post admin requests to the list. They will be ignored. > Coreaudio-api mailing list ([email protected]) > Help/Unsubscribe/Update your Subscription: > https://lists.apple.com/mailman/options/coreaudio-api/radu.v.valentin%40me.com > > This email sent to [email protected] Valentin Radu codewisesystems.com <http://codewisesystems.com/> cocoaexposed.com <http://cocoaexposed.com/>
_______________________________________________ Do not post admin requests to the list. They will be ignored. Coreaudio-api mailing list ([email protected]) Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/coreaudio-api/archive%40mail-archive.com This email sent to [email protected]
