:- multifile macro/2. 
:- multifile rx/2. 

% Voorbeeld: transducer voor het aanmaken van een MBROLA pho bestand
% De transducer werkt op de uitvoer van de grafeem-foneem omzetter
% die je in Week 3 hebt gemaakt.

% Invoer: pAt
% Uitvoer:

% _ 180 90 110 
% p 113 
% A 101 20 125 80 81 
% t 180 100 75 
% _ 900 10 72 

macro(pho,[stilvoor,klanken,stilna]).
macro(klanken,[prioriteit^,prioriteitklinker,prioriteit^]).
macro(priority_union(Q,R), {Q, ~domain(Q) o R}).

% mbrola(Foneem, Foneem_in_mbrola, Duur)
% optioneel zijn 2x percentage en toonhoogte
 
macro(mbrola(Foneem,Mbrola,A), Foneem:[Mbrola,' ',A,'\n']).
macro(mbrola(Foneem,Mbrola,A,B,C), Foneem:[Mbrola,' ',A,' ',B,' ',C,'\n']).
macro(mbrola(Foneem,Mbrola,A,B,C,D,E), Foneem:[Mbrola,' ',A,' ',B,' ',C,' ',D,' ',E,'\n']).

% Zie Gerrits MBROLA pagina voor duren en toonhoogten.

macro(stilvoor, mbrola([],'_',180,90,110)).
macro(stilna, mbrola([],'_',900,10,72)).

macro(prioriteit,priority_union(tweede+,duurtoon+)).
macro(prioriteitklinker,priority_union(nieuw+,klinker+)).

macro(duurtoon, {
    mbrola(p,p,110),    mbrola(t,t,110),    mbrola(k,k,110),    mbrola(f,f,110),    mbrola(s,s,110),
    mbrola(b,b,90),    mbrola(d,d,90),
    mbrola(x,x,110),    mbrola(v,v,90),    mbrola(z,z,90),
    mbrola('Z','Z',90),    mbrola(h,h,90),
    mbrola(g,g,90),
    mbrola(n,n,80),    mbrola(m,m,80),
    mbrola('N','N',80),    mbrola(j,j,60),    mbrola(w,w,60),    mbrola(r,r,70),    mbrola(l,l,70),
    mbrola('S','S',110),
    mbrola('R','R',110),
    mbrola('L','L',110),
    mbrola('W','W',110),
    mbrola('J','J',110),
    mbrola('G','G',110)
    }).
   
    macro(klinker, {
    mbrola('A','A',80),    mbrola('O','O',120),    mbrola('Y','Y',120),    mbrola('I','I',120),    mbrola('E','E',120),    mbrola(a,a,180),
    mbrola(o,o,180),    mbrola(y,y,180),    mbrola(i,i,180),    mbrola(e,e,180),    mbrola(u,u,180),    mbrola('2','2',180),
    mbrola('@','@',60)    }).
    
    macro(nieuw, {
    mbrola(['I',':'],'I',180),    mbrola(['Y',':'],'Y',180),    mbrola(['O',':'],'O',180),    mbrola(['E',i],'Ei',180),    mbrola(['9','y'],'9y',180),    mbrola(['A',u],'Au',180)
    }).    
    macro(tweede, {
    mbrola([n,j],nj,130),
    mbrola([t,j],tj,130),
    mbrola([d,j],dj,130) 
    }).



