Fs1 = 44100; %Set Sampling FrequencyFr = Fs1; %Set Reconstruction FrequencyFs = Fs1; % The multiple of the sampling frequency to be usedT =1/Fs; %Sampling Period
N = 0.2*Fs1; % Number of samples to achieve desired durationL = 1; % default value for L (L=1 => no duration change)n = @(L) 1:L*N; %the array, n, takes an integer multiplier, L, that can reduce or increase the duration of a note, i.e. 1/2 note, 1/4 note, etcm = 0; %default input for oct, the octave shift function (using downsampling)
%Generate General Sinusoid%m is the desired octave, which is transformed into the appropriate multiplier by the oct function%L is the desired length of the note (in quarter notes)%fN is the frequncy of the note note = @(m, L, fN) sin(2*pi*oct(m)*fN*T*n(L)); %standard note at fund. freq.
fA = 440.00; % Master Tuned to A 440fGS = 415.30;fG = 392.00;fFS = 369.99;fF = 349.23; fE = 329.63;fDS = 311.13;fD = 293.66;fCS = 277.18 ;fC = 261.63;fAS = 466.16 ;fB =493.88;
namp = 1; % set the amplitude for the natural freqhamp = 0.8; % set the amplitude for the overtones
%each note passes m and L to the note function above%two overtones are added to each noteC = @(m, L) namp*note(m, L, fC) + hamp*note(m, L, 0.5*fC) + hamp*note(m, L, 2*fC); CS = @(m, L) namp*note(m, L, fCS) + hamp*note(m, L, 0.5*fCS) + hamp*note(m, L, 2*fCS); D = @(m, L) namp*note(m, L, fD) + hamp*note(m, L, 0.5*fD) + hamp*note(m, L, 2*fD); DS = @(m, L) namp*note(m, L, fDS) + hamp*note(m, L, 0.5*fDS) + hamp*note(m, L, 2*fDS); E = @(m, L) namp*note(m, L, fE) + hamp*note(m, L, 0.5*fE) + hamp*note(m, L, 2*fE);F = @(m, L) namp*note(m, L, fF) + hamp*note(m, L, 0.5*fF) + hamp*note(m, L, 2*fF); FS = @(m, L) namp*note(m, L, fFS) + hamp*note(m, L, 0.5*fFS) + hamp*note(m, L, 2*fFS); G = @(m, L) namp*note(m, L, fG) + hamp*note(m, L, 0.5*fG) + hamp*note(m, L, 2*fG); GS = @(m, L) namp*note(m, L, fGS) + hamp*note(m, L, 0.5*fGS) + hamp*note(m, L, 2*fGS); A = @(m, L) namp*note(m, L, fA) + hamp*note(m, L, 0.5*fA)+ hamp*note(m, L, 2*fA); AS = @(m, L) namp*note(m, L, fAS) + hamp*note(m, L, 0.5*fAS) + hamp*note(m, L, 2*fAS); B = @(m, L) namp*note(m, L, fB) + hamp*note(m, L, 0.5*fB) + hamp*note(m, L, 2*fB);
%Define Restser = zeros(1, .25*N); % eigth restqr = zeros(1, .25*N); % quarter resthr = zeros(1, .5*N); % half resttr = zeros(1, .75*N); % three-quarter restwr = zeros(1, N); % whole rest
%my song %first part song1 = [D(2,1) qr E(2,1) qr C(2,1) qr A(1,2) qr B(1,1) qr G(1,2) hr D(1,1) qr E(1,1) qr C(1,1) qr A(0,2) qr B(0,1) qr G(0,2) hr ... D(0,1) qr E(0,1) qr C(0,1) qr A(-1,2) qr B(-1,1) qr A(-1,1) qr GS(-1,1) qr G(1,2) hr... D(1,1) qr DS(1,1) qr E(1,1) qr C(2,2) qr E(1,1) qr C(2,2) qr E(1,1) qr C(2,2) wr wr wr ... C(2,1) qr D(2,1) qr DS(2,1) qr E(2,1) qr C(2,1) qr D(2,1) qr E(2,2) hr B(1,1) qr D(2,2) qr C(2,2) wr ... D(1,1) qr DS(1,1) qr E(1,1) qr C(2,2) hr E(1,1) qr C(2,2) hr E(1,1) qr C(2,2) wr... A(1,1) qr G(1,1) qr FS(1,1) qr A(1,1) qr C(2,1) qr D(2,1) qr E(2,2) hr D(1,1) qr C(2,1) qr A(1,1) qr D(2,2) wr ... D(1,1) qr DS(1,1) qr E(1,1) qr C(2,2) hr E(1,1) qr C(2,2) hr E(1,1) qr C(2,2) wr... C(2,1) qr D(2,1) qr DS(2,1) qr E(2,1) qr C(2,1) qr D(2,1) qr E(2,2) hr B(1,1) qr D(2,2) qr C(2,2) wr wr... C(2,1) qr D(2,1) qr E(2,1) qr C(2,1) qr D(2,1) qr E(2,2) hr C(2,1) qr D(2,1) qr C(2,1) qr E(2,1) qr C(2,1) qr D(2,1) qr E(2,2) hr B(1,1) qr D(2,2) qr C(2,2) ... ];%second partsong2 = [D(1,1) qr E(1,1) qr C(1,1) qr A(0,2) qr B(0,1) qr G(0,2) qr D(0,1) qr E(0,1) qr C(0,1) qr A(-1,2) qr B(-1,1) qr G(-1,2) qr ... D(-1,1) qr E(-1,1) qr C(-1,1) qr A(-2,2) qr B(-2,1) qr A(-2,1) qr GS(-2,1) qr G(0,2) qr... wr qr wr qr C(-1,1.5) qr wr hr wr qr AS(-1,1.5) qr wr qr hr wr A(-1,1.5) wr hr ... F(-1,1.5) wr qr hr qr wr G(-1,1.5) qr wr hr qr wr G(-1,1.5) wr qr hr wr qr C(-1,1) qr G(-1,1) qr A(-1,1) qr B(-1,1)... wr qr wr C(-1,1.5) qr wr hr wr AS(-1,1.5) qr wr hr wr A(-1,1.5) wr hr qr FS(-1,1.5) wr hr wr D(-1,4) wr wr wr wr G(-1,1) qr A(-1,1) qr B(-1,1)... wr qr wr C(-1,1.5) qr wr hr wr AS(-1,1.5) qr wr hr wr A(-1,1.5) wr qr hr... F(-1,1.5) wr qr hr qr wr G(-1,1.5) qr wr hr qr wr G(-1,1.5) wr qr hr wr qr C(-1,1) qr G(-1,1) qr A(-1,1) qr B(-1,1) wr wr ... C(-1,2) wr wr AS(-1,2) wr wr A(-1,2) wr wr GS(-1,2) wr wr G(-1,2) wr wr G(-1,1) qr C(0,2) ];
%Output song reconstructed at Frsound(0.5*song1, Fr); % the multiplier in front of song sets the master volumesound(0.5*song2, Fr);