Pour ceux qui ont SAS, exécutez ça, c'est génial ! ^^
%let pc=1.25;
%macro df3(note,octave,length);
select(¬e.);
when('A') call sound(55*(2**&octave.),&length.*150*&pc.);
when('A#') call sound(58*(2**&octave.),&length.*150*&pc.);
when('Bb') call sound(58*(2**&octave.),&length.*150*&pc.);
when('B') call sound(62*(2**&octave.),&length.*150*&pc.);
when('C') call sound(65*(2**&octave.),&length.*150*&pc.);
when('C#') call sound(69*(2**&octave.),&length.*150*&pc.);
when('Db') call sound(69*(2**&octave.),&length.*150*&pc.);
when('D') call sound(73.5*(2**&octave.),&length.*150*&pc.);
when('D#') call sound(78*(2**&octave.),&length.*150*&pc.);
when('Eb') call sound(78*(2**&octave.),&length.*150*&pc.);
when('E') call sound(82*(2**&octave.),&length.*150*&pc.);
when('F') call sound(87*(2**&octave.),&length.*150*&pc.);
when('F#') call sound(92.5*(2**&octave.),&length.*150*&pc.);
when('Gb') call sound(92.5*(2**&octave.),&length.*150*&pc.);
when('G') call sound(98*(2**&octave.),&length.*150*&pc.);
when('G#') call sound(104*(2**&octave.),&length.*150*&pc.);
when('Ab') call sound(104*(2**&octave.),&length.*150*&pc.);
when('R') call sleep((&length./3)*&pc.,1);
otherwise;
end;
%mend;
data _null_;
%df3('Bb', 3 , 0.5);
%df3('D', 4 , 0.5);
%df3('C', 4 , 1);
%df3('Bb', 3 , 1);
%df3('A', 3 , 1);
%df3('Bb', 3 , 1);
%df3('F', 3 , 0.5);
%df3('F', 3 , 1.5);
%df3('R', 3 , 1);
%df3('Bb', 3 , 0.5);
%df3('D', 4 , 0.5);
%df3('C', 4 , 0.5);
%df3('Bb', 3 , 0.5);
%df3('R', 3 , 1);
%df3('D', 4 , 0.5);
%df3('C', 4 , 0.75);
%df3('Bb', 3 , 0.25);
%df3('A', 3 , 0.5);
%df3('Bb', 3 , 0.5);
%df3('C', 4 , 2);
%df3('R', 3 , 1);
%df3('C', 4 , 0.5);
%df3('Eb', 4 , 0.5);
%df3('D', 4 , 1);
%df3('C', 4 , 1);
%df3('Bb', 3 , 1);
%df3('C', 4 , 1);
%df3('A', 3 , 0.5);
%df3('A', 3 , 1.5);
%df3('R', 3 , 1);
%df3('G', 3 , 0.5);
%df3('F', 3 , 0.5);
%df3('G', 3 , 0.5);
%df3('A', 3 , 0.5);
%df3('Bb', 3 , 0.5);
%df3('C', 4 , 1);
%df3('C#', 4 , 1);
%df3('D', 4 , 2);
run;