Felicitación navideña con SAS

30 Dic

Ejecutad el siguiente código en SAS local:

data _null_;

/*
LA 440
SI 494
DO 523
RE 587
MI 659
FA 698
SOL 784
LA 880
*/

call sound(659,100);
call sound(659,100);
call sound(659,200);
call sound(659,100);
call sound(659,100);
call sound(659,200);

call sound(659,100);
call sound(784,100);
call sound(523,100);
call sound(587,100);
call sound(659,400);

call sound(698,100);
call sound(698,100);
call sound(698,150);
call sound(698,50);

call sound(698,100);
call sound(698,100);
call sound(659,100);
call sound(659,50);
call sound(659,50);

call sound(659,100);
call sound(587,100);
call sound(587,100);
call sound(659,100);

call sound(587,200);
call sound(784,200);

run;

Buen ejemplo de la función CALL SOUND (frecuencia, duracion)

Una respuesta a «Felicitación navideña con SAS»

  1. jaja, muy bueno!
    Aquí os dejo este otro que me pasaron en SAS-L, hecho por Paul Dorfman (apodado por muchos el Hashman) del cual yo tambien he aprendido a crear objetos hash en SAS. Si surge la oportunidad, algun día pondré algun ejemplo.

    Adelante música!!

    data holidays;
    retain fmtname ‘@holiday’;
    length data
    3;
    ratio = 1.05946309436;
    str1 =’A A#B C C#D D#E F F#G G#’;
    str2=’A BbCbB#DbD EbFbE#GbG Ab’;
    o = 1;
    do i = 0 to 87;
    p = 55 * ratio**i;
    data = compress(substr(str1,mod(i,12)*2+1,2)||o);
    output;
    if data^=compress(substr(str2,mod(i,12)*2+1,2)||o) then do;
    data = compress(substr(str2,mod(i,12)*2+1,2)||o);
    output;
    end;
    if mod(i,12)=2 then o=o+1;
    end;
    rename data=start p=label;
    keep fmtname data p;
    run;
    proc format cntlin=holidays;
    run;

    %macro play(input);
    data _Null_;
    %let i=1;
    %do %while(%scan(&input,&i,%str( ))^=);
    %let note = %scan(&input,&i,%str( ));
    %let pitch = %upcase(%scan(&note,1,=));
    %let duration = %scan(&note,2,=);
    %let i = %eval(&i+1);
    %if &pitch=R %then
    call sleep((1/&duration)*750);
    %else
    call sound(input(«&pitch»,$holiday.),(1/&duration)*300);
    ;
    %end;
    run;
    %mend;

    %play(%str(

    C6=1 B5=1.5 A5=6 G5=1 R=2 F5=2 E5=1 D5=1 C5=1

    R=2 G5=2 A5=1 R=2 A5=2 B5=1 R=2 B5=2 C6=.33

    C6=2 C6=2 B5=2 A5=2 G5=2 G5=1.5 F5=4 E5=2

    C6=2 C6=2 B5=2 A5=2 G5=2 G5=1.5 F5=4 E5=2 E5=2

    E5=2 E5=2 E5=2 E5=4 F5=4 G5=1 R=4 F5=4 E5=4

    D5=2 D5=2 D5=2 D5=4 E5=4 F5=1 R=4 E5=4 D5=4

    C5=2 C6=1 A5=2 G5=1.5 F5=6 E5=2 F5=2 E5=1 D5=1 C5=1

    ));

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *