What do you mean by "tracking"?

Sent from my iPhone

On Mar 7, 2015, at 1:42 PM, "Dave O'Neill" <[email protected]> wrote:

> It looks like your timer might not be firing consistently.  I would test that 
> first. I'm not sure what else is going on in your Application but if there is 
> any tracking then a timer will be blocked. If your timer isn't firing as 
> expected try adding it like this:
> 
>     NSTimer *timer = [NSTimer timerWithTimeInterval:1.0 / 60.0 target:self 
> selector:@selector(moveBox) userInfo:nil repeats:1];
>     [[NSRunLoop mainRunLoop]addTimer:timer forMode:NSRunLoopCommonModes];
> 
> 
> 
> 
> On Sat, Mar 7, 2015 at 10:20 AM, Patrick J. Collins 
> <[email protected]> wrote:
>> Hmmm... So yeah, I tried using a timer-- and strangely, it's similar to
>> when I did the performSelectorOnMainThread...  The update only happens a
>> handful of times and I don't get why...
>> 
>>     self.timer = [NSTimer scheduledTimerWithTimeInterval:(1.0f / 60) 
>> target:self selector:@selector(updatePlayhead) userInfo:nil repeats:YES];
>> 
>> For a 1.6 second audio clip, the callback is fired only 5 times..
>> 
>> ??  Why is this happening?
>> 
>> here is the actual code for my sample player:
>> https://gist.github.com/patrick99e99/72712182158ecbfcbfea
>> 
>> Patrick J. Collins
>> http://collinatorstudios.com
>> 
>> 
>> On Sat, 7 Mar 2015, Dave O'Neill wrote:
>> 
>> >
>> > ---------- Forwarded message ----------
>> > From: Dave O'Neill <[email protected]>
>> > Date: Sat, Mar 7, 2015 at 9:44 AM
>> > Subject: Re: How does one update a view position during a core audio 
>> > render callback?
>> > To: "Patrick J. Collins" <[email protected]>
>> >
>> >
>> > The simplest way to do is to just set a variable to your current time in 
>> > your render callback. 
>> > And then employ a repeating timer to check that value and update your view 
>> > on the main thread.
>> > @implementation MyObject{
>> >     float currentTime;
>> > }
>> >
>> > OSStatus myRenderCallback{
>> >     MyObject *object = (MyObject *)inRefCon;
>> >     object->currentTime = CalculateTimeOnRenderThread(); //with no Obj-C 
>> > messaging!
>> > }
>> >
>> > -(void)myTimerCallback{
>> >    self.playhead.position = currentTime;
>> > }
>> >
>> > If you want it to refresh the currentTime faster than the render callback 
>> > you should get the
>> > mach_absolute_time() at the start of playing and again in your timer and 
>> > calculate the difference.
>> >
>> > @implementation MyObject{
>> >     UInt64 startMachTime;
>> > }
>> > // if you need accuracy get the mHostTime from your render callback
>> > // otherwise do this
>> >
>> > -(void)startAudio{
>> >    startMachTime = mach_absolute_time();
>> > }
>> >
>> > -(void)myTimerCallback{
>> >    UInt64 ticksSinceStart = mach_absolute_time() - startMachTime;
>> >    self.playhead.position = convertTicksToSeconds(ticksSinceStart);
>> > }
>> >
>> > A CADisplyLink is an excellent timer for this
>> >
>> > On Sat, Mar 7, 2015 at 9:17 AM, Patrick J. Collins 
>> > <[email protected]> wrote:
>> >       Hi,
>> >
>> >       So I have plotted out a waveform, and simply want to have a vertical
>> >       line represent a playhead which will move across the waveform's 
>> > X-axis
>> >       as it plays.
>> >
>> >       I am using an NSBox as my playhead, and in my callback proc, I tried 
>> > doing inside the
>> >       loop:
>> >
>> >         player->sampler.playheadView.position = 
>> > player->sampler.playheadView.containerWidth
>> >       / player->buffer.size * currentSampleIndex
>> >
>> >       my playheadView's position setter just does this:
>> >
>> >       -(void)setPosition:(NSUInteger)position {
>> >           if (position == self.position) return;
>> >           [self setFrameOrigin:NSMakePoint(position, 0)];
>> >       }
>> >
>> >       However, this causes everything to slow down to the point that the 
>> > audio plays
>> >       with clicks and gaps inbetween the frames..
>> >
>> >       I changed this to do a performSelectorOnMainThread, where this 
>> > operation
>> >       occurs, but it seems like the playhead only gets updated a handful 
>> > of times
>> >       during playback, so it does not look good..
>> >
>> >       What is the ideal way to get visual feedback like this during 
>> > playback?
>> >
>> >       Thanks!
>> >
>> >       Patrick J. Collins
>> >       http://collinatorstudios.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/oneill707%40gmail.com
>> >
>> >       This email sent to [email protected]
>> >
>> >
>> >
>> >
>> >
> 
 _______________________________________________
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]

Reply via email to