Skip to content

Instantly share code, notes, and snippets.

@stevenhuey
stevenhuey / gist:3023781
Created June 30, 2012 13:40
Creating our AVMutableComposition and AVPlayer
// Setup
_composition = [AVMutableComposition composition];
_audioMixValues = [[NSMutableDictionary alloc] initWithCapacity:0];
_audioMixTrackIDs = [[NSMutableDictionary alloc] initWithCapacity:0];
// Insert the audio tracks into our composition
NSArray* tracks = [NSArray arrayWithObjects:@"track1", @"track2", @"track3", @"track4", nil];
NSString* audioFileType = @"wav";
@stevenhuey
stevenhuey / gist:3023783
Created June 30, 2012 13:41
AVPlayer KVO
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([keyPath isEqualToString:@"status"])
{
if (AVPlayerItemStatusReadyToPlay == _player.currentItem.status)
{
[_player play];
}
}
}
@stevenhuey
stevenhuey / gist:3023786
Created June 30, 2012 13:42
Slider Action
// Action for our 4 sliders
- (IBAction)mix:(id)sender
{
UISlider* slider = (UISlider*)sender;
[self setVolume:slider.value
forTrack:[NSString stringWithFormat:@"track%d", slider.tag]];
[self applyAudioMix];
}
@stevenhuey
stevenhuey / gist:3023789
Created June 30, 2012 13:43
Set the volume
// Set the volumne (0.0 - 1.0) for the given track
- (void)setVolume:(float)volume forTrack:(NSString*)audioTrackName
{
[_audioMixValues setValue:[NSNumber numberWithFloat:volume] forKey:audioTrackName];
}
@stevenhuey
stevenhuey / gist:3023792
Created June 30, 2012 13:44
Set the audio mix
// Build and apply an audio mix using our volume values
- (void)applyAudioMix
{
AVMutableAudioMix* mix = [AVMutableAudioMix audioMix];
NSMutableArray* inputParameters = [[NSMutableArray alloc] initWithCapacity:0];
[_audioMixTrackIDs enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL*stop) {
AVAssetTrack* track = [self trackWithId:(CMPersistentTrackID)[(NSNumber*)obj integerValue]];
@stevenhuey
stevenhuey / CBCosmDatastream.m
Created October 25, 2012 14:57
Before Mantle
@implementation CBCosmDatastream
- (id)initWithAttributes:(NSDictionary*)attributes
{
self = [super init];
if (self)
{
if (!attributes)
{
@stevenhuey
stevenhuey / CBCosmDatastream.m
Created October 25, 2012 14:58
After Mantle
@implementation CBCosmDatastream
#pragma mark - Mantle
+ (NSDictionary *)externalRepresentationKeyPathsByPropertyKey
{
return [super.externalRepresentationKeyPathsByPropertyKey mtl_dictionaryByAddingEntriesFromDictionary:@{
@"datastreamId": @"id",
@"updated": @"at",
@"value": @"current_value",
@stevenhuey
stevenhuey / sugar.m
Created December 7, 2012 19:25
ObjectiveSugar
[@3 times:^{
NSLog(@"Hello World!");
}];
// Hello World!
// Hello World!
// Hello World!
@stevenhuey
stevenhuey / sugar2.m
Created December 7, 2012 19:29
ObjectiveSugar2
NSArray *cars = [@"Testarossa", @"F50", @"F458 Italia"];
// or NSSet *cars = [NSSet setWithObjects:@"Testarossa", @"F50", @"F458 Italia", nil];
[cars map:^id(id car){
return @([[car substringToIndex:1] isEqualToString:@"F"]);
}];
// NO (Testarossa)
// YES (F50)
// YES (F458 Italia)
@stevenhuey
stevenhuey / PonyDebuggerSetup.m
Created February 9, 2013 18:25
Our changes to the application:didFinishLaunchingWithOptions: method.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
fDebugger = [PDDebugger defaultInstance];
[fDebugger enableNetworkTrafficDebugging];
[fDebugger forwardAllNetworkTraffic];
[fDebugger enableCoreDataDebugging];
[fDebugger addManagedObjectContext:self.managedObjectContext withName:@"Popular on 500px"];