# definitions de macros pour le Batteur
#======================================

# remarque importante: 
# il est souvent sous-entendu que ~Or est en fait Or = xy(0,0)
# (autrement dit, que le batteur est centr)

#---------------- gnral:

DEFINE seg(X,Y) INSERT Ecoute(~X,~Y,duration,t0,region,df)

DEFINE forkprog(prog) FORK Batteur("~","prog",duration,t0,region,df)

DEFINE f(_) FORK {_}


#---------------- roulements & co:
# en gnral:
#      est un sens: -1 ou 1
#     @ une vitesse: facteur de la vitesse de base


# variations sur l'hlice centrale:

DEFINE round(X) INSERT Helice(~Or,0.5*_d_,Theta(~X),Pi/8,1,duration,t0,region,df)
DEFINE xround(X,,@) INSERT Helice(~Or,0.5*_d_,Theta(~X),Pi/8,,-pow(@,-1),t0,region,df)


# variations sur le second cercle:

DEFINE round2(X) INSERT Polygon(Cerc(~Or,0.5*_d_/sin(Pi/8)),8,Theta(~X),duration,t0,region,df)
DEFINE xround2(X,,@) INSERT EcPiste(ParaPiste(Theta(~X),*(2*Pi+Theta(~X)),Pi/4,Cercle,0.5*_d_/sin(Pi/8)),1,1,-pow(@,-1),t0,region,df)


# variations sur le troisime cercle:

DEFINE round3(X) INSERT Polygon(Cerc(~Or,0.5*_d_/sin(Pi/16)),16,Theta(~X),duration,t0,region,df)
DEFINE xround3(X,,@) INSERT EcPiste(ParaPiste(Theta(~X),*(2*Pi+Theta(~X)),Pi/8,Cercle,0.5*_d_/sin(Pi/16)),1,1,-pow(@,-1),t0,region,df)


# les cercles par EcouteC:

DEFINE c1(X) INSERT EcouteC(Cerc(~Or,0.5*_d_),Theta(~X),1,duration,t0,region,df)
DEFINE c2(X) INSERT EcouteC(Cerc(~Or,0.5*_d_/sin(Pi/8)),Theta(~X),1,duration,t0,region,df)
DEFINE c3(X) INSERT EcouteC(Cerc(~Or,0.5*_d_/sin(Pi/16)),Theta(~X),1,duration,t0,region,df)


# un cercle de 1 beat autour d'un point quelconque, et gnralisations:

DEFINE c1b(X) INSERT EcouteC(CerP(~X,_d_),Pi+Theta(~X),1,duration,t0,region,df)
DEFINE cnb(X,@) INSERT EcouteC(CerP(~X,@*_d_),Pi+Theta(~X),1,duration,t0,region,df)
DEFINE xcnb(X,@,,Y) INSERT EcouteC(CerP(~X,@*_d_),Theta(~Y),,duration,t0,region,df)


#---------------- gesticulations diverses:

DEFINE acc(X) X ! X 0.5*_d_ ! X 0.25*_d_ ! X 0.1*_d_

DEFINE yoyo(X) X ! X - ! X 0.5*_d_ ! X -0.5*_d_ ! X 0.25*_d_ ! X -0.25*_d_ ! X 0.1*_d_ ! X -0.1*_d_



#---------------- exotiques:

DEFINE spirale(X,Y,ntours,nsegs) INSERT SpiralAB(~X,~Y,~Or,ntours,nsegs,duration,t0,region,df)
DEFINE cr(X,Y,nsegs) INSERT CercleRythm(~X,~Y,nsegs,duration,t0,region,df)
DEFINE ech(X1,Y1,X2,Y2,nsegs) INSERT Echelle(~X1,~Y1,~X2,~Y2,nsegs,duration,t0,region,df)


#---------------- marqueurs:

DEFINE mark MARK |c (@)
DEFINE m2 MARK c2 |c (@)
DEFINE mred MARK c2 |c (@)
DEFINE m5 MARK c5 |c (@)
DEFINE mblue MARK c5 |c (@)
DEFINE m6 MARK c6 |c (@)
DEFINE m7 MARK c7 |c (@)


#---------------- pointeur:

# active et dplace:
DEFINE NEXT> NEXT ! POINT=NEXT
DEFINE DOWN> DOWN ! POINT=DOWN
DEFINE UP> UP ! POINT=UP
DEFINE PREV> PREV ! POINT=PREV

# dplace sans activer:
DEFINE pNEXT POINT=NEXT
DEFINE pDOWN POINT=DOWN
DEFINE pUP POINT=UP
DEFINE pPREV POINT=PREV





