Liebe Blog-Leser,
schon sind wir wieder mitten drin in dieser so besinnlichen, feierlichen und staden Vorweihnachtszeit, wo die meisten Menschen vor lauter Hektik nicht wissen, wo ihnen der Kopf steht. Jahresabschlüsse sind zu machen, Geschenke noch zu besorgen. Die Menschen um einen herum sind gereizt – und nach ehrlicher Selbstbeobachtung stellt man fest, dass man da keine Ausnahme bildet. In dieser Zeit möchte ich Ihnen etwas schenken, nämlich 30 Sekunden Zeit, in denen Sie sich zurücklehnen können oder Ihre Lieben, Freunde oder zur Not geliebte Kolleginnen und Kollegen um sich versammeln können, um dem kleinen aber feinen Weihnachtsliedchen zu lauschen, was ich extra nur für Sie als exklusives Weihnachtsgeschenk mit der SAS Makrosprache intoniert habe.
Kopieren Sie einfach den unten stehenden SAS-Programmcode in ein Codefenster im Enterprise Guide oder im SAS Displaymanager.
Wenn Sie wissen möchten, was ich da genau getan habe, dann empfehle ich Ihnen dieses SUGI-Paper, was mich auf die Idee gebracht hat. Oder Sie antworten mir auf diesen Blog-Beitrag, dann plaudere ich gerne mit Ihnen über die technischen Details. Natürlich dürfen Sie mir auch gerne eigene Kompositionen posten, wenn ich Sie jetzt inspiriert haben sollte.
Frohes Fest,
Ihr Tom Wende
Und los gehts - Soundkarte an oder Kopfhörer auf, Kerze an, Programm in einen SAS-Code oder in eine EG-Session kopieren und abschicken:
%let pc=1.25;
/*Oh Du Fröhliche*/
%macro odf(note,octave,length);
select(¬e.);
when('A') call sound(55*(2**&octave.),&length.*160*&pc.);
when('A#') call sound(58*(2**&octave.),&length.*160*&pc.);
when('Bb') call sound(58*(2**&octave.),&length.*160*&pc.);
when('B') call sound(62*(2**&octave.),&length.*160*&pc.);
when('C') call sound(65*(2**&octave.),&length.*160*&pc.);
when('C#') call sound(69*(2**&octave.),&length.*160*&pc.);
when('Db') call sound(69*(2**&octave.),&length.*160*&pc.);
when('D') call sound(73.5*(2**&octave.),&length.*160*&pc.);
when('D#') call sound(73.5*(2**&octave.),&length.*160*&pc.);
when('Eb') call sound(78*(2**&octave.),&length.*160*&pc.);
when('E') call sound(82*(2**&octave.),&length.*160*&pc.);
when('F') call sound(87*(2**&octave.),&length.*160*&pc.);
when('F#') call sound(92.5*(2**&octave.),&length.*160*&pc.);
when('Gb') call sound(92.5*(2**&octave.),&length.*160*&pc.);
when('G') call sound(98*(2**&octave.),&length.*160*&pc.);
when('G#') call sound(104*(2**&octave.),&length.*160*&pc.);
when('Ab') call sound(104*(2**&octave.),&length.*160*&pc.);
when('R') call sleep((&length./3)*&pc.,1);
otherwise;
end;
%mend;
/*Oh Du Fröhliche*/
data _null_;
do i=1 to 2;
/*Oh Du...*/
%odf('C',3,2);
%odf('D',3,2);
%odf('C',3,1.5);
%odf('Bb',3,0.75);
%odf('A',3,1);
%odf('Bb',3,1);
end;
/*Gnadenbringende...*/
%odf('C',3,2);
%odf('C',3,2);
%odf('D',3,2);
%odf('E',3,1);
%odf('F',3,1);
%odf('E',3,2);
%odf('D',3,2);
%odf('C',3,3);
/*Welt ging verloren...*/
%odf('G',2,1.5);
%odf('A',3,.5);
%odf('G',2,1);
%odf('A',3,1);
%odf('Bb',3,1.5);
%odf('C',3,.5);
%odf('Bb',3,2);
%odf('A',3,1.5);
%odf('Bb',3,.5);
%odf('A',3,1);
%odf('Bb',3,1);
%odf('C',3,1.5);
%odf('D',3,.5);
%odf('C',3,2);
/*Freue Dich...*/
%odf('F',3,1);
%odf('E',3,1);
%odf('D',3,1);
%odf('C',3,1);
%odf('F',3,1);
%odf('D',3,1);
%odf('C',3,1);
%odf('Bb',3,1);
/*oh Christenheit*/
%odf('A',3,2);
%odf('G',2,2);
%odf('F',2,2.5);
run;