This is LoochPerformer.m in view mode; [Download] [Up]
#import <musickit/musickit.h>
#import "LoochPerformer.h"
#import "RandomIzer.h"
@implementation LoochPerformer:Performer
{
id LoochNote;
}
int aTag;
id RandNum;
-initialize
/* This method is invoked when a new instance is created. */
{
/* You must send [super initialize] in your subclass' implementation. */
[super initialize];
LoochNote = [Note new];
[LoochNote setNoteType:MK_noteOn];
[LoochNote setNoteTag:aTag = MKNoteTag()];
/* We give ourselves one NoteSender. */
[self addNoteSender:[NoteSender new]];
[self setDefaults];
RandNum = [RandomIzer new];
[RandNum setit];
return self;
}
-setDefaults
/* used internally to set the LoochNote attributes upon initialization */
{
[LoochNote setPar:MK_amp toDouble:0.1];
[LoochNote setPar:MK_freq0 toDouble:100.0];
[LoochNote setPar:MK_freq1 toDouble:100.0];
// [LoochNote setPar:MK_bearing toDouble:0.0];
[LoochNote setPar:MK_waveform toWaveTable:nil];
[LoochNote setPar:MK_ampAtt toDouble:1.0];
[LoochNote setPar:MK_ampRel toDouble:1.0];
[LoochNote setPar:MK_svibFreq toDouble:0.2];
[LoochNote setPar:MK_svibAmp toDouble:1.0];
[LoochNote setPar:MK_rvibFreq toDouble:0.2];
[LoochNote setPar:MK_rvibAmp toDouble:1.0];
}
-startNote
{
[LoochNote setNoteType:MK_noteOn];
[[self noteSender] sendNote:LoochNote];
return self;
}
-stopNote
{
[LoochNote setNoteType:MK_noteOff];
[[self noteSender] sendNote:LoochNote];
return self;
}
-changeNote
{
[LoochNote setNoteType:MK_noteUpdate];
[[self noteSender] sendNote:LoochNote];
return self;
}
-pause
{
[LoochNote setNoteType:MK_noteOff];
[[self noteSender] sendNote:LoochNote];
return self;
}
-setfreq:(double)hz spread:(double)window
{
double deviate = [RandNum GetPlusMinus:window];
[LoochNote setPar:MK_freq0 toDouble:hz];
[LoochNote setPar:MK_freq1 toDouble:(hz+deviate)];
return(self);
}
-setamp:(double)amplitude
{
[LoochNote setPar:MK_amp toDouble:amplitude];
return(self);
}
-setbearing:(double)bearing
{
[LoochNote setPar:MK_bearing toDouble:bearing];
return(self);
}
-setwave:(id)thePartials
{
[LoochNote setPar:MK_waveform toWaveTable:thePartials];
return(self);
}
-setattack:(double)attack
{
[LoochNote setPar:MK_ampAtt toDouble:attack];
return(self);
}
-setdecay:(double)decay
{
[LoochNote setPar:MK_ampRel toDouble:decay];
return(self);
}
-setvibfreq0:(double)vfreq
{
[LoochNote setPar:MK_svibFreq toDouble:vfreq];
return(self);
}
-setvibfreq1:(double)vfreq
{
[LoochNote setPar:MK_rvibFreq toDouble:(vfreq)];
return(self);
}
-setvibamp0:(double)vamp
/* this is expressed as Hz, which represents the max deviation in Hz
from the base freq */
{
[LoochNote setPar:MK_svibAmp toDouble:vamp];
return(self);
}
-setvibamp1:(double)vamp
/* this is expressed as Hz, which represents the max deviation in Hz
from the base freq */
{
[LoochNote setPar:MK_rvibAmp toDouble:(vamp)];
return(self);
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.