No BSD License  

Highlights from
MELODY

from MELODY by Vassili Pastushenko
Plays a melody in 2-letter code.

[Z,GAM]=melody(PES,x)
function	[Z,GAM]=melody(PES,x)
% Plays 2-letter note code, 1 note per row
% Example below:   MEL
%Call	
%		RES=melody(PES,x)
%Input
%		PES = Notes, def. russian song "Happy Xmas" ( elochka)
%       x = Freq. Factor (1,2,3,4,...), def.3
%Output
%       melody; Z = data to play,e.g.  sound(Z/5)
%       GAM = GAMMA used
%Vassili Pastushenko 20:45 at 31-st December 1999
%================================
if nargin<2,x=3;end
if nargin<1
    MEL=['dllslfdddllcrddddrrcclsfdllslfff'
'oaaoaaoooaai22222eeiiaoaoaaoaaaa']';    
    PES=MEL;
end
[a,b]=size(PES);
if a==1|b==1
PES=reshape(PES,2,length(PES)/2)';
end

F=2.^((-5:16)/12)*440;

REM=[1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 1 0];
F=F(REM(1:length(F))>.1);
GAM='doremifasolacid2r2m2f2s2l2c2d3r3m3f3s3l3c3d4';

GAM=reshape(GAM,2,length(GAM)/2)';
LG=length(GAM(:,1));

LEN=round(8192/x);
LPES=length(PES);
Z=zeros(LEN,LPES);
PH=0;


for i=1:LPES
   loc=PES(i,:);
   for k=1:LG
      if all(loc==GAM(k,:))
         j=k;
         break
      end
   end
      [S,PH]=gensnd(F(j),x,PH);
   Z(:,i)=S;
 end

 VV=2:4:LPES;  Z(:,VV)=Z(:,VV).*1.5;
 
 Z=Z(:);
 Z=Z/max(abs(Z));
 
 ZZ=Z;
 ZZ=[ZZ(101:end);ZZ(1:100)];
 Z=[Z,ZZ];
 sound(Z/5);

Contact us at files@mathworks.com