% Programme de jeu de notes au clavier

%-------------------------------------------------------------
% on fabrique une gamme chromatique (choisir qwerty ou azerty)
%-------------------------------------------------------------

clear all

% clavier qwerty :
notes = ['a' 'w' 's' 'e' 'd' 'f' 't' 'g' 'y' 'h' 'u' 'j' 'k'];
% clavier azerty :
% notes = ['q' 'z' 's' 'e' 'd' 'f' 't' 'g' 'y' 'h' 'u' 'j' 'k'];

Fe = 22050;
f0 = 440;

qt = 3/2; qr = 4/3;
pyth = [1 qt^7/16 qt^2/2 qr^3/2 qt^4/4 qr qt^6/8 qt qt^8/16 qt^3/2 qr^2 qt^5/4 2];
zarl = [1 5/3*5/8 9/8 6/5 5/4 4/3 9/8*5/4 3/2 4/3*6/5 5/3 3/2*6/5 15/8 2];
temp = 2.^((0:12)/12);

gamme = input('taper pyth, zarl ou temp : ','s');
if strcmp(gamme,'pyth')
    fr = f0*pyth;
elseif strcmp(gamme,'zarl')
    fr = f0*zarl;
elseif strcmp(gamme,'temp')
    fr = f0*temp;
else 
    error('entree incorrecte');
end
    
T = .5;
for k = 1:13
    note = notes(k);
    eval([note '= flute(fr(k),T,Fe);']);
end
%-------------------------------------------------------------
% et on joue :
%-------------------------------------------------------------

disp('pour jouer, rentrez une note parmi :');
disp('clavier qwerty : a w s e d f t g y h u j k');
disp('clavier azerty : q z s e d f t g y h u j k');
disp('suivie par la touche enter');

x = 0;
note = [1 1];

while length(note) > 1
    note = input('note suivante ? (pour terminer, taper x)');
    if length(note) == 1
        disp('termine');
        break
    end
    soundsc(note,Fe);
    %wavplay(note,Fe,'async');
end


