.DS 
.ft C
# define MalCpy(x)((char *)strcpy(malloc(strlen(x)+1), x))

\fBPlayer\fP \fIpart\fP()
{
	\fBInstance\fP char *r, *p;

	\fBP_start\fP {
		r = MalCpy("| T4/8 {8}x8 | {8}x4 {4}x2 |");
		p = MalCpy("| K1s g g a b g b a r | g g a b g f \fBKill\fP |");
	}

	\fBP4\fP= \fBRhythms\fP(r);
	\fBP6\fP= \fBPitches\fP(p);
	\fBP2\fP = \fBAbs_time\fP();
	\fBWait_until\fP(\fBP2\fP + \fBP4\fP);
}

\fBPlayer\fP \fIagent\fP(0)
{
	\fBPlayer\fP *np;
	int i, parts;

	if (\fBArgc\fP >= 2)
		parts = atoi(\fBArgv\fP[1]);
	else {
		\fBPexit\fP(1);
	}

	srandom(time(0));

	for (i = 0; i < parts; i++) {
		np = \fBNew_player\fP(part, frand(0.0, 3.0), \fBForever\fP, \fBP_READY\fP);
		\fBSet_p\fP(np, 5, (double) i);
	}

	\fBKill\fP(\fBSelf\fP);
}
.ft R 
.DE
