This is MyApplication.m in view mode; [Download] [Up]
#import <appkit/appkit.h> #import <musickit/musickit.h> #import <musickit/synthpatches/Pluck.h> #import "SimplePerformer.h" #import "MyApplication.h" @implementation MyApplication - setTempoFromSlider:sender { [Conductor lockPerformance]; [cond setTempo:[sender doubleValue]]; [Conductor unlockPerformance]; return self; } - appDidInit:sender { /* Invoked when first message is sent to app */ [Orchestra setTimed:YES]; /* Use the DSP 'clock' */ [Orchestra new]; /* Create Orchestra for all DSPs */ MKSetDeltaT(1.0); /* Scheduler advance */ [Conductor setFinishWhenEmpty:NO]; /* Keep going forever */ cond = [Conductor defaultConductor]; perf = [[SimplePerformer alloc] init]; synthIns = [[SynthInstrument alloc] init]; [[synthIns noteReceiver] connect:[perf noteSender]]; [synthIns setSynthPatchClass:[Pluck class]]; return self; } - startStop:sender { if ([Conductor inPerformance]) { [Conductor lockPerformance]; [Conductor finishPerformance]; [Conductor unlockPerformance]; [Orchestra close]; } else { [Orchestra open]; [perf activate]; [Orchestra run]; [Conductor startPerformance]; } return self; } - pause:sender { /* Assumes we're performing and active. */ [perf pause]; return self; } - resume:sender { /* Assumes we're performing and paused. */ [perf resume]; return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.