% State space model of non-homogeneous Drum head - Tabla, By 'Yasser'Seekings.
% There are three basic hits represented here :- Tin, a hit to the middle, Edge
% hit to the edge(!), and dmp which is a damped hit, on the real thing this
% exploits the higher modes of resonance but not here, any ideas?
n=13; % number of 'masses' 9 is the minimum
% for reasonable results
T=1/3; % 1/3 of a second spent on each 'hit'
fs=11000; % sample freq.
% Basic hit - tin
%----------------------------------------------------------------------------------------------------------
tin(1:2:2*n)=0.001*sin((0:n-1)*pi/n);
tin(2:2:2*n)=sin((0:n-1)*pi/(n-1));
% hit to the edge
%----------------------------------------------------------------------------------------------------------
edge(1:2:2*n)=0.001*sin((4:n+3)*pi/n);
edge(4)=[1];
edge(2*n)=0;
% damped hit
%----------------------------------------------------------------------------------------------------------
dmp(1:2*n)=zeros(2*n,1);
dmp(14)=[10];
% air damping factor - empirically
% derived
%----------------------------------------------------------------------------------------------------------
r=0.017e-3*ones(1,n);
% Masses of the system - empirically
% derived
%----------------------------------------------------------------------------------------------------------
ro1=4.56; % Mass per unit area of the sythi
ro2=0.226; % Mass per unit area of the lao
dr=0.13/n % width of the puri/number of masses
drs=dr^2;
tm=ones(1,7);
tm(1)=pi*drs*ro; % Calculates the mass of the middle mass
for i=2:4;tm(i)=pi*ro1*drs*((2*i)-1)/2;end; % Calculates the masses of one half of the synthi
for i=5:7;tm(i)=pi*ro2*drs*((2*i)-1)/2; end; % Calculates the masses of one half of the lao
for i=1:6; tmass(i)=tm(8-i);end; % Fills the tmass matrix, with the values calculated
for i=7:13; tmass(i)=tm(i-6);end; % above.
% overall tuning factor empirically derived.
% Equivelent to Tk, see text.
%----------------------------------------------------------------------------------------------------------
tuning=21000;
% spring constants of springs
% equal to the tuning
%----------------------------------------------------------------------------------------------------------
k(1:14)=tuning*ones(14,1);
% state space matrices a,b,c,d
%----------------------------------------------------------------------------------------------------------
a=zeros(2*n);
b=zeros(size(a(:,1)));
for i=1:2:2*n; b(i)=10; end;
c=eye(size(a)); d=b;
for j=1:2:2*n % Fills A matrix for odd-numbered states.
a(j,j+1)=1;
end
% first mass
a(2,[1:3])=[-(k(1)+k(2))/tmass(1) -r(1)/tmass(1) k(2)/tmass(1)];
% last mass
a(2*n,[2*n-3:2*n])=[k(n)/tmass(n) 0 -(k(n)+k(n+1))/tmass(n) -r(n)/tmass(n)]; %last mass
% middle masses
for j=4:2:2*n-2
i=j/2;
a(j,[j-3:j+1])=[k(i)/tmass(i) 0 -(k(i)+k(i+1))/tmass(i) -r(i)/tmass(i) k(i+1)/tmass(i)];
end
% A matrix da for damped
% hit note different value for r(4)
%----------------------------------------------------------------------------------------------------------
r(5)=0.9;
da=zeros(2*n);
for j=1:2:2*n
da(j,j+1)=1;
end
% first mass
da(2,[1:3])=[-(k(1)+k(2))/tmass(1) -r(1)/tmass(1) k(2)/tmass(1)];
% last mass
da(2*n,[2*n-3:2*n])=[k(n)/tmass(n) 0 -(k(n)+k(n+1))/tmass(n) -r(n)/tmass(n)]; %last mass
%middle masses
for j=4:2:2*n-2
i=j/2;
da(j,[j-3:j+1])=[k(i)/tmass(i) 0 -(k(i)+k(i+1))/tmass(i) -r(i)/tmass(i) k(i+1)/tmass(i)];
end
% the business bit
% this simulates the drum head
% note the last values of one hit
% consitute to the next hit giving
% a more realistic situation
%----------------------------------------------------------------------------------------------------------
t=0:1/fs:T;
ts=fs*T
y=initial(a,b,c,d,tin,t);
y2=initial(a,b,c,d,edge+y(ts,:),t);
y3=initial(da,b,c,d,dmp+y2(ts,:),t);
% here we add the velocities
% of all the masses at a given time
% instant to give the output tsound
%----------------------------------------------------------------------------------------------------------
tsound(1:ts+1)=sum(y(:,2:2:2*n)');
tsound(ts+2:2*ts+2)=sum(y2(:,2:2:2*n)');
tsound(2*ts+3:3*ts+3)=sum(y3(:,2:2:2*n)');
pause;
saxis('auto');
sound(tsound,fs);
function [a,b,c,d,n,cn,cood]=drum(noincircum, noinradius,tuning);
% Yasser 96.
% Function which creates, state-space matrices a,b,c,d and
% the order n for the dahina, the left hand tabla, a
% classical Indian drum. Left hand arguements are the
% number of masses in the circumference, the number of
% masses in the radius+1 (not including the middle one,
% and finally the tuning constant try 9000, for this.
% Oh and the a matrix is sparse.
%connectivity matrix- cn
n=(noincircum*noinradius)+1; % n= total number of masses
dr=0.13/((2*noinradius)+1); % dr=width of puri/number of
% masses in diameter
%Mass matrix
m=ones(n,1); % Initializes mass matrix of the correct size
ro1=4.56; % Kg/m^2 of the synthi
ro2=0.226; % Kg/m^2 of the lao
m(1)=ro1*(dr^2)*pi; % Calulates the mass of the centre mass
cood=zeros(n,2); % Intialializes the coordinate matrix
w=2*pi/noincircum; % add coodinates, w is angular rotatation
% This calculates the coordinates of each of
for k=1:noinradius % the masses
for i=2:noincircum+1
cood(i+(noincircum*(k-1)),:)=[k*dr*sin((i-1)*w) k*dr*cos((i-1)*w)];
end;
end;
cn=sparse(zeros(n+1,n)); % This Initializes a sparse matrix for the
% connectivity information (cn)
cn(2:noincircum+1,1)=ones(noincircum,1); % fills in the cn matrix for centre (1) mass
% this fills the cn matrix
for k=0:noinradius-1;
pt1=2+k*noincircum;
pt2=k*noincircum+1+noincircum;
for i=pt1:pt2;
if i==pt1 cn(i+noincircum-1,i)=1;
else cn(i-1,i)=1; end; %left mass
if i==pt2 cn(i-noincircum+1,i)=1;
else cn(i+1,i)=1; end; %right mass
if k==0 cn(1,i)=1; % inside mass
else cn(i-noincircum ,i)=1; end;
if k==noinradius-1 cn(n+1,i)=1; % boundary
else cn(i+noincircum ,i)=1; end; % or an outside mass
m(i)=((2*k)+3)*(pi*dr^2)/noincircum; % This calculates the area of the puri that % each mass is approximating then it is % multiplied by the correct mass per unit
% area, depending on weather
if k<(noinradius-1)/2 m(i)=m(i)*ro1; % the mass represents the sythi or lao
else m(i)=m(i)*ro2; end;
end;%for
end; %for
%spring constant
%tuning=11000; % This sets the tuning/spring % constant
% damping % This is the ammount of % damping for the model
r=0.01;
a=sparse(zeros(n)); % Inializes a sparse matrix for A
nofcm=sum(cn); % Add up the columns of cn to give the number of % masses or boundaries one particular mass is % connected to.
for j=2:2:2*n
i=j/2;
a(j-1,j)=1; % puts in the odd states
a(j,j)=-r/m(i); % puts in velocity term
a(j,j-1)=-nofcm(i)*tuning/m(i); % puts in acceration -the number % of mass connected to mass i
end;
[l,u]=find(cn(1:n,1:n)); % Finds all the ones in the cn % matrix excluding those relating % to boundary conditions, there % indices are returned in l and u
for j=1:length(l)
a(2*l(j),2*u(j)-1)=tuning/m(l(j)); % puts in the rest of the % displacement terms
end;
b=zeros(size(a(:,1))); % Initializes B matrix
c=zeros(size(a)); % Initializes C matrix
for i=1:2*n c(i,i)=[1]; end; % and selects the outputs
d=b; % Initializes D matrix
[a,b,c,d,n]=drum(8,4,25000); % Calls the drum function to make the state % matrices and n the number of masses
fs=11000; % Sample frequency
T=0.3; % Length of each response to each hit
ts=fs*T; % The number of samples in each response
t=[0:1/fs:T]; % The time vector
% Below are the initial conditions for three different hits
% Basic hit - tin
%-----------------------------------
tin=zeros(1,2*n);
tin(16)=[40];
% hit to the edge
%-----------------------------------
edge=zeros(1,2*n);
edge(40)=[40];
% hit damped hit
%-----------------------------------
dmp=zeros(1,2*n);
dmp(52)=[60];
% This bit calculate the systems response to each hit, first without ‘finger factor’ (see text)
y=initial(full(a),b,c,d,tin,t);
y2=initial(full(a),b,c,d,edge+y(ts,:),t);
Then with the ‘finger factor’ !!!
a(8,8)=a(8,8)*10000; % ‘finger factor’
y3=initial(full(a),b,c,d,tin+y2(ts,:),t);
y4=initial(full(a),b,c,d,dmp+y3(ts,:),t);
% As you can see the initial conditions of the new hit is added to last state of the previous hit.
y=sum(y');
y2=sum(y2');
y3=sum(y3');
y4=sum(y4');
y4=y4(1:1100);
%This arranges them nicely
phrase=[y y3 y2 y4];
n=1;
n=n*4; % number of elements, aways a multiple of 4.
len=1/n;
kd=(0.5/len).*[1 -1;-1 1]; % element stiffness matrix
skd=zeros(n+1);
% This assembles the element stiffness
% matrices into a global stiffness matrix
for i=1:n
skd(i,i)=kd(1,1)+skd(i,i);
skd(i,i+1)=kd(1,2)+skd(i,i+1);
skd(i+1,i)=kd(2,1)+skd(i+1,i);
skd(i+1,i+1)=kd(2,2)+skd(i+1,i+1);
end;
% the next bit creates the mass matrix
ro1=1;
ro2=1;
mass=zeros(n+1);
for i=1:n+1
if(i>(n/4)+1)&(i<(3*n/4)+1) mass(i,i)=ro1;
else mass(i,i)=ro2;
end;
end;
% add boundary conditions
Km=mass(2:n,2:n);
Kd=skd(2:n,2:n);
% solve for eigenvalues and vectors
[v,l]=eig(Kd,Km);
[ev]=diag(l);
% plot results
figure(1);
subplot(221)
plot([0 ;v(:,1); 0],'c');
axis([1 n+1.1 -1 1]);
%title(sprintf('Eigenvector associated with lamda=%g',ev(1)));
subplot(222)
plot([0 ;v(:,2); 0],'c');
axis([1 n+1.1 -1 1]);
%title(sprintf('Eigenvector associated with lamda=%g',ev(2)));
subplot(223)
plot([0 ;v(:,3); 0],'c');
axis([1 n+1.1 -1 1]);
%title(sprintf('Eigenvector associated with lamda=%g',ev(3)));
*HEADING
frequency extraction for drum skin, mark2
*PREPRINT, ECHO=YES, MODEL=NO, HISTORY=NO
*NODE, NSET=N1
1, ,, ,
*NODE, NSET=N9
9,30., ,
*NODE, NSET=N10
10,30., ,
*NODE, NSET=N30
30,70.,,
*NODE, NSET=N36
36,72.5,,-2.5
*NODE, NSET=N38
38,72.5,,-7.5
*NODE, NSET=N40
40,70.,,-2.5
1000,,,-75.
*NFILL, NSET=R1,BIAS=1.1,TWOSTEP
N1,N9,8,1
*NFILL, NSET=R1,BIAS=1.025, TWOSTEP
N10,N30,20,1
*NGEN, NSET=R1, LINE=C
30,36,1,40,,,,,1.,,
*NGEN, NSET=R1
36,38,1
*NCOPY, OLDSET=R1, CHANGENUMBERS=40,SHIFT,MULTIPLE=35,NEWSET=RS
0.,0.,0.
0.,0.,-1.,0.,0.,1.,10.
*NSET,NSET=CONS1, GEN
9,1409,40
*NSET,NSET=CONS2, GEN
10,1410,40
*NSET,NSET=PULL, GEN
38,1438,40
*ELEMENT, TYPE=m3d6,ELSET=CENT
1,1 ,3,83,2,43,82
2,1 ,83,163,82,123,162
3,1 ,163,243,162,203,242
4,1 ,243,323,242,283,322
5,1 ,323,403,322,363,402
6,1 ,403,483,402,443,482
7,1 ,483,563,482,523,562
8,1 ,563,643,562,603,642
9,1 ,643,723,642,683,722
10, 1,723,803,722,763,802
11, 1,803,883,802,843,882
12, 1,883,963,882,923,962
13, 1,963,1043,962,1003,1042
14, 1,1043,1123,1042,1083,1122
15, 1,1123,1203,1122,1163,1202
16, 1,1203,1283,1202,1243,1282
17, 1,1283,1363,1282,1323,1362
18, 1,1363,3,1362,1403,2
*ELEMENT, TYPE=m3d9
19,3,5,85,83,4,45,84,43,44
36,1363,1365,5,3,1364,1405,4,1403,1404
101,10,12,92,90,11,52,91,50,51
118,1370,1372,12,10,1371,1412,11,1410,1411
*ELGEN,ELSET=CENT
19,17,80,1,3,2,18
36, 3,2,18
*ELGEN,ELSET=OUT
101,17,80,1,14,2,18
118, 14,2,18
*ELSET,ELSET=CNT,GEN
281,334,1
*membrane SECTION, ELSET=CENT, MATERIAL=CC
1.8,3
*membrane SECTION, ELSET=OUT, MATERIAL=RR
.35,3
*MATERIAL, NAME=RR
*DENSITY
6.5E-7
*ELASTIC
1E4,.45
*MATERIAL, NAME=CC
*DENSITY
6.5E-7
*ELASTIC
1.E4, .45
*RIGID SURFACE, TYPE=REVOLUTION, NAME=MSURF,REFNODE=1000, SMOOTH=1.
0.,0.,-2.5,0.,0.,0.
START, 65., 1.5
LINE, 70., 2.5
CIRCL, 72.5,0.,70.,0.
LINE, 72.5, -7.5
*SURFACE DEFINITION, NAME=SSURF
CNT,SNEG
*CONTACT PAIR, INTERACTION=MU
SSURF,MSURF
*SURFACE INTERACTION, NAME=MU
*FRICTION
.01
*MPC
TIE,CONS1,CONS2
*AMPLITUDE, TIME=STEP,VALUE=R,NAME=ZDISP
0., 0., 1.,1.
*RESTART,WRITE,FREQ=1
************** step 1 ***************
*STEP,NLGEOM,INC=5
pull down the outer edge to pre-tension the skin
*STATIC
1.,1., , 1.
*BOUNDARY, AMP=ZDISP
pull,1,2,0.
pull,3,,-1
1000,1,6,.0
*NODE PRINT, FREQ=200
U
RF
*EL PRINT,POSITION=AVERAGED AT NODES, FREQ=200
S
*NODE FILE , FREQ=1
U
RF
CF
*EL FILE, position=averaged at nodes, freq=1, ELSET=CNT
s
se
*CONTACT FILE, FREQ=1, MASTER=MSURF, SLAVE=SSURF
*MONITOR, NODE=1,DOF=3, FREQ=1
*END STEP
*************** STEP2 **************
*STEP,NLGEOM
*FREQUENCY
10,1000
*BOUNDARY, op=new,fixed
PULL,1,3,0.
1000,1,6,0.
*ELPRINT, FREQ=0
*MODAL FILE
*END STEP
****************************
`
My life, My Music - Pandit Ravi Shanker.
Play Tabla - Frances Sheperd, Sharda Sahai.
The Finite element method, principles and applications - P.E. Lewis, J.P.Ward
Finite Element analysis, Theory and practice - M.J Fagen
Theories and problems of finite element analysis, George Buchanan.
The mathematics of finite elements and applications - Ed. J.R Whiteman
Finite elements and approximation - O.C Zienkiewicz, Morgan.
Applications, implementations of finite element methods - Akin
The mathematical basics for finite element methods - Griffiths
Finite Elements, an introduction for engineers - Livesly
The finite element primer - Irons, Shrive
Concepts and applications of Finite element analysis - Cook, Malkus, and Plesha.
Finite Element Analysis, from concepts to applications - David S.Burnett.
Discrete time control sytems - Katsuhiko Ogata
Sytem dynamics - Katsuhiko Ogata
Linear systems - Tomas Kailath
Signals and Systems, continuous and discrete - Ziemer, Tranter and Fannin.
Discrete time and continuous time, linear systems - R.J Mayhan
Numerical solutions to partial differential equations - G.D. Smith.
Numerical methods for partial differential equations - W.F Ames
Advanced engineering maths, Erwin Kreyszig.
Introduction to linear, parametric, and non-linear vibrations - Andrew Cartmell
Vibrational problems in engineering - Timoshenko, Young, and Weaver.
Applied acoustics - G.Porges.
Acoustics and vibration - Stephens
Three degress of freedom vibratory system with integer eigenvalues - M.K North.
Vibrations of Indian musical drums regarded as composite membranes - B.S. Ramakrishna and M.M.Sondhi.
Acoustics of percussion instruments - Thomas D. Rossing
Physical modeling of bowed strings - James Woodhouse
Digital synthesis of plucked string and drum timbres - K.Karplus and A.Strong.
Musical drums with harmonic overtones - C.V. Raman and S.Kumar
The Noble Qur’an - ( La ilah illa Allah, Muhammad rasuul Allah )