This is MyCustomObject.m in view mode; [Download] [Up]
#import <musickit/musickit.h> #import <musickit/unitgenerators/Out2sumUGx.h> #import <musickit/unitgenerators/OscgUGxy.h> #import <appkit/Slider.h> #import <appkit/Panel.h> #import "MyCustomObject.h" @implementation MyCustomObject static SynthData *pp; static OscgUGxy *osc; static Out2sumUGx *out; -init { Orchestra *orch = [Orchestra new]; MKSetDeltaT(.1); [Conductor setFinishWhenEmpty:NO]; [UnitGenerator enableErrorChecking:YES]; [orch setFastResponse:YES]; [orch setSamplingRate:44100]; if (![orch open]) { NXRunAlertPanel("examp5","Can't open DSP.","OK",NULL,NULL); return nil; } pp = [orch allocPatchpoint:MK_xPatch]; osc = [orch allocUnitGenerator:[OscgUGxy class]]; out = [orch allocUnitGenerator:[Out2sumUGx class]]; [osc setOutput:pp]; [out setInput:pp]; [osc setFreq:440]; [osc setAmp:0.1]; [osc run]; [out run]; [orch run]; [Conductor startPerformance]; return self; } -setFreqFrom:sender { [Conductor lockPerformance]; [osc setFreq:[sender doubleValue]]; [Conductor unlockPerformance]; return self; } -setBearingFrom:sender { [Conductor lockPerformance]; [out setBearing:[sender doubleValue]]; [Conductor unlockPerformance]; return self; } -setAmplitudeFrom:sender { [Conductor lockPerformance]; [osc setAmp:[sender doubleValue]]; [Conductor unlockPerformance]; return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.