Universidad Autónoma Metropolitana lztapalapa

Anuncio
Universidad Autónoma Metropolitana
lztapalapa
C , 6 ’?1
Si
S"
Y
t
S
S
4
Capitulo 1 : Generalidadcs
El algoritmo: E~-rorCuadritico Medio
Progatna de Adquisición y Filtraje
6
10
28
Objetivo e In
Objetivo
Introducción
Capitulo 1:
es
Generalidades
Error Cuadrático Medio
Capitulo 1 :
, . +
Generalidades
Fuera d e la PC
-
-
*
-
-
-
*
-
-
tl l T r
I
I
ECM
-
'
-
or
Generalidades
Cuadritico Medio
x(n+ 11
+-a,
€CM
Flgura 3.
Generalidades
Error Cuadrdtico Medio
1
S
Generalidades
El código es el siguiente:
11"
n-tamRllfPrc" 1 ;
Error Cuadrático Mcdio
,Tiempo de Grabaci6n
(segundos)
=
nillnero de Inucstr:is a procesar / 44100
10
Generalidades
Programa de Adquisición y Filtraje
Generaiidades
Programa de Adquisición y Filtraje
Grtifico, pone en blanco las pantallas de
los grificos ya sea para colocar l a gráfica de l a
prueba m i s reciente o porque
se
han
estado
combinando
las grificas
para
hacer
comparaciones entre ellas,haciendoestocon
el botón C'ompnror Grhficns; finalmente
S C I I I YGuíficm
I~
tlcl FC.Lf, guarda cada imagen en un archivo.
13
Capitulo 2:
Pruebas y Resultados
Pruebas y Resultados
Para rcalizar las pruebas objetib.as se implementóuncircuito
sencillo (unfiltro
pasobajo), donde nuestra sefial de entrada, .t-(u), esta dada por un generador cle fincioncs.
ii
P r u e b a s y Resultados Objetivos
Primera-Prueba
-
~
~
señal de frecuencia constante
~
~
Pruebas y Resultados Objetivos
Pruebas y Resultados Objetivos
Es decir cada t'ez que se registra un cambio en la frecuencia la seiial se actualiza para
cumplir con el requisito de ser como d ( / l ) y el tiempo que tarda en hacer esto se nota en el
cambio de l a atnplitud.
La siguiente figura correspondc al ErrorCuadrático Medio deunapruebacorno
la
anterior, distingi9ndose las \ x i x i o n e s de enor cuando o c ~ ~ r run
e movimiento en la
frecuencia de l a sefial, sicndn estas las Ixiacioncs dej,(t1) por \,ol\.er a ser como tl(tr).
17
Pruebas y Resultados Objetivos
IS
Pruebas y Resultados Objetivos
Tercera Pi-ueba ~- seíial cor1 efecto de sonido.
_
_
"
"
I
I
_
_
_
I____.
Pruebas y Resultados Subjetivos
S e destaca la similitud de las señales JYt1) tanto e11 el FIR como en el Lagguer (ver
figura 18) a l a sefial ~ ( I I ) . por tanto se ha identi ficaclo y- simulado. Corroborurldo esto cot1 la
grifica del ECM obtenida, mostr;lda a continmcicin:
Pruebas y Resultados Subjet vos
Esta pr-wba es de mal... :' complejidad que las anteriores, debido a la sefial de entrada, l a
voz, en comparación a una señal de banda estrecha.
Pruebas y Resultados Subjetivos
I
Ii
I
LI i!j
Pruebas y Resultados Subjetivos
Los resultados de ~ l n atercera grabacih son e.;tos:
f
I
Conclusio
Conclwiones
El progranla h x h o en el proyecto entrn en las aplicaciones n1ultimedia, siendo estas u n
conjunto de mediostecnológicosquenos
s i n e n para lacomunicación
entre l a PC
(hardu.are y s o f t n x e ) y nosotros. El uso de esta herramienta facilita hacer aplicaciones,
como las que manejan sonido, \.ideo, jugar en red, nxanejo d e irnigenes, sonidos en 3D,
pi-ogramasinteractivosparaaprendi/ajc,etc.
y en este caso ayudo a que fuera Factible
adquirir datos con dos tarjetas de soniclo igualcs y al mismo tiempo.
AI comienm del proyecto se programó en ambiente DOS,no hubo muchas dificultades,
l acostumbrada, pero al dar nnispresentación al
ya que la forma de progran~ares a
progranla se introdujo el sistema de adquisición a ambiente Windon,s, conociendo clue la
forma de progranlar en algunas cosas importan?es es distinta, creando un nuevo estilo de
programación. Despuis de todo, resultó m11c11o más f k i l programar en anlbiente Windows
que en DOS. debido a l a variedad de herramientasque se pueden utilizar además de
cumplir con el propósito de dar mis presentación al sistema de adquisición y filtrado, es
decir, el Ilaccr los programas miis amigables para ek usuario final.
En un principio se comenró realizando
la tarjeta de adquisición para la PC, haciendo
ya existent<,debidoacomplicacionesposteriores
y
retrnin~cnieríasobreunatarjeta
o b s e n m d o las prestaciones y faci1idadi.s de tarjetas de sonido conlercial se optó por hacer
uso de ellas.
,
Conclusiones
E! renclimicnto de la PC fue importante,secomenzótrabajandoen
un Pentium I a
166hIhz, pero sucedía que seperdíanmuestras
en las grabaciones, por lotanto,
la
infonnación adquirida no era buena para realizar el proceso. Esto se notó con el sólo hecho
de comenzar a adquirir datos de dos tarjetas de
sonido al mismo tiempo, implemcntando
ahora el sistema completo, no iba a funcionar adecuadanlente pues se iban a pedir aun m i s
otra máquina
que
se encontraba en el mismo
requerimientos
del
sistema.
Usando
laboratorio,Pentiurn I11 a SOOhlh;l, se logró llegar al cumplimiento de
los objetivos, sin
tener algiln problema.
Bibliografía
Filtro Lagguer:
Ornar Amin, Fausto Casco, Mauricio Ihpez. N C N Cnscctcitt Acltrpteci F'init Impulse
Respome (FIR). Filter. Internacional Conference, on signal proces ing application and
technology. Boston, Ma. U S A , Octobcr '96. pp. 43-47.
Anexos
Para usar cl Programa de Adq~~isición
y Filtraje los requisitos son:
Dos tarjetas desonido, si son iguales se recomiendausarampliamente
el sistema
operatiL.o U'indons
Milcnium.
En otro
caso
primero
instale
una
y renombrcla,
posteriomlente instale la segunda tarjeta. Para renombrar la tarjeta valla a las propiedades
de sonido y multimedia en l a p e s t a h de dispositkos, conlo se nluestra en lasiguiente
figura:
Dichas tarjetas de sonido deben de soportar grabaciones a 34100khr a 16bits, si no el
programa podría ft~ncionar mal.
Anexos
Notas al Progrrtrtla de Adquisición y Filtraje
Las tarjetas de sonido instaladas deben ser las tarjetas principales de l a PC, es decir, se
tienen que ver como en l a figura siguiente:
El mixitno nimero de muestras quc puede. grabar es de 1000000 logrando tictnpos
de grabaci6n de aprosin~aclarnt.nte22 segundos. Puede trabajar hasta con 20 coeficientes.
Anexos
Notas al Programa de AdqL isición y Filtraje
Anexos
Progr tmas
..
.
.
.
.
.
.
.
.
I
.
"
.
"
"
~
.
.
'
.
"
.
I
.
.
................
.......
l_"_.
Los programas fueron elaborados sobre el compilador Borland Ct-k Builder 4.0. Los
códigosdelprogramadeadquisiciónson
los siguientes,dividikndose
en tres partes
principales, código del Error Cuadrático Medio, en el que los nombres están dispuestos en
ingles, Least Mean Square (LMS)para diferenciarlos del código que realiza las grificas,
utilizando la Ibrekiatura ECM. Y en la tercera parte, el código de adquisición de datos dc la
tarjeta de sonido.
Código del Error Cuadritico Medio
En el comienzo
del
proyecto
se
manejaron
dos tarjetas de sonido
diferentes
(SoundBlaster y EssAudio), pero.se dejaron los nombres para seguir identificando a las
tarjetas siendo l a principal, .-c(n), la SoundRlaster y d(t1), l a EssAudio.
..........................................................................
=Inciudc' ,<\cl h>
-p:"1y13 i?iir.top
.........................................................................
.
Anexos
Programas
Anexos
numPolnts= O;
I
I
7 -
3
Anesos
Programas
Anexos
!
Programas
Anexos
Programas
I*********************"*********************~****~*********~*****~~***~~~:*~~**~~,
!*Guarda los coeficientes dcl filtro en un archlbo de teyto
*/
i**********C***r**********~********~*********~~********~*******~*~*****~~~~~~;
V O I ~
I
~
fastcall TcLLlS :SaI~aCoeficlentesClicl\iTObjccr'Sender)
for(int ~-O:~<Ordcn_F~ltro:i+t)
L~stCoetic~ente->ltem~-~Add(Coefic~ente[~]):
.
Anexos
Programas
Anexos
Programas
Anexos
Programas
Anexos
"Lrrnpla los coeficientes y dc!i!;is bartables para reallrar PI ECM normal de
los datos grabados
*/
;*******r*r*********+*****************~****************r*****r***~*************/
cold p-fastcall TcLMS::FlltroNorrnal()
El~-rorECLl[~l=
EnorLhIS;
1
.,;en este momento ya tengo la salida del L.MS y todos
!)loserrores producidos para hacer el ECM
EC'h1(ErrorECbI);
Anexos
Programas
f*******C********C**************~******~~*~**********~~********~******~**~***i
;*Nos da
12
ventana de los grcificos
*I
................................................................................
vold -fastcall TcLMS::ShonECMCltck(TObJect *Sender)
EC'RlCr3ph->Sho\\.();
I
Arcl1iL.o de cabecera: En-or Cuadrático
class TcL\lS public 1'Form
Medio(EC3fproceso.h)
"
Anexos
Programas
Anexos
extern PACKAGE 'TcLbIS *cl.CfS;
//
""""_"_____________________________"""""""""~
""""""""
#endif
Código para presentar las gráficas del ECM en pantalla
Error Cuadr-itico Medio - Gráficas (EChlgraficos.cpp)
'****************f+C*****************$****+****~**~*~*~*~~*~***~*~****~**~****~'
;ipragma packag~(snlart_lnIt)
*pragma resource "*.dfm"
TEC'MGraph *ECXIGraph;
extern TcLMS *cLXlS;
fastcall T E C I \ / I G r a p h : . T E C ~ l ~ r a ~ h ( T C o m p o n0a.ner)
rnt*
-~
: TForm(O\r.ner)
I
--"""__"_"_"_."."."."....."-".""""."....".."...".."_..
Anexos
Progranlas
Anexos
Programas
47
Programas
Anexos
Códizo de Adqyisición de datos de
"
"
"
las tarjetas de sonido
Programas
Anexos
TPropertyAttributes -fastcall TWavcInDe\iceIDProperty::Get.Attrlbutes()
{ TPropcrty.4ttnbutes pa;
pa << paMultlSelect << paValueLlst << paRevertable << paRedOnly;
return pa;
v o ~ d-fastc;\Il TL~'a\.elnDevIceIDPropcrtL.GetValues(C1asses::TGetStrProcProc)
I GenerateDeLIcel.ist();
for ( l n t I:O ; I.rndc\s I , I- -) Proc(de1 ~cel_~st->Str~ngs[i]);
~
I
,
Ant:xos
Programas
50
Anexos
TAudioLlneParameters *asp-(TAudioLineParameters*)(GetOrdValue());
If (asp"NU1,L) throw new
EPropertyError(".kdio stream parameters not found");
asp->Frequency-iFreq; asp->Channels=iChannels; asp->BltsPerSample-iBlts;
Modified();
Programas
Programas
Anexos
............................................................................
I*
Realila l a detcrnmlnaclón de l a función que va a a estar en l a interrupclón
*I
...........................................................................
__ fastcall 7'Recorder.--TRecorder()
{ Stop(): Destroqtlandle();
If (hControlLl'nd- NULL)Dealloc.~tel~~Vnd(hControl~~'nd);
hCoiltrol~~nd-~SULI~;
If (FWaLelnT)e\~ce!-NUl~L)delete FlVavelnDe\lce; FlVavelnDe\lce-NIJLL.;
If(FQuallt>' \ L l , I , ) delete FQuality; FQuallty-NULL.;
I
void "fastcall TRecorder::Xddlnterest(TRecorderNotification ¡e)
{ Int ~pos--l;
for (int ¡=O;i<hlAY-IKTEREST~S,
i i - t )I f (~nterest[~]-=NCLL)
ipos-i;
if (~pos---l) return;
le;
~nterest[~pos]z
FreeNotificationiEvtraet~otifyStlbJect(1e));
vold - fastcall TRecorder-::Renmo~elnterest(TRecorderNotification
ie)
I for ( m t 1-0; I<bfAX-INTEKESTS; I+-&) If (interest[~]z-=z~e) ~nterest[i]~--NLLL.;
1
I
void -Fdstc:tll
1Recorder Notlficatlon(TC'omponent *XComponent,TOperatlon op)
{ If(op- -0pRerrme)
I for (Int IFO; I<>l\.1.4XY_INTERESTS;I+)
I
if (EutractNot~f~Sub~ect(~nterest[i])"XComponent) ~nterest[i]-NUl~L~;
TCornponcnt -Notificatlon(AConmponent,op),
I
Anexos
Programas
.
Programas
Anexos
-'e
vold -fastcall TRecorder::Stop()
1 If (FHandle!-NULL) wavelnStop(Hand1e);
FlsStarted--faise;
FClveUpTrylng-false;
\.old - fastcall TRecorder -Reset()
{ If (Ftlandle'z-NULL) uaveInReset(Hand1e);
FlsStxted-fdse;
FGlvel:pTrylng;false,
I
'*i****t*******t****t*************t******t*****t~*********~~t~*~~~*******J
i*Checa SI ya se esta Ilsto para leer el siguiente buffer despues de que la intcrrupclon se
actlkado,
ha
siesta
no
llsto regresa una
notlficaclón
con
un fallo
*I
..........................................................................
votd -fastcall TRecorder:ReadyForNextBuffer()
If (!lsNe\tBufferReady) return;
mt justDoneBuf-(ne\tBuf-linumnufs)%nilmBufs;
Int nowWorklngOnBuf=.nextBuf;
neutBiuf. (nextBuf~tl)%ntlmBufs;
~avelnUnprepare~Ieader(Har~,dle,5theader[no~~~orkingOnBu~,s~~eof(~~~~~~t~DR~);
headerijustDoneRufj.lpData~ &pDu~ustDoneBtlfCsij.eBuF];
header~ustnonsBufj.d\~BufferLength~si7e
headerijustDoneBuq d\\Flags-O;
header~ustDonel3ufl.duLoops~
O;
wavelnPrep~~rcHeadtr(~~andle,&header~t~stDoneBu~,si~eof(\~AVE~lDR));
waveln.~\ddRuffer(~la~ldle,&header~ustDoneBlt~,s~~eof(~'~~~EHD~));
So. that has dlspatched the one that the merw a s preL1ously \\orking on
ii nextBuf 1s the one that the computer 1s cur-rently fillmg
li and \ve can now manipulate the data In nevtBt1f.
bData-(LPBYTE)header[no\v\\'orkingOnBufl,lpData;
wData=(LPWORD)header[no~vLf'orkingOnBufl IpData;
BufNumRytes- header[nouL\'orkingOnBufj.dwBytesRecorded;
Bu~unlSamples=Bt~~u~~By~es*8,(Qual~ty-~Channels*Quality-~B~tsf'erSample);
Anexos
55
Anexos
Programas
.
vold --fastcall TWa\eVicw:.InterestProc(TObject 'Sender, TRecorderReason rr)
I I f ( r r - ~ rrData) :if (nFrame>- SklpFrames) ( S a m p l e ( S o u r c e ) : n f r ~ n l eelse
~ ~ ;nFrame--~
;I
..
Anexos
Programas
Anexos
-property TNotifyEvent Onchange=fread=FOnChange,write:FOnChange/;
public:
-fastcall TAudioI~inePa?~nleters();
-fastcall virtual -TAudioLinePararneters();
ridefine UCLI_BUFS S
=define h l X - I N T E R E S T S 6
class TKecorder,
enum TKecorder Reason Irrnata,rrClose,rrOpen/;
typedcf \.old - - fastcall (---closure *TRecorderUot~ficat~on)(TOb~ect*
Scndcr.TRecurderRea~on rr).
class TRecorder. public TComponent
.
Anexos
Programas
void "fastcall
virtual Stop();
vold -_.fastcall vlrtual Reset();
If
-property
-property
"property
H W A V E I N Handle= iread-GctHandle) ;
boo1 isStarted- (read--FlsStartcd};
HAhDLE hEbent- (read--FHEvent,\rrIte~Set~~~~ent);
I,
-property
boo1 IsNestRufferReady= jread-GetlsNestRufferRea~y~;
il to say that you're done wlth the prevlous buffer and are non ready
vold __ fastcall vlrtual ReadqForScutRuffer();
io use this one Only for threaded model.
property lnt lData[lnt
BYTE *bData:
WOKD *\\Data;
rnt ButSumBqtes;
-p
11:- (read-GetlDataJ;
rnt B u ~ u n l S m p l e s ;
I/
\old pfastcall \ ~ r t t ~ aAddIntercst(TRecordeI-Notificatior1
I
le);
\,old - -fastcall virtual R c r ~ l o \ e i n t c r e s t ( T R e c ~ ~ d e r ~ o t¡e),
l~c~~t~~n
'I
-fastcall wrttlal G e t N u m D e \ ~ c e s ( ) ;
boo1 - fastcall virtual lsTh~sQualityPoss~Dle();
boo1 -_fastcall clrtual IsQtralrt~Poss~ble(rnt
freq,rnt channels,~ntbits);
lni
-published.
-property TWa\elnDevlcelD * D e c . i c e = - ~ r e a d - F ~ ~ a v e l n ~ c c ~ c e . ~ c r ~ t e - S e t U ' a \ e l n ~ e v ~ c e .;n o d e f a u l t j
-proper-ty TAudiol.~neParclnleters *QualIty'iread.f.'Quslrty.~~r~te=SetQual~ty,nodefault),
property Int BtrfSl/e- (read: FSamplesPerntIffer,\\rrte- SctSarnplesPerBuffer,defatrlt=~56~;
property TNotIfyELent OnSampie- ~ r e a d = F O n S a m p l e , ~ c r ~ t e = F O n S ~ m p l e ~ ;
property unsigned i n t SamplcPos= [readz GetSamplePosl :
- property boo1 4utoS~ar-t-~read--FXt1toStart,\vrite-F.4t~t~St~1~,defat1lt-true~;
"
"
"
1.
I .
class TWaLeVlew : public TGraphicControl
I
Descargar