Compare commits

..

3 commits

Author SHA1 Message Date
Christopher Snowhill
23334dd452 Bug Fix: Disable buggy Selection Follows Playback
Some checks failed
Check if Cog buildable / Build Universal Cog.app (push) Has been cancelled
Disable this by default, as it doesn't take output buffering into
account, so cursor moves up to 20 seconds ahead of what is actually
audible on the output device.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2025-06-11 19:03:30 -07:00
Christopher Snowhill
23be3b7f03 Bug Fix: Prevent track transition race condition
A race on the source queue setter could cause a crash. Prevent that by
not attempting to set a nil input node.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2025-06-11 19:03:25 -07:00
Christopher Snowhill
cb9c4d9c01 Bug Fix: Stop track fades from hanging on occasion
Track fades could hang if fired in rapid succession. Now each fade will
be guaranteed to resume input feeding upon removing the current input to
the background fade-out queue.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2025-06-11 19:03:21 -07:00
3 changed files with 8 additions and 4 deletions

View file

@ -669,7 +669,7 @@ static BOOL consentLastEnabled = NO;
[userDefaultsValuesDict setObject:@(44100) forKey:@"synthSampleRate"];
[userDefaultsValuesDict setObject:@NO forKey:@"alwaysStopAfterCurrent"];
[userDefaultsValuesDict setObject:@YES forKey:@"selectionFollowsPlayback"];
[userDefaultsValuesDict setObject:@NO forKey:@"selectionFollowsPlayback"];
// Register and sync defaults
[[NSUserDefaults standardUserDefaults] registerDefaults:userDefaultsValuesDict];

View file

@ -176,8 +176,10 @@
Node *finalNode = nil;
if(rubberbandNode) {
finalNode = [[controller bufferChain] finalNode];
if(finalNode) {
[rubberbandNode setPreviousNode:finalNode];
}
}
return !!finalNode;
}
@ -186,8 +188,10 @@
Node *finalNode = nil;
if(rubberbandNode) {
finalNode = [[controller bufferChain] finalNode];
if(finalNode) {
[rubberbandNode setPreviousNode:finalNode];
}
}
NSArray *DSPs = [self DSPs];

View file

@ -982,6 +982,7 @@ current_device_listener(AudioObjectID inObjectID, UInt32 inNumberAddresses, cons
[fadedBuffers addObject:buffer];
[fadedBuffersLock unlock];
[outputLock unlock];
cutOffInput = NO;
}
- (void)fadeIn {
@ -990,7 +991,6 @@ current_device_listener(AudioObjectID inObjectID, UInt32 inNumberAddresses, cons
fadeStep = ((fadeTarget - fadeLevel) / deviceFormat.mSampleRate) * (1000.0f / 125.0f);
fading = YES;
faded = NO;
cutOffInput = NO;
}
@end