This is hybridMk.m in view mode; [Download] [Up]
#import <musickit/musickit.h>
#import <sys/file.h>
#import "HybridInstrument.h"
void main(int ac, char *av[])
{
int i, partCount;
id aSFPerformer, hybridIns;
double samplingRate = 22050.;
int inFd, outFd;
id scoreInfo, noteSenders;
NXStream *inStream, *outStream;
char bNormAmp = 1;
if (ac != 3)
{
fprintf(stderr,
"Usage: hybridMk <input score file> <output snd file>.\n");
exit(1);
}
inFd = open(av[1],O_RDONLY,0660);
if (inFd == -1)
{
fprintf(stderr,"Can't open %s\n.",av[1]);
exit(1);
}
else fprintf(stderr,"Input file: %s\n",av[1]);
outFd = open(av[2], O_RDWR | O_CREAT | O_TRUNC, 0660);
if (outFd == -1)
{
fprintf(stderr,"Can't create %s\n.",av[2]);
exit(1);
}
else fprintf(stderr,"Output file: %s\n",av[2]);
inStream = NXOpenFile(inFd,NX_READONLY);
outStream = NXOpenFile(outFd,NX_READWRITE);
aSFPerformer = [[ScorefilePerformer alloc] init];
[aSFPerformer setStream:inStream];
[aSFPerformer activate];
scoreInfo = [aSFPerformer info];
if (scoreInfo)
{
if ([scoreInfo isParPresent:MK_samplingRate])
if (((samplingRate = [scoreInfo parAsDouble:MK_samplingRate]) !=
22050.) && (samplingRate != 44100.))
fprintf(stderr,"This samplingRate is not allowed, set to %g.\n",
samplingRate);
if ([scoreInfo isParPresent:[Note parName:"normalizeAmp"]])
bNormAmp = (char)[scoreInfo parAsInt:[Note parName:"normalizeAmp"]];
}
hybridIns = [[HybridInstrument alloc] init];
[hybridIns setSamplingRate:samplingRate normal:bNormAmp stream:outStream];
noteSenders = [aSFPerformer noteSenders];
partCount = [noteSenders count]; // conta las parts, i per cada una
for (i = 0; i < partCount; i++)
[[noteSenders objectAt:i] connect:[hybridIns noteReceiver]];
[noteSenders free];
[Conductor setClocked:NO];
fprintf(stderr,"hybridizing...\n");
[Conductor startPerformance];
fprintf(stderr,"...done\n");
NXClose(outStream);
exit(0);
}These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.