ftp.nice.ch/pub/next/unix/audio/sms.N.bs.tar.gz#/sms/smsMk/SmsInstrument.h

This is SmsInstrument.h in view mode; [Download] [Up]

#import <musickit/Instrument.h>
#import <sound/soundstruct.h>
#include "../sms.h"

@interface SmsInstrument:Instrument
{
	int iCurOutSample;               /* Index of last written sample */
	double fSamplingRate;            /* Output sampling rate */
	SNDSoundStruct *pOutSoundStruct; /* Output file SNDSoundStruct */
	NXStream *pStream;               /* Output NXStream */
   
	id idSmsObj;                     /* sms object */
	char *pChFile;                   /* sms file name */
	double fDur;                     /* duration */
	double fTimeOffset;              /* time offset */
	double fAmp;                     /* overall amplitude */
	double fAmpDet;                  /* deterministic amplitude */
	double fAmpStoc;                 /* stochastic amplitude */				
	double fFreq1;                    /* frequency */
	double fFreq0;                    /* frequency */
	double fTimeStretch;             /* time stretch factor */
	double fTimeStretchHyb;             /* time stretch factor */
	double fFreqStretch;             /* frequency stretch factor */
	int iMaxTraj;                    /* maximum number of trajectories */
	id idAmpEnv;                     /* overall amplitude envelope */
	id idAmpDetEnv;                  /* deterministic amplitude envelope */
	id idAmpPartialsEnv;             /* determines which partials to use */
	id idAmpStocEnv;                 /* stochastic amplitude envelope */
	id idAmpStocCoeffEnv;            /* determines which coefficients to use */
	id idFreqEnv;                    /* frequency envelope */
	id idFreqPartialsEnv;            /* determines which partials to use */
	id idTimeStretchEnv;             /* time stretch envelope */
	id idTimeStretchHybEnv;             /* time stretch envelope */
	id idFreqStretchEnv;             /* frequency stretch envelope */

	id idSmsObjHyb;                  /* sms object to hybridize */
	char *pChFileHyb;                /* name of the sms file to hybridize */
	double fTimeOffsetHyb;           /* time offset for the hybridizing sound */
	double fDurHyb;                  /* duration of the hybrid sound */
	double fAmpDetHybFactor;         /* percentage of the hybridizing 
	                                    deterministic amp */
	double fAmpStocHybFactor;        /* percentage of the hybridizing 
	                                    stochastic amplitude */
	double fFreqHybFactor;           /* percentage of the hybridizing 
	                                    frequency */
	id idAmpDetHybEnv;               /* envelope for fAmpDetHybFactor */ 
	id idAmpStocHybEnv;              /* envelope for fAmpStocHybFactor */ 
	id idFreqHybEnv;                 /* envelope for fFreqHybFactor */ 
    
	int iFirstRecord;                /* first record to synthesize */
	int iLastRecord;                 /* last record to synthesize */
	SMS_DATA newSmsRecord;           /* modified record to be syntesized */
	int iModification;               /* 0 if original data was not modified */
	int iOldSample;                  /* used for phase modification */
	int iNewSample;                  /* used for phase modification */
}

-setSamplingRate:(double)fSSrate stream:(NXStream *)aStream;

-init;

-firstNote:aNote;
  /* This is invoked when first note is received during performance */

-realizeNote:aNote fromNoteReceiver:aNoteReceiver;
  /* This is invoked when a new Note is received during performance */

-afterPerformance;
  /* This is invoked when performance is over. */

/* All other methods are private */

@end

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.